==> Building on cryogonal ==> Checking for remote environment... ==> Syncing package to remote host... sending incremental file list created directory packages/curl ./ .SRCINFO 1,799 100% 0.00kB/s 0:00:00 1,799 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=6/8) .nvchecker.toml 183 100% 178.71kB/s 0:00:00 183 100% 178.71kB/s 0:00:00 (xfr#2, to-chk=5/8) PKGBUILD 5,510 100% 5.25MB/s 0:00:00 5,510 100% 5.25MB/s 0:00:00 (xfr#3, to-chk=4/8) curl-8.13.0-2.log 533 100% 520.51kB/s 0:00:00 533 100% 520.51kB/s 0:00:00 (xfr#4, to-chk=3/8) keys/ keys/pgp/ keys/pgp/27EDEAF22F3ABCEB50DB9A125CC908FDB71E12C2.asc 1,680 100% 273.44kB/s 0:00:00 1,680 100% 273.44kB/s 0:00:00 (xfr#5, to-chk=0/8) sent 4,771 bytes received 166 bytes 9,874.00 bytes/sec total size is 9,368 speedup is 1.90 ==> 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-0 ==> Building curl for [extra] (riscv64) ]2;🔵 Container arch-nspawn-832463 on cryogonal.felixc.at\[?25l:: 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 [?25h==> Building in chroot for [extra] (riscv64)... ==> Synchronizing chroot copy [/var/lib/archbuild/extra-riscv64/root] -> [felix-0]...done ==> Making package: curl 8.13.0-2 (Fri May 23 18:46:09 2025) ==> Retrieving sources...  -> Cloning curl git repo... Cloning into bare repository '/home/felix/packages/curl/curl'... remote: Enumerating objects: 371667 remote: Enumerating objects: 372643, done. remote: Counting objects: 0% (1/976) remote: Counting objects: 1% (10/976) remote: Counting objects: 2% (20/976) remote: Counting objects: 3% (30/976) remote: Counting objects: 4% (40/976) remote: Counting objects: 5% (49/976) remote: Counting objects: 6% (59/976) remote: Counting objects: 7% (69/976) remote: Counting objects: 8% (79/976) remote: Counting objects: 9% (88/976) remote: Counting objects: 10% (98/976) remote: Counting objects: 11% (108/976) remote: Counting objects: 12% (118/976) remote: Counting objects: 13% (127/976) remote: Counting objects: 14% (137/976) remote: Counting objects: 15% (147/976) remote: Counting objects: 16% (157/976) remote: Counting objects: 17% (166/976) remote: Counting objects: 18% (176/976) remote: Counting objects: 19% (186/976) remote: Counting objects: 20% (196/976) remote: Counting objects: 21% (205/976) remote: Counting objects: 22% (215/976) remote: Counting objects: 23% (225/976) remote: Counting objects: 24% (235/976) remote: Counting objects: 25% (244/976) remote: Counting objects: 26% (254/976) remote: Counting objects: 27% (264/976) remote: Counting objects: 28% (274/976) remote: Counting objects: 29% (284/976) remote: Counting objects: 30% (293/976) remote: Counting objects: 31% (303/976) remote: Counting objects: 32% (313/976) remote: Counting objects: 33% (323/976) remote: Counting objects: 34% (332/976) remote: Counting objects: 35% (342/976) remote: Counting objects: 36% (352/976) remote: Counting objects: 37% (362/976) remote: Counting objects: 38% (371/976) remote: Counting objects: 39% (381/976) remote: Counting objects: 40% (391/976) remote: Counting objects: 41% (401/976) remote: Counting objects: 42% (410/976) remote: Counting objects: 43% (420/976) remote: Counting objects: 44% (430/976) remote: Counting objects: 45% (440/976) remote: Counting objects: 46% (449/976) remote: Counting objects: 47% (459/976) remote: Counting objects: 48% (469/976) remote: Counting objects: 49% (479/976) remote: Counting objects: 50% (488/976) remote: Counting objects: 51% (498/976) remote: Counting objects: 52% (508/976) remote: Counting objects: 53% (518/976) remote: Counting objects: 54% (528/976) remote: Counting objects: 55% (537/976) remote: Counting objects: 56% (547/976) remote: Counting objects: 57% (557/976) remote: Counting objects: 58% (567/976) remote: Counting objects: 59% (576/976) remote: Counting objects: 60% (586/976) remote: Counting objects: 61% (596/976) remote: Counting objects: 62% (606/976) remote: Counting objects: 63% (615/976) remote: Counting objects: 64% (625/976) remote: Counting objects: 65% (635/976) remote: Counting objects: 66% (645/976) remote: Counting objects: 67% (654/976) remote: Counting objects: 68% (664/976) remote: Counting objects: 69% (674/976) remote: Counting objects: 70% (684/976) remote: Counting objects: 71% (693/976) remote: Counting objects: 72% (703/976) remote: Counting objects: 73% (713/976) remote: Counting objects: 74% (723/976) remote: Counting objects: 75% (732/976) remote: Counting objects: 76% (742/976) remote: Counting objects: 77% (752/976) remote: Counting objects: 78% (762/976) remote: Counting objects: 79% (772/976) remote: Counting objects: 80% (781/976) remote: Counting objects: 81% (791/976) remote: Counting objects: 82% (801/976) remote: Counting objects: 83% (811/976) remote: Counting objects: 84% (820/976) remote: Counting objects: 85% (830/976) remote: Counting objects: 86% (840/976) remote: Counting objects: 87% (850/976) remote: Counting objects: 88% (859/976) remote: Counting objects: 89% (869/976) remote: Counting objects: 90% (879/976) remote: Counting objects: 91% (889/976) remote: Counting objects: 92% (898/976) remote: Counting objects: 93% (908/976) remote: Counting objects: 94% (918/976) remote: Counting objects: 95% (928/976) remote: Counting objects: 96% (937/976) remote: Counting objects: 97% (947/976) remote: Counting objects: 98% (957/976) remote: Counting objects: 99% (967/976) remote: Counting objects: 100% (976/976) remote: Counting objects: 100% (976/976), done. remote: Compressing objects: 0% (1/313) remote: Compressing objects: 1% (4/313) remote: Compressing objects: 2% (7/313) remote: Compressing objects: 3% (10/313) remote: Compressing objects: 4% (13/313) remote: Compressing objects: 5% (16/313) remote: Compressing objects: 6% (19/313) remote: Compressing objects: 7% (22/313) remote: Compressing objects: 8% (26/313) remote: Compressing objects: 9% (29/313) remote: Compressing objects: 10% (32/313) remote: Compressing objects: 11% (35/313) remote: Compressing objects: 12% (38/313) remote: Compressing objects: 13% (41/313) remote: Compressing objects: 14% (44/313) remote: Compressing objects: 15% (47/313) remote: Compressing objects: 16% (51/313) remote: Compressing objects: 17% (54/313) remote: Compressing objects: 18% (57/313) remote: Compressing objects: 19% (60/313) remote: Compressing objects: 20% (63/313) remote: Compressing objects: 21% (66/313) remote: Compressing objects: 22% (69/313) remote: Compressing objects: 23% (72/313) remote: Compressing objects: 24% (76/313) remote: Compressing objects: 25% (79/313) remote: Compressing objects: 26% (82/313) remote: Compressing objects: 27% (85/313) remote: Compressing objects: 28% (88/313) remote: Compressing objects: 29% (91/313) remote: Compressing objects: 30% (94/313) remote: Compressing objects: 31% (98/313) remote: Compressing objects: 32% (101/313) remote: Compressing objects: 33% (104/313) remote: Compressing objects: 34% (107/313) remote: Compressing objects: 35% (110/313) remote: Compressing objects: 36% (113/313) remote: Compressing objects: 37% (116/313) remote: Compressing objects: 38% (119/313) remote: Compressing objects: 39% (123/313) remote: Compressing objects: 40% (126/313) remote: Compressing objects: 41% (129/313) remote: Compressing objects: 42% (132/313) remote: Compressing objects: 43% (135/313) remote: Compressing objects: 44% (138/313) remote: Compressing objects: 45% (141/313) remote: Compressing objects: 46% (144/313) remote: Compressing objects: 47% (148/313) remote: Compressing objects: 48% (151/313) remote: Compressing objects: 49% (154/313) remote: Compressing objects: 50% (157/313) remote: Compressing objects: 51% (160/313) remote: Compressing objects: 52% (163/313) remote: Compressing objects: 53% (166/313) remote: Compressing objects: 54% (170/313) remote: Compressing objects: 55% (173/313) remote: Compressing objects: 56% (176/313) remote: Compressing objects: 57% (179/313) remote: Compressing objects: 58% (182/313) remote: Compressing objects: 59% (185/313) remote: Compressing objects: 60% (188/313) remote: Compressing objects: 61% (191/313) remote: Compressing objects: 62% (195/313) remote: Compressing objects: 63% (198/313) remote: Compressing objects: 64% (201/313) remote: Compressing objects: 65% (204/313) remote: Compressing objects: 66% (207/313) remote: Compressing objects: 67% (210/313) remote: Compressing objects: 68% (213/313) remote: Compressing objects: 69% (216/313) remote: Compressing objects: 70% (220/313) remote: Compressing objects: 71% (223/313) remote: Compressing objects: 72% (226/313) remote: Compressing objects: 73% (229/313) remote: Compressing objects: 74% (232/313) remote: Compressing objects: 75% (235/313) remote: Compressing objects: 76% (238/313) remote: Compressing objects: 77% (242/313) remote: Compressing objects: 78% (245/313) remote: Compressing objects: 79% (248/313) remote: Compressing objects: 80% (251/313) remote: Compressing objects: 81% (254/313) remote: Compressing objects: 82% (257/313) remote: Compressing objects: 83% (260/313) remote: Compressing objects: 84% (263/313) remote: Compressing objects: 85% (267/313) remote: Compressing objects: 86% (270/313) remote: Compressing objects: 87% (273/313) remote: Compressing objects: 88% (276/313) remote: Compressing objects: 89% (279/313) remote: Compressing objects: 90% (282/313) remote: Compressing objects: 91% (285/313) remote: Compressing objects: 92% (288/313) remote: Compressing objects: 93% (292/313) remote: Compressing objects: 94% (295/313) remote: Compressing objects: 95% (298/313) remote: Compressing objects: 96% (301/313) remote: Compressing objects: 97% (304/313) remote: Compressing objects: 98% (307/313) remote: Compressing objects: 99% (310/313) remote: Compressing objects: 100% (313/313) remote: Compressing objects: 100% (313/313), done. Receiving objects: 0% (1/372643) Receiving objects: 1% (3727/372643), 2.18 MiB | 4.22 MiB/s Receiving objects: 2% (7453/372643), 2.18 MiB | 4.22 MiB/s Receiving objects: 2% (7752/372643), 2.18 MiB | 4.22 MiB/s Receiving objects: 3% (11180/372643), 4.97 MiB | 4.70 MiB/s Receiving objects: 4% (14906/372643), 8.07 MiB | 5.18 MiB/s Receiving objects: 5% (18633/372643), 8.07 MiB | 5.18 MiB/s Receiving objects: 6% (22359/372643), 8.07 MiB | 5.18 MiB/s Receiving objects: 6% (24466/372643), 8.07 MiB | 5.18 MiB/s Receiving objects: 7% (26086/372643), 8.07 MiB | 5.18 MiB/s Receiving objects: 8% (29812/372643), 11.04 MiB | 5.37 MiB/s Receiving objects: 9% (33538/372643), 11.04 MiB | 5.37 MiB/s Receiving objects: 10% (37265/372643), 14.37 MiB | 5.62 MiB/s Receiving objects: 11% (40991/372643), 14.37 MiB | 5.62 MiB/s Receiving objects: 11% (42213/372643), 14.37 MiB | 5.62 MiB/s Receiving objects: 12% (44718/372643), 18.82 MiB | 6.16 MiB/s Receiving objects: 13% (48444/372643), 18.82 MiB | 6.16 MiB/s Receiving objects: 14% (52171/372643), 23.90 MiB | 6.72 MiB/s Receiving objects: 15% (55897/372643), 23.90 MiB | 6.72 MiB/s Receiving objects: 15% (57370/372643), 23.90 MiB | 6.72 MiB/s Receiving objects: 16% (59623/372643), 29.25 MiB | 7.21 MiB/s Receiving objects: 17% (63350/372643), 29.25 MiB | 7.21 MiB/s Receiving objects: 18% (67076/372643), 36.17 MiB | 7.94 MiB/s Receiving objects: 19% (70803/372643), 36.17 MiB | 7.94 MiB/s Receiving objects: 20% (74529/372643), 36.17 MiB | 7.94 MiB/s Receiving objects: 20% (75736/372643), 36.17 MiB | 7.94 MiB/s Receiving objects: 21% (78256/372643), 42.24 MiB | 8.82 MiB/s Receiving objects: 22% (81982/372643), 42.24 MiB | 8.82 MiB/s Receiving objects: 23% (85708/372643), 42.24 MiB | 8.82 MiB/s Receiving objects: 24% (89435/372643), 42.24 MiB | 8.82 MiB/s Receiving objects: 25% (93161/372643), 48.53 MiB | 9.68 MiB/s Receiving objects: 26% (96888/372643), 48.53 MiB | 9.68 MiB/s Receiving objects: 27% (100614/372643), 48.53 MiB | 9.68 MiB/s Receiving objects: 28% (104341/372643), 48.53 MiB | 9.68 MiB/s Receiving objects: 28% (104885/372643), 48.53 MiB | 9.68 MiB/s Receiving objects: 29% (108067/372643), 54.41 MiB | 10.30 MiB/s Receiving objects: 30% (111793/372643), 54.41 MiB | 10.30 MiB/s Receiving objects: 31% (115520/372643), 54.41 MiB | 10.30 MiB/s Receiving objects: 32% (119246/372643), 54.41 MiB | 10.30 MiB/s Receiving objects: 33% (122973/372643), 54.41 MiB | 10.30 MiB/s Receiving objects: 34% (126699/372643), 59.87 MiB | 10.85 MiB/s Receiving objects: 35% (130426/372643), 59.87 MiB | 10.85 MiB/s Receiving objects: 35% (130803/372643), 59.87 MiB | 10.85 MiB/s Receiving objects: 36% (134152/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 37% (137878/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 38% (141605/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 39% (145331/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 40% (149058/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 41% (152784/372643), 65.87 MiB | 11.44 MiB/s Receiving objects: 42% (156511/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 43% (160237/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 44% (163963/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 45% (167690/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 46% (171416/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 47% (175143/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 48% (178869/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 48% (179509/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 49% (182596/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 50% (186322/372643), 70.83 MiB | 11.56 MiB/s Receiving objects: 51% (190048/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 52% (193775/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 53% (197501/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 54% (201228/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 55% (204954/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 56% (208681/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 57% (212407/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 58% (216133/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 59% (219860/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 60% (223586/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 61% (227313/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 62% (231039/372643), 76.29 MiB | 11.64 MiB/s Receiving objects: 63% (234766/372643), 81.11 MiB | 11.52 MiB/s Receiving objects: 64% (238492/372643), 81.11 MiB | 11.52 MiB/s Receiving objects: 64% (240074/372643), 81.11 MiB | 11.52 MiB/s Receiving objects: 65% (242218/372643), 84.36 MiB | 10.71 MiB/s Receiving objects: 66% (245945/372643), 84.36 MiB | 10.71 MiB/s Receiving objects: 67% (249671/372643), 84.36 MiB | 10.71 MiB/s Receiving objects: 68% (253398/372643), 87.70 MiB | 10.10 MiB/s Receiving objects: 68% (256444/372643), 87.70 MiB | 10.10 MiB/s Receiving objects: 69% (257124/372643), 87.70 MiB | 10.10 MiB/s Receiving objects: 70% (260851/372643), 91.12 MiB | 9.46 MiB/s Receiving objects: 71% (264577/372643), 91.12 MiB | 9.46 MiB/s Receiving objects: 72% (268303/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 73% (272030/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 74% (275756/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 75% (279483/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 75% (281802/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 76% (283209/372643), 93.95 MiB | 8.79 MiB/s Receiving objects: 77% (286936/372643), 98.89 MiB | 8.67 MiB/s Receiving objects: 78% (290662/372643), 98.89 MiB | 8.67 MiB/s Receiving objects: 79% (294388/372643), 98.89 MiB | 8.67 MiB/s Receiving objects: 79% (294833/372643), 104.19 MiB | 8.52 MiB/s Receiving objects: 80% (298115/372643), 108.08 MiB | 8.28 MiB/s Receiving objects: 81% (301841/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 82% (305568/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 83% (309294/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 84% (313021/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 84% (316358/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 85% (316747/372643), 111.28 MiB | 7.78 MiB/s Receiving objects: 85% (317092/372643), 127.06 MiB | 8.75 MiB/s Receiving objects: 85% (317092/372643), 137.85 MiB | 9.74 MiB/s Receiving objects: 85% (317092/372643), 145.23 MiB | 9.08 MiB/s Receiving objects: 85% (317092/372643), 154.89 MiB | 9.65 MiB/s Receiving objects: 86% (320473/372643), 159.71 MiB | 9.73 MiB/s Receiving objects: 87% (324200/372643), 159.71 MiB | 9.73 MiB/s Receiving objects: 88% (327926/372643), 159.71 MiB | 9.73 MiB/s Receiving objects: 88% (329296/372643), 159.71 MiB | 9.73 MiB/s Receiving objects: 89% (331653/372643), 159.71 MiB | 9.73 MiB/s Receiving objects: 90% (335379/372643), 164.70 MiB | 9.55 MiB/s Receiving objects: 91% (339106/372643), 164.70 MiB | 9.55 MiB/s Receiving objects: 92% (342832/372643), 164.70 MiB | 9.55 MiB/s Receiving objects: 92% (344865/372643), 176.98 MiB | 9.65 MiB/s Receiving objects: 93% (346558/372643), 176.98 MiB | 9.65 MiB/s Receiving objects: 94% (350285/372643), 176.98 MiB | 9.65 MiB/s Receiving objects: 95% (354011/372643), 182.76 MiB | 9.84 MiB/s Receiving objects: 96% (357738/372643), 182.76 MiB | 9.84 MiB/s Receiving objects: 96% (360348/372643), 182.76 MiB | 9.84 MiB/s Receiving objects: 97% (361464/372643), 182.76 MiB | 9.84 MiB/s Receiving objects: 98% (365191/372643), 187.82 MiB | 10.00 MiB/s Receiving objects: 99% (368917/372643), 187.82 MiB | 10.00 MiB/s remote: Total 372643 (delta 886), reused 663 (delta 663), pack-reused 371667 (from 5) Receiving objects: 100% (372643/372643), 192.03 MiB | 10.29 MiB/s Receiving objects: 100% (372643/372643), 193.06 MiB | 9.29 MiB/s, done. Resolving deltas: 0% (0/292263) Resolving deltas: 1% (2924/292263) Resolving deltas: 2% (5846/292263) Resolving deltas: 3% (8768/292263) Resolving deltas: 3% (10191/292263) Resolving deltas: 4% (11691/292263) Resolving deltas: 5% (14614/292263) Resolving deltas: 6% (17536/292263) Resolving deltas: 6% (18076/292263) Resolving deltas: 7% (20459/292263) Resolving deltas: 7% (22718/292263) Resolving deltas: 8% (23382/292263) Resolving deltas: 8% (26235/292263) Resolving deltas: 9% (26304/292263) Resolving deltas: 10% (29227/292263) Resolving deltas: 10% (31534/292263) Resolving deltas: 11% (32149/292263) Resolving deltas: 12% (35072/292263) Resolving deltas: 13% (37995/292263) Resolving deltas: 14% (40917/292263) Resolving deltas: 15% (43840/292263) Resolving deltas: 15% (46596/292263) Resolving deltas: 16% (46763/292263) Resolving deltas: 17% (49685/292263) Resolving deltas: 18% (52608/292263) Resolving deltas: 18% (52618/292263) Resolving deltas: 19% (55530/292263) Resolving deltas: 20% (58453/292263) Resolving deltas: 20% (61108/292263) Resolving deltas: 21% (61376/292263) Resolving deltas: 21% (64212/292263) Resolving deltas: 22% (64298/292263) Resolving deltas: 23% (67221/292263) Resolving deltas: 24% (70144/292263) Resolving deltas: 25% (73066/292263) Resolving deltas: 25% (75099/292263) Resolving deltas: 26% (75989/292263) Resolving deltas: 27% (78912/292263) Resolving deltas: 28% (81834/292263) Resolving deltas: 29% (84757/292263) Resolving deltas: 30% (87679/292263) Resolving deltas: 30% (89959/292263) Resolving deltas: 31% (90602/292263) Resolving deltas: 31% (93469/292263) Resolving deltas: 32% (93525/292263) Resolving deltas: 32% (96446/292263) Resolving deltas: 33% (96447/292263) Resolving deltas: 33% (99234/292263) Resolving deltas: 34% (99370/292263) Resolving deltas: 35% (102293/292263) Resolving deltas: 36% (105215/292263) Resolving deltas: 36% (107651/292263) Resolving deltas: 37% (108138/292263) Resolving deltas: 38% (111061/292263) Resolving deltas: 39% (113983/292263) Resolving deltas: 39% (115482/292263) Resolving deltas: 40% (116906/292263) Resolving deltas: 41% (119828/292263) Resolving deltas: 42% (122751/292263) Resolving deltas: 43% (125674/292263) Resolving deltas: 43% (126832/292263) Resolving deltas: 44% (128596/292263) Resolving deltas: 45% (131519/292263) Resolving deltas: 46% (134441/292263) Resolving deltas: 47% (137364/292263) Resolving deltas: 48% (140288/292263) Resolving deltas: 49% (143209/292263) Resolving deltas: 49% (145387/292263) Resolving deltas: 50% (146132/292263) Resolving deltas: 51% (149055/292263) Resolving deltas: 52% (151977/292263) Resolving deltas: 52% (154327/292263) Resolving deltas: 53% (154900/292263) Resolving deltas: 54% (157823/292263) Resolving deltas: 55% (160745/292263) Resolving deltas: 56% (163668/292263) Resolving deltas: 56% (166160/292263) Resolving deltas: 57% (166590/292263) Resolving deltas: 58% (169513/292263) Resolving deltas: 59% (172436/292263) Resolving deltas: 60% (175358/292263) Resolving deltas: 61% (178281/292263) Resolving deltas: 61% (180486/292263) Resolving deltas: 62% (181204/292263) Resolving deltas: 63% (184126/292263) Resolving deltas: 64% (187049/292263) Resolving deltas: 64% (189178/292263) Resolving deltas: 65% (189971/292263) Resolving deltas: 66% (192894/292263) Resolving deltas: 66% (194713/292263) Resolving deltas: 67% (195817/292263) Resolving deltas: 67% (196652/292263) Resolving deltas: 68% (198739/292263) Resolving deltas: 69% (201662/292263) Resolving deltas: 69% (204379/292263) Resolving deltas: 70% (204585/292263) Resolving deltas: 71% (207507/292263) Resolving deltas: 72% (210430/292263) Resolving deltas: 72% (213317/292263) Resolving deltas: 73% (213352/292263) Resolving deltas: 74% (216275/292263) Resolving deltas: 74% (217799/292263) Resolving deltas: 75% (219198/292263) Resolving deltas: 76% (222120/292263) Resolving deltas: 76% (222260/292263) Resolving deltas: 77% (225043/292263) Resolving deltas: 78% (227966/292263) Resolving deltas: 79% (230888/292263) Resolving deltas: 79% (232540/292263) Resolving deltas: 80% (233811/292263) Resolving deltas: 81% (236734/292263) Resolving deltas: 82% (239656/292263) Resolving deltas: 82% (241793/292263) Resolving deltas: 83% (242579/292263) Resolving deltas: 84% (245501/292263) Resolving deltas: 85% (248424/292263) Resolving deltas: 85% (250679/292263) Resolving deltas: 86% (251347/292263) Resolving deltas: 87% (254269/292263) Resolving deltas: 88% (257193/292263) Resolving deltas: 89% (260115/292263) Resolving deltas: 90% (263037/292263) Resolving deltas: 91% (265960/292263) Resolving deltas: 92% (268882/292263) Resolving deltas: 92% (269632/292263) Resolving deltas: 93% (271805/292263) Resolving deltas: 94% (274728/292263) Resolving deltas: 95% (277650/292263) Resolving deltas: 96% (280573/292263) Resolving deltas: 97% (283496/292263) Resolving deltas: 98% (286418/292263) Resolving deltas: 98% (287671/292263) Resolving deltas: 99% (289341/292263) Resolving deltas: 100% (292263/292263) Resolving deltas: 100% (292263/292263), done. ==> Validating source files with sha512sums... curl ... Passed ==> Verifying source file signatures with gpg... curl git repo ... Passed ]2;🔵 Container arch-nspawn-835492 on cryogonal.felixc.at\==> Making package: curl 8.13.0-2 (Fri May 23 18:47:40 2025) ==> Checking runtime dependencies... ==> Checking buildtime dependencies... ==> Installing missing dependencies... [?25lresolving dependencies... looking for conflicting packages... Package (9) New Version Net Change Download Size core/debuginfod 0.192-4.1 0.33 MiB core/libmicrohttpd 1.0.1-1 0.56 MiB extra/perl-error 0.17030-1 0.04 MiB extra/perl-mailtools 2.22-1 0.10 MiB extra/perl-timedate 2.33-7 0.08 MiB extra/zlib-ng 2.2.4-1 0.21 MiB extra/git 2.49.0-2 27.48 MiB extra/patchelf 0.18.0-3 0.19 MiB 0.10 MiB extra/valgrind 3.25.0-2 40.16 MiB 5.76 MiB Total Download Size: 5.86 MiB Total Installed Size: 69.16 MiB :: Proceed with installation? [Y/n] :: Retrieving packages... valgrind-3.25.0-2-riscv64 downloading... 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-mediawiki-api: git mediawiki support perl-datetime-format-iso8601: git mediawiki support perl-lwp-protocol-https: git mediawiki https 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] installing patchelf... installing libmicrohttpd... installing debuginfod... Optional dependencies for debuginfod elfutils=0.192: 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 972. Creating user 'git' (git daemon user) with UID 972 and GID 972. (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... [?25h==> Retrieving sources... ==> WARNING: Skipping all source file integrity checks. ==> Extracting sources...  -> Creating working copy of curl git repo... Cloning into 'curl'... done. Updating files: 65% (2691/4081) Updating files: 66% (2694/4081) Updating files: 67% (2735/4081) Updating files: 68% (2776/4081) Updating files: 69% (2816/4081) Updating files: 70% (2857/4081) Updating files: 71% (2898/4081) Updating files: 72% (2939/4081) Updating files: 73% (2980/4081) Updating files: 74% (3020/4081) Updating files: 75% (3061/4081) Updating files: 76% (3102/4081) Updating files: 77% (3143/4081) Updating files: 78% (3184/4081) Updating files: 79% (3224/4081) Updating files: 80% (3265/4081) Updating files: 81% (3306/4081) Updating files: 82% (3347/4081) Updating files: 83% (3388/4081) Updating files: 84% (3429/4081) Updating files: 85% (3469/4081) Updating files: 86% (3510/4081) Updating files: 87% (3551/4081) Updating files: 88% (3592/4081) Updating files: 89% (3633/4081) Updating files: 90% (3673/4081) Updating files: 91% (3714/4081) Updating files: 92% (3755/4081) Updating files: 93% (3796/4081) Updating files: 94% (3837/4081) Updating files: 95% (3877/4081) Updating files: 96% (3918/4081) Updating files: 97% (3959/4081) Updating files: 98% (4000/4081) Updating files: 99% (4041/4081) Updating files: 100% (4081/4081) Updating files: 100% (4081/4081), done. Switched to a new branch 'makepkg' ==> Starting prepare()... 2f5e4e0db4 scripts: completion.pl: sort the completion file for all shells Auto-merging scripts/completion.pl 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:127: installing './compile' configure.ac:423: installing './config.guess' configure.ac:423: installing './config.sub' configure.ac:127: installing './install-sh' configure.ac:133: 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 for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no 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 dependency style of gcc... gcc3 checking curl version... 8.13.0 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 nghttpx... no checking for caddy... /usr/bin/caddy 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 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 '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... 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 no checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to build tests into single-binary bundles... 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 sys/time.h... 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 sys/time.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 if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Secure Transport... 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 configure: OpenSSL version does not speak QUIC API checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... 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 library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free 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/time.h... (cached) yes checking for sys/select.h... yes checking for sys/socket.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/stat.h... (cached) yes checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes 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 sys/time.h... (cached) yes checking for sys/socket.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 sys/socket.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for sys/socket.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 is prototyped... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking if CloseSocket is compilable... 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 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 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 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 sys/socket.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 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 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 for sys/time.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/socket.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 is prototyped... no checking if ioctlsocket might be used... no checking if IoctlSocket is compilable... 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 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 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 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 sys/socket.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 for perl... /usr/bin/perl 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 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/http/config.ini config.status: creating tests/http/Makefile config.status: creating tests/http/clients/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc 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.13.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) 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 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-asyn-ares.lo CC libcurl_la-amigaos.lo CC libcurl_la-asyn-thread.lo CC libcurl_la-base64.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-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-cshutdn.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.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_multibyte.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-dynbuf.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-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-fopen.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-hash_offt.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostasyn.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hostsyn.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-inet_ntop.lo CC libcurl_la-inet_pton.lo CC libcurl_la-krb5.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-netrc.lo CC libcurl_la-nonblock.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-strparse.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-timediff.lo CC libcurl_la-timeval.lo CC libcurl_la-transfer.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-version_win32.lo CC libcurl_la-warnless.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-thread.lo CC libcurlu_la-base64.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-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.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_multibyte.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-dynbuf.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-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.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-hash_offt.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostasyn.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hostsyn.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-inet_ntop.lo CC libcurlu_la-inet_pton.lo CC libcurlu_la-krb5.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-netrc.lo CC libcurlu_la-nonblock.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-strparse.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-timediff.lo CC libcurlu_la-timeval.lo CC libcurlu_la-transfer.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-version_win32.lo CC libcurlu_la-warnless.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurlu_la-wolfssh.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurl_la-wolfssh.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 curl-config.1 Making all in . make[2]: Entering directory '/build/curl/src/build-curl/docs' make[2]: Nothing to be done for 'all-am'. 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_T.3 RENDER CURLINFO_CONTENT_LENGTH_DOWNLOAD.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD.3 RENDER CURLINFO_CONTENT_LENGTH_UPLOAD_T.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_FILETIME_T.3 RENDER CURLINFO_FTP_ENTRY_PATH.3 RENDER CURLINFO_HEADER_SIZE.3 RENDER CURLINFO_HTTP_CONNECTCODE.3 RENDER CURLINFO_HTTP_VERSION.3 RENDER CURLINFO_HTTPAUTH_AVAIL.3 RENDER CURLINFO_HTTPAUTH_USED.3 RENDER CURLINFO_LASTSOCKET.3 RENDER CURLINFO_LOCAL_IP.3 RENDER CURLINFO_LOCAL_PORT.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_PRETRANSFER_TIME_T.3 RENDER CURLINFO_POSTTRANSFER_TIME_T.3 RENDER CURLINFO_PRIMARY_IP.3 RENDER CURLINFO_PRIMARY_PORT.3 RENDER CURLINFO_PRIVATE.3 RENDER CURLINFO_PROTOCOL.3 RENDER CURLINFO_PROXY_ERROR.3 RENDER CURLINFO_PROXY_SSL_VERIFYRESULT.3 RENDER CURLINFO_PROXYAUTH_AVAIL.3 RENDER CURLINFO_PROXYAUTH_USED.3 RENDER CURLINFO_QUEUE_TIME_T.3 RENDER CURLINFO_REDIRECT_COUNT.3 RENDER CURLINFO_REDIRECT_TIME.3 RENDER CURLINFO_REDIRECT_TIME_T.3 RENDER CURLINFO_REDIRECT_URL.3 RENDER CURLINFO_REFERER.3 RENDER CURLINFO_REQUEST_SIZE.3 RENDER CURLINFO_RESPONSE_CODE.3 RENDER CURLINFO_RETRY_AFTER.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_USED_PROXY.3 RENDER CURLINFO_XFER_ID.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_PIPELINING.3 RENDER CURLMOPT_PIPELINING_SERVER_BL.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_ALTSVC_CTRL.3 RENDER CURLOPT_APPEND.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_CLOSESOCKETDATA.3 RENDER CURLOPT_CHUNK_END_FUNCTION.3 RENDER CURLOPT_CLOSESOCKETFUNCTION.3 RENDER CURLOPT_CONNECT_ONLY.3 RENDER CURLOPT_CONNECT_TO.3 RENDER CURLOPT_CONNECTTIMEOUT.3 RENDER CURLOPT_CONNECTTIMEOUT_MS.3 RENDER CURLOPT_CONV_FROM_NETWORK_FUNCTION.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_DOH_URL.3 RENDER CURLOPT_ECH.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_HTTPAUTH.3 RENDER CURLOPT_HTTPGET.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_INTERFACE.3 RENDER CURLOPT_INTERLEAVEDATA.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_ALLOWFAILS.3 RENDER CURLOPT_MAIL_RCPT.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_MAXLIFETIME_CONN.3 RENDER CURLOPT_MAXREDIRS.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_VERIFYPEER.3 RENDER CURLOPT_SSL_VERIFYHOST.3 RENDER CURLOPT_SSL_VERIFYSTATUS.3 RENDER CURLOPT_SSLCERT.3 RENDER CURLOPT_SSLCERT_BLOB.3 RENDER CURLOPT_SSLCERTTYPE.3 RENDER CURLOPT_SSLENGINE_DEFAULT.3 RENDER CURLOPT_SSLENGINE.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_E.3 RENDER CURLOPT_STREAM_DEPENDS.3 RENDER CURLOPT_SUPPRESS_CONNECT_HEADERS.3 RENDER CURLOPT_STREAM_WEIGHT.3 RENDER CURLOPT_TCP_FASTOPEN.3 RENDER CURLOPT_TCP_KEEPALIVE.3 RENDER CURLOPT_TCP_KEEPIDLE.3 RENDER CURLOPT_TCP_KEEPINTVL.3 RENDER CURLOPT_TCP_KEEPCNT.3 RENDER CURLOPT_TCP_NODELAY.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_duphandle.3 RENDER curl_easy_escape.3 RENDER curl_easy_getinfo.3 RENDER curl_easy_header.3 RENDER curl_easy_init.3 RENDER curl_easy_nextheader.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_escape.3 RENDER curl_formadd.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_addpart.3 RENDER curl_mime_data.3 RENDER curl_mime_data_cb.3 RENDER curl_mime_encoder.3 RENDER curl_mime_filedata.3 RENDER curl_mime_filename.3 RENDER curl_mime_free.3 RENDER curl_mime_headers.3 RENDER curl_mime_init.3 RENDER curl_mime_name.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_info_read.3 RENDER curl_multi_init.3 RENDER curl_multi_perform.3 RENDER curl_multi_poll.3 RENDER curl_multi_remove_handle.3 RENDER curl_multi_setopt.3 RENDER curl_multi_socket.3 RENDER curl_multi_socket_all.3 RENDER curl_multi_socket_action.3 RENDER curl_multi_strerror.3 RENDER curl_multi_timeout.3 RENDER curl_multi_wait.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_setopt.3 RENDER curl_share_strerror.3 RENDER curl_slist_append.3 RENDER curl_slist_free_all.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 libcurl-easy.3 RENDER libcurl-env-dbg.3 RENDER libcurl-env.3 RENDER libcurl-multi.3 RENDER libcurl-errors.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-slist_wc.o CC curl-terminal.o CC curl-tool_cb_dbg.o CC curl-tool_bname.o CC curl-tool_cb_hdr.o CC curl-tool_cb_prg.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_filetime.o CC curl-tool_easysrc.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_sleep.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 '#include "tool_hugehelp.h"' >> tool_hugehelp.c echo 'extern const void *curl_ca_embed; const void *curl_ca_embed;' > tool_ca_embed.c CC libcurltool_la-slist_wc.lo CC libcurltool_la-terminal.lo CC libcurltool_la-tool_bname.lo CC libcurltool_la-tool_cb_dbg.lo CC libcurltool_la-tool_cb_hdr.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_sleep.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/libcurltool_la-base64.lo CC ../lib/libcurltool_la-curl_multibyte.lo CC ../lib/libcurltool_la-dynbuf.lo CC ../lib/libcurltool_la-nonblock.lo CC ../lib/libcurltool_la-strparse.lo CC ../lib/libcurltool_la-strcase.lo CC ../lib/libcurltool_la-timediff.lo CC ../lib/libcurltool_la-timeval.lo CC ../lib/libcurltool_la-version_win32.lo CC ../lib/libcurltool_la-warnless.lo CC ../lib/curl-base64.o CC ../lib/curl-curl_multibyte.o CC ../lib/curl-dynbuf.o CC ../lib/curl-nonblock.o CC ../lib/curl-strparse.o CC ../lib/curl-strcase.o CC ../lib/curl-timediff.o CC ../lib/curl-timeval.o CC ../lib/curl-version_win32.o CC ../lib/curl-warnless.o CC curl-tool_hugehelp.o CC curl-tool_ca_embed.o CCLD libcurltool.la CCLD curl make[1]: Leaving directory '/build/curl/src/build-curl/src' Making all in scripts make[1]: Entering directory '/build/curl/src/build-curl/scripts' if test -z "/usr/bin/perl"; then echo 'No perl: cannot generate completion script'; else \ /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell zsh > _curl; fi if test -z "/usr/bin/perl"; then echo 'No perl: cannot generate completion script'; else \ /usr/bin/perl /build/curl/src/curl/scripts/completion.pl --opts-dir /build/curl/src/curl/docs/cmdline-opts --shell fish > curl.fish; fi 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 for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no 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 dependency style of gcc... gcc3 checking curl version... 8.13.0 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 nghttpx... no checking for caddy... /usr/bin/caddy 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 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 '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... 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 no checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to build tests into single-binary bundles... 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 sys/time.h... 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 sys/time.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 if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Secure Transport... 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 configure: OpenSSL version does not speak QUIC API checking for SRP support in OpenSSL... yes checking for QUIC support and OpenSSL >= 3.3... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... 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 library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free 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/time.h... (cached) yes checking for sys/select.h... yes checking for sys/socket.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/stat.h... (cached) yes checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes 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 sys/time.h... (cached) yes checking for sys/socket.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 sys/socket.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for sys/socket.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 is prototyped... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking if CloseSocket is compilable... 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 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 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 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 sys/socket.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 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 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 for sys/time.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/socket.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 is prototyped... no checking if ioctlsocket might be used... no checking if IoctlSocket is compilable... 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 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 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 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 sys/socket.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 for perl... /usr/bin/perl 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 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/http/config.ini config.status: creating tests/http/Makefile config.status: creating tests/http/clients/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc 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.13.0 SSL: enabled (OpenSSL v3+) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) 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 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-amigaos.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-thread.lo CC libcurl_la-base64.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-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-cshutdn.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.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_multibyte.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-dynbuf.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-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-formdata.lo CC libcurl_la-fopen.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-hash_offt.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostasyn.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hostsyn.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-inet_ntop.lo CC libcurl_la-inet_pton.lo CC libcurl_la-krb5.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-netrc.lo CC libcurl_la-nonblock.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-strparse.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-timediff.lo CC libcurl_la-timeval.lo CC libcurl_la-transfer.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-version_win32.lo CC libcurl_la-warnless.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-thread.lo CC libcurlu_la-base64.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-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.lo CC libcurlu_la-curl_get_line.lo CC libcurlu_la-curl_gssapi.lo CC libcurlu_la-curl_gethostname.lo CC libcurlu_la-curl_memrchr.lo CC libcurlu_la-curl_multibyte.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-dynbuf.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-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.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-hash_offt.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostasyn.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hostsyn.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-inet_ntop.lo CC libcurlu_la-inet_pton.lo CC libcurlu_la-krb5.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-netrc.lo CC libcurlu_la-nonblock.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-strparse.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-timediff.lo CC libcurlu_la-timeval.lo CC libcurlu_la-transfer.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-version_win32.lo CC libcurlu_la-warnless.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurlu_la-wolfssh.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurl_la-wolfssh.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_des.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_memrchr.o: no symbols /usr/bin/nm: .libs/libcurl_la-curl_multibyte.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-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostsyn.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: .libs/libcurl_la-inet_pton.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: .libs/libcurl_la-version_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-bearssl.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-sectransp.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_msh3.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: vssh/.libs/libcurl_la-wolfssh.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 for a sed that does not truncate output... (cached) /usr/bin/sed checking for code coverage support... no 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 dependency style of gcc... gcc3 checking curl version... 8.13.0 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 nghttpx... no checking for caddy... /usr/bin/caddy 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 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 '1501' (raw: '15.1.1') checking if compiler is SunPro C... no checking if compiler is Tiny C... 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 no checking whether build target supports Win32 crypto API... no checking whether to build libcurl and curl in "unity" mode... no checking whether to build tests into single-binary bundles... 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 sys/time.h... 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 sys/time.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 if GSS-API headers declare GSS_C_NT_HOSTBASED_SERVICE... yes checking for pkg-config... (cached) /usr/bin/pkg-config checking for mit-krb5-gssapi options with pkg-config... found checking if we can link against GSS-API library... yes checking whether to enable Windows native SSL/TLS... no checking whether to enable Secure Transport... 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.9 checking for nettle_MD5Init in -lgnutls... no checking for nettle_MD5Init in -lnettle... yes checking for gnutls_srp_verifier in -lgnutls... yes configure: built with one SSL backend checking default CA cert bundle/path... /etc/ssl/certs/ca-certificates.crt checking whether to use built-in CA store of SSL library... 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 library containing gsasl_init... no configure: WARNING: libgsasl was not found checking for pkg-config... (cached) /usr/bin/pkg-config checking for libssh2 options with pkg-config... found checking for libssh2_free 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/time.h... (cached) yes checking for sys/select.h... yes checking for sys/socket.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/stat.h... (cached) yes checking for sys/param.h... yes checking for termios.h... yes checking for termio.h... yes 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 sys/time.h... (cached) yes checking for sys/socket.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 sys/socket.h... (cached) yes checking for select... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for recv... yes checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking for send... yes checking for sys/types.h... (cached) yes checking for sys/socket.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 is prototyped... no checking if closesocket might be used... no checking for sys/types.h... (cached) yes checking for sys/socket.h... (cached) yes checking if CloseSocket is compilable... 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 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 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 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 sys/socket.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 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 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 for sys/time.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/socket.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 is prototyped... no checking if ioctlsocket might be used... no checking if IoctlSocket is compilable... 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 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 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 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 sys/socket.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 for perl... /usr/bin/perl 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 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/http/config.ini config.status: creating tests/http/Makefile config.status: creating tests/http/clients/Makefile config.status: creating packages/Makefile config.status: creating packages/vms/Makefile config.status: creating curl-config config.status: creating libcurl.pc 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.13.0 SSL: enabled (GnuTLS) SSH: enabled (libssh2) zlib: enabled brotli: enabled (libbrotlidec) zstd: enabled (libzstd) GSS-API: enabled (MIT Kerberos/Heimdal) GSASL: no (libgsasl not found) 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 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, --with-msh3) 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-amigaos.lo CC libcurl_la-asyn-ares.lo CC libcurl_la-asyn-thread.lo CC libcurl_la-base64.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-socket.lo CC libcurl_la-cfilters.lo CC libcurl_la-conncache.lo CC libcurl_la-cshutdn.lo CC libcurl_la-connect.lo CC libcurl_la-content_encoding.lo CC libcurl_la-cookie.lo CC libcurl_la-curl_addrinfo.lo CC libcurl_la-curl_des.lo CC libcurl_la-curl_endian.lo CC libcurl_la-curl_fnmatch.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_multibyte.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-pause.lo CC libcurl_la-cw-out.lo CC libcurl_la-dict.lo CC libcurl_la-doh.lo CC libcurl_la-dynbuf.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-file.lo CC libcurl_la-fileinfo.lo CC libcurl_la-fopen.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-hash_offt.lo CC libcurl_la-headers.lo CC libcurl_la-hmac.lo CC libcurl_la-hostasyn.lo CC libcurl_la-hostip.lo CC libcurl_la-hostip4.lo CC libcurl_la-hostip6.lo CC libcurl_la-hostsyn.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-inet_ntop.lo CC libcurl_la-inet_pton.lo CC libcurl_la-krb5.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-nonblock.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-strparse.lo CC libcurl_la-system_win32.lo CC libcurl_la-telnet.lo CC libcurl_la-tftp.lo CC libcurl_la-timediff.lo CC libcurl_la-timeval.lo CC libcurl_la-transfer.lo CC libcurl_la-url.lo CC libcurl_la-urlapi.lo CC libcurl_la-version.lo CC libcurl_la-version_win32.lo CC libcurl_la-warnless.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-thread.lo CC libcurlu_la-base64.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-socket.lo CC libcurlu_la-cfilters.lo CC libcurlu_la-conncache.lo CC libcurlu_la-cshutdn.lo CC libcurlu_la-connect.lo CC libcurlu_la-content_encoding.lo CC libcurlu_la-cookie.lo CC libcurlu_la-curl_addrinfo.lo CC libcurlu_la-curl_des.lo CC libcurlu_la-curl_endian.lo CC libcurlu_la-curl_fnmatch.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_multibyte.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-dynbuf.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-file.lo CC libcurlu_la-fileinfo.lo CC libcurlu_la-fopen.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-hash_offt.lo CC libcurlu_la-headers.lo CC libcurlu_la-hmac.lo CC libcurlu_la-hostasyn.lo CC libcurlu_la-hostip.lo CC libcurlu_la-hostip4.lo CC libcurlu_la-hostip6.lo CC libcurlu_la-hostsyn.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-inet_ntop.lo CC libcurlu_la-inet_pton.lo CC libcurlu_la-krb5.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-netrc.lo CC libcurlu_la-nonblock.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-strparse.lo CC libcurlu_la-system_win32.lo CC libcurlu_la-telnet.lo CC libcurlu_la-tftp.lo CC libcurlu_la-timediff.lo CC libcurlu_la-timeval.lo CC libcurlu_la-transfer.lo CC libcurlu_la-url.lo CC libcurlu_la-urlapi.lo CC libcurlu_la-version.lo CC libcurlu_la-version_win32.lo CC libcurlu_la-warnless.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurlu_la-wolfssh.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-bearssl.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-sectransp.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_msh3.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 vssh/libcurl_la-wolfssh.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_multibyte.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-hostip4.o: no symbols /usr/bin/nm: .libs/libcurl_la-hostsyn.o: no symbols /usr/bin/nm: .libs/libcurl_la-httpsrr.o: no symbols /usr/bin/nm: .libs/libcurl_la-inet_ntop.o: no symbols /usr/bin/nm: .libs/libcurl_la-inet_pton.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: .libs/libcurl_la-version_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-bearssl.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-sectransp.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_msh3.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: vssh/.libs/libcurl_la-wolfssh.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 /usr/bin/openssl OpenSSL 3.5.0 8 Apr 2025 (Library: OpenSSL 3.5.0 8 Apr 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 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' CC ../../lib/resolve-curl_multibyte.o CC ../../lib/resolve-memdebug.o CC ../../lib/resolve-mprintf.o CC ../../lib/resolve-nonblock.o CC ../../lib/resolve-strparse.o CC ../../lib/resolve-strequal.o CC ../../lib/resolve-warnless.o CC ../../lib/resolve-timeval.o CC ../../lib/resolve-dynbuf.o CC ../../lib/resolve-timediff.o CC ../../lib/resolve-strcase.o CC ../../lib/resolve-strdup.o CC ../../lib/resolve-curl_get_line.o CC ../../lib/resolve-version_win32.o CC resolve-getpart.o CC resolve-util.o CC ../../lib/resolve-base64.o CC ../../lib/resolve-strerror.o CC resolve-resolve.o CC ../../lib/rtspd-curl_multibyte.o CC ../../lib/rtspd-memdebug.o CC ../../lib/rtspd-mprintf.o CC ../../lib/rtspd-nonblock.o CC ../../lib/rtspd-strparse.o CC ../../lib/rtspd-strequal.o CC ../../lib/rtspd-warnless.o CC ../../lib/rtspd-timediff.o CC ../../lib/rtspd-timeval.o CC ../../lib/rtspd-dynbuf.o CC ../../lib/rtspd-strcase.o CC ../../lib/rtspd-strdup.o CC ../../lib/rtspd-curl_get_line.o CC ../../lib/rtspd-version_win32.o CC rtspd-getpart.o CC rtspd-util.o CC ../../lib/rtspd-base64.o CC ../../lib/rtspd-strerror.o CC rtspd-rtspd.o CC ../../lib/sockfilt-curl_multibyte.o CC ../../lib/sockfilt-memdebug.o CC ../../lib/sockfilt-mprintf.o CC ../../lib/sockfilt-nonblock.o CC ../../lib/sockfilt-strparse.o CC ../../lib/sockfilt-strequal.o CC ../../lib/sockfilt-warnless.o CC ../../lib/sockfilt-timediff.o CC ../../lib/sockfilt-timeval.o CC ../../lib/sockfilt-dynbuf.o CC ../../lib/sockfilt-strcase.o CC ../../lib/sockfilt-strdup.o CC ../../lib/sockfilt-curl_get_line.o CC ../../lib/sockfilt-version_win32.o CC sockfilt-getpart.o CC sockfilt-util.o CC ../../lib/sockfilt-base64.o CC ../../lib/sockfilt-strerror.o CC ../../lib/sockfilt-inet_pton.o CC sockfilt-sockfilt.o CC ../../lib/sws-curl_multibyte.o CC ../../lib/sws-memdebug.o CC ../../lib/sws-mprintf.o CC ../../lib/sws-nonblock.o CC ../../lib/sws-strparse.o CC ../../lib/sws-strequal.o CC ../../lib/sws-warnless.o CC ../../lib/sws-timediff.o CC ../../lib/sws-timeval.o CC ../../lib/sws-dynbuf.o CC ../../lib/sws-strcase.o CC ../../lib/sws-strdup.o CC ../../lib/sws-curl_get_line.o CC ../../lib/sws-version_win32.o CC sws-getpart.o CC sws-util.o CC ../../lib/sws-base64.o CC ../../lib/sws-strerror.o CC ../../lib/sws-inet_pton.o CC sws-sws.o CC ../../lib/tftpd-curl_multibyte.o CC ../../lib/tftpd-memdebug.o CC ../../lib/tftpd-mprintf.o CC ../../lib/tftpd-nonblock.o CC ../../lib/tftpd-strparse.o CC ../../lib/tftpd-strequal.o CC ../../lib/tftpd-warnless.o CC ../../lib/tftpd-timediff.o CC ../../lib/tftpd-timeval.o CC ../../lib/tftpd-strcase.o CC ../../lib/tftpd-dynbuf.o CC ../../lib/tftpd-strdup.o CC ../../lib/tftpd-curl_get_line.o CC ../../lib/tftpd-version_win32.o CC tftpd-getpart.o CC tftpd-util.o CC ../../lib/tftpd-base64.o CC ../../lib/tftpd-strerror.o CC tftpd-tftpd.o CC ../../lib/socksd-curl_multibyte.o CC ../../lib/socksd-memdebug.o CC ../../lib/socksd-mprintf.o CC ../../lib/socksd-nonblock.o CC ../../lib/socksd-strparse.o CC ../../lib/socksd-strequal.o CC ../../lib/socksd-warnless.o CC ../../lib/socksd-timediff.o CC ../../lib/socksd-timeval.o CC ../../lib/socksd-dynbuf.o CC ../../lib/socksd-strcase.o CC ../../lib/socksd-strdup.o CC ../../lib/socksd-curl_get_line.o CC ../../lib/socksd-version_win32.o CC socksd-getpart.o CC socksd-util.o CC ../../lib/socksd-base64.o CC ../../lib/socksd-strerror.o CC ../../lib/socksd-inet_pton.o CC socksd-socksd.o CC disabled.o CC ../../lib/mqttd-curl_multibyte.o CC ../../lib/mqttd-memdebug.o CC ../../lib/mqttd-mprintf.o CC ../../lib/mqttd-nonblock.o CC ../../lib/mqttd-strparse.o CC ../../lib/mqttd-strequal.o CC ../../lib/mqttd-warnless.o CC ../../lib/mqttd-timediff.o CC ../../lib/mqttd-timeval.o CC ../../lib/mqttd-dynbuf.o CC ../../lib/mqttd-strcase.o CC ../../lib/mqttd-strdup.o CC ../../lib/mqttd-curl_get_line.o CC ../../lib/mqttd-version_win32.o CC mqttd-getpart.o CC mqttd-util.o CC ../../lib/mqttd-base64.o CC ../../lib/mqttd-strerror.o CC mqttd-mqttd.o CCLD resolve CCLD rtspd CCLD sockfilt CCLD sws CCLD tftpd CCLD socksd CCLD disabled CCLD mqttd 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' CC libauthretry.o CC ../../lib/timediff.o CC first.o CC libntlmconnect.o CC testutil.o CC ../../lib/warnless.o CC libprereq.o CC lib500.o CC testtrace.o CC ../../lib/curl_multibyte.o CC lib501.o CC lib502.o CC lib503.o CC lib504.o CC lib505.o CC lib506.o CC lib507.o CC lib508.o CC lib509.o CC lib510.o CC lib511.o CC lib512.o CC lib513.o CC lib514.o CC lib515.o CC lib516.o CC lib517.o CC lib518.o CC lib519.o CC lib520.o CC lib521.o CC lib523.o CC lib524.o CC lib525.o CC lib526-lib526.o CC ../../lib/lib526-timediff.o CC lib526-first.o CC lib526-testutil.o CC ../../lib/lib526-warnless.o CC lib527-lib526.o CC ../../lib/lib527-timediff.o CC lib527-first.o CC lib527-testutil.o CC ../../lib/lib527-warnless.o CC lib529-lib525.o CC ../../lib/lib529-timediff.o CC lib529-first.o CC lib529-testutil.o CC ../../lib/lib529-warnless.o CC ../../lib/lib529-curl_multibyte.o CC lib530.o CC lib532-lib526.o CC ../../lib/lib532-timediff.o CC lib532-first.o CC lib532-testutil.o CC lib533.o CC ../../lib/lib532-warnless.o CC lib536.o CC lib537.o CC lib539.o CC lib540.o CC lib541.o CC lib542.o CC lib543.o CC lib544.o CC lib545-lib544.o CC ../../lib/lib545-timediff.o CC lib545-first.o CC lib547.o CC lib548-lib547.o CC ../../lib/lib548-timediff.o CC lib548-first.o CC lib549.o CC lib552.o CC lib553.o CC lib554.o CC lib555.o CC lib556.o CC lib557.o CC lib558.o CC lib559.o CC lib560.o CC lib562.o CC lib564.o CC lib565-lib510.o CC ../../lib/lib565-timediff.o CC lib565-first.o CC lib566.o CC lib567.o CC lib568.o CC lib569.o CC lib570.o CC lib571.o CC lib572.o CC lib573.o CC lib574.o CC lib575.o CC lib576.o CC lib578.o CC lib579.o CC lib582.o CC lib583.o CC lib584-lib589.o CC ../../lib/lib584-timediff.o CC lib584-first.o CC lib585-lib500.o CC ../../lib/lib585-timediff.o CC lib585-first.o CC lib585-testutil.o CC lib585-testtrace.o CC ../../lib/lib585-curl_multibyte.o CC lib586.o CC lib587-lib554.o CC ../../lib/lib587-timediff.o CC lib587-first.o CC lib589.o CC lib590.o CC lib591.o CC lib597.o CC lib598.o CC lib599.o CC lib643.o CC lib645-lib643.o CC ../../lib/lib645-timediff.o CC lib645-first.o CC lib650.o CC lib651.o CC lib652.o CC lib653.o CC lib654.o CC lib655.o CC lib658.o CC lib659.o CC lib661.o CC lib666.o CC lib667.o CC lib668.o CC lib670-lib670.o CC ../../lib/lib670-timediff.o CC lib670-first.o CC lib670-testutil.o CC ../../lib/lib670-warnless.o CC lib671-lib670.o CC ../../lib/lib671-timediff.o CC lib671-first.o CC lib671-testutil.o CC ../../lib/lib671-warnless.o CC lib672-lib670.o CC ../../lib/lib672-timediff.o CC lib672-first.o CC lib672-testutil.o CC ../../lib/lib672-warnless.o CC lib670.o CC lib674.o CC lib676.o CC lib677.o CC lib678.o CC lib694.o CC lib695.o CC lib696-lib556.o CC ../../lib/lib696-timediff.o CC lib696-first.o CC ../../lib/lib696-warnless.o CC lib1156.o CC lib1301.o CC lib1485.o CC lib1500.o CC lib1501.o CC lib1502-lib1502.o CC ../../lib/lib1502-timediff.o CC lib1502-first.o CC lib1502-testutil.o CC ../../lib/lib1502-warnless.o CC lib1503-lib1502.o CC ../../lib/lib1503-timediff.o CC lib1503-first.o CC lib1503-testutil.o CC ../../lib/lib1503-warnless.o CC lib1504-lib1502.o CC ../../lib/lib1504-timediff.o CC lib1504-first.o CC lib1504-testutil.o CC ../../lib/lib1504-warnless.o CC lib1505-lib1502.o CC ../../lib/lib1505-timediff.o CC lib1505-first.o CC lib1505-testutil.o CC ../../lib/lib1505-warnless.o CC lib1506.o CC lib1507.o CC lib1508.o CC lib1509.o CC lib1510.o CC lib1511.o CC lib1512.o CC lib1513.o CC lib1514.o CC lib1515.o CC lib1517.o CC lib1518.o CC lib1520.o /usr/bin/perl /build/curl/src/curl/tests/libtest/mk-lib1521.pl < /build/curl/src/curl/include/curl/curl.h lib1521.c CC ../../lib/lib1521-timediff.o CC lib1521-first.o CC lib1522.o CC lib1523.o CC lib1525.o CC lib1526.o CC lib1527.o CC lib1528.o CC lib1529.o CC lib1530.o CC lib1531.o CC lib1532.o CC lib1533.o CC lib1534.o CC lib1535.o CC lib1536.o CC lib1537.o CC lib1538.o CC lib1539-lib1514.o CC ../../lib/lib1539-timediff.o CC lib1539-first.o CC lib1539-testutil.o CC ../../lib/lib1539-warnless.o CC lib1540.o CC lib1541.o CC lib1542.o CC lib1543-lib1518.o CC ../../lib/lib1543-timediff.o CC lib1543-first.o CC lib1545.o CC lib1550.o CC lib1551.o CC lib1552.o CC lib1553.o CC lib1554.o CC lib1555.o CC lib1556.o CC lib1557.o CC lib1558.o CC lib1559.o CC lib1560.o CC lib1564.o CC lib1565.o CC lib1567.o CC lib1568.o CC lib1569.o CC lib1571-lib1571.o CC ../../lib/lib1571-timediff.o CC lib1571-first.o CC lib1576.o CC lib1578-lib1576.o CC ../../lib/lib1578-timediff.o CC lib1578-first.o CC lib1591.o CC lib1592.o CC lib1593.o CC lib1594.o CC lib1596-lib1594.o CC ../../lib/lib1596-timediff.o CC lib1596-first.o CC lib1596-testutil.o CC lib1597.o CC ../../lib/lib1596-warnless.o CC lib1598.o CC lib1662.o CC lib1900.o CC lib1901.o CC lib1903.o CC lib1905.o CC lib1906.o CC lib1907.o CC lib1908.o CC lib1910.o CC lib1911.o CC lib1912.o CC lib1913.o CC lib1915.o CC lib1916.o CC lib1917-lib1916.o CC ../../lib/lib1917-timediff.o CC lib1917-first.o CC lib1918.o CC ../../lib/lib1917-warnless.o CC lib1919.o CC lib1933.o CC lib1934.o CC lib1935.o CC lib1936.o CC lib1937.o CC lib1938.o CC lib1939.o CC lib1940.o CC lib1945.o CC lib1946-lib1940.o CC ../../lib/lib1946-timediff.o CC lib1946-first.o CC lib1947.o CC lib1948.o CC lib1955.o CC lib1956.o CC lib1957.o CC lib1958.o CC lib1959.o CC lib1960.o CC ../../lib/inet_pton.o CC lib1964.o CC lib1970.o CC lib1971.o CC lib1972.o CC lib1973.o CC lib1974.o CC lib1975.o CC lib1977.o CC lib1978.o CC lib2301.o CC lib2302.o CC lib2304.o CC lib2305.o CC lib2306.o CC lib2308.o CC lib2309.o CC lib2310.o CC lib2311.o CC lib2402.o CC lib2404.o CC lib2405.o CC lib2502.o CC lib3010.o CC lib3025.o CC lib3026.o CC lib3027.o CC lib3100.o CC lib3101.o CC lib3102.o CC lib3103.o CC lib3104.o CC lib3105.o CC lib3207.o CC ../../lib/curl_threads.o CC lib3208.o CC libstubgss_la-stub_gssapi.lo CCLD libauthretry CCLD libntlmconnect CCLD libprereq CCLD lib500 CCLD lib501 CCLD lib502 CCLD lib503 CCLD lib504 CCLD lib505 CCLD lib506 CCLD lib507 CCLD lib508 CCLD lib509 CCLD lib510 CCLD lib511 CCLD lib512 CCLD lib513 CCLD lib514 CCLD lib515 CCLD lib516 CCLD lib517 CCLD lib518 CCLD lib519 CCLD lib520 CCLD lib521 CCLD lib523 CCLD lib524 CCLD lib525 CCLD lib526 CCLD lib527 CCLD lib529 CCLD lib530 CCLD lib532 CCLD lib533 CCLD lib536 CCLD lib537 CCLD lib539 CCLD lib540 CCLD lib541 CCLD lib542 CCLD lib543 CCLD lib544 CCLD lib545 CCLD lib547 CCLD lib548 CCLD lib549 CCLD lib552 CCLD lib553 CCLD lib554 CCLD lib555 CCLD lib556 CCLD lib557 CCLD lib558 CCLD lib559 CCLD lib560 CCLD lib562 CCLD lib564 CCLD lib565 CCLD lib566 CCLD lib567 CCLD lib568 CCLD lib569 CCLD lib570 CCLD lib571 CCLD lib572 CCLD lib573 CCLD lib574 CCLD lib575 CCLD lib576 CCLD lib578 CCLD lib579 CCLD lib582 CCLD lib583 CCLD lib584 CCLD lib585 CCLD lib586 CCLD lib587 CCLD lib589 CCLD lib590 CCLD lib591 CCLD lib597 CCLD lib598 CCLD lib599 CCLD lib643 CCLD lib645 CCLD lib650 CCLD lib651 CCLD lib652 CCLD lib653 CCLD lib654 CCLD lib655 CCLD lib658 CCLD lib659 CCLD lib661 CCLD lib666 CCLD lib667 CCLD lib668 CCLD lib670 CCLD lib671 CCLD lib672 CCLD lib673 CCLD lib674 CCLD lib676 CCLD lib677 CCLD lib678 CCLD lib694 CCLD lib695 CCLD lib696 CCLD lib1156 CCLD lib1301 CCLD lib1485 CCLD lib1500 CCLD lib1501 CCLD lib1502 CCLD lib1503 CCLD lib1504 CCLD lib1505 CCLD lib1506 CCLD lib1507 CCLD lib1508 CCLD lib1509 CCLD lib1510 CCLD lib1511 CCLD lib1512 CCLD lib1513 CCLD lib1514 CCLD lib1515 CCLD lib1517 CCLD lib1518 CCLD lib1520 CC lib1521-lib1521.o CCLD lib1522 CCLD lib1523 CCLD lib1525 CCLD lib1526 CCLD lib1527 CCLD lib1528 CCLD lib1529 CCLD lib1530 CCLD lib1531 CCLD lib1532 CCLD lib1533 CCLD lib1534 CCLD lib1535 CCLD lib1536 CCLD lib1537 CCLD lib1538 CCLD lib1539 CCLD lib1540 CCLD lib1541 CCLD lib1542 CCLD lib1543 CCLD lib1545 CCLD lib1550 CCLD lib1551 CCLD lib1552 CCLD lib1553 CCLD lib1554 CCLD lib1555 CCLD lib1556 CCLD lib1557 CCLD lib1558 CCLD lib1559 CCLD lib1560 CCLD lib1564 CCLD lib1565 CCLD lib1567 CCLD lib1568 CCLD lib1569 CCLD lib1571 CCLD lib1576 CCLD lib1578 CCLD lib1591 CCLD lib1592 CCLD lib1593 CCLD lib1594 CCLD lib1596 CCLD lib1597 CCLD lib1598 CCLD lib1662 CCLD lib1900 CCLD lib1901 CCLD lib1903 CCLD lib1905 CCLD lib1906 CCLD lib1907 CCLD lib1908 CCLD lib1910 CCLD lib1911 CCLD lib1912 CCLD lib1913 CCLD lib1915 CCLD lib1916 CCLD lib1917 CCLD lib1918 CCLD lib1919 CCLD lib1933 CCLD lib1934 CCLD lib1935 CCLD lib1936 CCLD lib1937 CCLD lib1938 CCLD lib1939 CCLD lib1940 CCLD lib1945 CCLD lib1946 CCLD lib1947 CCLD lib1948 CCLD lib1955 CCLD lib1956 CCLD lib1957 CCLD lib1958 CCLD lib1959 CCLD lib1960 CCLD lib1964 CCLD lib1970 CCLD lib1971 CCLD lib1972 CCLD lib1973 CCLD lib1974 CCLD lib1975 CCLD lib1977 CCLD lib1978 CCLD lib2301 CCLD lib2302 CCLD lib2304 CCLD lib2305 CCLD lib2306 CCLD lib2308 CCLD lib2309 CCLD lib2310 CCLD lib2311 CCLD lib2402 CCLD lib2404 CCLD lib2405 CCLD lib2502 CCLD lib3010 CCLD lib3025 CCLD lib3026 CCLD lib3027 CCLD lib3100 CCLD lib3101 CCLD lib3102 CCLD lib3103 CCLD lib3104 CCLD lib3105 CCLD lib3207 CCLD lib3208 CCLD libstubgss.la CCLD lib1521 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' Making all in clients make[3]: Entering directory '/build/curl/src/build-curl/tests/http/clients' CC h2-pausing.o CC h2-serverpush.o CC h2-upgrade-extreme.o CC hx-download.o CC hx-upload.o CC tls-session-reuse.o CC upload-pausing.o CC ws-data.o CC ws-pingpong.o CCLD h2-pausing CCLD h2-serverpush CCLD h2-upgrade-extreme CCLD hx-download CCLD hx-upload CCLD tls-session-reuse CCLD upload-pausing CCLD ws-data CCLD ws-pingpong make[3]: Leaving directory '/build/curl/src/build-curl/tests/http/clients' make[3]: Entering directory '/build/curl/src/build-curl/tests/http' make[3]: Nothing to be done for 'all-am'. make[3]: Leaving directory '/build/curl/src/build-curl/tests/http' 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' CC unit1300.o CC unit1302.o CC unit1303.o CC unit1304.o CC unit1305.o CC unit1307.o CC unit1308.o CC unit1309.o CC unit1323.o CC unit1330.o CC unit1394.o CC unit1395.o CC unit1396.o CC unit1397.o CC unit1398.o CC unit1399.o CC unit1600.o CC unit1601.o CC unit1602.o CC unit1603.o CC unit1604.o CC unit1605.o CC unit1606.o CC unit1607.o CC unit1608.o CC unit1609.o CC unit1610.o CC unit1611.o CC unit1612.o CC unit1614.o CC unit1615.o CC unit1616.o CC unit1620.o CC unit1621.o CC unit1650.o CC unit1651.o CC unit1652.o CC unit1653.o CC unit1654.o CC unit1655.o CC unit1656.o CC unit1657.o CC unit1660.o CC unit1661.o CC unit1663.o CC unit1664.o CC unit2600.o CC unit2601.o CC unit2602.o CC unit2603.o CC unit2604.o CC unit3200.o CC unit3205.o CC ../libtest/first.o CCLD unit1300 CCLD unit1302 CCLD unit1304 CCLD unit1303 CCLD unit1305 CCLD unit1307 CCLD unit1308 CCLD unit1309 CCLD unit1323 CCLD unit1330 CCLD unit1394 CCLD unit1395 CCLD unit1396 CCLD unit1397 CCLD unit1398 CCLD unit1399 CCLD unit1600 CCLD unit1601 CCLD unit1602 CCLD unit1603 CCLD unit1604 CCLD unit1605 CCLD unit1606 CCLD unit1607 CCLD unit1608 CCLD unit1609 CCLD unit1610 CCLD unit1611 CCLD unit1612 CCLD unit1614 CCLD unit1615 CCLD unit1616 CCLD unit1620 CCLD unit1621 CCLD unit1650 CCLD unit1651 CCLD unit1652 CCLD unit1653 CCLD unit1654 CCLD unit1655 CCLD unit1656 CCLD unit1657 CCLD unit1660 CCLD unit1661 CCLD unit1663 CCLD unit1664 CCLD unit2600 CCLD unit2601 CCLD unit2602 CCLD unit2603 CCLD unit2604 CCLD unit3200 CCLD unit3205 make[2]: Leaving directory '/build/curl/src/build-curl/tests/unit' make[2]: Entering directory '/build/curl/src/build-curl/tests' /build/curl/src/curl/scripts/cd2nroff /build/curl/src/curl/tests/runtests.md >runtests.1 /build/curl/src/curl/scripts/cd2nroff /build/curl/src/curl/tests/testcurl.md >testcurl.1 (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 -j4 !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.13.0 (riscv64-unknown-linux-gnu) * libcurl/8.13.0 OpenSSL/3.5.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.65.0 nghttp3/1.9.0 * 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: * Host: * System: Linux arch-nspawn-835492 5.10.113+ #1 SMP PREEMPT Wed Dec 20 08:25:29 UTC 2023 riscv64 GNU/Linux * OS: linux * Perl: v5.40.2 (/usr/bin/perl) * diff: available * Args: -a -p ~flaky ~timing-dependent -v -a -k -p -j4 !433 * Jobs: 4 * Env: Valgrind * Seed: 267563 * buildinfo.configure.tool: configure * buildinfo.configure.args: '--prefix=/usr' '--mandir=/usr/share/man' '--disable-ldap' '--disable-ldaps' '--disable-manual' '--enable-ipv6' '--enable-threaded-resolver' '--enable-websockets' '--with-gssapi' '--with-libssh2' '--with-ca-bundle=/etc/ssl/certs/ca-certificates.crt' '--enable-versioned-symbols' '--with-fish-functions-dir=/usr/share/fish/vendor_completions.d/' '--with-openssl' '--with-openssl-quic' '--with-zsh-functions-dir=/usr/share/zsh/site-functions/' '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' 'LDFLAGS=-Wl,-O1 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -flto=auto' * buildinfo.host: riscv64-unknown-linux-gnu * buildinfo.host.cpu: riscv64 * buildinfo.host.os: linux-gnu * buildinfo.target: riscv64-unknown-linux-gnu * buildinfo.target.cpu: riscv64 * buildinfo.target.os: linux-gnu * buildinfo.target.flags: UNIX UNIX GCC * buildinfo.compiler: GNU_C * buildinfo.compiler.version: 15.1.1 * buildinfo.sysroot: * 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 1510 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 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 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 2500 SKIPPED: curl lacks nghttpx-h3 support test 2503 SKIPPED: curl lacks nghttpx-h3 support Runner 103111 starting Runner 103112 starting Runner 103113 starting Runner 103114 starting CMD (0): ../src/curl --max-time 13 --output log/3/http_verify.out --silent --verbose --globoff "http://127.0.0.1:37353/verifiedserver" 2>log/3/http_verify.log CMD (0): ../src/curl --max-time 13 --output log/2/http_verify.out --silent --verbose --globoff "http://127.0.0.1:39599/verifiedserver" 2>log/2/http_verify.log CMD (0): ../src/curl --max-time 13 --output log/1/http_verify.out --silent --verbose --globoff "http://127.0.0.1:41477/verifiedserver" 2>log/1/http_verify.log CMD (0): ../src/curl --max-time 13 --output log/4/http_verify.out --silent --verbose --globoff "http://127.0.0.1:43669/verifiedserver" 2>log/4/http_verify.log CMD (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/4/valgrind1 ../src/curl -q --output log/4/curl1.out --include --trace-ascii log/4/trace1 --trace-config all --trace-time http://127.0.0.1:43669/1 > log/4/stdout1 2> log/4/stderr1 CMD (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/2/valgrind3 ../src/curl -q --output log/2/curl3.out --include --trace-ascii log/2/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:39599/3 > log/2/stdout3 2> log/2/stderr3 CMD (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/1/valgrind4 ../src/curl -q --output log/1/curl4.out --include --trace-ascii log/1/trace4 --trace-config all --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:41477/4 http://127.0.0.1:41477/4 > log/1/stdout4 2> log/1/stderr4 CMD (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/valgrind2 ../src/curl -q --output log/3/curl2.out --include --trace-ascii log/3/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:37353/2 > log/3/stdout2 2> log/3/stderr2 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: ../src/curl --max-time 13 --output log/1/http_verify.out --silent --verbose --globoff "http://127.0.0.1:41477/verifiedserver" 2>log/1/http_verify.log RUN: HTTP server is on PID 103115 port 41477 * pid http => 103115 103115 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/1/valgrind4 ../src/curl -q --output log/1/curl4.out --include --trace-ascii log/1/trace4 --trace-config all --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:41477/4 http://127.0.0.1:41477/4 > log/1/stdout4 2> log/1/stderr4 4: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind4 ../src/curl -q --output log/1/curl4.out --include --trace-ascii log/1/trace4 --trace-config all --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:41477/4 http://127.0.0.1:41477/4 > log/1/stdout4 2> log/1/stderr4 === End of file commands.log === Start of file http_server.log 19:27:48.483028 Running HTTP IPv4 version on port 41477 19:27:48.483571 Wrote pid 103115 to log/1/server/http_server.pid 19:27:48.483943 Wrote port 41477 to log/1/server/http_server.port 19:27:49.447979 ====> Client connect 19:27:49.448080 accept_connection 3 returned 4 19:27:49.448171 accept_connection 3 returned 0 19:27:49.448724 Read 93 bytes 19:27:49.448840 Process 93 bytes request 19:27:49.448931 Got request: GET /verifiedserver HTTP/1.1 19:27:49.449000 Are-we-friendly question received 19:27:49.449181 Wrote request (93 bytes) input to log/1/server.input 19:27:49.449334 Identifying ourselves as friends 19:27:49.449742 Response sent (57 bytes) and written to log/1/server.response 19:27:49.449837 special request received, no persistency 19:27:49.449903 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 4 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind4 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind4 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: ../src/curl --max-time 13 --output log/2/http_verify.out --silent --verbose --globoff "http://127.0.0.1:39599/verifiedserver" 2>log/2/http_verify.log RUN: HTTP server is on PID 103116 port 39599 * pid http => 103116 103116 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/2/valgrind3 ../src/curl -q --output log/2/curl3.out --include --trace-ascii log/2/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:39599/3 > log/2/stdout3 2> log/2/stderr3 3: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind3 ../src/curl -q --output log/2/curl3.out --include --trace-ascii log/2/trace3 --trace-config all --trace-time -d "fooo=mooo&pooo=clue&doo=%20%20%20++++" -u "fake:-user" http://127.0.0.1:39599/3 > log/2/stdout3 2> log/2/stderr3 === End of file commands.log === Start of file http_server.log 19:27:48.485501 Running HTTP IPv4 version on port 39599 19:27:48.486054 Wrote pid 103116 to log/2/server/http_server.pid 19:27:48.486270 Wrote port 39599 to log/2/server/http_server.port 19:27:49.447429 ====> Client connect 19:27:49.447603 accept_connection 3 returned 4 19:27:49.447756 accept_connection 3 returned 0 19:27:49.448053 Read 93 bytes 19:27:49.448143 Process 93 bytes request 19:27:49.448248 Got request: GET /verifiedserver HTTP/1.1 19:27:49.448329 Are-we-friendly question received 19:27:49.448636 Wrote request (93 bytes) input to log/2/server.input 19:27:49.448814 Identifying ourselves as friends 19:27:49.449245 Response sent (57 bytes) and written to log/2/server.response 19:27:49.449325 special request received, no persistency 19:27:49.449388 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 3 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind3 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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: ../src/curl --max-time 13 --output log/3/http_verify.out --silent --verbose --globoff "http://127.0.0.1:37353/verifiedserver" 2>log/3/http_verify.log RUN: HTTP server is on PID 103117 port 37353 * pid http => 103117 103117 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/3/valgrind2 ../src/curl -q --output log/3/curl2.out --include --trace-ascii log/3/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:37353/2 > log/3/stdout2 2> log/3/stderr2 2: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind2 ../src/curl -q --output log/3/curl2.out --include --trace-ascii log/3/trace2 --trace-config all --trace-time -u fake:user http://127.0.0.1:37353/2 > log/3/stdout2 2> log/3/stderr2 === End of file commands.log === Start of file http_server.log 19:27:48.493470 Running HTTP IPv4 version on port 37353 19:27:48.493926 Wrote pid 103117 to log/3/server/http_server.pid 19:27:48.494109 Wrote port 37353 to log/3/server/http_server.port 19:27:49.448964 ====> Client connect 19:27:49.449094 accept_connection 3 returned 4 19:27:49.449211 accept_connection 3 returned 0 19:27:49.450048 Read 93 bytes 19:27:49.450160 Process 93 bytes request 19:27:49.450239 Got request: GET /verifiedserver HTTP/1.1 19:27:49.450308 Are-we-friendly question received 19:27:49.450446 Wrote request (93 bytes) input to log/3/server.input 19:27:49.450591 Identifying ourselves as friends 19:27:49.451101 Response sent (57 bytes) and written to log/3/server.response 19:27:49.451199 special request received, no persistency 19:27:49.451257 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 2 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === Start of file valgrind2 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind2 Warning: 103114: cleardir(log/4/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/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: ../src/curl --max-time 13 --output log/4/http_verify.out --silent --verbose --globoff "http://127.0.0.1:43669/verifiedserver" 2>log/4/http_verify.log RUN: HTTP server is on PID 103118 port 43669 * pid http => 103118 103118 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/4/valgrind1 ../src/curl -q --output log/4/curl1.out --include --trace-ascii log/4/trace1 --trace-config all --trace-time http://127.0.0.1:43669/1 > log/4/stdout1 2> log/4/stderr1 1: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind1 ../src/curl -q --output log/4/curl1.out --include --trace-ascii log/4/trace1 --trace-config all --trace-time http://127.0.0.1:43669/1 > log/4/stdout1 2> log/4/stderr1 === End of file commands.log === Start of file http_server.log 19:27:48.497190 Running HTTP IPv4 version on port 43669 19:27:48.497641 Wrote pid 103118 to log/4/server/http_server.pid 19:27:48.497834 Wrote port 43669 to log/4/server/http_server.port 19:27:49.447867 ====> Client connect 19:27:49.447981 accept_connection 3 returned 4 19:27:49.448094 accept_connection 3 returned 0 19:27:49.448180 Read 93 bytes 19:27:49.448264 Process 93 bytes request 19:27:49.448363 Got request: GET /verifiedserver HTTP/1.1 19:27:49.448448 Are-we-friendly question received 19:27:49.448625 Wrote request (93 bytes) input to log/4/server.input 19:27:49.448814 Identifying ourselvCMD (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/4/valgrind5 ../src/curl -q --output log/4/curl5.out --include --trace-ascii log/4/trace5 --trace-config all --trace-time http://127.0.0.1:43669/we/want/that/page/5#5 -x 127.0.0.1:43669 > log/4/stdout5 2> log/4/stderr5 CMD (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/valgrind6 ../src/curl -q --output log/3/curl6.out --include --trace-ascii log/3/trace6 --trace-config all --trace-time http://127.0.0.1:37353/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/3/stdout6 2> log/3/stderr6 CMD (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/2/valgrind7 ../src/curl -q --output log/2/curl7.out --include --trace-ascii log/2/trace7 --trace-config all --trace-time http://127.0.0.1:39599/we/want/7 -b none -D log/2/heads7.txt > log/2/stdout7 2> log/2/stderr7 es as friends 19:27:49.449314 Response sent (57 bytes) and written to log/4/server.response 19:27:49.449390 special request received, no persistency 19:27:49.449444 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 1 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind1 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind1 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-config all --trace-time http://127.0.0.1:43669/we/want/that/page/5#5 -x 127.0.0.1:43669 > log/4/stdout5 2> log/4/stderr5 5: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/we/want/that/page/5#5 -x 127.0.0.1:43669 > log/4/stdout5 2> log/4/stderr5 === End of file commands.log === Start of file http_server.log 19:27:50.800180 ====> Client connect 19:27:50.800404 accept_connection 3 returned 4 19:27:50.800523 accept_connection 3 returned 0 19:27:50.800621 Read 93 bytes 19:27:50.800686 Process 93 bytes request 19:27:50.800752 Got request: GET /verifiedserver HTTP/1.1 19:27:50.800817 Are-we-friendly question received 19:27:50.800980 Wrote request (93 bytes) input to log/4/server.input 19:27:50.801147 Identifying ourselves as friends 19:27:50.801692 Response sent (57 bytes) and written to log/4/server.response 19:27:50.801777 special request received, no persistency 19:27:50.801845 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 5 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind5 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind5 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-config all --trace-time http://127.0.0.1:37353/we/want/that/page/6 -b "name=contents;name2=content2" -b name3=content3 > log/3/stdout6 2> log/3/stderr6 6: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37353/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 http_server.log 19:27:50.803626 ====> Client connect 19:27:50.803943 accept_connection 3 returned 4 19:27:50.804076 accept_connection 3 returned 0 19:27:50.804184 Read 93 bytes 19:27:50.804259 Process 93 bytes request 19:27:50.804337 Got request: GET /verifiedserver HTTP/1.1 19:27:50.804418 Are-we-friendly question received 19:27:50.804594 Wrote request (93 bytes) input to log/3/server.input 19:27:50.804800 Identifying ourselves as friends 19:27:50.805503 Response sent (57 bytes) and written to log/3/server.response 19:27:50.805628 special request received, no persistency 19:27:50.805721 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > HoCMD (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/1/valgrind8 ../src/curl -q --output log/1/curl8.out --include --trace-ascii log/1/trace8 --trace-config all --trace-time http://127.0.0.1:41477/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 st: 127.0.0.1:37353 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 6 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === Start of file valgrind6 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind6 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-config all --trace-time http://127.0.0.1:39599/we/want/7 -b none -D log/2/heads7.txt > log/2/stdout7 2> log/2/stderr7 7: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:39599/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 http_server.log 19:27:50.815156 ====> Client connect 19:27:50.815361 accept_connection 3 returned 4 19:27:50.815464 accept_connection 3 returned 0 19:27:50.815574 Read 93 bytes 19:27:50.815669 Process 93 bytes request 19:27:50.815904 Got request: GET /verifiedserver HTTP/1.1 19:27:50.816034 Are-we-friendly question received 19:27:50.816246 Wrote request (93 bytes) input to log/2/server.input 19:27:50.816479 Identifying ourselves as friends 19:27:50.817121 Response sent (57 bytes) and written to log/2/server.response 19:27:50.817214 special request received, no persistency 19:27:50.817267 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 7 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind7 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind7 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-config all --trace-time http://127.0.0.1:41477/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 8: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/we/want/8 -b log/1/heads8.txt > log/1/stdout8 2> log/1/stderr8 === End of file commands.log === 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: cCMD (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/4/valgrind9 ../src/curl -q --output log/4/curl9.out --include --trace-ascii log/4/trace9 --trace-config all --trace-time http://127.0.0.1:43669/we/want/9 -F name=daniel -F tool=curl -F file=@log/4/test9.txt > log/4/stdout9 2> log/4/stderr9 CMD (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/2/valgrind11 ../src/curl -q --output log/2/curl11.out --include --trace-ascii log/2/trace11 --trace-config all --trace-time http://127.0.0.1:39599/want/11 -L > log/2/stdout11 2> log/2/stderr11 CMD (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/valgrind10 ../src/curl -q --output log/3/curl10.out --include --trace-ascii log/3/trace10 --trace-config all --trace-time http://127.0.0.1:37353/we/want/10 -T log/3/test10.txt > log/3/stdout10 2> log/3/stderr10 ookie17=-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 19:27:50.829139 ====> Client connect 19:27:50.829357 accept_connection 3 returned 4 19:27:50.829465 accept_connection 3 returned 0 19:27:50.829566 Read 93 bytes 19:27:50.829651 Process 93 bytes request 19:27:50.829732 Got request: GET /verifiedserver HTTP/1.1 19:27:50.829802 Are-we-friendly question received 19:27:50.829959 Wrote request (93 bytes) input to log/1/server.input 19:27:50.830097 Identifying ourselves as friends 19:27:50.830571 Response sent (57 bytes) and written to log/1/server.response 19:27:50.830667 special request received, no persistency 19:27:50.830730 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 8 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind8 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind8 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/2/valgrind11 ../src/curl -q --output log/2/curl11.out --include --trace-ascii log/2/trace11 --trace-config all --trace-time http://127.0.0.1:39599/want/11 -L > log/2/stdout11 2> log/2/stderr11 11: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind11 ../src/curl -q --output log/2/curl11.out --include --trace-ascii log/2/trace11 --trace-config all --trace-time http://127.0.0.1:39599/want/11 -L > log/2/stdout11 2> log/2/stderr11 === End of file commands.log === Start of file http_server.log 19:27:51.429070 ====> Client connect 19:27:51.429314 accept_connection 3 returned 4 19:27:51.429440 accept_connection 3 returned 0 19:27:51.429545 Read 93 bytes 19:27:51.429616 Process 93 bytes request 19:27:51.429689 Got request: GET /verifiedserver HTTP/1.1 19:27:51.429754 Are-we-friendly question received 19:27:51.429908 Wrote request (93 bytes) input to log/2/server.input 19:27:51.430045 Identifying ourselves as friends 19:27:51.430541 Response sent (57 bytes) and written to log/2/server.response 19:27:51.430634 special request received, no persistency 19:27:51.430691 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 11 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind11 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind11 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/4/valgrind9 ../src/curl -q --output log/4/curl9.out --include --trace-ascii log/4/trace9 --trace-config all --trace-time http://127.0.0.1:43669/we/want/9 -F name=daniel -F tool=curl -F file=@log/4/test9.txt > log/4/stdout9 2> log/4/stderr9 9: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind9 ../src/curl -q --output log/4/curl9.out --include --trace-ascii log/4/trace9 --trace-config all --trace-time http://127.0.0.1:43669/we/want/9 -F name=daniel -F tool=curl -F file=@log/4/test9.txt > log/4/stdout9 2> log/4/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/1/valgrind12 ../src/curl -q --output log/1/curl12.out --include --trace-ascii log/1/trace12 --trace-config all --trace-time http://127.0.0.1:41477/want/12 -r 100-200 > log/1/stdout12 2> log/1/stderr12 tderr9 === End of file commands.log === Start of file http_server.log 19:27:51.397714 ====> Client connect 19:27:51.398027 accept_connection 3 returned 4 19:27:51.398211 accept_connection 3 returned 0 19:27:51.398364 Read 93 bytes 19:27:51.398528 Process 93 bytes request 19:27:51.398648 Got request: GET /verifiedserver HTTP/1.1 19:27:51.398721 Are-we-friendly question received 19:27:51.399081 Wrote request (93 bytes) input to log/4/server.input 19:27:51.399386 Identifying ourselves as friends 19:27:51.400190 Response sent (57 bytes) and written to log/4/server.response 19:27:51.400296 special request received, no persistency 19:27:51.400351 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 9 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file test9.txt foo- This is a moo- bar === End of file test9.txt === Start of file valgrind9 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind9 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/3/valgrind10 ../src/curl -q --output log/3/curl10.out --include --trace-ascii log/3/trace10 --trace-config all --trace-time http://127.0.0.1:37353/we/want/10 -T log/3/test10.txt > log/3/stdout10 2> log/3/stderr10 10: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind10 ../src/curl -q --output log/3/curl10.out --include --trace-ascii log/3/trace10 --trace-config all --trace-time http://127.0.0.1:37353/we/want/10 -T log/3/test10.txt > log/3/stdout10 2> log/3/stderr10 === End of file commands.log === Start of file http_server.log 19:27:51.423176 ====> Client connect 19:27:51.423445 accept_connection 3 returned 4 19:27:51.423586 accept_connection 3 returned 0 19:27:51.424216 Read 93 bytes 19:27:51.424368 Process 93 bytes request 19:27:51.424447 Got request: GET /verifiedserver HTTP/1.1 19:27:51.424512 Are-we-friendly question received 19:27:51.424704 Wrote request (93 bytes) input to log/3/server.input 19:27:51.424873 Identifying ourselves as friends 19:27:51.425275 Response sent (57 bytes) and written to log/3/server.response 19:27:51.425361 special request received, no persistency 19:27:51.425419 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 10 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === Start of file test10.txt Weird file to upload for testing the PUT feature === End of file test10.txt === Start of file valgrind10 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind10 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/1/valgrind12 ../src/curl -q --output log/1/curl12.out --include --trace-ascii log/1/trace12 --trace-config all --trace-time http://127.0.0.1:41477/want/12 -r 100-200 > log/1/stdout12 2> log/1/stderr12 12: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind12 ../src/curl -q --output log/1/curl12.out --include --trace-ascii log/1/trace12 --trace-config all --trace-time http://127.0.0.1:41477/want/12 -r 100-200 > log/1/stdout12 2> log/1/stderr12 === End of file commands.log === Start of file http_server.log 19:27:51.551170 ====> Client connect 19:27:51.551415 accept_connection 3 returned 4 19:27:51.551537 accept_connection 3 returned 0 19:27:51.551637 Read 93 bytes 19:27:51.551702 Process 93 bytes request 19:27:51.551886 Got requCMD (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/valgrind14 ../src/curl -q --output log/3/curl14.out --include --trace-ascii log/3/trace14 --trace-config all --trace-time http://127.0.0.1:37353/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 CMD (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/4/valgrind13 ../src/curl -q --output log/4/curl13.out --include --trace-ascii log/4/trace13 --trace-config all --trace-time http://127.0.0.1:43669/want/13 -X DELETE > log/4/stdout13 2> log/4/stderr13 est: GET /verifiedserver HTTP/1.1 19:27:51.551960 Are-we-friendly question received 19:27:51.552147 Wrote request (93 bytes) input to log/1/server.input 19:27:51.552293 Identifying ourselves as friends 19:27:51.552771 Response sent (57 bytes) and written to log/1/server.response 19:27:51.552862 special request received, no persistency 19:27:51.552918 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 12 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind12 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind12 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-config all --trace-time http://127.0.0.1:37353/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 14: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37353/want/14 -i --head > log/3/stdout14 2> log/3/stderr14 === End of file commands.log === Start of file http_server.log 19:27:52.069986 ====> Client connect 19:27:52.070208 accept_connection 3 returned 4 19:27:52.070313 accept_connection 3 returned 0 19:27:52.070733 Read 93 bytes 19:27:52.070846 Process 93 bytes request 19:27:52.070917 Got request: GET /verifiedserver HTTP/1.1 19:27:52.070974 Are-we-friendly question received 19:27:52.071119 Wrote request (93 bytes) input to log/3/server.input 19:27:52.071248 Identifying ourselves as friends 19:27:52.071600 Response sent (57 bytes) and written to log/3/server.response 19:27:52.071677 special request received, no persistency 19:27:52.071812 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 14 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === Start of file valgrind14 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind14 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/4/valgrind13 ../src/curl -q --output log/4/curl13.out --include --trace-ascii log/4/trace13 --trace-config all --trace-time http://127.0.0.1:43669/want/13 -X DELETE > log/4/stdout13 2> log/4/stderr13 13: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind13 ../src/curl -q --output log/4/curl13.out --include --trace-ascii log/4/trace13 --trace-config all --trace-time http://127.0.0.1:43669/want/13 -X DELETE > log/4/stdout13 2> log/4/stderr13 === End of file commands.log === Start of file http_server.log 19:27:52.069986 ====> Client connect 19:27:52.070208 accept_connection 3 returned 4 19:27:52.070313 accept_connection 3 returned 0 19:27:52.070733 Read 93 bytes 19:27:52.070846 Process 93 bytes request 19:27:52.070917 Got request: GET /verifiedserver HTTP/1.1 19:27:52.070975 Are-we-friendly question received 19:27:52.071119 Wrote request (93 bytes) input to log/4/server.input 19:27:52.071248 Identifying ourselves as friends 19:27:52.071600 Response sent (57 bytes) and written to log/4/server.response 19:27:52.071678 special request received, no persistency 19:27:52.071882 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 *CMD (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/2/valgrind15 ../src/curl -q --include --trace-ascii log/2/trace15 --trace-config all --trace-time http://127.0.0.1:39599/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/2/stdout15 2> log/2/stderr15 using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 13 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind13 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind13 CMD (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/1/valgrind16 ../src/curl -q --output log/1/curl16.out --include --trace-ascii log/1/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:41477 http://we.want.that.site.com/16 > log/1/stdout16 2> log/1/stderr16 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/2/valgrind15 ../src/curl -q --include --trace-ascii log/2/trace15 --trace-config all --trace-time http://127.0.0.1:39599/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/2/stdout15 2> log/2/stderr15 15: stdout FAILED: --- log/2/check-expected 2025-05-23 19:27:52.171966881 +0000 +++ log/2/check-generated 2025-05-23 19:27:52.171966881 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Fake: yes[CR][LF] -Fake: yes[CR][LF] -Fake: yes[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -Repeated nonsense-headers[LF] -http://127.0.0.1:39599/want/15 200 26[LF] == Contents of files in the log/2/ dir after test 15 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Fake: yes[CR][LF] Fake: yes[CR][LF] Fake: yes[CR][LF] Content-Length: 26[CR][LF] [CR][LF] Repeated nonsense-headers[LF] http://127.0.0.1:39599/want/15 200 26[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind15 ../src/curl -q --include --trace-ascii log/2/trace15 --trace-config all --trace-time http://127.0.0.1:39599/want/15 --write-out "%{url_effective} %{http_code} %{size_download}\n" > log/2/stdout15 2> log/2/stderr15 === End of file commands.log === Start of file http_server.log 19:27:52.086018 ====> Client connect 19:27:52.086260 accept_connection 3 returned 4 19:27:52.086397 accept_connection 3 returned 0 19:27:52.086508 Read 93 bytes 19:27:52.086580 Process 93 bytes request 19:27:52.086648 Got request: GET /verifiedserver HTTP/1.1 19:27:52.086713 Are-we-friendly question received 19:27:52.086869 Wrote request (93 bytes) input to log/2/server.input 19:27:52.087029 Identifying ourselves as friends 19:27:52.087538 Response sent (57 bytes) and written to log/2/server.response 19:27:52.087631 special request received, no persistency 19:27:52.087686 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 15 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind15 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind16 ../src/curl -q --output log/1/curl16.out --include --trace-ascii log/1/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:41477 http://we.want.that.site.com/16 > log/1/stdout16 2> log/1/stderr16 16: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind16 ../src/curl -q --output log/1/curl16.out --include --trace-ascii log/1/trace16 --trace-config all --trace-time -U fake@user:loooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong -x 127.0.0.1:41477 http://we.want.that.site.com/16 > log/1/stdout16 2> log/1/stderr16 === End of file commands.log === Start of file http_server.log 19:27:52.167337 ====> Client connect 19:27:52.167580 accept_connection 3 returned 4 19:27:52.167701 accept_connection 3 returned 0 19:27:52.167945 Read 93 bytes 19:27:52.168034 Process 93 bytes request 19:27:52.168115 Got request: GET /verifiedserver HTTP/1.1 19:27:52.168183 Are-we-friendly question received 19:27:52.168344 Wrote request (93 bytes) input to log/1/server.input 19:27:52.168536 Identifying ourselves as friends 19:27:52.169144 Response sent (57 bytes) and written to log/1/server.response 19:27:52.169245 special request received, no persistency 19:27:52.169302 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 16 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind16 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valCMD (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/1/valgrind20 ../src/curl -q --output log/1/curl20.out --include --trace-ascii log/1/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/1/stdout20 2> log/1/stderr20 CMD (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/2/valgrind19 ../src/curl -q --output log/2/curl19.out --include --trace-ascii log/2/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/2/stdout19 2> log/2/stderr19 CMD (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/valgrind17 ../src/curl -q --output log/3/curl17.out --include --trace-ascii log/3/trace17 --trace-config all --trace-time -K - 127.0.0.1:37353/that.site.com/17 log/3/stdout17 2> log/3/stderr17 grind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind16 * starts no server 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/1/valgrind20 ../src/curl -q --output log/1/curl20.out --include --trace-ascii log/1/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/1/stdout20 2> log/1/stderr20 curl returned 1, when expecting 6 20: exit FAILED == Contents of files in the log/1/ 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/1/valgrind20 ../src/curl -q --output log/1/curl20.out --include --trace-ascii log/1/trace20 --trace-config all --trace-time --ipv4 non-existing-host.haxx.se. > log/1/stdout20 2> log/1/stderr20 === End of file commands.log === Start of file server.cmd Testnum 20 === End of file server.cmd === Start of file valgrind20 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind20 * starts no server test 0019...[attempt connect to non-listening 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/2/valgrind19 ../src/curl -q --output log/2/curl19.out --include --trace-ascii log/2/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/2/stdout19 2> log/2/stderr19 curl returned 1, when expecting 7 19: exit FAILED == Contents of files in the log/2/ 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/2/valgrind19 ../src/curl -q --output log/2/curl19.out --include --trace-ascii log/2/trace19 --trace-config all --trace-time --trace-config all 127.0.0.1:47 > log/2/stdout19 2> log/2/stderr19 === End of file commands.log === Start of file server.cmd Testnum 19 === End of file server.cmd === Start of file valgrind19 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind19 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/3/valgrind17 ../src/curl -q --output log/3/curl17.out --include --trace-ascii log/3/trace17 --trace-config all --trace-time -K - 127.0.0.1:37353/that.site.com/17 log/3/stdout17 2> log/3/stderr17 17: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind17 ../src/curl -q --output log/3/curl17.out --include --trace-ascii log/3/trace17 --trace-config all --trace-time -K - 127.0.0.1:37353/that.site.com/17 log/3/stdout17 2> log/3/stderr17 === End of file commands.log === Start of file http_server.log 19:27:52.670916 ====> Client connect 19:27:52.671154 accept_connection 3 returned 4 19:27:52.671293 accept_connection 3 returned 0 19:27:52.671865 Read 93 bytes 19:27:52.671998 Process 93 bytes request 19:27:52.672080 Got request: GET /verifiedserver HTTP/1.1 19:27:52.672156 Are-we-friendly question received 19:27:52.672369 Wrote request (93 bytes) input to log/3/server.input 19:27:52.672553 Identifying ourselves as friends 19:27:52.672950 Response sent (57 bytes) and written to log/3/server.response 19:27:52.673038 special request received, no persistency 19:27:52.673094 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 17 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === 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 valgrind17 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot bCMD (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/4/valgrind18 ../src/curl -q --include --trace-ascii log/4/trace18 --trace-config all --trace-time "127.0.0.1:43669/{18,180002,180003}" > log/4/stdout18 2> log/4/stderr18 e set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind17 CMD (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/1/valgrind21 ../src/curl -q --output log/1/curl21.out --include --trace-ascii log/1/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/1/stdout21 2> log/1/stderr21 CMD (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/valgrind23 ../src/curl -q --output log/3/curl23.out --include --trace-ascii log/3/trace23 --trace-config all --trace-time htfp://127.0.0.1:37353/none.htfml > log/3/stdout23 2> log/3/stderr23 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/4/valgrind18 ../src/curl -q --include --trace-ascii log/4/trace18 --trace-config all --trace-time "127.0.0.1:43669/{18,180002,180003}" > log/4/stdout18 2> log/4/stderr18 18: stdout FAILED: --- log/4/check-expected 2025-05-23 19:27:52.763981742 +0000 +++ log/4/check-generated 2025-05-23 19:27:52.763981742 +0000 @@ -1,15 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -moo[LF] -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -foo[LF] -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 4[CR][LF] -[CR][LF] -hoo[LF] == Contents of files in the log/4/ dir after test 18 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] moo[LF] HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] foo[LF] HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 4[CR][LF] [CR][LF] hoo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind18 ../src/curl -q --include --trace-ascii log/4/trace18 --trace-config all --trace-time "127.0.0.1:43669/{18,180002,180003}" > log/4/stdout18 2> log/4/stderr18 === End of file commands.log === Start of file http_server.log 19:27:52.685509 ====> Client connect 19:27:52.685722 accept_connection 3 returned 4 19:27:52.685826 accept_connection 3 returned 0 19:27:52.686269 Read 93 bytes 19:27:52.686385 Process 93 bytes request 19:27:52.686456 Got request: GET /verifiedserver HTTP/1.1 19:27:52.686514 Are-we-friendly question received 19:27:52.686688 Wrote request (93 bytes) input to log/4/server.input 19:27:52.686823 Identifying ourselves as friends 19:27:52.687208 Response sent (57 bytes) and written to log/4/server.response 19:27:52.687294 special request received, no persistency 19:27:52.687347 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 18 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind18 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind18 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/1/valgrind21 ../src/curl -q --output log/1/curl21.out --include --trace-ascii log/1/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/1/stdout21 2> log/1/stderr21 curl returned 1, when expecting 2 21: exit FAILED == Contents of files in the log/1/ 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/1/valgrind21 ../src/curl -q --output log/1/curl21.out --include --trace-ascii log/1/trace21 --trace-config all --trace-time -I -d FOOO -F moo=moo localhost > log/1/stdout21 2> log/1/stderr21 === End of file commands.log === Start of file http_server.log 19:27:53.242494 ====> Client connect 19:27:53.242728 accept_connection 3 returned 4 19:27:53.242857 accept_connection 3 returned 0 19:27:53.242972 Read 93 bytes 19:27:53.243090 Process 93 bytes request 19:27:53.243203 Got request: GET /verifiedserver HTTP/1.1 19:27:53.243279 Are-we-friendly question received 19:27:53.243504 Wrote request (93 bytes) input to log/1/server.input 19:27:53.243664 Identifying ourselves as friends 19:27:53.244460 Response sent (57 bytes) and written to log/1/server.response 19:27:53.244557 special request received, no persistency 19:27:53.244628 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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: 103115 === End of file server.response === Start of file valgrind21 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgriCMD (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/2/valgrind22 ../src/curl -q --output log/2/curl22.out --include --trace-ascii log/2/trace22 --trace-config all --trace-time 127.0.0.1:39599/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/2/stdout22 2> log/2/stderr22 nd21 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/3/valgrind23 ../src/curl -q --output log/3/curl23.out --include --trace-ascii log/3/trace23 --trace-config all --trace-time htfp://127.0.0.1:37353/none.htfml > log/3/stdout23 2> log/3/stderr23 valgrind ERROR valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. == Contents of files in the log/3/ 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/3/valgrind23 ../src/curl -q --output log/3/curl23.out --include --trace-ascii log/3/trace23 --trace-config all --trace-time htfp://127.0.0.1:37353/none.htfml > log/3/stdout23 2> log/3/stderr23 === End of file commands.log === Start of file http_server.log 19:27:53.294314 ====> Client connect 19:27:53.294519 accept_connection 3 returned 4 19:27:53.294615 accept_connection 3 returned 0 19:27:53.295107 Read 93 bytes 19:27:53.295232 Process 93 bytes request 19:27:53.295313 Got request: GET /verifiedserver HTTP/1.1 19:27:53.295375 Are-we-friendly question received 19:27:53.295541 Wrote request (93 bytes) input to log/3/server.input 19:27:53.295747 Identifying ourselves as friends 19:27:53.296210 Response sent (57 bytes) and written to log/3/server.response 19:27:53.296315 special request received, no persistency 19:27:53.296381 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === 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: 103117 === End of file server.response === Start of file valgrind23 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind23 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/2/valgrind22 ../src/curl -q --output log/2/curl22.out --include --trace-ascii log/2/trace22 --trace-config all --trace-time 127.0.0.1:39599/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/2/stdout22 2> log/2/stderr22 22: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind22 ../src/curl -q --output log/2/curl22.out --include --trace-ascii log/2/trace22 --trace-config all --trace-time 127.0.0.1:39599/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (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/4/valgrind24 ../src/curl -q --output log/4/curl24.out --include --trace-ascii log/4/trace24 --trace-config all --trace-time http://127.0.0.1:43669/24 --fail --silent --show-error > log/4/stdout24 2> log/4/stderr24 CMD (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/valgrind26 ../src/curl -q --output log/3/curl26.out --include --trace-ascii log/3/trace26 --trace-config all --trace-time http://127.0.0.1:37353/want/26 -o - -o - > log/3/stdout26 2> log/3/stderr26 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/22 > log/2/stdout22 2> log/2/stderr22 === End of file commands.log === Start of file http_server.log 19:27:53.281910 ====> Client connect 19:27:53.282131 accept_connection 3 returned 4 19:27:53.282252 accept_connection 3 returned 0 19:27:53.282384 Read 93 bytes 19:27:53.282500 Process 93 bytes request 19:27:53.282588 Got request: GET /verifiedserver HTTP/1.1 19:27:53.282694 Are-we-friendly question received 19:27:53.282931 Wrote request (93 bytes) input to log/2/server.input 19:27:53.283127 Identifying ourselves as friends 19:27:53.283761 Response sent (57 bytes) and written to log/2/server.response 19:27:53.283880 special request received, no persistency 19:27:53.283945 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 22 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind22 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind24 ../src/curl -q --output log/4/curl24.out --include --trace-ascii log/4/trace24 --trace-config all --trace-time http://127.0.0.1:43669/24 --fail --silent --show-error > log/4/stdout24 2> log/4/stderr24 24: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind24 ../src/curl -q --output log/4/curl24.out --include --trace-ascii log/4/trace24 --trace-config all --trace-time http://127.0.0.1:43669/24 --fail --silent --show-error > log/4/stdout24 2> log/4/stderr24 === End of file commands.log === Start of file http_server.log 19:27:53.351858 ====> Client connect 19:27:53.352101 accept_connection 3 returned 4 19:27:53.352227 accept_connection 3 returned 0 19:27:53.352338 Read 93 bytes 19:27:53.352420 Process 93 bytes request 19:27:53.352490 Got request: GET /verifiedserver HTTP/1.1 19:27:53.352550 Are-we-friendly question received 19:27:53.352704 Wrote request (93 bytes) input to log/4/server.input 19:27:53.352846 Identifying ourselves as friends 19:27:53.353347 Response sent (57 bytes) and written to log/4/server.response 19:27:53.353440 special request received, no persistency 19:27:53.353496 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 24 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind24 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind24 test 0026...[specify more -o thCMD (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/2/valgrind27 ../src/curl -q --output log/2/curl27.out --include --trace-ascii log/2/trace27 --trace-config all --trace-time "http://127.0.0.1:39599/want/{27,27,27}" -b none > log/2/stdout27 2> log/2/stderr27 CMD (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/1/valgrind25 ../src/curl -q --output log/1/curl25.out --include --trace-ascii log/1/trace25 --trace-config all --trace-time http://127.0.0.1:41477/want/25 -L --max-redirs 5 > log/1/stdout25 2> log/1/stderr25 CMD (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/4/valgrind28 ../src/curl -q --output log/4/curl28.out --include --trace-ascii log/4/trace28 --trace-config all --trace-time http://127.0.0.1:43669/want/28 -L > log/4/stdout28 2> log/4/stderr28 an 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/3/valgrind26 ../src/curl -q --output log/3/curl26.out --include --trace-ascii log/3/trace26 --trace-config all --trace-time http://127.0.0.1:37353/want/26 -o - -o - > log/3/stdout26 2> log/3/stderr26 26: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind26 ../src/curl -q --output log/3/curl26.out --include --trace-ascii log/3/trace26 --trace-config all --trace-time http://127.0.0.1:37353/want/26 -o - -o - > log/3/stdout26 2> log/3/stderr26 === End of file commands.log === Start of file http_server.log 19:27:53.883581 ====> Client connect 19:27:53.883949 accept_connection 3 returned 4 19:27:53.884081 accept_connection 3 returned 0 19:27:53.884208 Read 93 bytes 19:27:53.884317 Process 93 bytes request 19:27:53.884401 Got request: GET /verifiedserver HTTP/1.1 19:27:53.884466 Are-we-friendly question received 19:27:53.884658 Wrote request (93 bytes) input to log/3/server.input 19:27:53.884958 Identifying ourselves as friends 19:27:53.885673 Response sent (57 bytes) and written to log/3/server.response 19:27:53.885783 special request received, no persistency 19:27:53.885852 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === End of file http_verify.out === Start of file server.cmd Testnum 26 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103117 === End of file server.response === Start of file valgrind26 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind26 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/2/valgrind27 ../src/curl -q --output log/2/curl27.out --include --trace-ascii log/2/trace27 --trace-config all --trace-time "http://127.0.0.1:39599/want/{27,27,27}" -b none > log/2/stdout27 2> log/2/stderr27 27: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind27 ../src/curl -q --output log/2/curl27.out --include --trace-ascii log/2/trace27 --trace-config all --trace-time "http://127.0.0.1:39599/want/{27,27,27}" -b none > log/2/stdout27 2> log/2/stderr27 === End of file commands.log === Start of file http_server.log 19:27:53.943384 ====> Client connect 19:27:53.943608 accept_connection 3 returned 4 19:27:53.943819 accept_connection 3 returned 0 19:27:53.943939 Read 93 bytes 19:27:53.944016 Process 93 bytes request 19:27:53.944102 Got request: GET /verifiedserver HTTP/1.1 19:27:53.944177 Are-we-friendly question received 19:27:53.944351 Wrote request (93 bytes) input to log/2/server.input 19:27:53.944507 Identifying ourselves as friends 19:27:53.945014 Response sent (57 bytes) and written to log/2/server.response 19:27:53.945113 special request received, no persistency 19:27:53.945174 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 27 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind27 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind27 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/1/valgrind25 ../src/curl -q --output log/1/curl25.out --include --trace-ascii log/1/trace25 --trace-config all --trace-time http://127.0.0.1:41477/want/25 -L --max-redirs 5 > log/1/stdout25 2> log/1/stderr25 25: protocol FAILED! There was no content at all in the file log/1/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/valgrind29 ../src/curl -q --output log/3/curl29.out --include --trace-ascii log/3/trace29 --trace-config all --trace-time http://127.0.0.1:37353/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29 RUN: Process with pid 103117 signalled to die RUN: Process with pid 103117 gracefully died erver.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind25 ../src/curl -q --output log/1/curl25.out --include --trace-ascii log/1/trace25 --trace-config all --trace-time http://127.0.0.1:41477/want/25 -L --max-redirs 5 > log/1/stdout25 2> log/1/stderr25 === End of file commands.log === Start of file http_server.log 19:27:53.893945 ====> Client connect 19:27:53.894188 accept_connection 3 returned 4 19:27:53.894310 accept_connection 3 returned 0 19:27:53.894788 Read 93 bytes 19:27:53.894907 Process 93 bytes request 19:27:53.894990 Got request: GET /verifiedserver HTTP/1.1 19:27:53.895066 Are-we-friendly question received 19:27:53.895274 Wrote request (93 bytes) input to log/1/server.input 19:27:53.895464 Identifying ourselves as friends 19:27:53.896004 Response sent (57 bytes) and written to log/1/server.response 19:27:53.896107 special request received, no persistency 19:27:53.896167 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 25 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind25 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind25 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/4/valgrind28 ../src/curl -q --output log/4/curl28.out --include --trace-ascii log/4/trace28 --trace-config all --trace-time http://127.0.0.1:43669/want/28 -L > log/4/stdout28 2> log/4/stderr28 28: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind28 ../src/curl -q --output log/4/curl28.out --include --trace-ascii log/4/trace28 --trace-config all --trace-time http://127.0.0.1:43669/want/28 -L > log/4/stdout28 2> log/4/stderr28 === End of file commands.log === Start of file http_server.log 19:27:53.970246 ====> Client connect 19:27:53.970465 accept_connection 3 returned 4 19:27:53.970579 accept_connection 3 returned 0 19:27:53.970676 Read 93 bytes 19:27:53.970740 Process 93 bytes request 19:27:53.970812 Got request: GET /verifiedserver HTTP/1.1 19:27:53.970880 Are-we-friendly question received 19:27:53.971041 Wrote request (93 bytes) input to log/4/server.input 19:27:53.971185 Identifying ourselves as friends 19:27:53.971757 Response sent (57 bytes) and written to log/4/server.response 19:27:53.971870 special request received, no persistency 19:27:53.971928 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 28 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind28 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind28 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-config all --trace-time http://127.0.0.1:37353/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: 1 == 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-config all --trace-time http://127.0.0.1:37353/want/29 -m 2 > log/3/stdout29 2> log/3/stderr29 === End of filCMD (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/2/valgrind30 ../src/curl -q --output log/2/curl30.out --include --trace-ascii log/2/trace30 --trace-config all --trace-time http://127.0.0.1:39599/want/30 > log/2/stdout30 2> log/2/stderr30 CMD (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/1/valgrind32 ../src/curl -q --output log/1/curl32.out --include --trace-ascii log/1/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:41477/32 -G > log/1/stdout32 2> log/1/stderr32 e commands.log === Start of file http_server.log 19:27:54.469433 ====> Client connect 19:27:54.469661 accept_connection 3 returned 4 19:27:54.469779 accept_connection 3 returned 0 19:27:54.469887 Read 93 bytes 19:27:54.469967 Process 93 bytes request 19:27:54.470041 Got request: GET /verifiedserver HTTP/1.1 19:27:54.470110 Are-we-friendly question received 19:27:54.470284 Wrote request (93 bytes) input to log/3/server.input 19:27:54.470450 Identifying ourselves as friends 19:27:54.471044 Response sent (57 bytes) and written to log/3/server.response 19:27:54.471142 special request received, no persistency 19:27:54.471205 ====> Client disconnect 0 exit_signal_handler: called 19:27:54.969892 signalled to die 19:27:54.970263 ========> IPv4 sws (port 37353 pid: 103117) exits with signal (15) 19:27:54.970361 ========> sws quits === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37353... * Connected to 127.0.0.1 (127.0.0.1) port 37353 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37353 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103117 === 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: 103117 === End of file server.response === Start of file valgrind29 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind29 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/2/valgrind30 ../src/curl -q --output log/2/curl30.out --include --trace-ascii log/2/trace30 --trace-config all --trace-time http://127.0.0.1:39599/want/30 > log/2/stdout30 2> log/2/stderr30 30: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind30 ../src/curl -q --output log/2/curl30.out --include --trace-ascii log/2/trace30 --trace-config all --trace-time http://127.0.0.1:39599/want/30 > log/2/stdout30 2> log/2/stderr30 === End of file commands.log === Start of file http_server.log 19:27:54.586277 ====> Client connect 19:27:54.586480 accept_connection 3 returned 4 19:27:54.586585 accept_connection 3 returned 0 19:27:54.587031 Read 93 bytes 19:27:54.587146 Process 93 bytes request 19:27:54.587231 Got request: GET /verifiedserver HTTP/1.1 19:27:54.587293 Are-we-friendly question received 19:27:54.587449 Wrote request (93 bytes) input to log/2/server.input 19:27:54.587588 Identifying ourselves as friends 19:27:54.588072 Response sent (57 bytes) and written to log/2/server.response 19:27:54.588180 special request received, no persistency 19:27:54.588242 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 30 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind30 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind32 ../src/curl -q --output log/1/curl32.out --include --trace-ascii log/1/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:41477/32 -G > log/1/stdout32 2> log/1/stderr32 32: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind32 ../src/curl -q --output log/1/curl32.out --include --trace-ascii log/1/trace32 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:41477/32 -G > log/1/stdout32 2> log/1/stderr32 === End of file commands.log === Start of file http_server.log 19:27:54.611301 ====> Client connect 19:27:54.611530 accept_connection 3 returned 4 19:27:54.611701 accept_connection 3 returned 0 19:27:54.612226 Read 93 bytes 19:27:54.612356 Process 93 bytes request 19:27:54.612430 Got request: GET /verifiedserver HTTP/1.1 19:27:54.612490 Are-we-friendly question reCMD (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/4/valgrind31 ../src/curl -q --output log/4/curl31.out --include --trace-ascii log/4/trace31 --trace-config all --trace-time http://test31.curl:43669/we/want/31 -b none -c log/4/jar31.txt --resolve test31.curl:43669:127.0.0.1 > log/4/stdout31 2> log/4/stderr31 CMD (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/1/valgrind35 ../src/curl -q --output log/1/curl35.out --include --trace-ascii log/1/trace35 --trace-config all --trace-time http://127.0.0.1:41477/we/want/35 --data-binary @log/1/test35.txt > log/1/stdout35 2> log/1/stderr35 ceived 19:27:54.612643 Wrote request (93 bytes) input to log/1/server.input 19:27:54.612793 Identifying ourselves as friends 19:27:54.613224 Response sent (57 bytes) and written to log/1/server.response 19:27:54.613322 special request received, no persistency 19:27:54.613374 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 32 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind32 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind31 ../src/curl -q --output log/4/curl31.out --include --trace-ascii log/4/trace31 --trace-config all --trace-time http://test31.curl:43669/we/want/31 -b none -c log/4/jar31.txt --resolve test31.curl:43669:127.0.0.1 > log/4/stdout31 2> log/4/stderr31 31: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind31 ../src/curl -q --output log/4/curl31.out --include --trace-ascii log/4/trace31 --trace-config all --trace-time http://test31.curl:43669/we/want/31 -b none -c log/4/jar31.txt --resolve test31.curl:43669:127.0.0.1 > log/4/stdout31 2> log/4/stderr31 === End of file commands.log === Start of file http_server.log 19:27:54.602673 ====> Client connect 19:27:54.602903 accept_connection 3 returned 4 19:27:54.603026 accept_connection 3 returned 0 19:27:54.603133 Read 93 bytes 19:27:54.603202 Process 93 bytes request 19:27:54.603271 Got request: GET /verifiedserver HTTP/1.1 19:27:54.603333 Are-we-friendly question received 19:27:54.603491 Wrote request (93 bytes) input to log/4/server.input 19:27:54.603785 Identifying ourselves as friends 19:27:54.604440 Response sent (57 bytes) and written to log/4/server.response 19:27:54.604539 special request received, no persistency 19:27:54.604595 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 31 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind31 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind31 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/1/valgrind35 ../src/curl -q --output log/1/curl35.out --include --trace-ascii log/1/trace35 --trace-config all --trace-time http://127.0.0.1:41477/we/want/35 --data-binary @log/1/test35.txt > log/1/stdout35 2> log/1/stderr35 35: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind35 ../src/curl -q --output log/1/curl35.out --include --trace-ascii log/1/trace35 --trace-config all --trace-time http://127.0.0.1:41477/we/want/35 --data-binary @log/1/test35.txt > log/1/stdout35 2> log/1/stderr35 === End of file commands.log === Start of file http_server.log 19:27:55.239981 ====> Client connect 19:27:55.240195 accept_connection 3 returned 4 19:27:55.240291 accept_connection 3 returned 0 19:27:55.240380 Read 93 bytes 19:27:55.240443 Process 93 bytes request 19:27:55.240511 Got request: GET /verifiedserver HTTP/1.1 19:27:55.240571 Are-we-friendly question received 19:27:55.240713 Wrote request (93 bytes) input to log/1/server.input 19:27:55.240840 Identifying ourselves as friends 19:27:55.241336 Response sent (57 bytes) and written to log/1/server.response 19:27:55.241424 special request received, no persistency 19:27:55.241479 ====> Client disconnect 0 === CMD (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/2/valgrind34 ../src/curl -q --output log/2/curl34.out --include --trace-ascii log/2/trace34 --trace-config all --trace-time http://127.0.0.1:39599/34 > log/2/stdout34 2> log/2/stderr34 CMD (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/4/valgrind36 ../src/curl -q --output log/4/curl36.out --include --trace-ascii log/4/trace36 --trace-config all --trace-time http://127.0.0.1:43669/36 > log/4/stdout36 2> log/4/stderr36 End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 35 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file test35.txt This is binary data with an embedded NUL byte === End of file test35.txt === Start of file valgrind35 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind35 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/2/valgrind34 ../src/curl -q --output log/2/curl34.out --include --trace-ascii log/2/trace34 --trace-config all --trace-time http://127.0.0.1:39599/34 > log/2/stdout34 2> log/2/stderr34 34: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind34 ../src/curl -q --output log/2/curl34.out --include --trace-ascii log/2/trace34 --trace-config all --trace-time http://127.0.0.1:39599/34 > log/2/stdout34 2> log/2/stderr34 === End of file commands.log === Start of file http_server.log 19:27:55.243575 ====> Client connect 19:27:55.243906 accept_connection 3 returned 4 19:27:55.244043 accept_connection 3 returned 0 19:27:55.244182 Read 93 bytes 19:27:55.244274 Process 93 bytes request 19:27:55.244362 Got request: GET /verifiedserver HTTP/1.1 19:27:55.244431 Are-we-friendly question received 19:27:55.244599 Wrote request (93 bytes) input to log/2/server.input 19:27:55.244782 Identifying ourselves as friends 19:27:55.245317 Response sent (57 bytes) and written to log/2/server.response 19:27:55.245408 special request received, no persistency 19:27:55.245467 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 34 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind34 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind34 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/4/valgrind36 ../src/curl -q --output log/4/curl36.out --include --trace-ascii log/4/trace36 --trace-config all --trace-time http://127.0.0.1:43669/36 > log/4/stdout36 2> log/4/stderr36 36: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind36 ../src/curl -q --output log/4/curl36.out --include --trace-ascii log/4/trace36 --trace-config all --trace-time http://127.0.0.1:43669/36 > log/4/stdout36 2> log/4/stderr36 === End of file commands.log === Start of file http_server.log 19:27:55.323229 ====> Client connect 19:27:55.323456 accept_connection 3 returned 4 19:27:55.323572 accept_connection 3 returned 0 19:27:55.323744 Read 93 bytes 19:27:55.323837 Process 93 bytes request 19:27:55.323915 Got request: GET /verifiedserver HTTP/1.1 19:27:55.323978 Are-we-friendly question received 19:27:55.324127 Wrote request (93 bytes) input to log/4/server.input 19:27:55.324261 Identifying ourselves as friends 19:27:55.324743 Response sent (57 bytes) and written to log/4/server.response 19:27:55.324836 special request received, no persistency 19:27:55.324890 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.logCMD (0): ../src/curl --max-time 13 --output log/3/http_verify.out --silent --verbose --globoff "http://127.0.0.1:37525/verifiedserver" 2>log/3/http_verify.log CMD (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/1/valgrind37 ../src/curl -q --output log/1/curl37.out --include --trace-ascii log/1/trace37 --trace-config all --trace-time http://127.0.0.1:41477/37 > log/1/stdout37 2> log/1/stderr37 CMD (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/2/valgrind38 ../src/curl -q --include --trace-ascii log/2/trace38 --trace-config all --trace-time http://127.0.0.1:39599/want/38 -C - --no-include -o log/2/fewl38.txt > log/2/stdout38 2> log/2/stderr38 === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 36 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind36 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind36 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/1/valgrind37 ../src/curl -q --output log/1/curl37.out --include --trace-ascii log/1/trace37 --trace-config all --trace-time http://127.0.0.1:41477/37 > log/1/stdout37 2> log/1/stderr37 37: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind37 ../src/curl -q --output log/1/curl37.out --include --trace-ascii log/1/trace37 --trace-config all --trace-time http://127.0.0.1:41477/37 > log/1/stdout37 2> log/1/stderr37 === End of file commands.log === Start of file http_server.log 19:27:55.767002 ====> Client connect 19:27:55.767239 accept_connection 3 returned 4 19:27:55.767352 accept_connection 3 returned 0 19:27:55.767471 Read 93 bytes 19:27:55.767565 Process 93 bytes request 19:27:55.767789 Got request: GET /verifiedserver HTTP/1.1 19:27:55.767883 Are-we-friendly question received 19:27:55.768045 Wrote request (93 bytes) input to log/1/server.input 19:27:55.768213 Identifying ourselves as friends 19:27:55.768786 Response sent (57 bytes) and written to log/1/server.response 19:27:55.768887 special request received, no persistency 19:27:55.768943 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 37 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind37 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind37 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/2/valgrind38 ../src/curl -q --include --trace-ascii log/2/trace38 --trace-config all --trace-time http://127.0.0.1:39599/want/38 -C - --no-include -o log/2/fewl38.txt > log/2/stdout38 2> log/2/stderr38 38: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind38 ../src/curl -q --include --trace-ascii log/2/trace38 --trace-config all --trace-time http://127.0.0.1:39599/want/38 -C - --no-include -o log/2/fewl38.txt > log/2/stdout38 2> log/2/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 19:27:55.817388 ====> Client connect 19:27:55.817612 accept_connection 3 returned 4 19:27:55.817710 accept_connection 3 returned 0 19:27:55.818154 Read 93 bytes 19:27:55.818274 Process 93 bytes request 19:27:55.818351 Got request: GET /verifiedserver HTTP/1.1 19:27:55.818413 Are-we-friendly question received 19:27:55.818557 Wrote request (93 bytes) input to log/2/server.input 19:27:55.818693 Identifying ourselves as friends 19:27:55.819052 Response sent (57 bytes) and written to log/2/server.response 19:27:55.819135 special request received, no persistency 19:27:55.819194 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 38 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind38 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory foCMD (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/4/valgrind39 ../src/curl -q --output log/4/curl39.out --include --trace-ascii log/4/trace39 --trace-config all --trace-time http://127.0.0.1:43669/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/4/stdout39 2> log/4/stderr39 CMD (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/valgrind33 ../src/curl -q --output log/3/curl33.out --include --trace-ascii log/3/trace33 --trace-config all --trace-time http://127.0.0.1:37525/33 -Tlog/3/test33.txt -C 50 > log/3/stdout33 2> log/3/stderr33 r this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind38 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/4/valgrind39 ../src/curl -q --output log/4/curl39.out --include --trace-ascii log/4/trace39 --trace-config all --trace-time http://127.0.0.1:43669/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/4/stdout39 2> log/4/stderr39 39: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind39 ../src/curl -q --output log/4/curl39.out --include --trace-ascii log/4/trace39 --trace-config all --trace-time http://127.0.0.1:43669/we/want/39 -F name=daniel -F tool=curl --form-string "str1=@literal" --form-string "str2= log/4/stdout39 2> log/4/stderr39 === End of file commands.log === Start of file http_server.log 19:27:55.872716 ====> Client connect 19:27:55.872955 accept_connection 3 returned 4 19:27:55.873068 accept_connection 3 returned 0 19:27:55.873167 Read 93 bytes 19:27:55.873241 Process 93 bytes request 19:27:55.873322 Got request: GET /verifiedserver HTTP/1.1 19:27:55.873387 Are-we-friendly question received 19:27:55.873564 Wrote request (93 bytes) input to log/4/server.input 19:27:55.873738 Identifying ourselves as friends 19:27:55.874214 Response sent (57 bytes) and written to log/4/server.response 19:27:55.874312 special request received, no persistency 19:27:55.874390 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 39 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file test39.txt foo bar This is a bar foo bar foo === End of file test39.txt === Start of file valgrind39 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind39 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: ../src/curl --max-time 13 --output log/3/http_verify.out --silent --verbose --globoff "http://127.0.0.1:37525/verifiedserver" 2>log/3/http_verify.log RUN: HTTP server is on PID 105156 port 37525 * pid http => 105156 105156 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/3/valgrind33 ../src/curl -q --output log/3/curl33.out --include --trace-ascii log/3/trace33 --trace-config all --trace-time http://127.0.0.1:37525/33 -Tlog/3/test33.txt -C 50 > log/3/stdout33 2> log/3/stderr33 33: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind33 ../src/curl -q --output log/3/curl33.out --include --trace-ascii log/3/trace33 --trace-config all --trace-time http://127.0.0.1:37525/33 -Tlog/3/test33.txt -C 50 > log/3/stdout33 2> log/3/stderr33 === End of file commands.log === Start of file http_server.log 19:27:54.274015 Running HTTP IPv4 version on port 37525 19:27:54.274467 Wrote pid 105156 to log/3/server/http_server.pid 19:27:54.274671 Wrote port 37525 to log/3/server/http_server.port 19:27:55.202342 ====> Client connect 19:27:55.202471 accept_connection 3 returned 4 19:27:55.202588 accept_connection 3 returned 0 19:27:55.202692 Read 93 bytes 19:27:55.202789 Process 93 bytes request 19:27:55.202875 Got request: GET /verifiedserver HTTP/1.1 19:27:55.202941 Are-we-friendly question received 19:27:55.203103 Wrote request (93 bytes) input to log/3/server.input 19:27:55.CMD (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/1/valgrind40 ../src/curl -q --output log/1/curl40.out --include --trace-ascii log/1/trace40 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/40 -L > log/1/stdout40 2> log/1/stderr40 CMD (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/2/valgrind41 ../src/curl -q --output log/2/curl41.out --include --trace-ascii log/2/trace41 --trace-config all --trace-time http://127.0.0.1:39599/want/41 -F moo=@boo > log/2/stdout41 2> log/2/stderr41 203265 Identifying ourselves as friends 19:27:55.203923 Response sent (57 bytes) and written to log/3/server.response 19:27:55.204034 special request received, no persistency 19:27:55.204210 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 33 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file test33.txt 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 012345678 === End of file test33.txt === Start of file valgrind33 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind33 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/1/valgrind40 ../src/curl -q --output log/1/curl40.out --include --trace-ascii log/1/trace40 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/40 -L > log/1/stdout40 2> log/1/stderr40 40: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 40 === Start of file commands.log ../libtool --mode=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/valgrind40 ../src/curl -q --output log/1/curl40.out --include --trace-ascii log/1/trace40 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/40 -L > log/1/stdout40 2> log/1/stderr40 === End of file commands.log === Start of file http_server.log 19:27:56.355506 ====> Client connect 19:27:56.355797 accept_connection 3 returned 4 19:27:56.355903 accept_connection 3 returned 0 19:27:56.355999 Read 93 bytes 19:27:56.356068 Process 93 bytes request 19:27:56.356144 Got request: GET /verifiedserver HTTP/1.1 19:27:56.356203 Are-we-friendly question received 19:27:56.356352 Wrote request (93 bytes) input to log/1/server.input 19:27:56.356498 Identifying ourselves as friends 19:27:56.356999 Response sent (57 bytes) and written to log/1/server.response 19:27:56.357089 special request received, no persistency 19:27:56.357142 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 40 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind40 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind40 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/2/valgrind41 ../src/curl -q --output log/2/curl41.out --include --trace-ascii log/2/trace41 --trace-config all --trace-time http://127.0.0.1:39599/want/41 -F moo=@boo > log/2/stdout41 2> log/2/stderr41 curl returned 1, when expecting 26 41: exit FAILED == Contents of files in the log/2/ 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/2/valgrind41 ../src/curl -q --output log/2/curl41.out --include --trace-ascii log/2/trace41 --trace-config all --trace-time http://127.0.0.1:39599/want/41 -F moo=@boo > log/2/stdout41 2> log/2/stderr41 === End of file commands.log === Start of file http_server.log 19:27:56.428966 ====> Client connect 19:27:56.429208 accept_connection 3 returned 4 19:27:56.429332 accept_connection 3 returned 0 19:27:56.429426 Read 93 bytes 19:27:56.429496 Process 93 bytes request 19:27:56.429560 Got request: GET /verifiedserver HTTP/1.1 19:27:56.429616 Are-we-friendly question received 19:27:56.429756 Wrote request (93 bytes) input to log/2/server.input 19:27:56.429885 Identifying ourselves as friends 19:27:56.430361 Response sent (57 bytes) and written to log/2/server.response 19:27:56.430448 special request received, no persistency 19:27:56.430503 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HCMD (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/4/valgrind42 ../src/curl -q --output log/4/curl42.out --include --trace-ascii log/4/trace42 --trace-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 CMD (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/valgrind43 ../src/curl -q --output log/3/curl43.out --include --trace-ascii log/3/trace43 --trace-config all --trace-time http://127.0.0.1:37525/want/43 -L -x 127.0.0.1:37525 > log/3/stdout43 2> log/3/stderr43 TTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind41 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 42: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/42 -L > log/4/stdout42 2> log/4/stderr42 === End of file commands.log === Start of file http_server.log 19:27:56.635566 ====> Client connect 19:27:56.635915 accept_connection 3 returned 4 19:27:56.636074 accept_connection 3 returned 0 19:27:56.636200 Read 93 bytes 19:27:56.636293 Process 93 bytes request 19:27:56.636377 Got request: GET /verifiedserver HTTP/1.1 19:27:56.636443 Are-we-friendly question received 19:27:56.636608 Wrote request (93 bytes) input to log/4/server.input 19:27:56.636782 Identifying ourselves as friends 19:27:56.637324 Response sent (57 bytes) and written to log/4/server.response 19:27:56.637417 special request received, no persistency 19:27:56.637476 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 42 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind42 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:37525/want/43 -L -x 127.0.0.1:37525 > log/3/stdout43 2> log/3/stderr43 43: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/want/43 -L -x 127.0.0.1:37525 > log/3/stdout43 2> log/3/stderr43 === End of file commands.log === Start of file http_server.log 19:27:55.859151 ====> Client connect 19:27:55.859365 accept_connection 3 returned 4 19:27:55.859473 accept_connection 3 returned 0 19:27:55.859673 Read 93 bytes 19:27:55.859826 Process 93 bytes request 19:27:55.859974 Got request: GET /verifiedserver HTTP/1.1 19:27:55.860066 Are-we-friendly question received 19:27:55.860368 Wrote request (93 bytes) input to log/3/server.input 19:27:55.860564 Identifying ourselves as friends 19:27:55.861424 Response sent (57 bytes) and written to log/3/server.response 19:27:55.861582 special request received, no persistency 19:27:55.861649 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 43 === End of file server.cCMD (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/2/valgrind45 ../src/curl -q --output log/2/curl45.out --include --trace-ascii log/2/trace45 --trace-config all --trace-time 127.0.0.1:39599/want/45 -L > log/2/stdout45 2> log/2/stderr45 CMD (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/1/valgrind44 ../src/curl -q --output log/1/curl44.out --include --trace-ascii log/1/trace44 --trace-config all --trace-time http://127.0.0.1:41477/we/want/44 -F name=daniel -F tool=curl -F file=@log/1/test44.txt -H "Expect:" > log/1/stdout44 2> log/1/stderr44 md === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind43 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind45 ../src/curl -q --output log/2/curl45.out --include --trace-ascii log/2/trace45 --trace-config all --trace-time 127.0.0.1:39599/want/45 -L > log/2/stdout45 2> log/2/stderr45 45: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind45 ../src/curl -q --output log/2/curl45.out --include --trace-ascii log/2/trace45 --trace-config all --trace-time 127.0.0.1:39599/want/45 -L > log/2/stdout45 2> log/2/stderr45 === End of file commands.log === Start of file http_server.log 19:27:56.999746 ====> Client connect 19:27:56.999962 accept_connection 3 returned 4 19:27:57.000085 accept_connection 3 returned 0 19:27:57.000589 Read 93 bytes 19:27:57.000712 Process 93 bytes request 19:27:57.000785 Got request: GET /verifiedserver HTTP/1.1 19:27:57.000842 Are-we-friendly question received 19:27:57.001001 Wrote request (93 bytes) input to log/2/server.input 19:27:57.001144 Identifying ourselves as friends 19:27:57.001483 Response sent (57 bytes) and written to log/2/server.response 19:27:57.001563 special request received, no persistency 19:27:57.001615 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 45 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind45 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind44 ../src/curl -q --output log/1/curl44.out --include --trace-ascii log/1/trace44 --trace-config all --trace-time http://127.0.0.1:41477/we/want/44 -F name=daniel -F tool=curl -F file=@log/1/test44.txt -H "Expect:" > log/1/stdout44 2> log/1/stderr44 44: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind44 ../src/curl -q --output log/1/curl44.out --include --trace-ascii log/1/trace44 --trace-config all --trace-time http://127.0.0.1:41477/we/want/44 -F name=daniel -F tool=curl -F file=@log/1/test44.txt -H "Expect:" > log/1/stdout44 2> log/1/stderr44 === End of file commands.log === Start of file http_server.log 19:27:56.997100 ====> Client connect 19:27:56.997315 accept_connection 3 returned 4 19:27:56.997425 accept_connection 3 returned 0 19:27:56.997525 Read 93 bytes 19:27:56.997605 Process 93 bytes request 19:27:56.997682 Got request: GET /verifiedserver HTTP/1.1 19:27:56.997759 Are-we-friendly question received 19:27:56.997982 Wrote request (93 bytes) input to log/1/server.input 19:27:56.998128 Identifying ourselves as friends 19:27:56.998640 Response sent (57 bytes) and written to log/1/server.response 19:27:56.998719 special request received, no persistency 19:27:56.998775 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 44 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file test44.txt foo- This is a moo- bar === End of file test44.txt === Start of file valgrind44 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. DetaCMD (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/4/valgrind46 ../src/curl -q --output log/4/curl46.out --include --trace-ascii log/4/trace46 --trace-config all --trace-time domain..tld:43669/want/46 --resolve domain..tld:43669:127.0.0.1 -c log/4/jar46 -b log/4/injar46 > log/4/stdout46 2> log/4/stderr46 CMD (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/valgrind47 ../src/curl -q --output log/3/curl47.out --include --trace-ascii log/3/trace47 --trace-config all --trace-time http://127.0.0.1:37525/47 -0 > log/3/stdout47 2> log/3/stderr47 ils of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind46 ../src/curl -q --output log/4/curl46.out --include --trace-ascii log/4/trace46 --trace-config all --trace-time domain..tld:43669/want/46 --resolve domain..tld:43669:127.0.0.1 -c log/4/jar46 -b log/4/injar46 > log/4/stdout46 2> log/4/stderr46 46: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind46 ../src/curl -q --output log/4/curl46.out --include --trace-ascii log/4/trace46 --trace-config all --trace-time domain..tld:43669/want/46 --resolve domain..tld:43669:127.0.0.1 -c log/4/jar46 -b log/4/injar46 > log/4/stdout46 2> log/4/stderr46 === End of file commands.log === Start of file http_server.log 19:27:57.301878 ====> Client connect 19:27:57.302093 accept_connection 3 returned 4 19:27:57.302192 accept_connection 3 returned 0 19:27:57.302619 Read 93 bytes 19:27:57.302730 Process 93 bytes request 19:27:57.302802 Got request: GET /verifiedserver HTTP/1.1 19:27:57.302860 Are-we-friendly question received 19:27:57.303023 Wrote request (93 bytes) input to log/4/server.input 19:27:57.303169 Identifying ourselves as friends 19:27:57.303568 Response sent (57 bytes) and written to log/4/server.response 19:27:57.303778 special request received, no persistency 19:27:57.303866 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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 server.cmd Testnum 46 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind46 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind47 ../src/curl -q --output log/3/curl47.out --include --trace-ascii log/3/trace47 --trace-config all --trace-time http://127.0.0.1:37525/47 -0 > log/3/stdout47 2> log/3/stderr47 47: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind47 ../src/curl -q --output log/3/curl47.out --include --trace-ascii log/3/trace47 --trace-config all --trace-time http://127.0.0.1:37525/47 -0 > log/3/stdout47 2> log/3/stderr47 === End of file commands.log === Start of file http_server.log 19:27:56.543487 ====> Client connect 19:27:56.543810 accept_connection 3 returned 4 19:27:56.543928 accept_connection 3 returned 0 19:27:56.544021 Read 93 bytes 19:27:56.544080 Process 93 bytes request 19:27:56.544148 Got request: GET /verifiedserver HTTP/1.1 19:27:56.544214 Are-we-friendly question received 19:27:56.544371 Wrote request (93 bytes) input to log/3/server.input 19:27:56.544558 Identifying ourselves as friends 19:27:56.545047 Response sent (57 bytes) and written to log/3/server.response 19:27:56.545146 special request received, no persistency 19:27:56.545216 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 47 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind47 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cCMD (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/2/valgrind48 ../src/curl -q --output log/2/curl48.out --include --trace-ascii log/2/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:39599/48 -G -I http://127.0.0.1:39599/48 > log/2/stdout48 2> log/2/stderr48 CMD (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/1/valgrind49 ../src/curl -q --output log/1/curl49.out --include --trace-ascii log/1/trace49 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/49 -L > log/1/stdout49 2> log/1/stderr49 annot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind48 ../src/curl -q --output log/2/curl48.out --include --trace-ascii log/2/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:39599/48 -G -I http://127.0.0.1:39599/48 > log/2/stdout48 2> log/2/stderr48 48: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind48 ../src/curl -q --output log/2/curl48.out --include --trace-ascii log/2/trace48 --trace-config all --trace-time -d "foo=moo&moo=poo" http://127.0.0.1:39599/48 -G -I http://127.0.0.1:39599/48 > log/2/stdout48 2> log/2/stderr48 === End of file commands.log === Start of file http_server.log 19:27:57.632999 ====> Client connect 19:27:57.633225 accept_connection 3 returned 4 19:27:57.633357 accept_connection 3 returned 0 19:27:57.633522 Read 93 bytes 19:27:57.633616 Process 93 bytes request 19:27:57.633696 Got request: GET /verifiedserver HTTP/1.1 19:27:57.633770 Are-we-friendly question received 19:27:57.633954 Wrote request (93 bytes) input to log/2/server.input 19:27:57.634125 Identifying ourselves as friends 19:27:57.634720 Response sent (57 bytes) and written to log/2/server.response 19:27:57.634823 special request received, no persistency 19:27:57.634879 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 48 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind48 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind48 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/1/valgrind49 ../src/curl -q --output log/1/curl49.out --include --trace-ascii log/1/trace49 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/49 -L > log/1/stdout49 2> log/1/stderr49 49: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind49 ../src/curl -q --output log/1/curl49.out --include --trace-ascii log/1/trace49 --trace-config all --trace-time http://127.0.0.1:41477/we/are/all/twits/49 -L > log/1/stdout49 2> log/1/stderr49 === End of file commands.log === Start of file http_server.log 19:27:57.656932 ====> Client connect 19:27:57.657138 accept_connection 3 returned 4 19:27:57.657242 accept_connection 3 returned 0 19:27:57.657343 Read 93 bytes 19:27:57.657415 Process 93 bytes request 19:27:57.657499 Got request: GET /verifiedserver HTTP/1.1 19:27:57.657580 Are-we-friendly question received 19:27:57.657761 Wrote request (93 bytes) input to log/1/server.input 19:27:57.657922 Identifying ourselves as friends 19:27:57.658443 Response sent (57 bytes) and written to log/1/server.response 19:27:57.658575 special request received, no persistency 19:27:57.658656 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 49 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind49 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (CMD (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/4/valgrind50 ../src/curl -q --output log/4/curl50.out --include --trace-ascii log/4/trace50 --trace-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 CMD (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/valgrind51 ../src/curl -q --output log/3/curl51.out --include --trace-ascii log/3/trace51 --trace-config all --trace-time http://127.0.0.1:37525/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind49 test 0050...[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/4/valgrind50 ../src/curl -q --output log/4/curl50.out --include --trace-ascii log/4/trace50 --trace-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 50: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/we/are/all/twits/50 -L > log/4/stdout50 2> log/4/stderr50 === End of file commands.log === Start of file http_server.log 19:27:58.061992 ====> Client connect 19:27:58.062203 accept_connection 3 returned 4 19:27:58.062312 accept_connection 3 returned 0 19:27:58.062419 Read 93 bytes 19:27:58.062488 Process 93 bytes request 19:27:58.062559 Got request: GET /verifiedserver HTTP/1.1 19:27:58.062629 Are-we-friendly question received 19:27:58.062782 Wrote request (93 bytes) input to log/4/server.input 19:27:58.062933 Identifying ourselves as friends 19:27:58.063450 Response sent (57 bytes) and written to log/4/server.response 19:27:58.063544 special request received, no persistency 19:27:58.063696 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 50 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind50 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:37525/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 51: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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 --num-callers=16 --log-file=log/3/valgrind51 ../src/curl -q --output log/3/curl51.out --include --trace-ascii log/3/trace51 --trace-config all --trace-time http://127.0.0.1:37525/we/are/all/twits/51 -L > log/3/stdout51 2> log/3/stderr51 === End of file commands.log === Start of file http_server.log 19:27:57.177757 ====> Client connect 19:27:57.177977 accept_connection 3 returned 4 19:27:57.178097 accept_connection 3 returned 0 19:27:57.178203 Read 93 bytes 19:27:57.178279 Process 93 bytes request 19:27:57.178350 Got request: GET /verifiedserver HTTP/1.1 19:27:57.178411 Are-we-friendly question received 19:27:57.178561 Wrote request (93 bytes) input to log/3/server.input 19:27:57.178713 Identifying ourselves as friends 19:27:57.179213 Response sent (57 bytes) and written to log/3/server.response 19:27:57.179307 special request received, no persistency 19:27:57.179363 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 51 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind51 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrindCMD (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/2/valgrind52 ../src/curl -q --output log/2/curl52.out --include --trace-ascii log/2/trace52 --trace-config all --trace-time http://127.0.0.1:39599/we/are/all/twits/52 -L > log/2/stdout52 2> log/2/stderr52 CMD (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/1/valgrind53 ../src/curl -q --output log/1/curl53.out --include --trace-ascii log/1/trace53 --trace-config all --trace-time 127.0.0.1:41477/want/53 -b log/1/injar53 -j > log/1/stdout53 2> log/1/stderr53 : On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind52 ../src/curl -q --output log/2/curl52.out --include --trace-ascii log/2/trace52 --trace-config all --trace-time http://127.0.0.1:39599/we/are/all/twits/52 -L > log/2/stdout52 2> log/2/stderr52 52: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind52 ../src/curl -q --output log/2/curl52.out --include --trace-ascii log/2/trace52 --trace-config all --trace-time http://127.0.0.1:39599/we/are/all/twits/52 -L > log/2/stdout52 2> log/2/stderr52 === End of file commands.log === Start of file http_server.log 19:27:58.281135 ====> Client connect 19:27:58.281370 accept_connection 3 returned 4 19:27:58.281502 accept_connection 3 returned 0 19:27:58.281646 Read 93 bytes 19:27:58.281750 Process 93 bytes request 19:27:58.281843 Got request: GET /verifiedserver HTTP/1.1 19:27:58.281926 Are-we-friendly question received 19:27:58.282121 Wrote request (93 bytes) input to log/2/server.input 19:27:58.282316 Identifying ourselves as friends 19:27:58.282974 Response sent (57 bytes) and written to log/2/server.response 19:27:58.283080 special request received, no persistency 19:27:58.283138 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 52 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind52 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind53 ../src/curl -q --output log/1/curl53.out --include --trace-ascii log/1/trace53 --trace-config all --trace-time 127.0.0.1:41477/want/53 -b log/1/injar53 -j > log/1/stdout53 2> log/1/stderr53 53: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind53 ../src/curl -q --output log/1/curl53.out --include --trace-ascii log/1/trace53 --trace-config all --trace-time 127.0.0.1:41477/want/53 -b log/1/injar53 -j > log/1/stdout53 2> log/1/stderr53 === End of file commands.log === Start of file http_server.log 19:27:58.291982 ====> Client connect 19:27:58.292204 accept_connection 3 returned 4 19:27:58.292319 accept_connection 3 returned 0 19:27:58.292426 Read 93 bytes 19:27:58.292496 Process 93 bytes request 19:27:58.292570 Got request: GET /verifiedserver HTTP/1.1 19:27:58.292633 Are-we-friendly question received 19:27:58.292783 Wrote request (93 bytes) input to log/1/server.input 19:27:58.292924 Identifying ourselves as friends 19:27:58.293473 Response sent (57 bytes) and written to log/1/server.response 19:27:58.293568 special request received, no persistency 19:27:58.293620 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind53 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i38CMD (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/4/valgrind54 ../src/curl -q --output log/4/curl54.out --include --trace-ascii log/4/trace54 --trace-config all --trace-time http://127.0.0.1:43669/want/54 -L > log/4/stdout54 2> log/4/stderr54 CMD (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/valgrind55 ../src/curl -q --output log/3/curl55.out --include --trace-ascii log/3/trace55 --trace-config all --trace-time http://127.0.0.1:37525/55 -L > log/3/stdout55 2> log/3/stderr55 CMD (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/2/valgrind56 ../src/curl -q --output log/2/curl56.out --include --trace-ascii log/2/trace56 --trace-config all --trace-time -K - 127.0.0.1:39599/that.site.com/56 log/2/stdout56 2> log/2/stderr56 6). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind54 ../src/curl -q --output log/4/curl54.out --include --trace-ascii log/4/trace54 --trace-config all --trace-time http://127.0.0.1:43669/want/54 -L > log/4/stdout54 2> log/4/stderr54 54: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind54 ../src/curl -q --output log/4/curl54.out --include --trace-ascii log/4/trace54 --trace-config all --trace-time http://127.0.0.1:43669/want/54 -L > log/4/stdout54 2> log/4/stderr54 === End of file commands.log === Start of file http_server.log 19:27:58.723750 ====> Client connect 19:27:58.724035 accept_connection 3 returned 4 19:27:58.724212 accept_connection 3 returned 0 19:27:58.724360 Read 93 bytes 19:27:58.724445 Process 93 bytes request 19:27:58.724520 Got request: GET /verifiedserver HTTP/1.1 19:27:58.724583 Are-we-friendly question received 19:27:58.724741 Wrote request (93 bytes) input to log/4/server.input 19:27:58.724904 Identifying ourselves as friends 19:27:58.725395 Response sent (57 bytes) and written to log/4/server.response 19:27:58.725488 special request received, no persistency 19:27:58.725542 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 54 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind54 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind55 ../src/curl -q --output log/3/curl55.out --include --trace-ascii log/3/trace55 --trace-config all --trace-time http://127.0.0.1:37525/55 -L > log/3/stdout55 2> log/3/stderr55 55: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind55 ../src/curl -q --output log/3/curl55.out --include --trace-ascii log/3/trace55 --trace-config all --trace-time http://127.0.0.1:37525/55 -L > log/3/stdout55 2> log/3/stderr55 === End of file commands.log === Start of file http_server.log 19:27:57.818970 ====> Client connect 19:27:57.819207 accept_connection 3 returned 4 19:27:57.819325 accept_connection 3 returned 0 19:27:57.819938 Read 93 bytes 19:27:57.820077 Process 93 bytes request 19:27:57.820161 Got request: GET /verifiedserver HTTP/1.1 19:27:57.820224 Are-we-friendly question received 19:27:57.820392 Wrote request (93 bytes) input to log/3/server.input 19:27:57.820547 Identifying ourselves as friends 19:27:57.820937 Response sent (57 bytes) and written to log/3/server.response 19:27:57.821023 special request received, no persistency 19:27:57.821093 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 55 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind55 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind55 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/2/valgrind56 ../src/curl -q --output log/2/curl56.out --include --trace-ascii log/2/trace56 --trace-config all --trace-time -K - 127.0.0.1:39599/that.site.com/56 log/2/stdout56 2> log/2/stderr56 56: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind56 ../src/curl -q --output log/2/curl56.out --include --trace-ascii log/2/trace56 --trace-config all --trace-time -K - 127.0.0.1:39599/that.site.com/56 log/2/stdout56 2> log/2/stderr56 === End of file commands.log === Start of file http_server.log 19:27:58.900695 ====> Client connect 19:27:58.900926 accept_connection 3 returned 4 19:27:58.901038 accept_connection 3 returned 0 19:27:58.901145 Read 93 bytes 19:27:58.901234 Process 93 bytes request 19:27:58.901321 Got request: GET /verifiedserver HTTP/1.1 19:27:58.901394 Are-we-friendly question received 19:27:58.901569 Wrote request (93 bytes) input to log/2/server.input 19:27:58.901749 Identifying ourselves as friends 19:27:58.902266 Response sent (57 bytes) and written to log/2/server.response 19:27:58.902354 special request received, no persistency 19:27:58.902404 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 56 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === 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 "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (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/1/valgrind57 ../src/curl -q --include --trace-ascii log/1/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:41477/57 -o log/1/out57 > log/1/stdout57 2> log/1/stderr57 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" # === End of file stdin-for-56 === Start of file valgrind56 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind56 CMD (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/valgrind59 ../src/curl -q --output log/3/curl59.out --include --trace-ascii log/3/trace59 --trace-config all --trace-time "http://127.0.0.1:37525?mooo/59" > log/3/stdout59 2> log/3/stderr59 CMD (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/4/valgrind58 ../src/curl -q --output log/4/curl58.out --include --trace-ascii log/4/trace58 --trace-config all --trace-time http://127.0.0.1:43669/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 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/1/valgrind57 ../src/curl -q --include --trace-ascii log/1/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:41477/57 -o log/1/out57 > log/1/stdout57 2> log/1/stderr57 57: stdout FAILED: --- log/1/check-expected 2025-05-23 19:27:59.000138284 +0000 +++ log/1/check-generated 2025-05-23 19:27:59.000138284 +0000 @@ -1 +0,0 @@ -text/html; charset=ISO-8859-4[CR][LF] == Contents of files in the log/1/ dir after test 57 === Start of file check-expected text/html; charset=ISO-8859-4[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind57 ../src/curl -q --include --trace-ascii log/1/trace57 --trace-config all --trace-time -w "%{content_type}\n" http://127.0.0.1:41477/57 -o log/1/out57 > log/1/stdout57 2> log/1/stderr57 === End of file commands.log === Start of file http_server.log 19:27:58.928736 ====> Client connect 19:27:58.928975 accept_connection 3 returned 4 19:27:58.929099 accept_connection 3 returned 0 19:27:58.929218 Read 93 bytes 19:27:58.929301 Process 93 bytes request 19:27:58.929382 Got request: GET /verifiedserver HTTP/1.1 19:27:58.929481 Are-we-friendly question received 19:27:58.929734 Wrote request (93 bytes) input to log/1/server.input 19:27:58.929897 Identifying ourselves as friends 19:27:58.930409 Response sent (57 bytes) and written to log/1/server.response 19:27:58.930498 special request received, no persistency 19:27:58.930554 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 57 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind57 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind57 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-config all --trace-time "http://127.0.0.1:37525?mooo/59" > log/3/stdout59 2> log/3/stderr59 59: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time "http://127.0.0.1:37525?mooo/59" > log/3/stdout59 2> log/3/stderr59 === End of file commands.log === Start of file http_server.log 19:27:58.437818 ====> Client connect 19:27:58.438040 accept_connection 3 returned 4 19:27:58.438154 accept_connection 3 returned 0 19:27:58.438259 Read 93 bytes 19:27:58.438340 Process 93 bytes request 19:27:58.438415 Got request: GET /verifiedserver HTTP/1.1 19:27:58.438490 Are-we-friendly question received 19:27:58.438677 Wrote request (93 bytes) input to log/3/server.input 19:27:58.439139 Identifying ourselves as friends 19:27:58.439861 Response sent (57 bytes) and written to log/3/server.response 19:27:58.439967 special request received, no persistency 19:27:58.440024 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 59 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind59 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind59 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-config all --trace-tCMD (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/2/valgrind60 ../src/curl -q --output log/2/curl60.out --include --trace-ascii log/2/trace60 --trace-config all --trace-time http://127.0.0.1:39599/bzz/60 -T - -H "Content-Length: 1" log/2/stdout60 2> log/2/stderr60 CMD (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/1/valgrind61 ../src/curl -q --output log/1/curl61.out --include --trace-ascii log/1/trace61 --trace-config all --trace-time http://127.0.0.1:41477/we/want/61 -c log/1/jar61.txt -H "Host: www.host.foo.com" > log/1/stdout61 2> log/1/stderr61 ime http://127.0.0.1:43669/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 58: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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 --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-config all --trace-time http://127.0.0.1:43669/we/want/ -T log/4/58te[]st.txt -g > log/4/stdout58 2> log/4/stderr58 === End of file commands.log === Start of file http_server.log 19:27:59.357279 ====> Client connect 19:27:59.357509 accept_connection 3 returned 4 19:27:59.357627 accept_connection 3 returned 0 19:27:59.358086 Read 93 bytes 19:27:59.358207 Process 93 bytes request 19:27:59.358291 Got request: GET /verifiedserver HTTP/1.1 19:27:59.358354 Are-we-friendly question received 19:27:59.358522 Wrote request (93 bytes) input to log/4/server.input 19:27:59.358696 Identifying ourselves as friends 19:27:59.359127 Response sent (57 bytes) and written to log/4/server.response 19:27:59.359227 special request received, no persistency 19:27:59.359290 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 58 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind58 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind58 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/2/valgrind60 ../src/curl -q --output log/2/curl60.out --include --trace-ascii log/2/trace60 --trace-config all --trace-time http://127.0.0.1:39599/bzz/60 -T - -H "Content-Length: 1" log/2/stdout60 2> log/2/stderr60 60: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind60 ../src/curl -q --output log/2/curl60.out --include --trace-ascii log/2/trace60 --trace-config all --trace-time http://127.0.0.1:39599/bzz/60 -T - -H "Content-Length: 1" log/2/stdout60 2> log/2/stderr60 === End of file commands.log === Start of file http_server.log 19:27:59.563977 ====> Client connect 19:27:59.564225 accept_connection 3 returned 4 19:27:59.564357 accept_connection 3 returned 0 19:27:59.564469 Read 93 bytes 19:27:59.564545 Process 93 bytes request 19:27:59.564614 Got request: GET /verifiedserver HTTP/1.1 19:27:59.564673 Are-we-friendly question received 19:27:59.564827 Wrote request (93 bytes) input to log/2/server.input 19:27:59.564978 Identifying ourselves as friends 19:27:59.565507 Response sent (57 bytes) and written to log/2/server.response 19:27:59.565609 special request received, no persistency 19:27:59.565670 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 60 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file stdin-for-60 more than one byte === End of file stdin-for-60 === Start of file valgrind60 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind60 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/1/valgrind61 ../src/curl -q --output log/1/curl61.out --include --trace-ascii log/1/trace61 --trace-config all --trace-time http://127.0.0.1:41477/we/want/61 -c log/1/jar61.txt -H "Host: www.host.foo.com" > log/1/stdout61 2> log/1/stderr61 61: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl CMD (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/4/valgrind63 ../src/curl -q --output log/4/curl63.out --include --trace-ascii log/4/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/4/stdout63 2> log/4/stderr63 CMD (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/valgrind62 ../src/curl -q --output log/3/curl62.out --include --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:37525/we/want/62 http://127.0.0.1:37525/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.host.foo.com" > log/3/stdout62 2> log/3/stderr62 failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind61 ../src/curl -q --output log/1/curl61.out --include --trace-ascii log/1/trace61 --trace-config all --trace-time http://127.0.0.1:41477/we/want/61 -c log/1/jar61.txt -H "Host: www.host.foo.com" > log/1/stdout61 2> log/1/stderr61 === End of file commands.log === Start of file http_server.log 19:27:59.591884 ====> Client connect 19:27:59.592120 accept_connection 3 returned 4 19:27:59.592235 accept_connection 3 returned 0 19:27:59.592342 Read 93 bytes 19:27:59.592423 Process 93 bytes request 19:27:59.592504 Got request: GET /verifiedserver HTTP/1.1 19:27:59.592577 Are-we-friendly question received 19:27:59.592738 Wrote request (93 bytes) input to log/1/server.input 19:27:59.592883 Identifying ourselves as friends 19:27:59.593414 Response sent (57 bytes) and written to log/1/server.response 19:27:59.593516 special request received, no persistency 19:27:59.593574 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 61 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind61 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind61 setenv http_proxy = http://fake:user@127.0.0.1:43669/ 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/4/valgrind63 ../src/curl -q --output log/4/curl63.out --include --trace-ascii log/4/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/4/stdout63 2> log/4/stderr63 63: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind63 ../src/curl -q --output log/4/curl63.out --include --trace-ascii log/4/trace63 --trace-config all --trace-time http://we.want.that.site.com/63 > log/4/stdout63 2> log/4/stderr63 === End of file commands.log === Start of file http_server.log 19:28:00.112280 ====> Client connect 19:28:00.112528 accept_connection 3 returned 4 19:28:00.112647 accept_connection 3 returned 0 19:28:00.113130 Read 93 bytes 19:28:00.113256 Process 93 bytes request 19:28:00.113338 Got request: GET /verifiedserver HTTP/1.1 19:28:00.113404 Are-we-friendly question received 19:28:00.113583 Wrote request (93 bytes) input to log/4/server.input 19:28:00.113771 Identifying ourselves as friends 19:28:00.114351 Response sent (57 bytes) and written to log/4/server.response 19:28:00.114455 special request received, no persistency 19:28:00.114514 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 63 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind63 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind63 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/3/valgrind62 ../src/curl -q --output log/3/curl62.out --include --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:37525/we/want/62 http://127.0.0.1:37525/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.host.foo.com" > log/3/stdout62 2> log/3/stderr62 62: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind62 ../src/curl -q --output log/3/curl62.out --includeCMD (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/2/valgrind64 ../src/curl -q --output log/2/curl64.out --include --trace-ascii log/2/trace64 --trace-config all --trace-time http://127.0.0.1:39599/64 -u testuser:testpass --digest > log/2/stdout64 2> log/2/stderr64 CMD (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/1/valgrind65 ../src/curl -q --output log/1/curl65.out --include --trace-ascii log/1/trace65 --trace-config all --trace-time http://127.0.0.1:41477/65 -u testuser:test2pass --digest > log/1/stdout65 2> log/1/stderr65 --trace-ascii log/3/trace62 --trace-config all --trace-time http://127.0.0.1:37525/we/want/62 http://127.0.0.1:37525/we/want/62?hoge=fuga -b log/3/jar62.txt -H "Host: www.host.foo.com" > log/3/stdout62 2> log/3/stderr62 === End of file commands.log === Start of file http_server.log 19:27:59.053677 ====> Client connect 19:27:59.053904 accept_connection 3 returned 4 19:27:59.054022 accept_connection 3 returned 0 19:27:59.054123 Read 93 bytes 19:27:59.054197 Process 93 bytes request 19:27:59.054273 Got request: GET /verifiedserver HTTP/1.1 19:27:59.054344 Are-we-friendly question received 19:27:59.054528 Wrote request (93 bytes) input to log/3/server.input 19:27:59.054722 Identifying ourselves as friends 19:27:59.055249 Response sent (57 bytes) and written to log/3/server.response 19:27:59.055340 special request received, no persistency 19:27:59.055399 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind62 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind62 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/2/valgrind64 ../src/curl -q --output log/2/curl64.out --include --trace-ascii log/2/trace64 --trace-config all --trace-time http://127.0.0.1:39599/64 -u testuser:testpass --digest > log/2/stdout64 2> log/2/stderr64 64: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind64 ../src/curl -q --output log/2/curl64.out --include --trace-ascii log/2/trace64 --trace-config all --trace-time http://127.0.0.1:39599/64 -u testuser:testpass --digest > log/2/stdout64 2> log/2/stderr64 === End of file commands.log === Start of file http_server.log 19:28:00.200956 ====> Client connect 19:28:00.201189 accept_connection 3 returned 4 19:28:00.201309 accept_connection 3 returned 0 19:28:00.201409 Read 93 bytes 19:28:00.201476 Process 93 bytes request 19:28:00.201544 Got request: GET /verifiedserver HTTP/1.1 19:28:00.201618 Are-we-friendly question received 19:28:00.201782 Wrote request (93 bytes) input to log/2/server.input 19:28:00.201948 Identifying ourselves as friends 19:28:00.202482 Response sent (57 bytes) and written to log/2/server.response 19:28:00.202575 special request received, no persistency 19:28:00.202634 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 64 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind64 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind64 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/1/valgrind65 ../src/curl -q --output log/1/curl65.out --include --trace-ascii log/1/trace65 --trace-config all --trace-time http://127.0.0.1:41477/65 -u testuser:test2pass --digest > log/1/stdout65 2> log/1/stderr65 65: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrinCMD (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/4/valgrind66 ../src/curl -q --output log/4/curl66.out --include --trace-ascii log/4/trace66 --trace-config all --trace-time http://127.0.0.1:43669/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 CMD (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/valgrind67 ../src/curl -q --output log/3/curl67.out --include --trace-ascii log/3/trace67 --trace-config all --trace-time http://127.0.0.1:37525/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 d65 ../src/curl -q --output log/1/curl65.out --include --trace-ascii log/1/trace65 --trace-config all --trace-time http://127.0.0.1:41477/65 -u testuser:test2pass --digest > log/1/stdout65 2> log/1/stderr65 === End of file commands.log === Start of file http_server.log 19:28:00.264886 ====> Client connect 19:28:00.265150 accept_connection 3 returned 4 19:28:00.265319 accept_connection 3 returned 0 19:28:00.265785 Read 93 bytes 19:28:00.265904 Process 93 bytes request 19:28:00.265979 Got request: GET /verifiedserver HTTP/1.1 19:28:00.266047 Are-we-friendly question received 19:28:00.266217 Wrote request (93 bytes) input to log/1/server.input 19:28:00.266365 Identifying ourselves as friends 19:28:00.266743 Response sent (57 bytes) and written to log/1/server.response 19:28:00.266833 special request received, no persistency 19:28:00.266890 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 65 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind65 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind65 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-config all --trace-time http://127.0.0.1:43669/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 66: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/66 --http0.9 > log/4/stdout66 2> log/4/stderr66 === End of file commands.log === Start of file http_server.log 19:28:00.722826 ====> Client connect 19:28:00.723049 accept_connection 3 returned 4 19:28:00.723160 accept_connection 3 returned 0 19:28:00.723266 Read 93 bytes 19:28:00.723337 Process 93 bytes request 19:28:00.723414 Got request: GET /verifiedserver HTTP/1.1 19:28:00.723485 Are-we-friendly question received 19:28:00.723747 Wrote request (93 bytes) input to log/4/server.input 19:28:00.723962 Identifying ourselves as friends 19:28:00.724656 Response sent (57 bytes) and written to log/4/server.response 19:28:00.724756 special request received, no persistency 19:28:00.724895 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 66 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind66 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind66 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-config all --trace-time http://127.0.0.1:37525/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 67: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/67 -u testuser:testpass --ntlm > log/3/stdout67 2> log/3/stderr67 === End of file commands.log === Start of file http_server.log 19:27:59.789511 ====> Client connect 19:27:59.789734 accept_connection 3 returned 4 19:27:59.789852 accept_connection 3 returned 0 19:27:59.789960 Read 93 bytes 19:27:59.790037 Process 93 bytes request 19:27:59.790107 Got request: GCMD (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/2/valgrind68 ../src/curl -q --output log/2/curl68.out --include --trace-ascii log/2/trace68 --trace-config all --trace-time http://127.0.0.1:39599/68 -u testuser:testpass --ntlm > log/2/stdout68 2> log/2/stderr68 CMD (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/1/valgrind69 ../src/curl -q --output log/1/curl69.out --include --trace-ascii log/1/trace69 --trace-config all --trace-time http://127.0.0.1:41477/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 ET /verifiedserver HTTP/1.1 19:27:59.790167 Are-we-friendly question received 19:27:59.790299 Wrote request (93 bytes) input to log/3/server.input 19:27:59.790441 Identifying ourselves as friends 19:27:59.790956 Response sent (57 bytes) and written to log/3/server.response 19:27:59.791045 special request received, no persistency 19:27:59.791098 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 67 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind67 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind68 ../src/curl -q --output log/2/curl68.out --include --trace-ascii log/2/trace68 --trace-config all --trace-time http://127.0.0.1:39599/68 -u testuser:testpass --ntlm > log/2/stdout68 2> log/2/stderr68 68: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind68 ../src/curl -q --output log/2/curl68.out --include --trace-ascii log/2/trace68 --trace-config all --trace-time http://127.0.0.1:39599/68 -u testuser:testpass --ntlm > log/2/stdout68 2> log/2/stderr68 === End of file commands.log === Start of file http_server.log 19:28:00.897950 ====> Client connect 19:28:00.898188 accept_connection 3 returned 4 19:28:00.898302 accept_connection 3 returned 0 19:28:00.898792 Read 93 bytes 19:28:00.898941 Process 93 bytes request 19:28:00.899025 Got request: GET /verifiedserver HTTP/1.1 19:28:00.899085 Are-we-friendly question received 19:28:00.899242 Wrote request (93 bytes) input to log/2/server.input 19:28:00.899397 Identifying ourselves as friends 19:28:00.899880 Response sent (57 bytes) and written to log/2/server.response 19:28:00.899983 special request received, no persistency 19:28:00.900049 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 68 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind68 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind68 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-config all --trace-time http://127.0.0.1:41477/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 69: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/69 -u testuser:testpass --anyauth > log/1/stdout69 2> log/1/stderr69 === End of file commands.log === Start of file http_server.log 19:28:00.904627 ====> Client connect 19:28:00.904876 accept_connection 3 returned 4 19:28:00.904990 accept_connection 3 returned 0 19:28:00.905081 Read 93 bytes 19:28:00.905144 Process 93 bytes request 19:28:00.905215 Got request: GET /verifiedserver HTTP/1.1 19:28:00.905278 Are-we-friendly question received 19:28:00.905424 Wrote request (93 bytes) input to log/1/server.input 19:28:00.905558 Identifying ourselves as friends 19:28:00.906040 Response sent (57 bytes) and written to log/1/server.response 19:28:00.906132 special request received, no persistency 19:28:00.906190 ====> Client disconnect 0 === End of file http_server.log === Start of file http_vCMD (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/4/valgrind70 ../src/curl -q --output log/4/curl70.out --include --trace-ascii log/4/trace70 --trace-config all --trace-time http://127.0.0.1:43669/70 -u testuser:testpass --anyauth > log/4/stdout70 2> log/4/stderr70 CMD (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/valgrind71 ../src/curl -q --output log/3/curl71.out --include --trace-ascii log/3/trace71 --trace-config all --trace-time http://127.0.0.1:37525/we/want/71 -K - log/3/stdout71 2> log/3/stderr71 erify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 69 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind69 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind70 ../src/curl -q --output log/4/curl70.out --include --trace-ascii log/4/trace70 --trace-config all --trace-time http://127.0.0.1:43669/70 -u testuser:testpass --anyauth > log/4/stdout70 2> log/4/stderr70 70: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind70 ../src/curl -q --output log/4/curl70.out --include --trace-ascii log/4/trace70 --trace-config all --trace-time http://127.0.0.1:43669/70 -u testuser:testpass --anyauth > log/4/stdout70 2> log/4/stderr70 === End of file commands.log === Start of file http_server.log 19:28:01.320335 ====> Client connect 19:28:01.320560 accept_connection 3 returned 4 19:28:01.320680 accept_connection 3 returned 0 19:28:01.320787 Read 93 bytes 19:28:01.320868 Process 93 bytes request 19:28:01.320945 Got request: GET /verifiedserver HTTP/1.1 19:28:01.321019 Are-we-friendly question received 19:28:01.321185 Wrote request (93 bytes) input to log/4/server.input 19:28:01.321337 Identifying ourselves as friends 19:28:01.321872 Response sent (57 bytes) and written to log/4/server.response 19:28:01.321971 special request received, no persistency 19:28:01.322037 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 70 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind70 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind71 ../src/curl -q --output log/3/curl71.out --include --trace-ascii log/3/trace71 --trace-config all --trace-time http://127.0.0.1:37525/we/want/71 -K - log/3/stdout71 2> log/3/stderr71 71: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind71 ../src/curl -q --output log/3/curl71.out --include --trace-ascii log/3/trace71 --trace-config all --trace-time http://127.0.0.1:37525/we/want/71 -K - log/3/stdout71 2> log/3/stderr71 === End of file commands.log === Start of file http_server.log 19:28:00.487271 ====> Client connect 19:28:00.487618 accept_connection 3 returned 4 19:28:00.487776 accept_connection 3 returned 0 19:28:00.487893 Read 93 bytes 19:28:00.487968 Process 93 bytes request 19:28:00.488044 Got request: GET /verifiedserver HTTP/1.1 19:28:00.488109 Are-we-friendly question received 19:28:00.488259 Wrote request (93 bytes) input to log/3/server.input 19:28:00.488431 Identifying ourselves as friends 19:28:00.488937 Response sent (57 bytes) and written to log/3/server.response 19:28:00.489022 special request received, no persistency 19:28:00.489079 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WCMD (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/2/valgrind72 ../src/curl -q --output log/2/curl72.out --include --trace-ascii log/2/trace72 --trace-config all --trace-time http://127.0.0.1:39599/72 -u testuser:testpass --anyauth > log/2/stdout72 2> log/2/stderr72 CMD (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/1/valgrind73 ../src/curl -q --output log/1/curl73.out --include --trace-ascii log/1/trace73 --trace-config all --trace-time http://127.0.0.1:41477/we/want/73 -c log/1/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/1/stdout73 2> log/1/stderr73 E ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 71 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file stdin-for-71 -F name=daniel -F tool=curl -F file=@log/3/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 valgrind71 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind71 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/2/valgrind72 ../src/curl -q --output log/2/curl72.out --include --trace-ascii log/2/trace72 --trace-config all --trace-time http://127.0.0.1:39599/72 -u testuser:testpass --anyauth > log/2/stdout72 2> log/2/stderr72 72: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind72 ../src/curl -q --output log/2/curl72.out --include --trace-ascii log/2/trace72 --trace-config all --trace-time http://127.0.0.1:39599/72 -u testuser:testpass --anyauth > log/2/stdout72 2> log/2/stderr72 === End of file commands.log === Start of file http_server.log 19:28:01.548351 ====> Client connect 19:28:01.548577 accept_connection 3 returned 4 19:28:01.548701 accept_connection 3 returned 0 19:28:01.548808 Read 93 bytes 19:28:01.548881 Process 93 bytes request 19:28:01.548955 Got request: GET /verifiedserver HTTP/1.1 19:28:01.549020 Are-we-friendly question received 19:28:01.549171 Wrote request (93 bytes) input to log/2/server.input 19:28:01.549317 Identifying ourselves as friends 19:28:01.549787 Response sent (57 bytes) and written to log/2/server.response 19:28:01.549878 special request received, no persistency 19:28:01.549943 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 72 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind72 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind72 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/1/valgrind73 ../src/curl -q --output log/1/curl73.out --include --trace-ascii log/1/trace73 --trace-config all --trace-time http://127.0.0.1:41477/we/want/73 -c log/1/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/1/stdout73 2> log/1/stderr73 73: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind73 ../src/curl -q --output log/1/curl73.out --include --trace-ascii log/1/trace73 --trace-config all --trace-time http://127.0.0.1:41477/we/want/73 -c log/1/jar73.txt -H "Host: host.NOT_DISCLOSED.se" > log/1/stdout73 2> log/1/stderr73 === End of file commands.log === Start of file http_server.log 19:28:01.627048 ====> Client connect 19:28:01.627276 accept_connection 3 returned 4 19:28:01.627401 accept_connection 3 returned 0 19:28:01.627600 Read 93 bytes 19:28:01.627720 Process 93 bytes request 19:28:01.627818 Got request: GET /verifiedserver HTTP/1.1 19:28:01.627892 Are-we-friendly question received 19:28:01.628136 Wrote request (93 bytes) input to log/1/server.input 19:28:01.628347 Identifying ourselves as friends 19:28:01.628941 Response sent (57 bytes) and written to log/1/server.response 19:28:01.629045 special request received, no persistency 19:28:01.629103 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 73 === End of file servCMD (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/valgrind75 ../src/curl -q --include --trace-ascii log/3/trace75 --trace-config all --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 er.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind73 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind73 CMD (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/4/valgrind74 ../src/curl -q --include --trace-ascii log/4/trace74 --trace-config all --trace-time "http://127.0.0.1:43669/{74,740001}" -o "log/4/dumpit#1.dump" > log/4/stdout74 2> log/4/stderr74 CMD (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/2/valgrind76 ../src/curl -q --output log/2/curl76.out --include --trace-ascii log/2/trace76 --trace-config all --trace-time http://127.0.0.1:39599/76 -u testuser:testpass --anyauth > log/2/stdout76 2> log/2/stderr76 * starts no server 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-config all --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 75: stdout FAILED: --- log/3/check-expected 2025-05-23 19:28:02.112216405 +0000 +++ log/3/check-generated 2025-05-23 19:28:02.112216405 +0000 @@ -1,3 +0,0 @@ -curl: (3) bad range in URL position 47:[CR][LF] -http://a-site-never-accessed.example.org/[2-1][CR][LF] - ^[CR][LF] == Contents of files in the log/3/ dir after test 75 === Start of file check-expected curl: (3) bad range in URL position 47:[CR][LF] http://a-site-never-accessed.example.org/[2-1][CR][LF] ^[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --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 valgrind75 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind74 ../src/curl -q --include --trace-ascii log/4/trace74 --trace-config all --trace-time "http://127.0.0.1:43669/{74,740001}" -o "log/4/dumpit#1.dump" > log/4/stdout74 2> log/4/stderr74 74: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind74 ../src/curl -q --include --trace-ascii log/4/trace74 --trace-config all --trace-time "http://127.0.0.1:43669/{74,740001}" -o "log/4/dumpit#1.dump" > log/4/stdout74 2> log/4/stderr74 === End of file commands.log === Start of file http_server.log 19:28:02.022562 ====> Client connect 19:28:02.022762 accept_connection 3 returned 4 19:28:02.022869 accept_connection 3 returned 0 19:28:02.022960 Read 93 bytes 19:28:02.023024 Process 93 bytes request 19:28:02.023094 Got request: GET /verifiedserver HTTP/1.1 19:28:02.023155 Are-we-friendly question received 19:28:02.023299 Wrote request (93 bytes) input to log/4/server.input 19:28:02.023431 Identifying ourselves as friends 19:28:02.023986 Response sent (57 bytes) and written to log/4/server.response 19:28:02.024072 special request received, no persistency 19:28:02.024122 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 74 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind74 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind74 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/2/valgrind76 ../src/curl -q --output log/2/curl76.out --include --trace-ascii log/2/trace76 --trace-config all --trace-time http://127.0.0.1:39599/76 -u testuser:testpass --anyauth > log/2/stdout76 2> log/2/stderr76 76: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind76 ../src/curl -q --output log/2/curl76.out --include --trace-ascii log/2/trace76 --trace-config all --trace-time http://127.0.0.1:39599/76 -u testuser:testpass --anyauth > log/2/stdout76 2> log/2/stderr76 === End of file commands.log === Start of file http_server.log 19:28:02.215318 ====> Client connect 19:28:02.215669 accept_connection 3 returned 4 19:28:02.215805 accept_connection 3 returned 0 19:28:02.215909 Read 93 bytes 19:28:02.215987 Process 93 bytesCMD (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/1/valgrind77 ../src/curl -q --output log/1/curl77.out --include --trace-ascii log/1/trace77 --trace-config all --trace-time http://127.0.0.1:41477/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 CMD (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/4/valgrind79 ../src/curl -q --output log/4/curl79.out --include --trace-ascii log/4/trace79 --trace-config all --trace-time ftp://127.0.0.1:43669/we/want/that/page/79 -x 127.0.0.1:43669 > log/4/stdout79 2> log/4/stderr79 request 19:28:02.216058 Got request: GET /verifiedserver HTTP/1.1 19:28:02.216120 Are-we-friendly question received 19:28:02.216287 Wrote request (93 bytes) input to log/2/server.input 19:28:02.216454 Identifying ourselves as friends 19:28:02.216936 Response sent (57 bytes) and written to log/2/server.response 19:28:02.217023 special request received, no persistency 19:28:02.217081 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 76 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind76 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:41477/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 77: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/77 -z "dec 12 12:00:00 1999 GMT" > log/1/stdout77 2> log/1/stderr77 === End of file commands.log === Start of file http_server.log 19:28:02.264482 ====> Client connect 19:28:02.264694 accept_connection 3 returned 4 19:28:02.264820 accept_connection 3 returned 0 19:28:02.264952 Read 93 bytes 19:28:02.265071 Process 93 bytes request 19:28:02.265167 Got request: GET /verifiedserver HTTP/1.1 19:28:02.265253 Are-we-friendly question received 19:28:02.265451 Wrote request (93 bytes) input to log/1/server.input 19:28:02.265680 Identifying ourselves as friends 19:28:02.266340 Response sent (57 bytes) and written to log/1/server.response 19:28:02.266443 special request received, no persistency 19:28:02.266524 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 77 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind77 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind77 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/4/valgrind79 ../src/curl -q --output log/4/curl79.out --include --trace-ascii log/4/trace79 --trace-config all --trace-time ftp://127.0.0.1:43669/we/want/that/page/79 -x 127.0.0.1:43669 > log/4/stdout79 2> log/4/stderr79 79: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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-callers=16 --log-file=log/4/valgrind79 ../src/curl -q --output log/4/curl79.out --include --trace-ascii log/4/trace79 --trace-config all --trace-time ftp://127.0.0.1:43669/we/want/that/page/79 -x 127.0.0.1:43669 > log/4/stdout79 2> log/4/stderr79 === End of file commands.log === Start of file http_server.log 19:28:02.700170 ====> Client connect 19:28:02.700384 accept_connection 3 returned 4 19:28:02.700499 accept_connection 3 returned 0 19:28:02.700958 Read 93 bytes 19:28:02.701078 Process 93 bytes request 19:28:02.701156 Got request: GET /verifiedserver HTTP/1.1 19:28:02.701216 Are-we-friendly question received 19:28:02.701376 Wrote request (93 bytes) input to log/4/server.input 19:28:02.701519 Identifying ourselves as friends 19:28:02.701911 Response sent (57 bytes) and written to log/4/server.response 19:28:02.701995 special request received, no persistency 19:28:02.702048 ====> Client disconnect 0 === End of file http_serverCMD (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/valgrind78 ../src/curl -q --output log/3/curl78.out --include --trace-ascii log/3/trace78 --trace-config all --trace-time http://127.0.0.1:37525/78 -z "dec 12 11:00:00 1999 GMT" > log/3/stdout78 2> log/3/stderr78 CMD (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/1/valgrind81 ../src/curl -q --output log/1/curl81.out --include --trace-ascii log/1/trace81 --trace-config all --trace-time http://127.0.0.1:41477/81 --proxy-user testuser:testpass -x http://127.0.0.1:41477 --proxy-ntlm > log/1/stdout81 2> log/1/stderr81 .log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 79 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind79 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind79 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/3/valgrind78 ../src/curl -q --output log/3/curl78.out --include --trace-ascii log/3/trace78 --trace-config all --trace-time http://127.0.0.1:37525/78 -z "dec 12 11:00:00 1999 GMT" > log/3/stdout78 2> log/3/stderr78 78: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind78 ../src/curl -q --output log/3/curl78.out --include --trace-ascii log/3/trace78 --trace-config all --trace-time http://127.0.0.1:37525/78 -z "dec 12 11:00:00 1999 GMT" > log/3/stdout78 2> log/3/stderr78 === End of file commands.log === Start of file http_server.log 19:28:01.705000 ====> Client connect 19:28:01.705220 accept_connection 3 returned 4 19:28:01.705324 accept_connection 3 returned 0 19:28:01.705811 Read 93 bytes 19:28:01.705935 Process 93 bytes request 19:28:01.706012 Got request: GET /verifiedserver HTTP/1.1 19:28:01.706071 Are-we-friendly question received 19:28:01.706264 Wrote request (93 bytes) input to log/3/server.input 19:28:01.706434 Identifying ourselves as friends 19:28:01.706835 Response sent (57 bytes) and written to log/3/server.response 19:28:01.706940 special request received, no persistency 19:28:01.706997 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 78 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind78 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind78 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/1/valgrind81 ../src/curl -q --output log/1/curl81.out --include --trace-ascii log/1/trace81 --trace-config all --trace-time http://127.0.0.1:41477/81 --proxy-user testuser:testpass -x http://127.0.0.1:41477 --proxy-ntlm > log/1/stdout81 2> log/1/stderr81 81: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind81 ../src/curl -q --output log/1/curl81.out --include --trace-ascii log/1/trace81 --trace-config all --trace-time http://127.0.0.1:41477/81 --proxy-user testuser:testpass -x http://127.0.0.1:41477 --proxy-ntlm > log/1/stdout81 2> log/1/stderr81 === End of file commands.log === Start of file http_server.log 19:28:02.909849 ====> Client connect 19:28:02.910093 accept_connection 3 returned 4 19:28:02.910216 accept_connection 3 returned 0 19:28:02.910354 Read 93 bytes 19:28:02.910506 Process 93 bytes request 19:28:02.910651 Got request: GET /verifiedserver HTTP/1.1 19:28:02.910745 Are-we-friendly question received 19:28:02.910992 Wrote request (93 bytes) input to log/1/server.input 19:28:02.911193 Identifying ourselves as friends 19:28:02.912228 Response sent (57 bytes) and written to log/1/server.response 19:28:02.912324 special request received, no persistency 19:28:02.912376 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === 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/4/valgrind82 ../src/curl -q --output log/4/curl82.out --include --trace-ascii log/4/trace82 --trace-config all --trace-time http://127.0.0.1:43669/82 --proxy-user testuser:testpass -x http://127.0.0.1:43669 > log/4/stdout82 2> log/4/stderr82 CMD (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/1/valgrind84 ../src/curl -q --output log/1/curl84.out --include --trace-ascii log/1/trace84 --trace-config all --trace-time http://127.0.0.1:41477/we/want/that/page/84 -x 127.0.0.1:41477 --user iam:myself > log/1/stdout84 2> log/1/stderr84 tart of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 81 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind81 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind82 ../src/curl -q --output log/4/curl82.out --include --trace-ascii log/4/trace82 --trace-config all --trace-time http://127.0.0.1:43669/82 --proxy-user testuser:testpass -x http://127.0.0.1:43669 > log/4/stdout82 2> log/4/stderr82 82: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind82 ../src/curl -q --output log/4/curl82.out --include --trace-ascii log/4/trace82 --trace-config all --trace-time http://127.0.0.1:43669/82 --proxy-user testuser:testpass -x http://127.0.0.1:43669 > log/4/stdout82 2> log/4/stderr82 === End of file commands.log === Start of file http_server.log 19:28:03.304113 ====> Client connect 19:28:03.304386 accept_connection 3 returned 4 19:28:03.304582 accept_connection 3 returned 0 19:28:03.304736 Read 93 bytes 19:28:03.304836 Process 93 bytes request 19:28:03.304961 Got request: GET /verifiedserver HTTP/1.1 19:28:03.305052 Are-we-friendly question received 19:28:03.305267 Wrote request (93 bytes) input to log/4/server.input 19:28:03.305508 Identifying ourselves as friends 19:28:03.306131 Response sent (57 bytes) and written to log/4/server.response 19:28:03.306234 special request received, no persistency 19:28:03.306307 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 82 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind82 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind84 ../src/curl -q --output log/1/curl84.out --include --trace-ascii log/1/trace84 --trace-config all --trace-time http://127.0.0.1:41477/we/want/that/page/84 -x 127.0.0.1:41477 --user iam:myself > log/1/stdout84 2> log/1/stderr84 84: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind84 ../src/curl -q --output log/1/curl84.out --include --trace-ascii log/1/trace84 --trace-config all --trace-time http://127.0.0.1:41477/we/want/that/page/84 -x 127.0.0.1:41477 --user iam:myself > log/1/stdout84 2> log/1/stderr84 === End of file commands.log === Start of file http_server.log 19:28:03.529073 ====> Client connect 19:28:03.529289 accept_connection 3 returned 4 19:28:03.529402 accept_connection 3 returned 0 19:28:03.529492 Read 93 bytes 19:28:03.529553 Process 93 bytes request 19:28:03.529620 Got request: GET /verifiedserver HTTP/1.1 19:28:03.529679 Are-we-friendly question received 19:28:03.529819 Wrote request (93 bytes) input to log/1/server.input 19:28:03.529946 Identifying ourselves as friends 19:28:03.530386 Response sent (57 bytes) and written to log/1/server.response 19:28:03.530470 special request received, no persistency 19:28:03.530526 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 84 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind84 valgrind: FCMD (0): ../src/curl --max-time 13 --output log/2/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:42719/verifiedserver" 2>log/2/http2_verify.log CMD (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/4/valgrind85 ../src/curl -q --output log/4/curl85.out --include --trace-ascii log/4/trace85 --trace-config all --trace-time http://127.0.0.1:43669/we/want/that/page/85 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this > log/4/stdout85 2> log/4/stderr85 CMD (0): ../src/curl --max-time 13 --output log/3/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:45749/verifiedserver" 2>log/3/http2_verify.log CMD (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/2/valgrind80 ../src/curl -q --output log/2/curl80.out --include --trace-ascii log/2/trace80 --trace-config all --trace-time http://test.80:39599/we/want/that/page/80 -p --proxy1.0 127.0.0.1:42719 --user iam:myself --proxy-user youare:yourself -A "" > log/2/stdout80 2> log/2/stderr80 atal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind84 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/4/valgrind85 ../src/curl -q --output log/4/curl85.out --include --trace-ascii log/4/trace85 --trace-config all --trace-time http://127.0.0.1:43669/we/want/that/page/85 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this > log/4/stdout85 2> log/4/stderr85 85: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind85 ../src/curl -q --output log/4/curl85.out --include --trace-ascii log/4/trace85 --trace-config all --trace-time http://127.0.0.1:43669/we/want/that/page/85 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this > log/4/stdout85 2> log/4/stderr85 === End of file commands.log === Start of file http_server.log 19:28:03.840429 ====> Client connect 19:28:03.840675 accept_connection 3 returned 4 19:28:03.840800 accept_connection 3 returned 0 19:28:03.840904 Read 93 bytes 19:28:03.840975 Process 93 bytes request 19:28:03.841054 Got request: GET /verifiedserver HTTP/1.1 19:28:03.841120 Are-we-friendly question received 19:28:03.841282 Wrote request (93 bytes) input to log/4/server.input 19:28:03.841419 Identifying ourselves as friends 19:28:03.841977 Response sent (57 bytes) and written to log/4/server.response 19:28:03.842076 special request received, no persistency 19:28:03.842136 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 85 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind85 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind85 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: ../src/curl --max-time 13 --output log/2/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:42719/verifiedserver" 2>log/2/http2_verify.log RUN: HTTP2 server is on PID 108135 port 42719 * pid http-proxy => 108135 108135 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/2/valgrind80 ../src/curl -q --output log/2/curl80.out --include --trace-ascii log/2/trace80 --trace-config all --trace-time http://test.80:39599/we/want/that/page/80 -p --proxy1.0 127.0.0.1:42719 --user iam:myself --proxy-user youare:yourself -A "" > log/2/stdout80 2> log/2/stderr80 80: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind80 ../src/curl -q --output log/2/curl80.out --include --trace-ascii log/2/trace80 --trace-config all --trace-time http://test.80:39599/we/want/that/page/80 -p --proxy1.0 127.0.0.1:42719 --user iam:myself --proxy-user youare:yourself -A "" > log/2/stdout80 2> log/2/stderr80 === End of file commands.log === Start of file http2_server.log 19:28:02.059361 Run as proxy, CONNECT to host 127.0.0.1 19:28:02.059954 Running HTTP IPv4 version on port 42719 19:28:02.060249 Wrote pid 108135 to log/2/server/http2_server.pid 19:28:02.060519 Wrote port 42719 to log/2/server/http2_server.port 19:28:02.986831 ====> Client connect 19:28:02.986945 accept_connection 3 returned 4 19:28:02.987042 accept_connection 3 returned 0 19:28:02.987129 Read 93 bytes 19:28:02.987213 Process 93 bytes request 19:28:02.987323 Got request: GET /verifiedserver HTTP/1.1 19:28:02.987923 Are-we-friendly question received 19:28:02.988133 Wrote request (93 bytes) input to log/2/proxy.input 19:28:02.988280 Identifying ourselves as friends 19:28:02.988765 Response sent (57 bytes) and written to log/2/proxy.response 19:28:02.988851 special request received, no persistency 19:28:02.988902 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_vCMD (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/1/valgrind86 ../src/curl -q --include --trace-ascii log/1/trace86 --trace-config all --trace-time "http://127.0.0.1:41477/[860001-860003]" -o "log/1/dumpit#1.dump" > log/1/stdout86 2> log/1/stderr86 CMD (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/4/valgrind87 ../src/curl -q --include --trace-ascii log/4/trace87 --trace-config all --trace-time "http://127.0.0.1:43669/[870001-870002]" -o "log/4/dumpit87-#2.dump" > log/4/stdout87 2> log/4/stderr87 erify.log * Trying 127.0.0.1:42719... * Connected to 127.0.0.1 (127.0.0.1) port 42719 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42719 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108135 === End of file http2_verify.out === Start of file http_server.log 19:28:02.894204 ====> Client connect 19:28:02.894441 accept_connection 3 returned 4 19:28:02.894573 accept_connection 3 returned 0 19:28:02.894692 Read 93 bytes 19:28:02.894785 Process 93 bytes request 19:28:02.894877 Got request: GET /verifiedserver HTTP/1.1 19:28:02.894962 Are-we-friendly question received 19:28:02.895180 Wrote request (93 bytes) input to log/2/server.input 19:28:02.895584 Identifying ourselves as friends 19:28:02.896183 Response sent (57 bytes) and written to log/2/server.response 19:28:02.896287 special request received, no persistency 19:28:02.896350 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 108135 === End of file proxy.response === Start of file server.cmd Testnum 80 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind80 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind80 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/1/valgrind86 ../src/curl -q --include --trace-ascii log/1/trace86 --trace-config all --trace-time "http://127.0.0.1:41477/[860001-860003]" -o "log/1/dumpit#1.dump" > log/1/stdout86 2> log/1/stderr86 86: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind86 ../src/curl -q --include --trace-ascii log/1/trace86 --trace-config all --trace-time "http://127.0.0.1:41477/[860001-860003]" -o "log/1/dumpit#1.dump" > log/1/stdout86 2> log/1/stderr86 === End of file commands.log === Start of file http_server.log 19:28:04.059003 ====> Client connect 19:28:04.059215 accept_connection 3 returned 4 19:28:04.059314 accept_connection 3 returned 0 19:28:04.059920 Read 93 bytes 19:28:04.060053 Process 93 bytes request 19:28:04.060130 Got request: GET /verifiedserver HTTP/1.1 19:28:04.060186 Are-we-friendly question received 19:28:04.060331 Wrote request (93 bytes) input to log/1/server.input 19:28:04.060465 Identifying ourselves as friends 19:28:04.060814 Response sent (57 bytes) and written to log/1/server.response 19:28:04.060897 special request received, no persistency 19:28:04.060959 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 86 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind86 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind86 CMD (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/valgrind83 ../src/curl -q --output log/3/curl83.out --include --trace-ascii log/3/trace83 --trace-config all --trace-time http://test.83:37525/we/want/that/page/83 -p -x 127.0.0.1:45749 --user 'iam:my:;self' > log/3/stdout83 2> log/3/stderr83 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/4/valgrind87 ../src/curl -q --include --trace-ascii log/4/trace87 --trace-config all --trace-time "http://127.0.0.1:43669/[870001-870002]" -o "log/4/dumpit87-#2.dump" > log/4/stdout87 2> log/4/stderr87 87: output (log/4/dumpit87-#2.dump) FAILED: --- log/4/check-expected 2025-05-23 19:28:04.440274844 +0000 +++ log/4/check-generated 2025-05-23 19:28:04.440274844 +0000 @@ -1,5 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Funny-head: yesyes[CR][LF] -Content-Length: 16[CR][LF] -[CR][LF] -two is nice too[LF] == Contents of files in the log/4/ dir after test 87 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Funny-head: yesyes[CR][LF] Content-Length: 16[CR][LF] [CR][LF] two is nice too[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind87 ../src/curl -q --include --trace-ascii log/4/trace87 --trace-config all --trace-time "http://127.0.0.1:43669/[870001-870002]" -o "log/4/dumpit87-#2.dump" > log/4/stdout87 2> log/4/stderr87 === End of file commands.log === Start of file http_server.log 19:28:04.390834 ====> Client connect 19:28:04.391073 accept_connection 3 returned 4 19:28:04.391202 accept_connection 3 returned 0 19:28:04.391316 Read 93 bytes 19:28:04.391457 Process 93 bytes request 19:28:04.391581 Got request: GET /verifiedserver HTTP/1.1 19:28:04.391661 Are-we-friendly question received 19:28:04.391854 Wrote request (93 bytes) input to log/4/server.input 19:28:04.392080 Identifying ourselves as friends 19:28:04.392722 Response sent (57 bytes) and written to log/4/server.response 19:28:04.392819 special request received, no persistency 19:28:04.392880 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 87 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind87 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind87 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/3/server/http2_server.pid" --logfile "log/3/http2_server.log" --logdir "log/3" --portfile log/3/server/http2_server.port --config log/3/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/3/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:45749/verifiedserver" 2>log/3/http2_verify.log RUN: HTTP2 server is on PID 108276 port 45749 * pid http-proxy => 108276 108276 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/3/valgrind83 ../src/curl -q --output log/3/curl83.out --include --trace-ascii log/3/trace83 --trace-config all --trace-time http://test.83:37525/we/want/that/page/83 -p -x 127.0.0.1:45749 --user 'iam:my:;self' > log/3/stdout83 2> log/3/stderr83 83: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind83 ../src/curl -q --output log/3/curl83.out --include --trace-ascii log/3/trace83 --trace-config all --trace-time http://test.83:37525/we/want/that/page/83 -p -x 127.0.0.1:45749 --user 'iam:my:;self' > log/3/stdout83 2> log/3/stderr83 === End of file commands.log === Start of file http2_server.log 19:28:03.514430 Run as proxy, CONNECT to host 127.0.0.1 19:28:03.514882 Running HTTP IPv4 version on port 45749 19:28:03.515174 Wrote pid 108276 to log/3/server/http2_server.pid 19:28:03.515416 Wrote port 45749 to log/3/server/http2_server.port 19:28:04.440845 ====> Client connect 19:28:04.440957 accept_connection 3 returned 4 19:28:04.441063 accept_connection 3 returned 0 19:28:04.441156 Read 93 bytes 19:28:04.441243 Process 93 bytes request 19:28:04.441330 Got request: GET /verifiedserver HTTP/1.1 19:28:04.441391 Are-we-friendly question received 19:28:04.441543 Wrote request (93 bytes) input to log/3/proxy.input 19:28:04.441700 Identifying ourselves as friends 19:28:04.442239 Response sent (57 bytes) and written to log/3/proxy.response 19:28:04.442343 special request received, no persistency 19:28:04.442405 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:45749... * Connected to 127.0.0.1 (127.0.0.1) port 45749 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45749 > User-Agent: curl/8.13.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 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108276 === End of file http2_verify.out === Start of file http_server.log 19:28:02.342708 ====> Client connect 19:28:02.342932 accept_connection 3 returned 4 19:28:02.343033 accept_connection 3 returned 0 19:28:02.343709 Read 93 bytes 19:28:02.343852 Process 93 bytes request 19:28:02.343929 Got request: GET /verifiedserver HTTP/1.1 19:28:02.343988 Are-we-friendly question received 19:28:02.344137 Wrote request (93 bytes) input to log/3/server.input 19:28:02.344276 Identifying ourselves as friends 19:28:02.344645 Response sent (57 bytes) and written to log/3/server.response 19:28:02.344733 special request received, no persistency 19:28:02.344790 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /vCMD (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/2/valgrind88 ../src/curl -q --output log/2/curl88.out --include --trace-ascii log/2/trace88 --trace-config all --trace-time http://127.0.0.1:39599/88 -T log/2/put88 -u testuser:testpass --digest > log/2/stdout88 2> log/2/stderr88 CMD (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/1/valgrind89 ../src/curl -q --output log/1/curl89.out --include --trace-ascii log/1/trace89 --trace-config all --trace-time http://127.0.0.1:41477/89 -u testuser:testpass --ntlm -L > log/1/stdout89 2> log/1/stderr89 erifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 108276 === End of file proxy.response === Start of file server.cmd Testnum 83 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind83 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind83 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/2/valgrind88 ../src/curl -q --output log/2/curl88.out --include --trace-ascii log/2/trace88 --trace-config all --trace-time http://127.0.0.1:39599/88 -T log/2/put88 -u testuser:testpass --digest > log/2/stdout88 2> log/2/stderr88 88: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind88 ../src/curl -q --output log/2/curl88.out --include --trace-ascii log/2/trace88 --trace-config all --trace-time http://127.0.0.1:39599/88 -T log/2/put88 -u testuser:testpass --digest > log/2/stdout88 2> log/2/stderr88 === End of file commands.log === Start of file http_server.log 19:28:04.667131 ====> Client connect 19:28:04.667439 accept_connection 3 returned 4 19:28:04.667667 accept_connection 3 returned 0 19:28:04.667854 Read 93 bytes 19:28:04.667946 Process 93 bytes request 19:28:04.668047 Got request: GET /verifiedserver HTTP/1.1 19:28:04.668130 Are-we-friendly question received 19:28:04.668310 Wrote request (93 bytes) input to log/2/server.input 19:28:04.668492 Identifying ourselves as friends 19:28:04.669077 Response sent (57 bytes) and written to log/2/server.response 19:28:04.669179 special request received, no persistency 19:28:04.669233 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind88 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind88 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/1/valgrind89 ../src/curl -q --output log/1/curl89.out --include --trace-ascii log/1/trace89 --trace-config all --trace-time http://127.0.0.1:41477/89 -u testuser:testpass --ntlm -L > log/1/stdout89 2> log/1/stderr89 89: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind89 ../src/curl -q --output log/1/curl89.out --include --trace-ascii log/1/trace89 --trace-config all --trace-time http://127.0.0.1:41477/89 -u testuser:testpass --ntlm -L > log/1/stdout89 2> log/1/stderr89 === End of file commands.log === Start of file http_server.log 19:28:04.676564 ====> Client connect 19:28:04.676808 accept_connection 3 returned 4 19:28:04.676931 accept_connection 3 returned 0 19:28:04.677029 Read 93 bytes 19:28:04.677097 Process 93 bytes request 19:28:04.677163 Got request: GET /verifiedserver HTTP/1.1 19:28:04.677218 Are-we-friendly question received 19:28:04.677368 Wrote request (93 bytes) input to log/1/server.input 19:28:04.677514 Identifying ourselves as friends 19:28:04.678026 Response sent (57 bytes) and written to log/1/server.response 19:28:04.678113 special request received, no persistency 19:28:04.678167 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 1CMD (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/4/valgrind90 ../src/curl -q --output log/4/curl90.out --include --trace-ascii log/4/trace90 --trace-config all --trace-time http://127.0.0.1:43669/90 -u testuser:testpass --anyauth -L > log/4/stdout90 2> log/4/stderr90 CMD (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/valgrind91 ../src/curl -q --output log/3/curl91.out --include --trace-ascii log/3/trace91 --trace-config all --trace-time http://127.0.0.1:37525/91 --anyauth -u mydomain\\myself:secret > log/3/stdout91 2> log/3/stderr91 8 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 89 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind89 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind89 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/4/valgrind90 ../src/curl -q --output log/4/curl90.out --include --trace-ascii log/4/trace90 --trace-config all --trace-time http://127.0.0.1:43669/90 -u testuser:testpass --anyauth -L > log/4/stdout90 2> log/4/stderr90 90: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind90 ../src/curl -q --output log/4/curl90.out --include --trace-ascii log/4/trace90 --trace-config all --trace-time http://127.0.0.1:43669/90 -u testuser:testpass --anyauth -L > log/4/stdout90 2> log/4/stderr90 === End of file commands.log === Start of file http_server.log 19:28:05.042525 ====> Client connect 19:28:05.042768 accept_connection 3 returned 4 19:28:05.042905 accept_connection 3 returned 0 19:28:05.043024 Read 93 bytes 19:28:05.043102 Process 93 bytes request 19:28:05.043178 Got request: GET /verifiedserver HTTP/1.1 19:28:05.043257 Are-we-friendly question received 19:28:05.043512 Wrote request (93 bytes) input to log/4/server.input 19:28:05.043735 Identifying ourselves as friends 19:28:05.044285 Response sent (57 bytes) and written to log/4/server.response 19:28:05.044382 special request received, no persistency 19:28:05.044436 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 90 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind90 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind90 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/3/valgrind91 ../src/curl -q --output log/3/curl91.out --include --trace-ascii log/3/trace91 --trace-config all --trace-time http://127.0.0.1:37525/91 --anyauth -u mydomain\\myself:secret > log/3/stdout91 2> log/3/stderr91 91: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind91 ../src/curl -q --output log/3/curl91.out --include --trace-ascii log/3/trace91 --trace-config all --trace-time http://127.0.0.1:37525/91 --anyauth -u mydomain\\myself:secret > log/3/stdout91 2> log/3/stderr91 === End of file commands.log === Start of file http_server.log 19:28:04.131215 ====> Client connect 19:28:04.131494 accept_connection 3 returned 4 19:28:04.131627 accept_connection 3 returned 0 19:28:04.131730 Read 93 bytes 19:28:04.131825 Process 93 bytes request 19:28:04.131906 Got request: GET /verifiedserver HTTP/1.1 19:28:04.131979 Are-we-friendly question received 19:28:04.132190 Wrote request (93 bytes) input to log/3/server.input 19:28:04.132400 Identifying ourselves as friends 19:28:04.132970 Response sent (57 bytes) and written to log/3/server.response 19:28:04.133090 special request received, no persistency 19:28:04.133161 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 91 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: CMD (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/2/valgrind92 ../src/curl -q --output log/2/curl92.out --include --trace-ascii log/2/trace92 --trace-config all --trace-time http://127.0.0.1:39599/want/92 -C 87 > log/2/stdout92 2> log/2/stderr92 CMD (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/1/valgrind93 ../src/curl -q --output log/1/curl93.out --include --trace-ascii log/1/trace93 --trace-config all --trace-time http://127.0.0.1:41477/93 -x 127.0.0.1:41477 > log/1/stdout93 2> log/1/stderr93 105156 === End of file server.response === Start of file valgrind91 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind91 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/2/valgrind92 ../src/curl -q --output log/2/curl92.out --include --trace-ascii log/2/trace92 --trace-config all --trace-time http://127.0.0.1:39599/want/92 -C 87 > log/2/stdout92 2> log/2/stderr92 92: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind92 ../src/curl -q --output log/2/curl92.out --include --trace-ascii log/2/trace92 --trace-config all --trace-time http://127.0.0.1:39599/want/92 -C 87 > log/2/stdout92 2> log/2/stderr92 === End of file commands.log === Start of file http_server.log 19:28:05.380047 ====> Client connect 19:28:05.380279 accept_connection 3 returned 4 19:28:05.380401 accept_connection 3 returned 0 19:28:05.380513 Read 93 bytes 19:28:05.380595 Process 93 bytes request 19:28:05.380676 Got request: GET /verifiedserver HTTP/1.1 19:28:05.380758 Are-we-friendly question received 19:28:05.380933 Wrote request (93 bytes) input to log/2/server.input 19:28:05.381146 Identifying ourselves as friends 19:28:05.381736 Response sent (57 bytes) and written to log/2/server.response 19:28:05.381838 special request received, no persistency 19:28:05.381907 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 92 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind92 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind92 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-config all --trace-time http://127.0.0.1:41477/93 -x 127.0.0.1:41477 > log/1/stdout93 2> log/1/stderr93 93: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/93 -x 127.0.0.1:41477 > log/1/stdout93 2> log/1/stderr93 === End of file commands.log === Start of file http_server.log 19:28:05.455890 ====> Client connect 19:28:05.456107 accept_connection 3 returned 4 19:28:05.456214 accept_connection 3 returned 0 19:28:05.456759 Read 93 bytes 19:28:05.456890 Process 93 bytes request 19:28:05.456962 Got request: GET /verifiedserver HTTP/1.1 19:28:05.457024 Are-we-friendly question received 19:28:05.457180 Wrote request (93 bytes) input to log/1/server.input 19:28:05.457324 Identifying ourselves as friends 19:28:05.457727 Response sent (57 bytes) and written to log/1/server.response 19:28:05.457819 special request received, no persistency 19:28:05.457873 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 93 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind93 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbCMD (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/4/valgrind94 ../src/curl -q --output log/4/curl94.out --include --trace-ascii log/4/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:43669 > log/4/stdout94 2> log/4/stderr94 CMD (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/valgrind95 ../src/curl -q --output log/3/curl95.out --include --trace-ascii log/3/trace95 --trace-config all --trace-time http://test.95:37525/we/want/that/page/95 -p -x 127.0.0.1:45749 -d "datatopost=ohthatsfunyesyes" > log/3/stdout95 2> log/3/stderr95 ols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind94 ../src/curl -q --output log/4/curl94.out --include --trace-ascii log/4/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:43669 > log/4/stdout94 2> log/4/stderr94 94: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind94 ../src/curl -q --output log/4/curl94.out --include --trace-ascii log/4/trace94 --trace-config all --trace-time https://test.anything.really.com:94 --proxy1.0 127.0.0.1:43669 > log/4/stdout94 2> log/4/stderr94 === End of file commands.log === Start of file http_server.log 19:28:05.818142 ====> Client connect 19:28:05.818358 accept_connection 3 returned 4 19:28:05.818475 accept_connection 3 returned 0 19:28:05.818953 Read 93 bytes 19:28:05.819073 Process 93 bytes request 19:28:05.819156 Got request: GET /verifiedserver HTTP/1.1 19:28:05.819231 Are-we-friendly question received 19:28:05.819470 Wrote request (93 bytes) input to log/4/server.input 19:28:05.819671 Identifying ourselves as friends 19:28:05.820140 Response sent (57 bytes) and written to log/4/server.response 19:28:05.820244 special request received, no persistency 19:28:05.820301 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 94 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind94 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind94 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/3/valgrind95 ../src/curl -q --output log/3/curl95.out --include --trace-ascii log/3/trace95 --trace-config all --trace-time http://test.95:37525/we/want/that/page/95 -p -x 127.0.0.1:45749 -d "datatopost=ohthatsfunyesyes" > log/3/stdout95 2> log/3/stderr95 95: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind95 ../src/curl -q --output log/3/curl95.out --include --trace-ascii log/3/trace95 --trace-config all --trace-time http://test.95:37525/we/want/that/page/95 -p -x 127.0.0.1:45749 -d "datatopost=ohthatsfunyesyes" > log/3/stdout95 2> log/3/stderr95 === End of file commands.log === Start of file http2_server.log 19:28:05.962539 ====> Client connect 19:28:05.962734 accept_connection 3 returned 4 19:28:05.962839 accept_connection 3 returned 0 19:28:05.962930 Read 93 bytes 19:28:05.962993 Process 93 bytes request 19:28:05.963057 Got request: GET /verifiedserver HTTP/1.1 19:28:05.963113 Are-we-friendly question received 19:28:05.963253 Wrote request (93 bytes) input to log/3/proxy.input 19:28:05.963458 Identifying ourselves as friends 19:28:05.963960 Response sent (57 bytes) and written to log/3/proxy.response 19:28:05.964042 special request received, no persistency 19:28:05.964092 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:45749... * Connected to 127.0.0.1 (127.0.0.1) port 45749 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45749 > User-Agent: curl/8.13.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 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108276 === End of file http2_verify.out === Start of file http_server.log 19:28:04.854848 ====> Client connect 19:28:04.855056 accept_connection 3 returned 4 19:28:04.855167 accept_connection 3 returned 0 19:28:04.855269 Read 93 bytes 19:28:04.855339 Process 93 bytes request 19:28:04.855487 Got request: GET /verifiedserver HTTP/1.1 19:28:04.855560 Are-we-friendly question received 19:28:04.855714 Wrote request (93 bytes) input to log/3/server.input 19:28:04.855865 Identifying ourselves as friends 19:28:04.856336 Response sent (57 bytes) and written to log/3/server.response 19:28:04.856419 special request received, no persistency 19:28:04.856471 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes daCMD (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/2/valgrind97 ../src/curl -q --output log/2/curl97.out --include --trace-ascii log/2/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:39599/97 > log/2/stdout97 2> log/2/stderr97 CMD (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/1/valgrind98 ../src/curl -q --output log/1/curl98.out --include --trace-ascii log/1/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:41477/98 log/1/stdout98 2> log/1/stderr98 ta] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 108276 === End of file proxy.response === Start of file server.cmd Testnum 95 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind95 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind95 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/2/valgrind97 ../src/curl -q --output log/2/curl97.out --include --trace-ascii log/2/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:39599/97 > log/2/stdout97 2> log/2/stderr97 97: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind97 ../src/curl -q --output log/2/curl97.out --include --trace-ascii log/2/trace97 --trace-config all --trace-time -d "hejsanallabarn" -H "Content-Type: silly/type" http://127.0.0.1:39599/97 > log/2/stdout97 2> log/2/stderr97 === End of file commands.log === Start of file http_server.log 19:28:06.063164 ====> Client connect 19:28:06.063519 accept_connection 3 returned 4 19:28:06.063675 accept_connection 3 returned 0 19:28:06.064173 Read 93 bytes 19:28:06.064304 Process 93 bytes request 19:28:06.064386 Got request: GET /verifiedserver HTTP/1.1 19:28:06.064449 Are-we-friendly question received 19:28:06.064645 Wrote request (93 bytes) input to log/2/server.input 19:28:06.064962 Identifying ourselves as friends 19:28:06.065455 Response sent (57 bytes) and written to log/2/server.response 19:28:06.065547 special request received, no persistency 19:28:06.065607 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 97 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind97 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind98 ../src/curl -q --output log/1/curl98.out --include --trace-ascii log/1/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:41477/98 log/1/stdout98 2> log/1/stderr98 98: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind98 ../src/curl -q --output log/1/curl98.out --include --trace-ascii log/1/trace98 --trace-config all --trace-time -T - -H "Transfer-Encoding:" -H "Content-Length: 14" http://127.0.0.1:41477/98 log/1/stdout98 2> log/1/stderr98 === End of file commands.log === Start of file http_server.log 19:28:06.090976 ====> Client connect 19:28:06.091187 accept_connection 3 returned 4 19:28:06.091294 accept_connection 3 returned 0 19:28:06.091487 Read 93 bytes 19:28:06.091590 Process 93 bytes request 19:28:06.091676 Got request: GET /verifiedserver HTTP/1.1 19:28:06.091741 Are-we-friendly question received 19:28:06.091891 Wrote request (93 bytes) input to log/1/server.input 19:28:06.092036 Identifying ourselves as friends 19:28:06.092508 Response sent (57 bytes) and written to log/1/server.response 19:28:06.092599 special request received, no persistency 19:28:06.092655 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of CMD (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/4/valgrind99 ../src/curl -q --output log/4/curl99.out --include --trace-ascii log/4/trace99 --trace-config all --trace-time http://127.0.0.1:43669/99 -C 9999999999 > log/4/stdout99 2> log/4/stderr99 CMD (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/valgrind100 ../src/curl -q --output log/3/curl100.out --include --trace-ascii log/3/trace100 --trace-config all --trace-time ftp://127.0.0.1:43789/test-100/ > log/3/stdout100 2> log/3/stderr100 file server.cmd Testnum 98 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file stdin-for-98 data on stdin === End of file stdin-for-98 === Start of file valgrind98 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind99 ../src/curl -q --output log/4/curl99.out --include --trace-ascii log/4/trace99 --trace-config all --trace-time http://127.0.0.1:43669/99 -C 9999999999 > log/4/stdout99 2> log/4/stderr99 99: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind99 ../src/curl -q --output log/4/curl99.out --include --trace-ascii log/4/trace99 --trace-config all --trace-time http://127.0.0.1:43669/99 -C 9999999999 > log/4/stdout99 2> log/4/stderr99 === End of file commands.log === Start of file http_server.log 19:28:06.447532 ====> Client connect 19:28:06.447779 accept_connection 3 returned 4 19:28:06.447894 accept_connection 3 returned 0 19:28:06.447992 Read 93 bytes 19:28:06.448056 Process 93 bytes request 19:28:06.448126 Got request: GET /verifiedserver HTTP/1.1 19:28:06.448188 Are-we-friendly question received 19:28:06.448331 Wrote request (93 bytes) input to log/4/server.input 19:28:06.448463 Identifying ourselves as friends 19:28:06.448908 Response sent (57 bytes) and written to log/4/server.response 19:28:06.448992 special request received, no persistency 19:28:06.449048 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 99 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind99 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind99 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 43789 (log/3/server/ftp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://127.0.0.1:43789/verifiedserver" 2>log/3/ftp_verify.log RUN: Verifying our test ftp server took 0 seconds RUN: FTP server is PID 109394 port 43789 * pid ftp => 109394 109394 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/3/valgrind100 ../src/curl -q --output log/3/curl100.out --include --trace-ascii log/3/trace100 --trace-config all --trace-time ftp://127.0.0.1:43789/test-100/ > log/3/stdout100 2> log/3/stderr100 100: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind100 ../src/curl -q --output log/3/curl100.out --include --trace-ascii log/3/trace100 --trace-config all --trace-time ftp://127.0.0.1:43789/test-100/ > log/3/stdout100 2> log/3/stderr100 === End of file commands.log === Start of file ftp_server.log 19:28:06.431548 FTP server listens on port IPv4/43789 19:28:06.432159 logged pid 109394 in log/3/server/ftp_server.pid 19:28:06.432361 Awaiting input 19:28:07.189037 ====> Client connect 19:28:07.190903 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.192122 < "USER anonymous" 19:28:07.192527 > "331 We are happy you popped in![CR][LF]" 19:28:07.194299 < "PASS ftp@example.com" 19:28:07.194874 > "230 Welcome you silly person[CR][LF]" 19:28:07.196050 < "PWD" 19:28:07.196446 > "257 "/" is current directory[CR][LF]" 19:28:07.197614 < "EPSV" 19:28:07.197844 ====> Passive DATA channel requested by client 19:28:07.197968 DATA sockfilt for passive data channel starting... 19:28:07.206405 DATA sockfilt for passive data channel started (pid 109474) 19:28:07.207111 DATA sockfilt for passive data channel listens on port 38333 CMD (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/2/valgrind101 ../src/curl -q --output log/2/curl101.out --include --trace-ascii log/2/trace101 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P 127.0.0.1 > log/2/stdout101 2> log/2/stderr101 19:28:07.207410 > "229 Entering Passive Mode (|||38333|)[LF]" 19:28:07.207558 Client has been notified that DATA conn will be accepted on port 38333 19:28:07.208479 Client connects to port 38333 19:28:07.208754 ====> Client established passive DATA connection on port 38333 19:28:07.209384 < "TYPE I" 19:28:07.209870 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.210887 < "SIZE verifiedserver" 19:28:07.211190 > "213 18[CR][LF]" 19:28:07.213086 < "RETR verifiedserver" 19:28:07.213484 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.214527 =====> Closing passive DATA connection... 19:28:07.214744 Server disconnects passive DATA connection 19:28:07.214931 Fancy that; client wants to DISC, too 19:28:07.215179 Server disconnected passive DATA connection 19:28:07.215377 DATA sockfilt for passive data channel quits (pid 109474) 19:28:07.216521 DATA sockfilt for passive data channel quit (pid 109474) 19:28:07.216789 =====> Closed passive DATA connection 19:28:07.217066 > "226 File transfer complete[CR][LF]" 19:28:07.258646 < "QUIT" 19:28:07.259003 > "221 bye bye baby[CR][LF]" 19:28:07.260100 MAIN sockfilt said DISC 19:28:07.260442 ====> Client disconnected 19:28:07.260857 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:06.896134 Running IPv4 version 19:28:06.896526 Listening on port 43789 19:28:06.896768 Wrote pid 109447 to log/3/server/ftp_sockctrl.pid 19:28:06.896996 Wrote port 43789 to log/3/server/ftp_server.port 19:28:06.897105 Received PING (on stdin) 19:28:07.654663 ====> Client connect 19:28:07.656015 Received DATA (on stdin) 19:28:07.656160 > 160 bytes data, server => client 19:28:07.656253 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:07.656330 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:07.656452 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:07.656948 < 16 bytes data, client => server 19:28:07.657071 'USER anonymous\r\n' 19:28:07.658711 Received DATA (on stdin) 19:28:07.658838 > 33 bytes data, server => client 19:28:07.658925 '331 We are happy you popped in!\r\n' 19:28:07.659675 < 22 bytes data, client => server 19:28:07.659843 'PASS ftp@example.com\r\n' 19:28:07.660782 Received DATA (on stdin) 19:28:07.660925 > 30 bytes data, server => client 19:28:07.661007 '230 Welcome you silly person\r\n' 19:28:07.661499 < 5 bytes data, client => server 19:28:07.661632 'PWD\r\n' 19:28:07.662360 Received DATA (on stdin) 19:28:07.662489 > 30 bytes data, server => client 19:28:07.662578 '257 "/" is current directory\r\n' 19:28:07.663043 < 6 bytes data, client => server 19:28:07.663170 'EPSV\r\n' 19:28:07.673325 Received DATA (on stdin) 19:28:07.673445 > 38 bytes data, server => client 19:28:07.673518 '229 Entering Passive Mode (|||38333|)\n' 19:28:07.674317 < 8 bytes data, client => server 19:28:07.674428 'TYPE I\r\n' 19:28:07.675776 Received DATA (on stdin) 19:28:07.675913 > 33 bytes data, server => client 19:28:07.675984 '200 I modify TYPE as you wanted\r\n' 19:28:07.676377 < 21 bytes data, client => server 19:28:07.676483 'SIZE verifiedserver\r\n' 19:28:07.677116 Received DATA (on stdin) 19:28:07.677225 > 8 bytes data, server => client 19:28:07.677293 '213 18\r\n' 19:28:07.677694 < 21 bytes data, client => server 19:28:07.677817 'RETR verifiedserver\r\n' 19:28:07.679395 Received DATA (on stdin) 19:28:07.679549 > 29 bytes data, server => client 19:28:07.679632 '150 Binary junk (18 bytes).\r\n' 19:28:07.682980 Received DATA (on stdin) 19:28:07.683110 > 28 bytes data, server => client 19:28:07.683201 '226 File transfer complete\r\n' 19:28:07.724066 < 6 bytes data, client => server 19:28:07.724227 'QUIT\r\n' 19:28:07.724915 Received DATA (on stdin) 19:28:07.725051 > 18 bytes data, server => client 19:28:07.725147 '221 bye bye baby\r\n' 19:28:07.725597 ====> Client disconnect 19:28:07.726388 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.671250 Running IPv4 version 19:28:07.671706 Listening on port 38333 19:28:07.671976 Wrote pid 109474 to log/3/server/ftp_sockdata.pid 19:28:07.672097 Received PING (on stdin) 19:28:07.672672 Received PORT (on stdin) 19:28:07.674141 ====> Client connect 19:28:07.679707 Received DATA (on stdin) 19:28:07.679840 > 18 bytes data, server => client 19:28:07.679933 'WE ROOLZ: 109394\r\n' 19:28:07.680330 ====> Client disconnect 19:28:07.680852 Received DISC (on stdin) 19:28:07.680957 Crikey! Client also wants to disconnect 19:28:07.681055 Received ACKD (on stdin) 19:28:07.681533 Received QUIT (on stdin) 19:28:07.681634 quits 19:28:07.681889 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 100 === End of file server.cmd === Start of file valgrind100 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind100 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 43671 (log/2/server/ftp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://127.0.0.1:43671/verifiedserver" 2>log/2/ftp_verify.log RUN: Verifying our test ftp server took 0 seconds RUN: FTP server is PID 109411 port 43671 * pid ftp => 109411 109411 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/2/valgrind101 ../src/curl -q --output log/2/curl101.out --include --trace-ascii log/2/trace101 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P 127.0.0.1 > log/2/stdout101 2> log/2/stderr101 101: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind101 ../src/curl -q --output log/2/curl101.out --include --trace-ascii log/2/trace101 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P 127.0.0.1 > log/2/stdout101 2> log/2/stderr101 === End of file commands.log === Start of file ftp_server.log 19:28:06.479700 FTP server listens on port IPv4/43671 19:28:06.480374 logged pid 109411 in log/2/server/ftp_server.pid 19:28:06.480578 Awaiting input 19:28:07.261198 ====> Client connect 19:28:07.262175 > "220- _ _ ____ _ CMD (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/1/valgrind102 ../src/curl -q --output log/1/curl102.out --include --trace-ascii log/1/trace102 --trace-config all --trace-time ftp://127.0.0.1:39333/102 > log/1/stdout102 2> log/1/stderr102 [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.263804 < "USER anonymous" 19:28:07.266646 > "331 We are happy you popped in![CR][LF]" 19:28:07.268199 < "PASS ftp@example.com" 19:28:07.268615 > "230 Welcome you silly person[CR][LF]" 19:28:07.270207 < "PWD" 19:28:07.270542 > "257 "/" is current directory[CR][LF]" 19:28:07.271728 < "EPSV" 19:28:07.271957 ====> Passive DATA channel requested by client 19:28:07.272106 DATA sockfilt for passive data channel starting... 19:28:07.281107 DATA sockfilt for passive data channel started (pid 109499) 19:28:07.282528 DATA sockfilt for passive data channel listens on port 40519 19:28:07.282829 > "229 Entering Passive Mode (|||40519|)[LF]" 19:28:07.282985 Client has been notified that DATA conn will be accepted on port 40519 19:28:07.284486 Client connects to port 40519 19:28:07.284695 ====> Client established passive DATA connection on port 40519 19:28:07.285178 < "TYPE I" 19:28:07.285541 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.286453 < "SIZE verifiedserver" 19:28:07.286755 > "213 18[CR][LF]" 19:28:07.287643 < "RETR verifiedserver" 19:28:07.287992 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.288475 =====> Closing passive DATA connection... 19:28:07.288637 Server disconnects passive DATA connection 19:28:07.289872 Server disconnected passive DATA connection 19:28:07.290198 DATA sockfilt for passive data channel quits (pid 109499) 19:28:07.291411 DATA sockfilt for passive data channel quit (pid 109499) 19:28:07.291632 =====> Closed passive DATA connection 19:28:07.291884 > "226 File transfer complete[CR][LF]" 19:28:07.330360 < "QUIT" 19:28:07.330616 > "221 bye bye baby[CR][LF]" 19:28:07.331379 MAIN sockfilt said DISC 19:28:07.332008 ====> Client disconnected 19:28:07.332401 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:06.944324 Running IPv4 version 19:28:06.944701 Listening on port 43671 19:28:06.944933 Wrote pid 109449 to log/2/server/ftp_sockctrl.pid 19:28:06.945147 Wrote port 43671 to log/2/server/ftp_server.port 19:28:06.945259 Received PING (on stdin) 19:28:07.725935 ====> Client connect 19:28:07.728046 Received DATA (on stdin) 19:28:07.728220 > 160 bytes data, server => client 19:28:07.728322 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:07.728411 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:07.728488 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:07.728987 < 16 bytes data, client => server 19:28:07.729137 'USER anonymous\r\n' 19:28:07.732529 Received DATA (on stdin) 19:28:07.732687 > 33 bytes data, server => client 19:28:07.732768 '331 We are happy you popped in!\r\n' 19:28:07.733205 < 22 bytes data, client => server 19:28:07.733363 'PASS ftp@example.com\r\n' 19:28:07.734869 Received DATA (on stdin) 19:28:07.735007 > 30 bytes data, server => client 19:28:07.735103 '230 Welcome you silly person\r\n' 19:28:07.735645 < 5 bytes data, client => server 19:28:07.735799 'PWD\r\n' 19:28:07.736456 Received DATA (on stdin) 19:28:07.736579 > 30 bytes data, server => client 19:28:07.736678 '257 "/" is current directory\r\n' 19:28:07.737184 < 6 bytes data, client => server 19:28:07.737344 'EPSV\r\n' 19:28:07.748902 Received DATA (on stdin) 19:28:07.749039 > 38 bytes data, server => client 19:28:07.749134 '229 Entering Passive Mode (|||40519|)\n' 19:28:07.750152 < 8 bytes data, client => server 19:28:07.750259 'TYPE I\r\n' 19:28:07.751435 Received DATA (on stdin) 19:28:07.751568 > 33 bytes data, server => client 19:28:07.751641 '200 I modify TYPE as you wanted\r\n' 19:28:07.752004 < 21 bytes data, client => server 19:28:07.752118 'SIZE verifiedserver\r\n' 19:28:07.752666 Received DATA (on stdin) 19:28:07.752768 > 8 bytes data, server => client 19:28:07.752837 '213 18\r\n' 19:28:07.753178 < 21 bytes data, client => server 19:28:07.753284 'RETR verifiedserver\r\n' 19:28:07.753903 Received DATA (on stdin) 19:28:07.754031 > 29 bytes data, server => client 19:28:07.754111 '150 Binary junk (18 bytes).\r\n' 19:28:07.757792 Received DATA (on stdin) 19:28:07.757917 > 28 bytes data, server => client 19:28:07.757990 '226 File transfer complete\r\n' 19:28:07.795877 < 6 bytes data, client => server 19:28:07.796016 'QUIT\r\n' 19:28:07.796530 Received DATA (on stdin) 19:28:07.796620 > 18 bytes data, server => client 19:28:07.796690 '221 bye bye baby\r\n' 19:28:07.797008 ====> Client disconnect 19:28:07.797572 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.744500 Running IPv4 version 19:28:07.745760 Listening on port 40519 19:28:07.745997 Wrote pid 109499 to log/2/server/ftp_sockdata.pid 19:28:07.746091 Received PING (on stdin) 19:28:07.747825 Received PORT (on stdin) 19:28:07.750188 ====> Client connect 19:28:07.754162 Received DATA (on stdin) 19:28:07.754307 > 18 bytes data, server => client 19:28:07.754392 'WE ROOLZ: 109411\r\n' 19:28:07.754991 Received DISC (on stdin) 19:28:07.755199 ====> Client forcibly disconnected 19:28:07.756379 Received QUIT (on stdin) 19:28:07.756489 quits 19:28:07.756745 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 101 === End of file server.cmd === Start of file valgrind101 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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 39333 (log/1/server/ftp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://127.0.0.1:39333/verifiedserver" 2>log/1/ftp_verify.log RUN: Verifying our test ftp server took 0 seconds RUN: FTP server is PID 109414 port 39333 * pid ftp => 109414 109414 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-config all --trace-time ftp://127.0.0.1:39333/102 > log/1/stdout102 2> log/1/stderr102 102: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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 --suppCMD (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/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 ressions=/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-config all --trace-time ftp://127.0.0.1:39333/102 > log/1/stdout102 2> log/1/stderr102 === End of file commands.log === Start of file ftp_server.log 19:28:06.495901 FTP server listens on port IPv4/39333 19:28:06.496488 logged pid 109414 in log/1/server/ftp_server.pid 19:28:06.507326 Awaiting input 19:28:07.277997 ====> Client connect 19:28:07.278758 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.279995 < "USER anonymous" 19:28:07.280258 > "331 We are happy you popped in![CR][LF]" 19:28:07.281192 < "PASS ftp@example.com" 19:28:07.281506 > "230 Welcome you silly person[CR][LF]" 19:28:07.282458 < "PWD" 19:28:07.282737 > "257 "/" is current directory[CR][LF]" 19:28:07.283798 < "EPSV" 19:28:07.284042 ====> Passive DATA channel requested by client 19:28:07.284512 DATA sockfilt for passive data channel starting... 19:28:07.294100 DATA sockfilt for passive data channel started (pid 109500) 19:28:07.294761 DATA sockfilt for passive data channel listens on port 38407 19:28:07.295041 > "229 Entering Passive Mode (|||38407|)[LF]" 19:28:07.295184 Client has been notified that DATA conn will be accepted on port 38407 19:28:07.296033 Client connects to port 38407 19:28:07.296251 ====> Client established passive DATA connection on port 38407 19:28:07.296701 < "TYPE I" 19:28:07.296941 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.297995 < "SIZE verifiedserver" 19:28:07.298270 > "213 18[CR][LF]" 19:28:07.299129 < "RETR verifiedserver" 19:28:07.299383 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.299804 =====> Closing passive DATA connection... 19:28:07.300008 Server disconnects passive DATA connection 19:28:07.300344 Fancy that; client wants to DISC, too 19:28:07.300528 Server disconnected passive DATA connection 19:28:07.300656 DATA sockfilt for passive data channel quits (pid 109500) 19:28:07.301739 DATA sockfilt for passive data channel quit (pid 109500) 19:28:07.301933 =====> Closed passive DATA connection 19:28:07.302134 > "226 File transfer complete[CR][LF]" 19:28:07.346489 < "QUIT" 19:28:07.346789 > "221 bye bye baby[CR][LF]" 19:28:07.349811 MAIN sockfilt said DISC 19:28:07.350073 ====> Client disconnected 19:28:07.350373 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:06.960251 Running IPv4 version 19:28:06.960815 Listening on port 39333 19:28:06.961150 Wrote pid 109450 to log/1/server/ftp_sockctrl.pid 19:28:06.961376 Wrote port 39333 to log/1/server/ftp_server.port 19:28:06.961478 Received PING (on stdin) 19:28:07.743688 ====> Client connect 19:28:07.744649 Received DATA (on stdin) 19:28:07.744768 > 160 bytes data, server => client 19:28:07.744841 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:07.744914 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:07.744971 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:07.745373 < 16 bytes data, client => server 19:28:07.745480 'USER anonymous\r\n' 19:28:07.746172 Received DATA (on stdin) 19:28:07.746267 > 33 bytes data, server => client 19:28:07.746338 '331 We are happy you popped in!\r\n' 19:28:07.746715 < 22 bytes data, client => server 19:28:07.746809 'PASS ftp@example.com\r\n' 19:28:07.747405 Received DATA (on stdin) 19:28:07.747527 > 30 bytes data, server => client 19:28:07.747597 '230 Welcome you silly person\r\n' 19:28:07.747975 < 5 bytes data, client => server 19:28:07.748066 'PWD\r\n' 19:28:07.748651 Received DATA (on stdin) 19:28:07.748775 > 30 bytes data, server => client 19:28:07.748846 '257 "/" is current directory\r\n' 19:28:07.749329 < 6 bytes data, client => server 19:28:07.749438 'EPSV\r\n' 19:28:07.760951 Received DATA (on stdin) 19:28:07.761066 > 38 bytes data, server => client 19:28:07.761136 '229 Entering Passive Mode (|||38407|)\n' 19:28:07.761948 < 8 bytes data, client => server 19:28:07.762050 'TYPE I\r\n' 19:28:07.762848 Received DATA (on stdin) 19:28:07.762944 > 33 bytes data, server => client 19:28:07.763010 '200 I modify TYPE as you wanted\r\n' 19:28:07.763541 < 21 bytes data, client => server 19:28:07.763666 'SIZE verifiedserver\r\n' 19:28:07.764185 Received DATA (on stdin) 19:28:07.764271 > 8 bytes data, server => client 19:28:07.764331 '213 18\r\n' 19:28:07.764710 < 21 bytes data, client => server 19:28:07.764826 'RETR verifiedserver\r\n' 19:28:07.765295 Received DATA (on stdin) 19:28:07.765379 > 29 bytes data, server => client 19:28:07.765437 '150 Binary junk (18 bytes).\r\n' 19:28:07.768044 Received DATA (on stdin) 19:28:07.768159 > 28 bytes data, server => client 19:28:07.768232 '226 File transfer complete\r\n' 19:28:07.811971 < 6 bytes data, client => server 19:28:07.812126 'QUIT\r\n' 19:28:07.812699 Received DATA (on stdin) 19:28:07.812820 > 18 bytes data, server => client 19:28:07.812892 '221 bye bye baby\r\n' 19:28:07.815485 ====> Client disconnect 19:28:07.816539 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.759060 Running IPv4 version 19:28:07.759472 Listening on port 38407 19:28:07.759728 Wrote pid 109500 to log/1/server/ftp_sockdata.pid 19:28:07.759834 Received PING (on stdin) 19:28:07.760356 Received PORT (on stdin) 19:28:07.761750 ====> Client connect 19:28:07.765489 Received DATA (on stdin) 19:28:07.765595 > 18 bytes data, server => client 19:28:07.765680 'WE ROOLZ: 109414\r\n' 19:28:07.766086 ====> Client disconnect 19:28:07.766231 Received DISC (on stdin) 19:28:07.766304 Crikey! Client also wants to disconnect 19:28:07.766432 Received ACKD (on stdin) 19:28:07.766736 Received QUIT (on stdin) 19:28:07.766829 quits 19:28:07.767081 ============> 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 valgrind102 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind102 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 40809 (log/4/server/ftp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://127.0.0.1:40809/verifiedserver" 2>log/4/ftp_verify.log RUN: Verifying our test ftp server took 0 seconds RUN: FTP server is PID 109451 port 40809 * pid ftp => 109451 109451 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/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 103: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind103 ../src/curl -q --output log/4/curl103.out --include --trace-ascii log/4/trace103 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/103 -P - > log/4/stdout103 2> log/4/stderr103 === End of file commands.log === Start of file ftp_server.log 19:28:06.774419 FTP server listens on port IPv4/40809 19:28:06.775039 logged pid 109451 in log/4/server/ftp_server.pid 19:28:06.775210 Awaiting input 19:28:07.598726 ====> Client connect 19:28:07.599531 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.601055 < "USER anonymous" 19:28:07.601383 > "331 We are happy you popped in![CR][LF]" 19:28:07.602552 < "PASS ftp@example.com" 19:28:07.602856 > "230 Welcome you silly person[CR][LF]" 19:28:07.603984 < "PWD" 19:28:07.604257 > "257 "/" is current directory[CR][LF]" 19:28:07.605281 < "EPSV" 19:28:07.605671 ====> Passive DATA channel requested by client 19:28:07.605843 DATA sockfilt for passive data channel starting... 19:28:07.617673 DATA sockfilt for passive data channel started (pid 109645) 19:28:07.618550 DATA sockfilt for passive data channel listens on port 40957 19:28:07.618932 > "229 Entering Passive Mode (|||40957|)[LF]" 19:28:07.619130 Client has been notified that DATA conn will be accepted on port 40957 19:28:07.620054 Client connects to port 40957 19:28:07.620311 ====> Client established passive DATA connection on port 40957 19:28:07.621029 < "TYPE I" 19:28:07.621392 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.625729 < "SIZE verifiedserver" 19:28:07.626178 > "213 18[CR][LF]" 19:28:07.627324 < "RETR verifiedserver" 19:28:07.627827 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.628413 =====> Closing passive DATA connection... 19:28:07.628605 Server disconnects passive DATA connection 19:28:07.629382 Server disconnected passive DATA connection 19:28:07.629702 DATA sockfilt for passive data channel quits (pid 109645) 19:28:07.630939 DATA sockfilt for passive data channel quit (pid 109645) 19:28:07.631163 =====> Closed passive DATA connection 19:28:07.631398 > "226 File transfer complete[CR][LF]" 19:28:07.670902 < "QUIT" 19:28:07.671247 > "221 bye bye baby[CR][LF]" 19:28:07.672128 MAIN sockfilt said DISC 19:28:07.672495 ====> Client disconnected 19:28:07.672825 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:06.238838 Running IPv4 version 19:28:06.239237 Listening on port 40809 19:28:06.239568 Wrote pid 109452 to log/4/server/ftp_sockctrl.pid 19:28:06.239795 Wrote port 40809 to log/4/server/ftp_server.port 19:28:06.239907 Received PING (on stdin) 19:28:07.064370 ====> Client connect 19:28:07.065408 Received DATA (on stdin) 19:28:07.065559 > 160 bytes data, server => client 19:28:07.065655 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:07.065738 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:07.065813 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:07.066284 < 16 bytes data, client => server 19:28:07.066417 'USER anonymous\r\n' 19:28:07.067296 Received DATA (on stdin) 19:28:07.067482 > 33 bytes data, server => client 19:28:07.067570 '331 We are happy you popped in!\r\n' 19:28:07.068004 < 22 bytes data, client => server 19:28:07.068130 'PASS ftp@example.com\r\n' 19:28:07.068763 Received DATA (on stdin) 19:28:07.068995 > 30 bytes data, server => client 19:28:07.069080 '230 Welcome you silly person\r\n' 19:28:07.069481 < 5 bytes data, client => server 19:28:07.069611 'PWD\r\n' 19:28:07.070170 Received DATA (on stdin) 19:28:07.070277 > 30 bytes data, server => client 19:28:07.070351 '257 "/" is current directory\r\n' 19:28:07.070795 < 6 bytes data, client => server 19:28:07.070921 'EPSV\r\n' 19:28:07.084830 Received DATA (on stdin) 19:28:07.084975 > 38 bytes data, server => client 19:28:07.085056 '229 Entering Passive Mode (|||40957|)\n' 19:28:07.085914 < 8 bytes data, client => server 19:28:07.086021 'TYPE I\r\n' 19:28:07.087287 Received DATA (on stdin) 19:28:07.087479 > 33 bytes data, server => client 19:28:07.087556 '200 I modify TYPE as you wanted\r\n' 19:28:07.088516 < 21 bytes data, client => server 19:28:07.088644 'SIZE verifiedserver\r\n' 19:28:07.092089 Received DATA (on stdin) 19:28:07.092236 > 8 bytes data, server => client 19:28:07.092312 '213 18\r\n' 19:28:07.092756 < 21 bytes data, client => server 19:28:07.092887 'RETR verifiedserver\r\n' 19:28:07.093715 Received DATA (on stdin) 19:28:07.093838 > 29 bytes data, server => client 19:28:07.093914 '150 Binary junk (18 bytes).\r\n' 19:28:07.097303 Received DATA (on stdin) 19:28:07.097431 > 28 bytes data, server => client 19:28:07.097509 '226 File transfer complete\r\n' 19:28:07.136164 < 6 bytes data, client => server 19:28:07.136315 'QUIT\r\n' 19:28:07.137156 Received DATA (on stdin) 19:28:07.137269 > 18 bytes data, server => client 19:28:07.137346 '221 bye bye baby\r\n' 19:28:07.137784 ====> Client disconnect 19:28:07.138422 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.082491 Running IPv4 version 19:28:07.082852 Listening on port 40957 19:28:07.083105 Wrote pid 109645 to log/4/server/ftp_sockdata.pid 19:28:07.083244 Received PING (on stdin) 19:28:07.083993 Received PORT (on stdin) 19:28:07.085737 ====> Client connect 19:28:07.094069 Received DATA (on stdin) 19:28:07.094239 > 18 bytes data, server => client 19:28:07.094335 'WE ROOLZ: 109451\r\n' 19:28:07.095035 Received DISC (on stdin) 19:28:07.095211 ====> Client forcibly disconnected 19:28:07.095813 Received QUIT (on stdin) 19:28:07.095946 quits 19:28:07.096252 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 103 === End of file server.cmd === Start of file valgrind103 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting noCMD (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/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:43789/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 CMD (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/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --trace-time "ftp://127.0.0.1:39333//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 w. Sorry. === End of file valgrind103 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/3/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:43789/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 104: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind104 ../src/curl -q --output log/3/curl104.out --include --trace-ascii log/3/trace104 --trace-config all --trace-time ftp://127.0.0.1:43789/a/path/104 --head > log/3/stdout104 2> log/3/stderr104 === End of file commands.log === Start of file ftp_server.log 19:28:07.857567 ====> Client connect 19:28:07.858461 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.862167 < "USER anonymous" 19:28:07.862540 > "331 We are happy you popped in![CR][LF]" 19:28:07.863621 < "PASS ftp@example.com" 19:28:07.863969 > "230 Welcome you silly person[CR][LF]" 19:28:07.865031 < "PWD" 19:28:07.865612 > "257 "/" is current directory[CR][LF]" 19:28:07.867547 < "EPSV" 19:28:07.867767 ====> Passive DATA channel requested by client 19:28:07.867929 DATA sockfilt for passive data channel starting... 19:28:07.875921 DATA sockfilt for passive data channel started (pid 109711) 19:28:07.876637 DATA sockfilt for passive data channel listens on port 42861 19:28:07.876950 > "229 Entering Passive Mode (|||42861|)[LF]" 19:28:07.877106 Client has been notified that DATA conn will be accepted on port 42861 19:28:07.879407 Client connects to port 42861 19:28:07.879731 ====> Client established passive DATA connection on port 42861 19:28:07.880460 < "TYPE I" 19:28:07.880801 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.882491 < "SIZE verifiedserver" 19:28:07.882832 > "213 18[CR][LF]" 19:28:07.883915 < "RETR verifiedserver" 19:28:07.884249 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.884763 =====> Closing passive DATA connection... 19:28:07.884959 Server disconnects passive DATA connection 19:28:07.885329 Server disconnected passive DATA connection 19:28:07.885692 DATA sockfilt for passive data channel quits (pid 109711) 19:28:07.886883 DATA sockfilt for passive data channel quit (pid 109711) 19:28:07.887129 =====> Closed passive DATA connection 19:28:07.887413 > "226 File transfer complete[CR][LF]" 19:28:07.926987 < "QUIT" 19:28:07.927330 > "221 bye bye baby[CR][LF]" 19:28:07.928380 MAIN sockfilt said DISC 19:28:07.928649 ====> Client disconnected 19:28:07.928971 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:08.321419 ====> Client connect 19:28:08.324324 Received DATA (on stdin) 19:28:08.324489 > 160 bytes data, server => client 19:28:08.324575 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:08.324653 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:08.324732 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:08.325177 < 16 bytes data, client => server 19:28:08.325303 'USER anonymous\r\n' 19:28:08.328443 Received DATA (on stdin) 19:28:08.328577 > 33 bytes data, server => client 19:28:08.328662 '331 We are happy you popped in!\r\n' 19:28:08.329097 < 22 bytes data, client => server 19:28:08.329237 'PASS ftp@example.com\r\n' 19:28:08.329863 Received DATA (on stdin) 19:28:08.330001 > 30 bytes data, server => client 19:28:08.330080 '230 Welcome you silly person\r\n' 19:28:08.330496 < 5 bytes data, client => server 19:28:08.330621 'PWD\r\n' 19:28:08.331505 Received DATA (on stdin) 19:28:08.331646 > 30 bytes data, server => client 19:28:08.331717 '257 "/" is current directory\r\n' 19:28:08.332165 < 6 bytes data, client => server 19:28:08.332287 'EPSV\r\n' 19:28:08.342850 Received DATA (on stdin) 19:28:08.342961 > 38 bytes data, server => client 19:28:08.343030 '229 Entering Passive Mode (|||42861|)\n' 19:28:08.344025 < 8 bytes data, client => server 19:28:08.344122 'TYPE I\r\n' 19:28:08.346698 Received DATA (on stdin) 19:28:08.346835 > 33 bytes data, server => client 19:28:08.346920 '200 I modify TYPE as you wanted\r\n' 19:28:08.347413 < 21 bytes data, client => server 19:28:08.347552 'SIZE verifiedserver\r\n' 19:28:08.348739 Received DATA (on stdin) 19:28:08.348871 > 8 bytes data, server => client 19:28:08.348953 '213 18\r\n' 19:28:08.349381 < 21 bytes data, client => server 19:28:08.349507 'RETR verifiedserver\r\n' 19:28:08.350172 Received DATA (on stdin) 19:28:08.350284 > 29 bytes data, server => client 19:28:08.350357 '150 Binary junk (18 bytes).\r\n' 19:28:08.353314 Received DATA (on stdin) 19:28:08.353457 > 28 bytes data, server => client 19:28:08.353536 '226 File transfer complete\r\n' 19:28:08.392210 < 6 bytes data, client => server 19:28:08.392390 'QUIT\r\n' 19:28:08.393233 Received DATA (on stdin) 19:28:08.393357 > 18 bytes data, server => client 19:28:08.393440 '221 bye bye baby\r\n' 19:28:08.393831 ====> Client disconnect 19:28:08.394570 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.340933 Running IPv4 version 19:28:07.341256 Listening on port 42861 19:28:07.341493 Wrote pid 109711 to log/3/server/ftp_sockdata.pid 19:28:07.341611 Received PING (on stdin) 19:28:07.342148 Received PORT (on stdin) 19:28:07.343783 ====> Client connect 19:28:07.350602 Received DATA (on stdin) 19:28:07.350737 > 18 bytes data, server => client 19:28:07.350814 'WE ROOLZ: 109394\r\n' 19:28:07.351038 Received DISC (on stdin) 19:28:07.351170 ====> Client forcibly disconnected 19:28:07.351783 Received QUIT (on stdin) 19:28:07.351895 quits 19:28:07.352178 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 104 === End of file server.cmd === Start of file valgrind104 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind104 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/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --traceCMD (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/2/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:43671/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 -time "ftp://127.0.0.1:39333//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 106: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind106 ../src/curl -q --output log/1/curl106.out --include --trace-ascii log/1/trace106 --trace-config all --trace-time "ftp://127.0.0.1:39333//path%20with%20%20spaces//and%20things2/106;type=A" > log/1/stdout106 2> log/1/stderr106 === End of file commands.log === Start of file ftp_server.log 19:28:07.926754 ====> Client connect 19:28:07.927636 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.930188 < "USER anonymous" 19:28:07.930486 > "331 We are happy you popped in![CR][LF]" 19:28:07.931675 < "PASS ftp@example.com" 19:28:07.931957 > "230 Welcome you silly person[CR][LF]" 19:28:07.933495 < "PWD" 19:28:07.933838 > "257 "/" is current directory[CR][LF]" 19:28:07.935221 < "EPSV" 19:28:07.935461 ====> Passive DATA channel requested by client 19:28:07.935625 DATA sockfilt for passive data channel starting... 19:28:07.943769 DATA sockfilt for passive data channel started (pid 109734) 19:28:07.944452 DATA sockfilt for passive data channel listens on port 40415 19:28:07.944748 > "229 Entering Passive Mode (|||40415|)[LF]" 19:28:07.944908 Client has been notified that DATA conn will be accepted on port 40415 19:28:07.947004 Client connects to port 40415 19:28:07.947290 ====> Client established passive DATA connection on port 40415 19:28:07.947953 < "TYPE I" 19:28:07.948208 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.949635 < "SIZE verifiedserver" 19:28:07.949960 > "213 18[CR][LF]" 19:28:07.951635 < "RETR verifiedserver" 19:28:07.951933 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.952345 =====> Closing passive DATA connection... 19:28:07.952511 Server disconnects passive DATA connection 19:28:07.953651 Server disconnected passive DATA connection 19:28:07.953895 DATA sockfilt for passive data channel quits (pid 109734) 19:28:07.954972 DATA sockfilt for passive data channel quit (pid 109734) 19:28:07.955179 =====> Closed passive DATA connection 19:28:07.955377 > "226 File transfer complete[CR][LF]" 19:28:07.994666 < "QUIT" 19:28:07.995041 > "221 bye bye baby[CR][LF]" 19:28:07.997968 MAIN sockfilt said DISC 19:28:07.998329 ====> Client disconnected 19:28:07.998768 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:08.391879 ====> Client connect 19:28:08.393521 Received DATA (on stdin) 19:28:08.393654 > 160 bytes data, server => client 19:28:08.393757 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:08.393864 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:08.393933 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:08.395464 < 16 bytes data, client => server 19:28:08.395574 'USER anonymous\r\n' 19:28:08.396397 Received DATA (on stdin) 19:28:08.396506 > 33 bytes data, server => client 19:28:08.396588 '331 We are happy you popped in!\r\n' 19:28:08.396993 < 22 bytes data, client => server 19:28:08.397084 'PASS ftp@example.com\r\n' 19:28:08.397851 Received DATA (on stdin) 19:28:08.397942 > 30 bytes data, server => client 19:28:08.398018 '230 Welcome you silly person\r\n' 19:28:08.398525 < 5 bytes data, client => server 19:28:08.398689 'PWD\r\n' 19:28:08.399947 Received DATA (on stdin) 19:28:08.400049 > 30 bytes data, server => client 19:28:08.400118 '257 "/" is current directory\r\n' 19:28:08.400558 < 6 bytes data, client => server 19:28:08.400653 'EPSV\r\n' 19:28:08.411019 Received DATA (on stdin) 19:28:08.411165 > 38 bytes data, server => client 19:28:08.411423 '229 Entering Passive Mode (|||40415|)\n' 19:28:08.412464 < 8 bytes data, client => server 19:28:08.412579 'TYPE I\r\n' 19:28:08.414288 Received DATA (on stdin) 19:28:08.414385 > 33 bytes data, server => client 19:28:08.414459 '200 I modify TYPE as you wanted\r\n' 19:28:08.414868 < 21 bytes data, client => server 19:28:08.414990 'SIZE verifiedserver\r\n' 19:28:08.416103 Received DATA (on stdin) 19:28:08.416344 > 8 bytes data, server => client 19:28:08.416465 '213 18\r\n' 19:28:08.416907 < 21 bytes data, client => server 19:28:08.417027 'RETR verifiedserver\r\n' 19:28:08.418635 Received DATA (on stdin) 19:28:08.418754 > 29 bytes data, server => client 19:28:08.418828 '150 Binary junk (18 bytes).\r\n' 19:28:08.421285 Received DATA (on stdin) 19:28:08.421388 > 28 bytes data, server => client 19:28:08.421459 '226 File transfer complete\r\n' 19:28:08.460021 < 6 bytes data, client => server 19:28:08.460165 'QUIT\r\n' 19:28:08.460943 Received DATA (on stdin) 19:28:08.461065 > 18 bytes data, server => client 19:28:08.461149 '221 bye bye baby\r\n' 19:28:08.461538 ====> Client disconnect 19:28:08.464966 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.408793 Running IPv4 version 19:28:07.409160 Listening on port 40415 19:28:07.409373 Wrote pid 109734 to log/1/server/ftp_sockdata.pid 19:28:07.409474 Received PING (on stdin) 19:28:07.409966 Received PORT (on stdin) 19:28:07.412727 ====> Client connect 19:28:07.418059 Received DATA (on stdin) 19:28:07.418183 > 18 bytes data, server => client 19:28:07.418261 'WE ROOLZ: 109414\r\n' 19:28:07.419020 Received DISC (on stdin) 19:28:07.419153 ====> Client forcibly disconnected 19:28:07.419966 Received QUIT (on stdin) 19:28:07.420075 quits 19:28:07.420327 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 106 === End of file server.cmd === Start of file valgrind106 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind106 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/2/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:43671/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 105: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 105 === Start of file commands.log CMD (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/4/valgrind107 ../src/curl -q --output log/4/curl107.out --include --trace-ascii log/4/trace107 --trace-config all --trace-time ftp://127.0.0.1:40809/107 -T log/4/test107.txt > log/4/stdout107 2> log/4/stderr107 ../libtool --mode=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/valgrind105 ../src/curl -q --output log/2/curl105.out --include --trace-ascii log/2/trace105 --trace-config all --trace-time ftp://userdude:passfellow@127.0.0.1:43671/105 --use-ascii > log/2/stdout105 2> log/2/stderr105 === End of file commands.log === Start of file ftp_server.log 19:28:07.911565 ====> Client connect 19:28:07.912355 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:07.914358 < "USER anonymous" 19:28:07.914682 > "331 We are happy you popped in![CR][LF]" 19:28:07.916598 < "PASS ftp@example.com" 19:28:07.916997 > "230 Welcome you silly person[CR][LF]" 19:28:07.918588 < "PWD" 19:28:07.918934 > "257 "/" is current directory[CR][LF]" 19:28:07.920066 < "EPSV" 19:28:07.920276 ====> Passive DATA channel requested by client 19:28:07.920400 DATA sockfilt for passive data channel starting... 19:28:07.930737 DATA sockfilt for passive data channel started (pid 109731) 19:28:07.931474 DATA sockfilt for passive data channel listens on port 35573 19:28:07.931790 > "229 Entering Passive Mode (|||35573|)[LF]" 19:28:07.931949 Client has been notified that DATA conn will be accepted on port 35573 19:28:07.933810 Client connects to port 35573 19:28:07.934034 ====> Client established passive DATA connection on port 35573 19:28:07.934568 < "TYPE I" 19:28:07.934876 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:07.935945 < "SIZE verifiedserver" 19:28:07.936287 > "213 18[CR][LF]" 19:28:07.938245 < "RETR verifiedserver" 19:28:07.938603 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:07.939140 =====> Closing passive DATA connection... 19:28:07.939349 Server disconnects passive DATA connection 19:28:07.946271 Server disconnected passive DATA connection 19:28:07.946569 DATA sockfilt for passive data channel quits (pid 109731) 19:28:07.947824 DATA sockfilt for passive data channel quit (pid 109731) 19:28:07.948021 =====> Closed passive DATA connection 19:28:07.948209 > "226 File transfer complete[CR][LF]" 19:28:07.982605 < "QUIT" 19:28:07.982859 > "221 bye bye baby[CR][LF]" 19:28:07.987246 MAIN sockfilt said DISC 19:28:07.987518 ====> Client disconnected 19:28:07.987826 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:08.377083 ====> Client connect 19:28:08.378523 Received DATA (on stdin) 19:28:08.378630 > 160 bytes data, server => client 19:28:08.378722 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:08.378802 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:08.378867 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:08.379459 < 16 bytes data, client => server 19:28:08.379599 'USER anonymous\r\n' 19:28:08.380937 Received DATA (on stdin) 19:28:08.381109 > 33 bytes data, server => client 19:28:08.381187 '331 We are happy you popped in!\r\n' 19:28:08.381724 < 22 bytes data, client => server 19:28:08.381879 'PASS ftp@example.com\r\n' 19:28:08.383275 Received DATA (on stdin) 19:28:08.383488 > 30 bytes data, server => client 19:28:08.383580 '230 Welcome you silly person\r\n' 19:28:08.383991 < 5 bytes data, client => server 19:28:08.384127 'PWD\r\n' 19:28:08.384826 Received DATA (on stdin) 19:28:08.384949 > 30 bytes data, server => client 19:28:08.385034 '257 "/" is current directory\r\n' 19:28:08.385525 < 6 bytes data, client => server 19:28:08.385655 'EPSV\r\n' 19:28:08.397684 Received DATA (on stdin) 19:28:08.397805 > 38 bytes data, server => client 19:28:08.397892 '229 Entering Passive Mode (|||35573|)\n' 19:28:08.399066 < 8 bytes data, client => server 19:28:08.399205 'TYPE I\r\n' 19:28:08.400775 Received DATA (on stdin) 19:28:08.400889 > 33 bytes data, server => client 19:28:08.400966 '200 I modify TYPE as you wanted\r\n' 19:28:08.401423 < 21 bytes data, client => server 19:28:08.401529 'SIZE verifiedserver\r\n' 19:28:08.402463 Received DATA (on stdin) 19:28:08.402587 > 8 bytes data, server => client 19:28:08.402664 '213 18\r\n' 19:28:08.403162 < 21 bytes data, client => server 19:28:08.403432 'RETR verifiedserver\r\n' 19:28:08.405462 Received DATA (on stdin) 19:28:08.405582 > 29 bytes data, server => client 19:28:08.405670 '150 Binary junk (18 bytes).\r\n' 19:28:08.414289 Received DATA (on stdin) 19:28:08.414389 > 28 bytes data, server => client 19:28:08.414458 '226 File transfer complete\r\n' 19:28:08.447909 < 6 bytes data, client => server 19:28:08.448053 'QUIT\r\n' 19:28:08.448922 Received DATA (on stdin) 19:28:08.449009 > 18 bytes data, server => client 19:28:08.449075 '221 bye bye baby\r\n' 19:28:08.451955 ====> Client disconnect 19:28:08.453680 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:07.394334 Running IPv4 version 19:28:07.395061 Listening on port 35573 19:28:07.395410 Wrote pid 109731 to log/2/server/ftp_sockdata.pid 19:28:07.395572 Received PING (on stdin) 19:28:07.396968 Received PORT (on stdin) 19:28:07.399514 ====> Client connect 19:28:07.411400 Received DATA (on stdin) 19:28:07.411529 > 18 bytes data, server => client 19:28:07.411625 'WE ROOLZ: 109411\r\n' 19:28:07.411858 Received DISC (on stdin) 19:28:07.412004 ====> Client forcibly disconnected 19:28:07.412669 Received QUIT (on stdin) 19:28:07.412777 quits 19:28:07.413072 ============> 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 valgrind105 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind105 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/4/valgrind107 ../src/curl -q --output log/4/curl107.out --include --trace-ascii log/4/trace107 --trace-config all --trace-time ftp://127.0.0.1:40809/107 -T log/4/test107.txt > log/4/stdout107 2> log/4/stderr107 107: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind107 ../src/curl -q --output log/4/curl107.out --include --trace-ascii log/4/trace107 --trace-config all --trace-time ftp://127.0.0.1:40809/107 -T log/4/test107.txt > log/CMD (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/valgrind108 ../src/curl -q --output log/3/curl108.out --include --trace-ascii log/3/trace108 --trace-config all --trace-time ftp://127.0.0.1:43789/CWD/STOR/RETR/108 -T log/3/upload108 -P - > log/3/stdout108 2> log/3/stderr108 4/stdout107 2> log/4/stderr107 === End of file commands.log === Start of file ftp_server.log 19:28:08.296710 ====> Client connect 19:28:08.297639 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:08.300643 < "USER anonymous" 19:28:08.300935 > "331 We are happy you popped in![CR][LF]" 19:28:08.301984 < "PASS ftp@example.com" 19:28:08.302270 > "230 Welcome you silly person[CR][LF]" 19:28:08.303227 < "PWD" 19:28:08.303514 > "257 "/" is current directory[CR][LF]" 19:28:08.304465 < "EPSV" 19:28:08.304657 ====> Passive DATA channel requested by client 19:28:08.304779 DATA sockfilt for passive data channel starting... 19:28:08.314193 DATA sockfilt for passive data channel started (pid 109892) 19:28:08.314990 DATA sockfilt for passive data channel listens on port 34845 19:28:08.315341 > "229 Entering Passive Mode (|||34845|)[LF]" 19:28:08.315544 Client has been notified that DATA conn will be accepted on port 34845 19:28:08.316625 Client connects to port 34845 19:28:08.316904 ====> Client established passive DATA connection on port 34845 19:28:08.318795 < "TYPE I" 19:28:08.319142 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:08.320237 < "SIZE verifiedserver" 19:28:08.320638 > "213 18[CR][LF]" 19:28:08.321819 < "RETR verifiedserver" 19:28:08.322208 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:08.322737 =====> Closing passive DATA connection... 19:28:08.322943 Server disconnects passive DATA connection 19:28:08.324298 Server disconnected passive DATA connection 19:28:08.324545 DATA sockfilt for passive data channel quits (pid 109892) 19:28:08.325841 DATA sockfilt for passive data channel quit (pid 109892) 19:28:08.326109 =====> Closed passive DATA connection 19:28:08.326364 > "226 File transfer complete[CR][LF]" 19:28:08.367664 < "QUIT" 19:28:08.368351 > "221 bye bye baby[CR][LF]" 19:28:08.369242 MAIN sockfilt said DISC 19:28:08.369605 ====> Client disconnected 19:28:08.369988 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:07.762206 ====> Client connect 19:28:07.763484 Received DATA (on stdin) 19:28:07.763651 > 160 bytes data, server => client 19:28:07.763765 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:07.763865 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:07.763954 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:07.765973 < 16 bytes data, client => server 19:28:07.766104 'USER anonymous\r\n' 19:28:07.766828 Received DATA (on stdin) 19:28:07.766938 > 33 bytes data, server => client 19:28:07.767010 '331 We are happy you popped in!\r\n' 19:28:07.767450 < 22 bytes data, client => server 19:28:07.767584 'PASS ftp@example.com\r\n' 19:28:07.768157 Received DATA (on stdin) 19:28:07.768257 > 30 bytes data, server => client 19:28:07.768332 '230 Welcome you silly person\r\n' 19:28:07.768719 < 5 bytes data, client => server 19:28:07.768837 'PWD\r\n' 19:28:07.769414 Received DATA (on stdin) 19:28:07.769522 > 30 bytes data, server => client 19:28:07.769595 '257 "/" is current directory\r\n' 19:28:07.769982 < 6 bytes data, client => server 19:28:07.770107 'EPSV\r\n' 19:28:07.781231 Received DATA (on stdin) 19:28:07.781407 > 38 bytes data, server => client 19:28:07.781546 '229 Entering Passive Mode (|||34845|)\n' 19:28:07.784199 < 8 bytes data, client => server 19:28:07.784350 'TYPE I\r\n' 19:28:07.785030 Received DATA (on stdin) 19:28:07.785168 > 33 bytes data, server => client 19:28:07.785248 '200 I modify TYPE as you wanted\r\n' 19:28:07.785693 < 21 bytes data, client => server 19:28:07.785823 'SIZE verifiedserver\r\n' 19:28:07.786546 Received DATA (on stdin) 19:28:07.786663 > 8 bytes data, server => client 19:28:07.786735 '213 18\r\n' 19:28:07.787154 < 21 bytes data, client => server 19:28:07.787357 'RETR verifiedserver\r\n' 19:28:07.788097 Received DATA (on stdin) 19:28:07.788221 > 29 bytes data, server => client 19:28:07.788295 '150 Binary junk (18 bytes).\r\n' 19:28:07.792250 Received DATA (on stdin) 19:28:07.792399 > 28 bytes data, server => client 19:28:07.792488 '226 File transfer complete\r\n' 19:28:07.832590 < 6 bytes data, client => server 19:28:07.832914 'QUIT\r\n' 19:28:07.834228 Received DATA (on stdin) 19:28:07.834459 > 18 bytes data, server => client 19:28:07.834536 '221 bye bye baby\r\n' 19:28:07.834888 ====> Client disconnect 19:28:07.835509 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:08.779049 Running IPv4 version 19:28:08.779483 Listening on port 34845 19:28:08.779740 Wrote pid 109892 to log/4/server/ftp_sockdata.pid 19:28:08.779855 Received PING (on stdin) 19:28:08.780427 Received PORT (on stdin) 19:28:08.782288 ====> Client connect 19:28:08.789058 Received DATA (on stdin) 19:28:08.789198 > 18 bytes data, server => client 19:28:08.789315 'WE ROOLZ: 109451\r\n' 19:28:08.789612 Received DISC (on stdin) 19:28:08.789776 ====> Client forcibly disconnected 19:28:08.790685 Received QUIT (on stdin) 19:28:08.790803 quits 19:28:08.791088 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 107 === End of file server.cmd === Start of file test107.txt data to see that FTP works so does it? === End of file test107.txt === Start of file valgrind107 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind108 ../src/curl -q --output log/3/curl108.out --include --trace-ascii log/3/trace108 --trace-config all --trace-time ftp://127.0.0.1:43789/CWD/STOR/RETR/108 -T log/3/upload108 -P - > log/3/stdout108 2> log/3/stderr108 108: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind108 ../src/curl -q --output log/3/curl108.out --include --trace-ascii log/3/trace108 --trace-config all --trace-time ftp://127.0.0.1:43789/CWD/STOR/RETR/108 -T log/3/upload108 -P - > log/3/stdout108 2> log/3/stderr108 === End of file commands.log === Start of file ftp_server.log 19:28:08.526184 ====> Client connect 19:28:08.527072 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | |CMD (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/2/valgrind110 ../src/curl -q --output log/2/curl110.out --include --trace-ascii log/2/trace110 --trace-config all --trace-time ftp://127.0.0.1:43671/110 -C 20 > log/2/stdout110 2> log/2/stderr110 |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:08.530282 < "USER anonymous" 19:28:08.530647 > "331 We are happy you popped in![CR][LF]" 19:28:08.532075 < "PASS ftp@example.com" 19:28:08.532374 > "230 Welcome you silly person[CR][LF]" 19:28:08.533351 < "PWD" 19:28:08.533733 > "257 "/" is current directory[CR][LF]" 19:28:08.535721 < "EPSV" 19:28:08.535994 ====> Passive DATA channel requested by client 19:28:08.536208 DATA sockfilt for passive data channel starting... 19:28:08.543874 DATA sockfilt for passive data channel started (pid 109946) 19:28:08.544561 DATA sockfilt for passive data channel listens on port 46057 19:28:08.544989 > "229 Entering Passive Mode (|||46057|)[LF]" 19:28:08.545166 Client has been notified that DATA conn will be accepted on port 46057 19:28:08.546451 Client connects to port 46057 19:28:08.546703 ====> Client established passive DATA connection on port 46057 19:28:08.547196 < "TYPE I" 19:28:08.547439 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:08.548455 < "SIZE verifiedserver" 19:28:08.548799 > "213 18[CR][LF]" 19:28:08.550153 < "RETR verifiedserver" 19:28:08.550575 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:08.551046 =====> Closing passive DATA connection... 19:28:08.551213 Server disconnects passive DATA connection 19:28:08.551838 Server disconnected passive DATA connection 19:28:08.552073 DATA sockfilt for passive data channel quits (pid 109946) 19:28:08.553176 DATA sockfilt for passive data channel quit (pid 109946) 19:28:08.553391 =====> Closed passive DATA connection 19:28:08.553703 > "226 File transfer complete[CR][LF]" 19:28:08.595150 < "QUIT" 19:28:08.595526 > "221 bye bye baby[CR][LF]" 19:28:08.596452 MAIN sockfilt said DISC 19:28:08.596776 ====> Client disconnected 19:28:08.597168 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:08.991666 ====> Client connect 19:28:08.992939 Received DATA (on stdin) 19:28:08.993086 > 160 bytes data, server => client 19:28:08.993173 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:08.993248 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:08.993334 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:08.995517 < 16 bytes data, client => server 19:28:08.995671 'USER anonymous\r\n' 19:28:08.996908 Received DATA (on stdin) 19:28:08.997036 > 33 bytes data, server => client 19:28:08.997110 '331 We are happy you popped in!\r\n' 19:28:08.997535 < 22 bytes data, client => server 19:28:08.997671 'PASS ftp@example.com\r\n' 19:28:08.998246 Received DATA (on stdin) 19:28:08.998357 > 30 bytes data, server => client 19:28:08.998433 '230 Welcome you silly person\r\n' 19:28:08.998809 < 5 bytes data, client => server 19:28:08.998946 'PWD\r\n' 19:28:08.999601 Received DATA (on stdin) 19:28:08.999731 > 30 bytes data, server => client 19:28:08.999808 '257 "/" is current directory\r\n' 19:28:09.001110 < 6 bytes data, client => server 19:28:09.001231 'EPSV\r\n' 19:28:09.010858 Received DATA (on stdin) 19:28:09.011001 > 38 bytes data, server => client 19:28:09.011086 '229 Entering Passive Mode (|||46057|)\n' 19:28:09.012082 < 8 bytes data, client => server 19:28:09.012230 'TYPE I\r\n' 19:28:09.013321 Received DATA (on stdin) 19:28:09.013424 > 33 bytes data, server => client 19:28:09.013499 '200 I modify TYPE as you wanted\r\n' 19:28:09.013932 < 21 bytes data, client => server 19:28:09.014053 'SIZE verifiedserver\r\n' 19:28:09.014690 Received DATA (on stdin) 19:28:09.014800 > 8 bytes data, server => client 19:28:09.014868 '213 18\r\n' 19:28:09.015439 < 21 bytes data, client => server 19:28:09.015607 'RETR verifiedserver\r\n' 19:28:09.016453 Received DATA (on stdin) 19:28:09.016573 > 29 bytes data, server => client 19:28:09.016645 '150 Binary junk (18 bytes).\r\n' 19:28:09.019586 Received DATA (on stdin) 19:28:09.019716 > 28 bytes data, server => client 19:28:09.019795 '226 File transfer complete\r\n' 19:28:09.060540 < 6 bytes data, client => server 19:28:09.060704 'QUIT\r\n' 19:28:09.061405 Received DATA (on stdin) 19:28:09.061541 > 18 bytes data, server => client 19:28:09.061629 '221 bye bye baby\r\n' 19:28:09.062031 ====> Client disconnect 19:28:09.062676 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:08.008854 Running IPv4 version 19:28:08.009168 Listening on port 46057 19:28:08.009415 Wrote pid 109946 to log/3/server/ftp_sockdata.pid 19:28:08.009531 Received PING (on stdin) 19:28:08.010064 Received PORT (on stdin) 19:28:08.012095 ====> Client connect 19:28:08.016719 Received DATA (on stdin) 19:28:08.016857 > 18 bytes data, server => client 19:28:08.016944 'WE ROOLZ: 109394\r\n' 19:28:08.017493 Received DISC (on stdin) 19:28:08.017643 ====> Client forcibly disconnected 19:28:08.018141 Received QUIT (on stdin) 19:28:08.018244 quits 19:28:08.018505 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 108 === End of file server.cmd === Start of file upload108 Moooooooooooo upload this === End of file upload108 === Start of file valgrind108 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind108 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/2/valgrind110 ../src/curl -q --output log/2/curl110.out --include --trace-ascii log/2/trace110 --trace-config all --trace-time ftp://127.0.0.1:43671/110 -C 20 > log/2/stdout110 2> log/2/stderr110 110: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind110 ../src/curl -q --output log/2/curl110.out --include --trace-ascii log/2/trace110 --trace-config all --trace-time ftp://127.0.0.1:43671/110 -C 20 > log/2/stdout110 2> log/2/stderr110 === End of file commands.log === Start of file ftp_server.log 19:28:08.665253 ====> Client connect 19:28:08.666431 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:08.667799 < "USER anonymous" 19:28:08.668124 > "331 We are happy you popped in![CR][LF]" 19:28:08.672190 < "PASS ftp@example.com" 19:28:08.672530 > "230 Welcome you silly person[CR][LF]" 19:28:08.674274 < "PWD" 19:28:08.6CMD (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/1/valgrind109 ../src/curl -q --output log/1/curl109.out --include --trace-ascii log/1/trace109 --trace-config all --trace-time ftp://127.0.0.1:39333/109 -T log/1/upload109 --append > log/1/stdout109 2> log/1/stderr109 74576 > "257 "/" is current directory[CR][LF]" 19:28:08.676077 < "EPSV" 19:28:08.676319 ====> Passive DATA channel requested by client 19:28:08.676470 DATA sockfilt for passive data channel starting... 19:28:08.688311 DATA sockfilt for passive data channel started (pid 110001) 19:28:08.689624 DATA sockfilt for passive data channel listens on port 34811 19:28:08.689982 > "229 Entering Passive Mode (|||34811|)[LF]" 19:28:08.690189 Client has been notified that DATA conn will be accepted on port 34811 19:28:08.691784 Client connects to port 34811 19:28:08.692014 ====> Client established passive DATA connection on port 34811 19:28:08.692514 < "TYPE I" 19:28:08.692779 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:08.694422 < "SIZE verifiedserver" 19:28:08.694751 > "213 18[CR][LF]" 19:28:08.697111 < "RETR verifiedserver" 19:28:08.697628 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:08.698187 =====> Closing passive DATA connection... 19:28:08.698389 Server disconnects passive DATA connection 19:28:08.699830 Server disconnected passive DATA connection 19:28:08.700057 DATA sockfilt for passive data channel quits (pid 110001) 19:28:08.701617 DATA sockfilt for passive data channel quit (pid 110001) 19:28:08.701861 =====> Closed passive DATA connection 19:28:08.702510 > "226 File transfer complete[CR][LF]" 19:28:08.743013 < "QUIT" 19:28:08.743341 > "221 bye bye baby[CR][LF]" 19:28:08.744775 MAIN sockfilt said DISC 19:28:08.745108 ====> Client disconnected 19:28:08.745757 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.130749 ====> Client connect 19:28:09.132301 Received DATA (on stdin) 19:28:09.132451 > 160 bytes data, server => client 19:28:09.132536 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.132609 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.132667 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.133077 < 16 bytes data, client => server 19:28:09.133211 'USER anonymous\r\n' 19:28:09.133998 Received DATA (on stdin) 19:28:09.134119 > 33 bytes data, server => client 19:28:09.134195 '331 We are happy you popped in!\r\n' 19:28:09.137413 < 22 bytes data, client => server 19:28:09.137549 'PASS ftp@example.com\r\n' 19:28:09.138678 Received DATA (on stdin) 19:28:09.138792 > 30 bytes data, server => client 19:28:09.138880 '230 Welcome you silly person\r\n' 19:28:09.139526 < 5 bytes data, client => server 19:28:09.139668 'PWD\r\n' 19:28:09.140685 Received DATA (on stdin) 19:28:09.140788 > 30 bytes data, server => client 19:28:09.140857 '257 "/" is current directory\r\n' 19:28:09.141304 < 6 bytes data, client => server 19:28:09.141431 'EPSV\r\n' 19:28:09.156342 Received DATA (on stdin) 19:28:09.156496 > 38 bytes data, server => client 19:28:09.156588 '229 Entering Passive Mode (|||34811|)\n' 19:28:09.157405 < 8 bytes data, client => server 19:28:09.157489 'TYPE I\r\n' 19:28:09.158874 Received DATA (on stdin) 19:28:09.159011 > 33 bytes data, server => client 19:28:09.159126 '200 I modify TYPE as you wanted\r\n' 19:28:09.159668 < 21 bytes data, client => server 19:28:09.159802 'SIZE verifiedserver\r\n' 19:28:09.160837 Received DATA (on stdin) 19:28:09.160940 > 8 bytes data, server => client 19:28:09.161010 '213 18\r\n' 19:28:09.162298 < 21 bytes data, client => server 19:28:09.162453 'RETR verifiedserver\r\n' 19:28:09.164480 Received DATA (on stdin) 19:28:09.164600 > 29 bytes data, server => client 19:28:09.164672 '150 Binary junk (18 bytes).\r\n' 19:28:09.167969 Received DATA (on stdin) 19:28:09.168083 > 28 bytes data, server => client 19:28:09.168211 '226 File transfer complete\r\n' 19:28:09.208088 < 6 bytes data, client => server 19:28:09.208267 'QUIT\r\n' 19:28:09.209463 Received DATA (on stdin) 19:28:09.209660 > 18 bytes data, server => client 19:28:09.209765 '221 bye bye baby\r\n' 19:28:09.210247 ====> Client disconnect 19:28:09.211004 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:08.153174 Running IPv4 version 19:28:08.153534 Listening on port 34811 19:28:08.153833 Wrote pid 110001 to log/2/server/ftp_sockdata.pid 19:28:08.153961 Received PING (on stdin) 19:28:08.154893 Received PORT (on stdin) 19:28:08.157238 ====> Client connect 19:28:08.165007 Received DATA (on stdin) 19:28:08.165189 > 18 bytes data, server => client 19:28:08.165270 'WE ROOLZ: 109411\r\n' 19:28:08.165501 Received DISC (on stdin) 19:28:08.166128 ====> Client forcibly disconnected 19:28:08.166469 Received QUIT (on stdin) 19:28:08.166576 quits 19:28:08.166879 ============> 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 valgrind110 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind110 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/1/valgrind109 ../src/curl -q --output log/1/curl109.out --include --trace-ascii log/1/trace109 --trace-config all --trace-time ftp://127.0.0.1:39333/109 -T log/1/upload109 --append > log/1/stdout109 2> log/1/stderr109 109: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind109 ../src/curl -q --output log/1/curl109.out --include --trace-ascii log/1/trace109 --trace-config all --trace-time ftp://127.0.0.1:39333/109 -T log/1/upload109 --append > log/1/stdout109 2> log/1/stderr109 === End of file commands.log === Start of file ftp_server.log 19:28:08.649617 ====> Client connect 19:28:08.650712 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:08.652709 < "USER anonymous" 19:28:08.653043 > "331 We are happy you popped in![CR][LF]" 19:28:08.654608 < "PASS ftp@example.com" 19:28:08.654907 > "230 Welcome you silly person[CR][LF]" 19:28:08.656297 < "PWD" 19:28:08.656586 > "257 "/" is current directory[CR][LF]" 19:28:08.657939 < "EPSV" 19:28:08.658266 ====> Passive DATA channel requested by client 19:28:08.658505 DATA sockfilt for passive data channel starting... 19:28:08.671268 DATA sockfilt for passive data channel started (pid 109996) 19:28:08.676659 DATA sockfilt for passive data channel listens on pCMD (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/4/valgrind111 ../src/curl -q --output log/4/curl111.out --include --trace-ascii log/4/trace111 --trace-config all --trace-time ftp://127.0.0.1:40809/111 -C 2000 > log/4/stdout111 2> log/4/stderr111 ort 36425 19:28:08.676999 > "229 Entering Passive Mode (|||36425|)[LF]" 19:28:08.677167 Client has been notified that DATA conn will be accepted on port 36425 19:28:08.678225 Client connects to port 36425 19:28:08.678503 ====> Client established passive DATA connection on port 36425 19:28:08.679326 < "TYPE I" 19:28:08.679913 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:08.681137 < "SIZE verifiedserver" 19:28:08.681560 > "213 18[CR][LF]" 19:28:08.684033 < "RETR verifiedserver" 19:28:08.684363 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:08.685629 =====> Closing passive DATA connection... 19:28:08.685873 Server disconnects passive DATA connection 19:28:08.686085 Fancy that; client wants to DISC, too 19:28:08.686394 Server disconnected passive DATA connection 19:28:08.686599 DATA sockfilt for passive data channel quits (pid 109996) 19:28:08.687822 DATA sockfilt for passive data channel quit (pid 109996) 19:28:08.688041 =====> Closed passive DATA connection 19:28:08.688297 > "226 File transfer complete[CR][LF]" 19:28:08.728247 < "QUIT" 19:28:08.728522 > "221 bye bye baby[CR][LF]" 19:28:08.729392 MAIN sockfilt said DISC 19:28:08.730444 ====> Client disconnected 19:28:08.731370 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.114863 ====> Client connect 19:28:09.116892 Received DATA (on stdin) 19:28:09.117027 > 160 bytes data, server => client 19:28:09.117122 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.117204 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.117284 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.117761 < 16 bytes data, client => server 19:28:09.117912 'USER anonymous\r\n' 19:28:09.119173 Received DATA (on stdin) 19:28:09.119335 > 33 bytes data, server => client 19:28:09.119446 '331 We are happy you popped in!\r\n' 19:28:09.119892 < 22 bytes data, client => server 19:28:09.120003 'PASS ftp@example.com\r\n' 19:28:09.120985 Received DATA (on stdin) 19:28:09.121088 > 30 bytes data, server => client 19:28:09.121162 '230 Welcome you silly person\r\n' 19:28:09.121607 < 5 bytes data, client => server 19:28:09.121732 'PWD\r\n' 19:28:09.122680 Received DATA (on stdin) 19:28:09.122785 > 30 bytes data, server => client 19:28:09.122855 '257 "/" is current directory\r\n' 19:28:09.123262 < 6 bytes data, client => server 19:28:09.123538 'EPSV\r\n' 19:28:09.142884 Received DATA (on stdin) 19:28:09.143009 > 38 bytes data, server => client 19:28:09.143080 '229 Entering Passive Mode (|||36425|)\n' 19:28:09.144021 < 8 bytes data, client => server 19:28:09.144133 'TYPE I\r\n' 19:28:09.145783 Received DATA (on stdin) 19:28:09.145924 > 33 bytes data, server => client 19:28:09.146025 '200 I modify TYPE as you wanted\r\n' 19:28:09.146496 < 21 bytes data, client => server 19:28:09.146630 'SIZE verifiedserver\r\n' 19:28:09.147442 Received DATA (on stdin) 19:28:09.147588 > 8 bytes data, server => client 19:28:09.147662 '213 18\r\n' 19:28:09.148152 < 21 bytes data, client => server 19:28:09.148278 'RETR verifiedserver\r\n' 19:28:09.150249 Received DATA (on stdin) 19:28:09.150359 > 29 bytes data, server => client 19:28:09.150432 '150 Binary junk (18 bytes).\r\n' 19:28:09.154479 Received DATA (on stdin) 19:28:09.154636 > 28 bytes data, server => client 19:28:09.154726 '226 File transfer complete\r\n' 19:28:09.193699 < 6 bytes data, client => server 19:28:09.193851 'QUIT\r\n' 19:28:09.194397 Received DATA (on stdin) 19:28:09.194503 > 18 bytes data, server => client 19:28:09.194574 '221 bye bye baby\r\n' 19:28:09.194937 ====> Client disconnect 19:28:09.195777 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:08.136020 Running IPv4 version 19:28:08.136438 Listening on port 36425 19:28:08.136799 Wrote pid 109996 to log/1/server/ftp_sockdata.pid 19:28:08.136929 Received PING (on stdin) 19:28:08.142104 Received PORT (on stdin) 19:28:08.143820 ====> Client connect 19:28:08.150508 Received DATA (on stdin) 19:28:08.150664 > 18 bytes data, server => client 19:28:08.150778 'WE ROOLZ: 109414\r\n' 19:28:08.151240 ====> Client disconnect 19:28:08.152011 Received DISC (on stdin) 19:28:08.152117 Crikey! Client also wants to disconnect 19:28:08.152220 Received ACKD (on stdin) 19:28:08.152708 Received QUIT (on stdin) 19:28:08.152830 quits 19:28:08.153112 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 109 === End of file server.cmd === Start of file upload109 Moooooooooooo upload this === End of file upload109 === Start of file valgrind109 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind109 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/4/valgrind111 ../src/curl -q --output log/4/curl111.out --include --trace-ascii log/4/trace111 --trace-config all --trace-time ftp://127.0.0.1:40809/111 -C 2000 > log/4/stdout111 2> log/4/stderr111 111: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind111 ../src/curl -q --output log/4/curl111.out --include --trace-ascii log/4/trace111 --trace-config all --trace-time ftp://127.0.0.1:40809/111 -C 2000 > log/4/stdout111 2> log/4/stderr111 === End of file commands.log === Start of file ftp_server.log 19:28:09.018600 ====> Client connect 19:28:09.019474 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:09.020948 < "USER anonymous" 19:28:09.021263 > "331 We are happy you popped in![CR][LF]" 19:28:09.022427 < "PASS ftp@example.com" 19:28:09.022720 > "230 Welcome you silly person[CR][LF]" 19:28:09.023736 < "PWD" 19:28:09.024084 > "257 "/" is current directory[CR][LF]" 19:28:09.025180 < "EPSV" 19:28:09.025591 ====> Passive DATA channel requested by client 19:28:09.025804 DATA sockfilt for passive data channel starting... 19:28:09.033727 DATA sockfilt for passive data channel started (pid 110162) 19:28:09.034531 DATA sockfilt for passive data channel listens on port 36083 19:28:09.034885 > "229 Entering Passive Mode (|||36083|)[LF]" 19:28:09.035045 Client has been notified that DATA conn will be accepted on port 36083 19:28:09.036028 ClieCMD (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/valgrind112 ../src/curl -q --output log/3/curl112.out --include --trace-ascii log/3/trace112 --trace-config all --trace-time ftp://127.0.0.1:43789/112 -T log/3/upload112 -C 40 > log/3/stdout112 2> log/3/stderr112 nt connects to port 36083 19:28:09.036260 ====> Client established passive DATA connection on port 36083 19:28:09.036855 < "TYPE I" 19:28:09.037191 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:09.038490 < "SIZE verifiedserver" 19:28:09.038844 > "213 18[CR][LF]" 19:28:09.039947 < "RETR verifiedserver" 19:28:09.040315 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:09.040810 =====> Closing passive DATA connection... 19:28:09.041018 Server disconnects passive DATA connection 19:28:09.042246 Server disconnected passive DATA connection 19:28:09.042501 DATA sockfilt for passive data channel quits (pid 110162) 19:28:09.043726 DATA sockfilt for passive data channel quit (pid 110162) 19:28:09.043964 =====> Closed passive DATA connection 19:28:09.044187 > "226 File transfer complete[CR][LF]" 19:28:09.083380 < "QUIT" 19:28:09.083680 > "221 bye bye baby[CR][LF]" 19:28:09.085620 MAIN sockfilt said DISC 19:28:09.085878 ====> Client disconnected 19:28:09.086205 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:08.484039 ====> Client connect 19:28:08.485323 Received DATA (on stdin) 19:28:08.485465 > 160 bytes data, server => client 19:28:08.485551 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:08.485642 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:08.485720 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:08.486204 < 16 bytes data, client => server 19:28:08.486338 'USER anonymous\r\n' 19:28:08.487136 Received DATA (on stdin) 19:28:08.487260 > 33 bytes data, server => client 19:28:08.487438 '331 We are happy you popped in!\r\n' 19:28:08.487859 < 22 bytes data, client => server 19:28:08.487991 'PASS ftp@example.com\r\n' 19:28:08.488588 Received DATA (on stdin) 19:28:08.488698 > 30 bytes data, server => client 19:28:08.488775 '230 Welcome you silly person\r\n' 19:28:08.489169 < 5 bytes data, client => server 19:28:08.489293 'PWD\r\n' 19:28:08.489952 Received DATA (on stdin) 19:28:08.490061 > 30 bytes data, server => client 19:28:08.490134 '257 "/" is current directory\r\n' 19:28:08.490628 < 6 bytes data, client => server 19:28:08.490756 'EPSV\r\n' 19:28:08.500744 Received DATA (on stdin) 19:28:08.500884 > 38 bytes data, server => client 19:28:08.500970 '229 Entering Passive Mode (|||36083|)\n' 19:28:08.501898 < 8 bytes data, client => server 19:28:08.502007 'TYPE I\r\n' 19:28:08.503051 Received DATA (on stdin) 19:28:08.503176 > 33 bytes data, server => client 19:28:08.503250 '200 I modify TYPE as you wanted\r\n' 19:28:08.503941 < 21 bytes data, client => server 19:28:08.504077 'SIZE verifiedserver\r\n' 19:28:08.504724 Received DATA (on stdin) 19:28:08.504851 > 8 bytes data, server => client 19:28:08.504926 '213 18\r\n' 19:28:08.505367 < 21 bytes data, client => server 19:28:08.505501 'RETR verifiedserver\r\n' 19:28:08.506177 Received DATA (on stdin) 19:28:08.506294 > 29 bytes data, server => client 19:28:08.506367 '150 Binary junk (18 bytes).\r\n' 19:28:08.510324 Received DATA (on stdin) 19:28:08.510478 > 28 bytes data, server => client 19:28:08.510568 '226 File transfer complete\r\n' 19:28:08.547997 < 6 bytes data, client => server 19:28:08.548135 'QUIT\r\n' 19:28:08.549554 Received DATA (on stdin) 19:28:08.549759 > 18 bytes data, server => client 19:28:08.549889 '221 bye bye baby\r\n' 19:28:08.551190 ====> Client disconnect 19:28:08.551760 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:09.498473 Running IPv4 version 19:28:09.498901 Listening on port 36083 19:28:09.499133 Wrote pid 110162 to log/4/server/ftp_sockdata.pid 19:28:09.499251 Received PING (on stdin) 19:28:09.499941 Received PORT (on stdin) 19:28:09.501680 ====> Client connect 19:28:09.507116 Received DATA (on stdin) 19:28:09.507246 > 18 bytes data, server => client 19:28:09.507393 'WE ROOLZ: 109451\r\n' 19:28:09.507644 Received DISC (on stdin) 19:28:09.507783 ====> Client forcibly disconnected 19:28:09.508611 Received QUIT (on stdin) 19:28:09.508725 quits 19:28:09.509016 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 111 === End of file server.cmd === Start of file valgrind111 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind112 ../src/curl -q --output log/3/curl112.out --include --trace-ascii log/3/trace112 --trace-config all --trace-time ftp://127.0.0.1:43789/112 -T log/3/upload112 -C 40 > log/3/stdout112 2> log/3/stderr112 112: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind112 ../src/curl -q --output log/3/curl112.out --include --trace-ascii log/3/trace112 --trace-config all --trace-time ftp://127.0.0.1:43789/112 -T log/3/upload112 -C 40 > log/3/stdout112 2> log/3/stderr112 === End of file commands.log === Start of file ftp_server.log 19:28:09.268963 ====> Client connect 19:28:09.270260 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:09.274562 < "USER anonymous" 19:28:09.275049 > "331 We are happy you popped in![CR][LF]" 19:28:09.276254 < "PASS ftp@example.com" 19:28:09.276567 > "230 Welcome you silly person[CR][LF]" 19:28:09.277697 < "PWD" 19:28:09.278132 > "257 "/" is current directory[CR][LF]" 19:28:09.279314 < "EPSV" 19:28:09.279621 ====> Passive DATA channel requested by client 19:28:09.279864 DATA sockfilt for passive data channel starting... 19:28:09.290355 DATA sockfilt for passive data channel started (pid 110221) 19:28:09.291183 DATA sockfilt for passive data channel listens on port 36219 19:28:09.291546 > "229 Entering Passive Mode (|||36219|)[LF]" 19:28:09.291726 Client has been notified that DATA conn will be accepted on port 36219 19:28:09.293370 Client connects to port 36219 19:28:09.293791 ====> Client established passive DATA connection on port 36219 19:28:09.294468 < "TYPE I" 19:28:09.294828 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:09.296424 < "SIZE verifiedserver" 19:28:09.296738 > "213 18[CR][LF]" 19:28:09.298155 < "RETR verifiedserver" 19:28:09.298563 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:09.299097 =CMD (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/2/valgrind113 ../src/curl -q --output log/2/curl113.out --include --trace-ascii log/2/trace113 --trace-config all --trace-time ftp://127.0.0.1:43671/113 > log/2/stdout113 2> log/2/stderr113 ====> Closing passive DATA connection... 19:28:09.299283 Server disconnects passive DATA connection 19:28:09.300659 Server disconnected passive DATA connection 19:28:09.300891 DATA sockfilt for passive data channel quits (pid 110221) 19:28:09.302225 DATA sockfilt for passive data channel quit (pid 110221) 19:28:09.302445 =====> Closed passive DATA connection 19:28:09.302662 > "226 File transfer complete[CR][LF]" 19:28:09.342496 < "QUIT" 19:28:09.342843 > "221 bye bye baby[CR][LF]" 19:28:09.345591 MAIN sockfilt said DISC 19:28:09.345885 ====> Client disconnected 19:28:09.346216 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.734433 ====> Client connect 19:28:09.736108 Received DATA (on stdin) 19:28:09.736311 > 160 bytes data, server => client 19:28:09.736412 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.736498 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.736568 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.739727 < 16 bytes data, client => server 19:28:09.739876 'USER anonymous\r\n' 19:28:09.740899 Received DATA (on stdin) 19:28:09.741064 > 33 bytes data, server => client 19:28:09.741143 '331 We are happy you popped in!\r\n' 19:28:09.741612 < 22 bytes data, client => server 19:28:09.741733 'PASS ftp@example.com\r\n' 19:28:09.742433 Received DATA (on stdin) 19:28:09.742557 > 30 bytes data, server => client 19:28:09.742638 '230 Welcome you silly person\r\n' 19:28:09.743058 < 5 bytes data, client => server 19:28:09.743179 'PWD\r\n' 19:28:09.743994 Received DATA (on stdin) 19:28:09.744136 > 30 bytes data, server => client 19:28:09.744219 '257 "/" is current directory\r\n' 19:28:09.744691 < 6 bytes data, client => server 19:28:09.744822 'EPSV\r\n' 19:28:09.757870 Received DATA (on stdin) 19:28:09.758005 > 38 bytes data, server => client 19:28:09.758093 '229 Entering Passive Mode (|||36219|)\n' 19:28:09.758937 < 8 bytes data, client => server 19:28:09.759030 'TYPE I\r\n' 19:28:09.760993 Received DATA (on stdin) 19:28:09.761114 > 33 bytes data, server => client 19:28:09.761190 '200 I modify TYPE as you wanted\r\n' 19:28:09.761635 < 21 bytes data, client => server 19:28:09.761761 'SIZE verifiedserver\r\n' 19:28:09.762802 Received DATA (on stdin) 19:28:09.762904 > 8 bytes data, server => client 19:28:09.762972 '213 18\r\n' 19:28:09.763392 < 21 bytes data, client => server 19:28:09.763517 'RETR verifiedserver\r\n' 19:28:09.766131 Received DATA (on stdin) 19:28:09.766228 > 29 bytes data, server => client 19:28:09.766297 '150 Binary junk (18 bytes).\r\n' 19:28:09.768719 Received DATA (on stdin) 19:28:09.768823 > 28 bytes data, server => client 19:28:09.768892 '226 File transfer complete\r\n' 19:28:09.807885 < 6 bytes data, client => server 19:28:09.808029 'QUIT\r\n' 19:28:09.808710 Received DATA (on stdin) 19:28:09.808835 > 18 bytes data, server => client 19:28:09.808914 '221 bye bye baby\r\n' 19:28:09.809255 ====> Client disconnect 19:28:09.811777 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:09.754945 Running IPv4 version 19:28:09.755388 Listening on port 36219 19:28:09.755729 Wrote pid 110221 to log/3/server/ftp_sockdata.pid 19:28:09.755897 Received PING (on stdin) 19:28:09.756610 Received PORT (on stdin) 19:28:09.758745 ====> Client connect 19:28:09.765372 Received DATA (on stdin) 19:28:09.765507 > 18 bytes data, server => client 19:28:09.765586 'WE ROOLZ: 109394\r\n' 19:28:09.765801 Received DISC (on stdin) 19:28:09.765932 ====> Client forcibly disconnected 19:28:09.766979 Received QUIT (on stdin) 19:28:09.767082 quits 19:28:09.767439 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 112 === End of file server.cmd === Start of file upload112 this is the *****crap******** that we're gonna upload worx? === End of file upload112 === Start of file valgrind112 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind112 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/2/valgrind113 ../src/curl -q --output log/2/curl113.out --include --trace-ascii log/2/trace113 --trace-config all --trace-time ftp://127.0.0.1:43671/113 > log/2/stdout113 2> log/2/stderr113 113: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind113 ../src/curl -q --output log/2/curl113.out --include --trace-ascii log/2/trace113 --trace-config all --trace-time ftp://127.0.0.1:43671/113 > log/2/stdout113 2> log/2/stderr113 === End of file commands.log === Start of file ftp_server.log 19:28:09.350458 ====> Client connect 19:28:09.351237 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:09.352650 < "USER anonymous" 19:28:09.352940 > "331 We are happy you popped in![CR][LF]" 19:28:09.354408 < "PASS ftp@example.com" 19:28:09.354701 > "230 Welcome you silly person[CR][LF]" 19:28:09.356173 < "PWD" 19:28:09.356502 > "257 "/" is current directory[CR][LF]" 19:28:09.358335 < "EPSV" 19:28:09.358552 ====> Passive DATA channel requested by client 19:28:09.358701 DATA sockfilt for passive data channel starting... 19:28:09.366659 DATA sockfilt for passive data channel started (pid 110255) 19:28:09.367375 DATA sockfilt for passive data channel listens on port 44173 19:28:09.367705 > "229 Entering Passive Mode (|||44173|)[LF]" 19:28:09.367874 Client has been notified that DATA conn will be accepted on port 44173 19:28:09.369535 Client connects to port 44173 19:28:09.369792 ====> Client established passive DATA connection on port 44173 19:28:09.370314 < "TYPE I" 19:28:09.370655 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:09.372157 < "SIZE verifiedserver" 19:28:09.372480 > "213 18[CR][LF]" 19:28:09.374255 < "RETR verifiedserver" 19:28:09.374589 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:09.375071 =====> Closing passive DATA connection... 19:28:09.375221 Server disconnects passive DATA connection 19:28:09.376202 Server disconnected passive DATA connection 19:28:09.376425 DATA sockfilt for passive data channel quits (pid 110255) 19:28:09.377575 DATA sockfilt for passive data channel quit (pidCMD (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/1/valgrind114 ../src/curl -q --output log/1/curl114.out --include --trace-ascii log/1/trace114 --trace-config all --trace-time ftp://127.0.0.1:39333/114 > log/1/stdout114 2> log/1/stderr114 110255) 19:28:09.377826 =====> Closed passive DATA connection 19:28:09.378102 > "226 File transfer complete[CR][LF]" 19:28:09.379432 < "QUIT" 19:28:09.379716 > "221 bye bye baby[CR][LF]" 19:28:09.383490 MAIN sockfilt said DISC 19:28:09.383751 ====> Client disconnected 19:28:09.384090 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.815937 ====> Client connect 19:28:09.817081 Received DATA (on stdin) 19:28:09.817213 > 160 bytes data, server => client 19:28:09.817296 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.817381 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.817461 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.817944 < 16 bytes data, client => server 19:28:09.818078 'USER anonymous\r\n' 19:28:09.818801 Received DATA (on stdin) 19:28:09.818913 > 33 bytes data, server => client 19:28:09.818985 '331 We are happy you popped in!\r\n' 19:28:09.819490 < 22 bytes data, client => server 19:28:09.819630 'PASS ftp@example.com\r\n' 19:28:09.820780 Received DATA (on stdin) 19:28:09.820896 > 30 bytes data, server => client 19:28:09.820980 '230 Welcome you silly person\r\n' 19:28:09.821385 < 5 bytes data, client => server 19:28:09.821511 'PWD\r\n' 19:28:09.822610 Received DATA (on stdin) 19:28:09.822739 > 30 bytes data, server => client 19:28:09.822829 '257 "/" is current directory\r\n' 19:28:09.823485 < 6 bytes data, client => server 19:28:09.823628 'EPSV\r\n' 19:28:09.833946 Received DATA (on stdin) 19:28:09.834066 > 38 bytes data, server => client 19:28:09.834142 '229 Entering Passive Mode (|||44173|)\n' 19:28:09.835068 < 8 bytes data, client => server 19:28:09.835177 'TYPE I\r\n' 19:28:09.836774 Received DATA (on stdin) 19:28:09.836894 > 33 bytes data, server => client 19:28:09.836969 '200 I modify TYPE as you wanted\r\n' 19:28:09.837424 < 21 bytes data, client => server 19:28:09.837545 'SIZE verifiedserver\r\n' 19:28:09.838563 Received DATA (on stdin) 19:28:09.838691 > 8 bytes data, server => client 19:28:09.838765 '213 18\r\n' 19:28:09.839224 < 21 bytes data, client => server 19:28:09.839612 'RETR verifiedserver\r\n' 19:28:09.841287 Received DATA (on stdin) 19:28:09.841388 > 29 bytes data, server => client 19:28:09.841464 '150 Binary junk (18 bytes).\r\n' 19:28:09.843958 Received DATA (on stdin) 19:28:09.844097 > 28 bytes data, server => client 19:28:09.844176 '226 File transfer complete\r\n' 19:28:09.844868 < 6 bytes data, client => server 19:28:09.845015 'QUIT\r\n' 19:28:09.845577 Received DATA (on stdin) 19:28:09.845685 > 18 bytes data, server => client 19:28:09.845757 '221 bye bye baby\r\n' 19:28:09.849102 ====> Client disconnect 19:28:09.849636 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:09.831576 Running IPv4 version 19:28:09.831958 Listening on port 44173 19:28:09.832182 Wrote pid 110255 to log/2/server/ftp_sockdata.pid 19:28:09.832291 Received PING (on stdin) 19:28:09.832851 Received PORT (on stdin) 19:28:09.834823 ====> Client connect 19:28:09.840741 Received DATA (on stdin) 19:28:09.840868 > 18 bytes data, server => client 19:28:09.840942 'WE ROOLZ: 109411\r\n' 19:28:09.841260 Received DISC (on stdin) 19:28:09.841373 ====> Client forcibly disconnected 19:28:09.842467 Received QUIT (on stdin) 19:28:09.842561 quits 19:28:09.842813 ============> 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 valgrind113 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind114 ../src/curl -q --output log/1/curl114.out --include --trace-ascii log/1/trace114 --trace-config all --trace-time ftp://127.0.0.1:39333/114 > log/1/stdout114 2> log/1/stderr114 114: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind114 ../src/curl -q --output log/1/curl114.out --include --trace-ascii log/1/trace114 --trace-config all --trace-time ftp://127.0.0.1:39333/114 > log/1/stdout114 2> log/1/stderr114 === End of file commands.log === Start of file ftp_server.log 19:28:09.423963 ====> Client connect 19:28:09.424836 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:09.426856 < "USER anonymous" 19:28:09.427183 > "331 We are happy you popped in![CR][LF]" 19:28:09.428646 < "PASS ftp@example.com" 19:28:09.428948 > "230 Welcome you silly person[CR][LF]" 19:28:09.433250 < "PWD" 19:28:09.433638 > "257 "/" is current directory[CR][LF]" 19:28:09.435253 < "EPSV" 19:28:09.435452 ====> Passive DATA channel requested by client 19:28:09.435575 DATA sockfilt for passive data channel starting... 19:28:09.442974 DATA sockfilt for passive data channel started (pid 110280) 19:28:09.445963 DATA sockfilt for passive data channel listens on port 39715 19:28:09.446318 > "229 Entering Passive Mode (|||39715|)[LF]" 19:28:09.446466 Client has been notified that DATA conn will be accepted on port 39715 19:28:09.448240 Client connects to port 39715 19:28:09.448495 ====> Client established passive DATA connection on port 39715 19:28:09.449099 < "TYPE I" 19:28:09.449479 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:09.450948 < "SIZE verifiedserver" 19:28:09.451309 > "213 18[CR][LF]" 19:28:09.452843 < "RETR verifiedserver" 19:28:09.453151 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:09.453786 =====> Closing passive DATA connection... 19:28:09.453986 Server disconnects passive DATA connection 19:28:09.454757 Server disconnected passive DATA connection 19:28:09.455005 DATA sockfilt for passive data channel quits (pid 110280) 19:28:09.456253 DATA sockfilt for passive data channel quit (pid 110280) 19:28:09.456534 =====> Closed passive DATA connection 19:28:09.456819 > "226 File transfer complete[CR][LF]" 19:28:09.498930 < "QUIT" 19:28:09.499240 > "221 bye bye baby[CR][LF]" 19:28:09.500213 MAIN sockfilt said DISC 19:28:09.500481 ====> Client disconnected 19:28:09.500925 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.889CMD (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/4/valgrind115 ../src/curl -q --output log/4/curl115.out --include --trace-ascii log/4/trace115 --trace-config all --trace-time ftp://127.0.0.1:40809/115 > log/4/stdout115 2> log/4/stderr115 331 ====> Client connect 19:28:09.890988 Received DATA (on stdin) 19:28:09.891108 > 160 bytes data, server => client 19:28:09.891198 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.891353 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.891450 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.891891 < 16 bytes data, client => server 19:28:09.892022 'USER anonymous\r\n' 19:28:09.893275 Received DATA (on stdin) 19:28:09.893393 > 33 bytes data, server => client 19:28:09.893474 '331 We are happy you popped in!\r\n' 19:28:09.893878 < 22 bytes data, client => server 19:28:09.894002 'PASS ftp@example.com\r\n' 19:28:09.895031 Received DATA (on stdin) 19:28:09.895133 > 30 bytes data, server => client 19:28:09.895197 '230 Welcome you silly person\r\n' 19:28:09.898528 < 5 bytes data, client => server 19:28:09.898663 'PWD\r\n' 19:28:09.899859 Received DATA (on stdin) 19:28:09.899984 > 30 bytes data, server => client 19:28:09.900054 '257 "/" is current directory\r\n' 19:28:09.900478 < 6 bytes data, client => server 19:28:09.900583 'EPSV\r\n' 19:28:09.912536 Received DATA (on stdin) 19:28:09.912674 > 38 bytes data, server => client 19:28:09.912760 '229 Entering Passive Mode (|||39715|)\n' 19:28:09.913822 < 8 bytes data, client => server 19:28:09.913940 'TYPE I\r\n' 19:28:09.915601 Received DATA (on stdin) 19:28:09.915718 > 33 bytes data, server => client 19:28:09.915791 '200 I modify TYPE as you wanted\r\n' 19:28:09.916211 < 21 bytes data, client => server 19:28:09.916324 'SIZE verifiedserver\r\n' 19:28:09.917473 Received DATA (on stdin) 19:28:09.917607 > 8 bytes data, server => client 19:28:09.917678 '213 18\r\n' 19:28:09.918095 < 21 bytes data, client => server 19:28:09.918215 'RETR verifiedserver\r\n' 19:28:09.920124 Received DATA (on stdin) 19:28:09.920264 > 29 bytes data, server => client 19:28:09.920375 '150 Binary junk (18 bytes).\r\n' 19:28:09.923033 Received DATA (on stdin) 19:28:09.923153 > 28 bytes data, server => client 19:28:09.923229 '226 File transfer complete\r\n' 19:28:09.964099 < 6 bytes data, client => server 19:28:09.964264 'QUIT\r\n' 19:28:09.965298 Received DATA (on stdin) 19:28:09.965395 > 18 bytes data, server => client 19:28:09.965465 '221 bye bye baby\r\n' 19:28:09.965825 ====> Client disconnect 19:28:09.966659 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:09.907858 Running IPv4 version 19:28:09.908253 Listening on port 39715 19:28:09.908479 Wrote pid 110280 to log/1/server/ftp_sockdata.pid 19:28:09.908587 Received PING (on stdin) 19:28:09.911389 Received PORT (on stdin) 19:28:09.913861 ====> Client connect 19:28:09.919390 Received DATA (on stdin) 19:28:09.919538 > 18 bytes data, server => client 19:28:09.919627 'WE ROOLZ: 109414\r\n' 19:28:09.920094 Received DISC (on stdin) 19:28:09.920281 ====> Client forcibly disconnected 19:28:09.921083 Received QUIT (on stdin) 19:28:09.921207 quits 19:28:09.921474 ============> 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 valgrind114 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind115 ../src/curl -q --output log/4/curl115.out --include --trace-ascii log/4/trace115 --trace-config all --trace-time ftp://127.0.0.1:40809/115 > log/4/stdout115 2> log/4/stderr115 115: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind115 ../src/curl -q --output log/4/curl115.out --include --trace-ascii log/4/trace115 --trace-config all --trace-time ftp://127.0.0.1:40809/115 > log/4/stdout115 2> log/4/stderr115 === End of file commands.log === Start of file ftp_server.log 19:28:09.741117 ====> Client connect 19:28:09.742170 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:09.743588 < "USER anonymous" 19:28:09.743903 > "331 We are happy you popped in![CR][LF]" 19:28:09.744976 < "PASS ftp@example.com" 19:28:09.745285 > "230 Welcome you silly person[CR][LF]" 19:28:09.746489 < "PWD" 19:28:09.746810 > "257 "/" is current directory[CR][LF]" 19:28:09.747870 < "EPSV" 19:28:09.748081 ====> Passive DATA channel requested by client 19:28:09.748213 DATA sockfilt for passive data channel starting... 19:28:09.755938 DATA sockfilt for passive data channel started (pid 110428) 19:28:09.756770 DATA sockfilt for passive data channel listens on port 35107 19:28:09.757072 > "229 Entering Passive Mode (|||35107|)[LF]" 19:28:09.757235 Client has been notified that DATA conn will be accepted on port 35107 19:28:09.758360 Client connects to port 35107 19:28:09.758591 ====> Client established passive DATA connection on port 35107 19:28:09.759124 < "TYPE I" 19:28:09.759395 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:09.760506 < "SIZE verifiedserver" 19:28:09.760798 > "213 18[CR][LF]" 19:28:09.761880 < "RETR verifiedserver" 19:28:09.762182 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:09.762625 =====> Closing passive DATA connection... 19:28:09.762815 Server disconnects passive DATA connection 19:28:09.763861 Server disconnected passive DATA connection 19:28:09.764086 DATA sockfilt for passive data channel quits (pid 110428) 19:28:09.765184 DATA sockfilt for passive data channel quit (pid 110428) 19:28:09.765497 =====> Closed passive DATA connection 19:28:09.765740 > "226 File transfer complete[CR][LF]" 19:28:09.810890 < "QUIT" 19:28:09.811525 > "221 bye bye baby[CR][LF]" 19:28:09.816403 MAIN sockfilt said DISC 19:28:09.816662 ====> Client disconnected 19:28:09.816988 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.206380 ====> Client connect 19:28:09.208000 Received DATA (on stdin) 19:28:09.208146 > 160 bytes data, server => client 19:28:09.208230 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.208311 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.208390 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.208847 < 16 bytes data, client => server 19:CMD (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/valgrind116 ../src/curl -q --output log/3/curl116.out --include --trace-ascii log/3/trace116 --trace-config all --trace-time ftp://127.0.0.1:43789/116 -P 1.2.3.4 > log/3/stdout116 2> log/3/stderr116 28:09.208978 'USER anonymous\r\n' 19:28:09.209765 Received DATA (on stdin) 19:28:09.209881 > 33 bytes data, server => client 19:28:09.209964 '331 We are happy you popped in!\r\n' 19:28:09.210381 < 22 bytes data, client => server 19:28:09.210516 'PASS ftp@example.com\r\n' 19:28:09.211146 Received DATA (on stdin) 19:28:09.211349 > 30 bytes data, server => client 19:28:09.211451 '230 Welcome you silly person\r\n' 19:28:09.211860 < 5 bytes data, client => server 19:28:09.211982 'PWD\r\n' 19:28:09.212665 Received DATA (on stdin) 19:28:09.212779 > 30 bytes data, server => client 19:28:09.212865 '257 "/" is current directory\r\n' 19:28:09.213296 < 6 bytes data, client => server 19:28:09.213427 'EPSV\r\n' 19:28:09.222926 Received DATA (on stdin) 19:28:09.223055 > 38 bytes data, server => client 19:28:09.223140 '229 Entering Passive Mode (|||35107|)\n' 19:28:09.224212 < 8 bytes data, client => server 19:28:09.224322 'TYPE I\r\n' 19:28:09.225248 Received DATA (on stdin) 19:28:09.225359 > 33 bytes data, server => client 19:28:09.225437 '200 I modify TYPE as you wanted\r\n' 19:28:09.225957 < 21 bytes data, client => server 19:28:09.226090 'SIZE verifiedserver\r\n' 19:28:09.226656 Received DATA (on stdin) 19:28:09.226769 > 8 bytes data, server => client 19:28:09.226843 '213 18\r\n' 19:28:09.227253 < 21 bytes data, client => server 19:28:09.227436 'RETR verifiedserver\r\n' 19:28:09.228040 Received DATA (on stdin) 19:28:09.228151 > 29 bytes data, server => client 19:28:09.228226 '150 Binary junk (18 bytes).\r\n' 19:28:09.231590 Received DATA (on stdin) 19:28:09.231720 > 28 bytes data, server => client 19:28:09.231794 '226 File transfer complete\r\n' 19:28:09.276098 < 6 bytes data, client => server 19:28:09.276346 'QUIT\r\n' 19:28:09.277363 Received DATA (on stdin) 19:28:09.277535 > 18 bytes data, server => client 19:28:09.277673 '221 bye bye baby\r\n' 19:28:09.281987 ====> Client disconnect 19:28:09.282533 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:09.220815 Running IPv4 version 19:28:09.221168 Listening on port 35107 19:28:09.221434 Wrote pid 110428 to log/4/server/ftp_sockdata.pid 19:28:09.221559 Received PING (on stdin) 19:28:09.222229 Received PORT (on stdin) 19:28:09.223981 ====> Client connect 19:28:09.228876 Received DATA (on stdin) 19:28:09.228986 > 18 bytes data, server => client 19:28:09.229055 'WE ROOLZ: 109451\r\n' 19:28:09.229288 Received DISC (on stdin) 19:28:09.229417 ====> Client forcibly disconnected 19:28:09.230143 Received QUIT (on stdin) 19:28:09.230238 quits 19:28:09.230495 ============> 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 valgrind115 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind116 ../src/curl -q --output log/3/curl116.out --include --trace-ascii log/3/trace116 --trace-config all --trace-time ftp://127.0.0.1:43789/116 -P 1.2.3.4 > log/3/stdout116 2> log/3/stderr116 116: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind116 ../src/curl -q --output log/3/curl116.out --include --trace-ascii log/3/trace116 --trace-config all --trace-time ftp://127.0.0.1:43789/116 -P 1.2.3.4 > log/3/stdout116 2> log/3/stderr116 === End of file commands.log === Start of file ftp_server.log 19:28:10.009078 ====> Client connect 19:28:10.010028 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.011413 < "USER anonymous" 19:28:10.011745 > "331 We are happy you popped in![CR][LF]" 19:28:10.012800 < "PASS ftp@example.com" 19:28:10.013108 > "230 Welcome you silly person[CR][LF]" 19:28:10.014373 < "PWD" 19:28:10.014768 > "257 "/" is current directory[CR][LF]" 19:28:10.015871 < "EPSV" 19:28:10.016101 ====> Passive DATA channel requested by client 19:28:10.016264 DATA sockfilt for passive data channel starting... 19:28:10.025118 DATA sockfilt for passive data channel started (pid 110504) 19:28:10.025959 DATA sockfilt for passive data channel listens on port 39839 19:28:10.026284 > "229 Entering Passive Mode (|||39839|)[LF]" 19:28:10.026445 Client has been notified that DATA conn will be accepted on port 39839 19:28:10.027522 Client connects to port 39839 19:28:10.027781 ====> Client established passive DATA connection on port 39839 19:28:10.028860 < "TYPE I" 19:28:10.029184 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.031300 < "SIZE verifiedserver" 19:28:10.031658 > "213 18[CR][LF]" 19:28:10.033983 < "RETR verifiedserver" 19:28:10.034327 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.034854 =====> Closing passive DATA connection... 19:28:10.035028 Server disconnects passive DATA connection 19:28:10.036300 Server disconnected passive DATA connection 19:28:10.036517 DATA sockfilt for passive data channel quits (pid 110504) 19:28:10.038350 DATA sockfilt for passive data channel quit (pid 110504) 19:28:10.038561 =====> Closed passive DATA connection 19:28:10.039578 > "226 File transfer complete[CR][LF]" 19:28:10.082845 < "QUIT" 19:28:10.083172 > "221 bye bye baby[CR][LF]" 19:28:10.084462 MAIN sockfilt said DISC 19:28:10.084763 ====> Client disconnected 19:28:10.085121 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:10.474539 ====> Client connect 19:28:10.475852 Received DATA (on stdin) 19:28:10.475989 > 160 bytes data, server => client 19:28:10.476077 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:10.476155 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:10.476214 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:10.476629 < 16 bytes data, client => server 19:28:10.476753 'USER anonymous\r\n' 19:28:10.477597 Received DATA (on stdin) 19:28:10.477715 > 33 bytes data, server => client 19:28:10.477794 '331 We are happy you popped in!\r\n' 19:28:10.478210 < 22 bytes data, client => server 19:28:10.478334 'PASS ftp@example.com\r\n' 19:28:10.478956 Received DATA (on stdin) 19:28:10.479080 > 30 bytes dataCMD (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/2/valgrind117 ../src/curl -q --output log/2/curl117.out --include --trace-ascii log/2/trace117 --trace-config all --trace-time ftp://127.0.0.1:43671/117 > log/2/stdout117 2> log/2/stderr117 , server => client 19:28:10.479160 '230 Welcome you silly person\r\n' 19:28:10.479763 < 5 bytes data, client => server 19:28:10.479905 'PWD\r\n' 19:28:10.480601 Received DATA (on stdin) 19:28:10.480743 > 30 bytes data, server => client 19:28:10.480819 '257 "/" is current directory\r\n' 19:28:10.481302 < 6 bytes data, client => server 19:28:10.481436 'EPSV\r\n' 19:28:10.492139 Received DATA (on stdin) 19:28:10.492268 > 38 bytes data, server => client 19:28:10.492348 '229 Entering Passive Mode (|||39839|)\n' 19:28:10.493127 < 8 bytes data, client => server 19:28:10.493248 'TYPE I\r\n' 19:28:10.495907 Received DATA (on stdin) 19:28:10.496007 > 33 bytes data, server => client 19:28:10.496077 '200 I modify TYPE as you wanted\r\n' 19:28:10.496491 < 21 bytes data, client => server 19:28:10.496636 'SIZE verifiedserver\r\n' 19:28:10.497851 Received DATA (on stdin) 19:28:10.497946 > 8 bytes data, server => client 19:28:10.498013 '213 18\r\n' 19:28:10.499238 < 21 bytes data, client => server 19:28:10.499713 'RETR verifiedserver\r\n' 19:28:10.500521 Received DATA (on stdin) 19:28:10.500660 > 29 bytes data, server => client 19:28:10.500749 '150 Binary junk (18 bytes).\r\n' 19:28:10.504668 Received DATA (on stdin) 19:28:10.504771 > 28 bytes data, server => client 19:28:10.505222 '226 File transfer complete\r\n' 19:28:10.548085 < 6 bytes data, client => server 19:28:10.549393 'QUIT\r\n' 19:28:10.549499 Received DATA (on stdin) 19:28:10.549578 > 18 bytes data, server => client 19:28:10.549650 '221 bye bye baby\r\n' 19:28:10.550053 ====> Client disconnect 19:28:10.551197 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.490013 Running IPv4 version 19:28:10.490378 Listening on port 39839 19:28:10.490636 Wrote pid 110504 to log/3/server/ftp_sockdata.pid 19:28:10.490760 Received PING (on stdin) 19:28:10.491364 Received PORT (on stdin) 19:28:10.493185 ====> Client connect 19:28:10.501038 Received DATA (on stdin) 19:28:10.501177 > 18 bytes data, server => client 19:28:10.501248 'WE ROOLZ: 109394\r\n' 19:28:10.502000 Received DISC (on stdin) 19:28:10.502575 ====> Client forcibly disconnected 19:28:10.502922 Received QUIT (on stdin) 19:28:10.503039 quits 19:28:10.503513 ============> 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 valgrind116 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind117 ../src/curl -q --output log/2/curl117.out --include --trace-ascii log/2/trace117 --trace-config all --trace-time ftp://127.0.0.1:43671/117 > log/2/stdout117 2> log/2/stderr117 117: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind117 ../src/curl -q --output log/2/curl117.out --include --trace-ascii log/2/trace117 --trace-config all --trace-time ftp://127.0.0.1:43671/117 > log/2/stdout117 2> log/2/stderr117 === End of file commands.log === Start of file ftp_server.log 19:28:10.028824 ====> Client connect 19:28:10.029806 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.031449 < "USER anonymous" 19:28:10.031783 > "331 We are happy you popped in![CR][LF]" 19:28:10.034418 < "PASS ftp@example.com" 19:28:10.034745 > "230 Welcome you silly person[CR][LF]" 19:28:10.038177 < "PWD" 19:28:10.038551 > "257 "/" is current directory[CR][LF]" 19:28:10.039694 < "EPSV" 19:28:10.039910 ====> Passive DATA channel requested by client 19:28:10.040058 DATA sockfilt for passive data channel starting... 19:28:10.049157 DATA sockfilt for passive data channel started (pid 110515) 19:28:10.050035 DATA sockfilt for passive data channel listens on port 33159 19:28:10.050410 > "229 Entering Passive Mode (|||33159|)[LF]" 19:28:10.050601 Client has been notified that DATA conn will be accepted on port 33159 19:28:10.051491 Client connects to port 33159 19:28:10.051721 ====> Client established passive DATA connection on port 33159 19:28:10.052298 < "TYPE I" 19:28:10.052577 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.053657 < "SIZE verifiedserver" 19:28:10.054003 > "213 18[CR][LF]" 19:28:10.055022 < "RETR verifiedserver" 19:28:10.055331 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.055807 =====> Closing passive DATA connection... 19:28:10.055993 Server disconnects passive DATA connection 19:28:10.056816 Server disconnected passive DATA connection 19:28:10.057037 DATA sockfilt for passive data channel quits (pid 110515) 19:28:10.059358 DATA sockfilt for passive data channel quit (pid 110515) 19:28:10.059602 =====> Closed passive DATA connection 19:28:10.059930 > "226 File transfer complete[CR][LF]" 19:28:10.098569 < "QUIT" 19:28:10.098943 > "221 bye bye baby[CR][LF]" 19:28:10.102780 MAIN sockfilt said DISC 19:28:10.103087 ====> Client disconnected 19:28:10.103433 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:10.494298 ====> Client connect 19:28:10.495629 Received DATA (on stdin) 19:28:10.495774 > 160 bytes data, server => client 19:28:10.495855 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:10.495941 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:10.496008 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:10.496535 < 16 bytes data, client => server 19:28:10.496635 'USER anonymous\r\n' 19:28:10.497790 Received DATA (on stdin) 19:28:10.497898 > 33 bytes data, server => client 19:28:10.497981 '331 We are happy you popped in!\r\n' 19:28:10.498520 < 22 bytes data, client => server 19:28:10.498645 'PASS ftp@example.com\r\n' 19:28:10.501134 Received DATA (on stdin) 19:28:10.501242 > 30 bytes data, server => client 19:28:10.501311 '230 Welcome you silly person\r\n' 19:28:10.501893 < 5 bytes data, client => server 19:28:10.501990 'PWD\r\n' 19:28:10.504438 Received DATA (on stdin) 19:28:10.504563 > 30 bytes data, server => client 19:28:10.504661 '257 "/" is current directory\r\n' 19:28:10.505136 < 6 bytes data, client => server 19:28:10.505278 'EPSVCMD (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/1/valgrind118 ../src/curl -q --output log/1/curl118.out --include --trace-ascii log/1/trace118 --trace-config all --trace-time ftp://127.0.0.1:39333/118 > log/1/stdout118 2> log/1/stderr118 \r\n' 19:28:10.516249 Received DATA (on stdin) 19:28:10.516401 > 38 bytes data, server => client 19:28:10.516487 '229 Entering Passive Mode (|||33159|)\n' 19:28:10.517327 < 8 bytes data, client => server 19:28:10.517431 'TYPE I\r\n' 19:28:10.518425 Received DATA (on stdin) 19:28:10.518532 > 33 bytes data, server => client 19:28:10.518611 '200 I modify TYPE as you wanted\r\n' 19:28:10.519026 < 21 bytes data, client => server 19:28:10.519146 'SIZE verifiedserver\r\n' 19:28:10.519852 Received DATA (on stdin) 19:28:10.519979 > 8 bytes data, server => client 19:28:10.520065 '213 18\r\n' 19:28:10.520474 < 21 bytes data, client => server 19:28:10.520585 'RETR verifiedserver\r\n' 19:28:10.521170 Received DATA (on stdin) 19:28:10.521285 > 29 bytes data, server => client 19:28:10.521360 '150 Binary junk (18 bytes).\r\n' 19:28:10.525762 Received DATA (on stdin) 19:28:10.525921 > 28 bytes data, server => client 19:28:10.526012 '226 File transfer complete\r\n' 19:28:10.563938 < 6 bytes data, client => server 19:28:10.564069 'QUIT\r\n' 19:28:10.564795 Received DATA (on stdin) 19:28:10.564904 > 18 bytes data, server => client 19:28:10.564988 '221 bye bye baby\r\n' 19:28:10.565361 ====> Client disconnect 19:28:10.568964 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.514002 Running IPv4 version 19:28:10.514373 Listening on port 33159 19:28:10.514638 Wrote pid 110515 to log/2/server/ftp_sockdata.pid 19:28:10.514766 Received PING (on stdin) 19:28:10.515417 Received PORT (on stdin) 19:28:10.517135 ====> Client connect 19:28:10.522033 Received DATA (on stdin) 19:28:10.522146 > 18 bytes data, server => client 19:28:10.522224 'WE ROOLZ: 109411\r\n' 19:28:10.522465 Received DISC (on stdin) 19:28:10.523086 ====> Client forcibly disconnected 19:28:10.523500 Received QUIT (on stdin) 19:28:10.523631 quits 19:28:10.523882 ============> sockfilt quits === 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 valgrind117 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time ftp://127.0.0.1:39333/118 > log/1/stdout118 2> log/1/stderr118 118: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:39333/118 > log/1/stdout118 2> log/1/stderr118 === End of file commands.log === Start of file ftp_server.log 19:28:10.090290 ====> Client connect 19:28:10.091161 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.093983 < "USER anonymous" 19:28:10.094275 > "331 We are happy you popped in![CR][LF]" 19:28:10.095216 < "PASS ftp@example.com" 19:28:10.095501 > "230 Welcome you silly person[CR][LF]" 19:28:10.097574 < "PWD" 19:28:10.097960 > "257 "/" is current directory[CR][LF]" 19:28:10.099771 < "EPSV" 19:28:10.100033 ====> Passive DATA channel requested by client 19:28:10.100184 DATA sockfilt for passive data channel starting... 19:28:10.109501 DATA sockfilt for passive data channel started (pid 110537) 19:28:10.110222 DATA sockfilt for passive data channel listens on port 43597 19:28:10.110558 > "229 Entering Passive Mode (|||43597|)[LF]" 19:28:10.110762 Client has been notified that DATA conn will be accepted on port 43597 19:28:10.111753 Client connects to port 43597 19:28:10.111958 ====> Client established passive DATA connection on port 43597 19:28:10.112413 < "TYPE I" 19:28:10.112658 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.113742 < "SIZE verifiedserver" 19:28:10.114051 > "213 18[CR][LF]" 19:28:10.115041 < "RETR verifiedserver" 19:28:10.115335 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.115744 =====> Closing passive DATA connection... 19:28:10.115926 Server disconnects passive DATA connection 19:28:10.116884 Server disconnected passive DATA connection 19:28:10.117091 DATA sockfilt for passive data channel quits (pid 110537) 19:28:10.118403 DATA sockfilt for passive data channel quit (pid 110537) 19:28:10.118620 =====> Closed passive DATA connection 19:28:10.118865 > "226 File transfer complete[CR][LF]" 19:28:10.158426 < "QUIT" 19:28:10.158719 > "221 bye bye baby[CR][LF]" 19:28:10.161730 MAIN sockfilt said DISC 19:28:10.161985 ====> Client disconnected 19:28:10.162323 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:10.555708 ====> Client connect 19:28:10.558438 Received DATA (on stdin) 19:28:10.558572 > 160 bytes data, server => client 19:28:10.558653 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:10.558729 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:10.558791 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:10.559200 < 16 bytes data, client => server 19:28:10.559406 'USER anonymous\r\n' 19:28:10.560117 Received DATA (on stdin) 19:28:10.560211 > 33 bytes data, server => client 19:28:10.560277 '331 We are happy you popped in!\r\n' 19:28:10.560669 < 22 bytes data, client => server 19:28:10.560799 'PASS ftp@example.com\r\n' 19:28:10.561341 Received DATA (on stdin) 19:28:10.561482 > 30 bytes data, server => client 19:28:10.561560 '230 Welcome you silly person\r\n' 19:28:10.562928 < 5 bytes data, client => server 19:28:10.563063 'PWD\r\n' 19:28:10.563941 Received DATA (on stdin) 19:28:10.564073 > 30 bytes data, server => client 19:28:10.564149 '257 "/" is current directory\r\n' 19:28:10.564687 < 6 bytes data, client => server 19:28:10.564812 'EPSV\r\n' 19:28:10.576411 Received DATA (on stdin) 19:28:10.576566 > 38 bytes data, server => client 19:28:10.576655 '229 Entering Passive Mode (|||43597|)\n' 19:28:10.577593 < 8 bytes data, client => server 19:28:10.577694 'TYPE I\r\n' 19:28:10.578507 Received DATA (on stdin) 19:28:10.578623 > 33 bytes data, server => client 19:28:10.578701 '200 I modify TYPE as youCMD (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/4/valgrind119 ../src/curl -q --output log/4/curl119.out --include --trace-ascii log/4/trace119 --trace-config all --trace-time ftp://127.0.0.1:40809/119 -P - > log/4/stdout119 2> log/4/stderr119 wanted\r\n' 19:28:10.579139 < 21 bytes data, client => server 19:28:10.579325 'SIZE verifiedserver\r\n' 19:28:10.579909 Received DATA (on stdin) 19:28:10.580027 > 8 bytes data, server => client 19:28:10.580096 '213 18\r\n' 19:28:10.580516 < 21 bytes data, client => server 19:28:10.580632 'RETR verifiedserver\r\n' 19:28:10.581187 Received DATA (on stdin) 19:28:10.581294 > 29 bytes data, server => client 19:28:10.581369 '150 Binary junk (18 bytes).\r\n' 19:28:10.584719 Received DATA (on stdin) 19:28:10.584870 > 28 bytes data, server => client 19:28:10.584966 '226 File transfer complete\r\n' 19:28:10.623876 < 6 bytes data, client => server 19:28:10.624023 'QUIT\r\n' 19:28:10.624575 Received DATA (on stdin) 19:28:10.624695 > 18 bytes data, server => client 19:28:10.624771 '221 bye bye baby\r\n' 19:28:10.627240 ====> Client disconnect 19:28:10.627844 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.574356 Running IPv4 version 19:28:10.574717 Listening on port 43597 19:28:10.574942 Wrote pid 110537 to log/1/server/ftp_sockdata.pid 19:28:10.575062 Received PING (on stdin) 19:28:10.575668 Received PORT (on stdin) 19:28:10.577371 ====> Client connect 19:28:10.581959 Received DATA (on stdin) 19:28:10.582062 > 18 bytes data, server => client 19:28:10.582126 'WE ROOLZ: 109414\r\n' 19:28:10.582337 Received DISC (on stdin) 19:28:10.582449 ====> Client forcibly disconnected 19:28:10.583129 Received QUIT (on stdin) 19:28:10.583215 quits 19:28:10.583625 ============> sockfilt quits === 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 valgrind118 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind119 ../src/curl -q --output log/4/curl119.out --include --trace-ascii log/4/trace119 --trace-config all --trace-time ftp://127.0.0.1:40809/119 -P - > log/4/stdout119 2> log/4/stderr119 119: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind119 ../src/curl -q --output log/4/curl119.out --include --trace-ascii log/4/trace119 --trace-config all --trace-time ftp://127.0.0.1:40809/119 -P - > log/4/stdout119 2> log/4/stderr119 === End of file commands.log === Start of file ftp_server.log 19:28:10.385931 ====> Client connect 19:28:10.386803 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.388202 < "USER anonymous" 19:28:10.388517 > "331 We are happy you popped in![CR][LF]" 19:28:10.389674 < "PASS ftp@example.com" 19:28:10.389975 > "230 Welcome you silly person[CR][LF]" 19:28:10.391011 < "PWD" 19:28:10.391354 > "257 "/" is current directory[CR][LF]" 19:28:10.392543 < "EPSV" 19:28:10.392775 ====> Passive DATA channel requested by client 19:28:10.392961 DATA sockfilt for passive data channel starting... 19:28:10.402361 DATA sockfilt for passive data channel started (pid 110658) 19:28:10.403115 DATA sockfilt for passive data channel listens on port 37733 19:28:10.403490 > "229 Entering Passive Mode (|||37733|)[LF]" 19:28:10.403689 Client has been notified that DATA conn will be accepted on port 37733 19:28:10.407530 Client connects to port 37733 19:28:10.407809 ====> Client established passive DATA connection on port 37733 19:28:10.408477 < "TYPE I" 19:28:10.408777 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.409984 < "SIZE verifiedserver" 19:28:10.410358 > "213 18[CR][LF]" 19:28:10.411818 < "RETR verifiedserver" 19:28:10.412348 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.413100 =====> Closing passive DATA connection... 19:28:10.413346 Server disconnects passive DATA connection 19:28:10.413949 Server disconnected passive DATA connection 19:28:10.414169 DATA sockfilt for passive data channel quits (pid 110658) 19:28:10.415356 DATA sockfilt for passive data channel quit (pid 110658) 19:28:10.415606 =====> Closed passive DATA connection 19:28:10.415824 > "226 File transfer complete[CR][LF]" 19:28:10.454495 < "QUIT" 19:28:10.454855 > "221 bye bye baby[CR][LF]" 19:28:10.455662 MAIN sockfilt said DISC 19:28:10.455936 ====> Client disconnected 19:28:10.456300 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:09.851369 ====> Client connect 19:28:09.852627 Received DATA (on stdin) 19:28:09.852768 > 160 bytes data, server => client 19:28:09.852849 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:09.852921 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:09.852987 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:09.853426 < 16 bytes data, client => server 19:28:09.853555 'USER anonymous\r\n' 19:28:09.854370 Received DATA (on stdin) 19:28:09.854497 > 33 bytes data, server => client 19:28:09.854587 '331 We are happy you popped in!\r\n' 19:28:09.855016 < 22 bytes data, client => server 19:28:09.855145 'PASS ftp@example.com\r\n' 19:28:09.855809 Received DATA (on stdin) 19:28:09.855938 > 30 bytes data, server => client 19:28:09.856021 '230 Welcome you silly person\r\n' 19:28:09.856434 < 5 bytes data, client => server 19:28:09.856567 'PWD\r\n' 19:28:09.857205 Received DATA (on stdin) 19:28:09.857430 > 30 bytes data, server => client 19:28:09.857512 '257 "/" is current directory\r\n' 19:28:09.857945 < 6 bytes data, client => server 19:28:09.858090 'EPSV\r\n' 19:28:09.872156 Received DATA (on stdin) 19:28:09.872308 > 38 bytes data, server => client 19:28:09.872407 '229 Entering Passive Mode (|||37733|)\n' 19:28:09.873369 < 8 bytes data, client => server 19:28:09.873478 'TYPE I\r\n' 19:28:09.874621 Received DATA (on stdin) 19:28:09.874737 > 33 bytes data, server => client 19:28:09.874817 '200 I modify TYPE as you wanted\r\n' 19:28:09.875339 < 21 bytes data, client => server 19:28:09.875469 'SIZE verifiedserver\r\n' 19:28:09.876486 Received DATA (on stdin) 19:28:09.876610 > 8 bytes data, server => client 19:28:09.876688 '213 18\r\n' 19:28:09.877215 < 21 bytes data, client => server 19:28:09.877358 'RETR verifiedserCMD (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/2/valgrind121 ../src/curl -q --output log/2/curl121.out --include --trace-ascii log/2/trace121 --trace-config all --trace-time ftp://127.0.0.1:43671/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/2/stdout121 2> log/2/stderr121 ver\r\n' 19:28:09.878328 Received DATA (on stdin) 19:28:09.878450 > 29 bytes data, server => client 19:28:09.878550 '150 Binary junk (18 bytes).\r\n' 19:28:09.881673 Received DATA (on stdin) 19:28:09.881804 > 28 bytes data, server => client 19:28:09.881884 '226 File transfer complete\r\n' 19:28:09.919828 < 6 bytes data, client => server 19:28:09.919974 'QUIT\r\n' 19:28:09.920687 Received DATA (on stdin) 19:28:09.920803 > 18 bytes data, server => client 19:28:09.920877 '221 bye bye baby\r\n' 19:28:09.921255 ====> Client disconnect 19:28:09.921787 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.865617 Running IPv4 version 19:28:10.866065 Listening on port 37733 19:28:10.867783 Wrote pid 110658 to log/4/server/ftp_sockdata.pid 19:28:10.867942 Received PING (on stdin) 19:28:10.868535 Received PORT (on stdin) 19:28:10.873106 ====> Client connect 19:28:10.878980 Received DATA (on stdin) 19:28:10.879155 > 18 bytes data, server => client 19:28:10.879309 'WE ROOLZ: 109451\r\n' 19:28:10.879576 Received DISC (on stdin) 19:28:10.879717 ====> Client forcibly disconnected 19:28:10.880178 Received QUIT (on stdin) 19:28:10.880289 quits 19:28:10.880564 ============> sockfilt quits === 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 valgrind119 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind119 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/2/valgrind121 ../src/curl -q --output log/2/curl121.out --include --trace-ascii log/2/trace121 --trace-config all --trace-time ftp://127.0.0.1:43671/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/2/stdout121 2> log/2/stderr121 121: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind121 ../src/curl -q --output log/2/curl121.out --include --trace-ascii log/2/trace121 --trace-config all --trace-time ftp://127.0.0.1:43671/121 -Q "-DELE after_transfer" -Q "DELE before_transfer" > log/2/stdout121 2> log/2/stderr121 === End of file commands.log === Start of file ftp_server.log 19:28:10.742888 ====> Client connect 19:28:10.743689 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.745556 < "USER anonymous" 19:28:10.745989 > "331 We are happy you popped in![CR][LF]" 19:28:10.747050 < "PASS ftp@example.com" 19:28:10.747405 > "230 Welcome you silly person[CR][LF]" 19:28:10.748408 < "PWD" 19:28:10.748724 > "257 "/" is current directory[CR][LF]" 19:28:10.749801 < "EPSV" 19:28:10.750272 ====> Passive DATA channel requested by client 19:28:10.750408 DATA sockfilt for passive data channel starting... 19:28:10.760555 DATA sockfilt for passive data channel started (pid 110768) 19:28:10.762075 DATA sockfilt for passive data channel listens on port 40045 19:28:10.762413 > "229 Entering Passive Mode (|||40045|)[LF]" 19:28:10.762579 Client has been notified that DATA conn will be accepted on port 40045 19:28:10.763792 Client connects to port 40045 19:28:10.764035 ====> Client established passive DATA connection on port 40045 19:28:10.764555 < "TYPE I" 19:28:10.764835 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.765930 < "SIZE verifiedserver" 19:28:10.766255 > "213 18[CR][LF]" 19:28:10.767292 < "RETR verifiedserver" 19:28:10.767624 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.768107 =====> Closing passive DATA connection... 19:28:10.768320 Server disconnects passive DATA connection 19:28:10.768851 Server disconnected passive DATA connection 19:28:10.769077 DATA sockfilt for passive data channel quits (pid 110768) 19:28:10.770306 DATA sockfilt for passive data channel quit (pid 110768) 19:28:10.770538 =====> Closed passive DATA connection 19:28:10.770753 > "226 File transfer complete[CR][LF]" 19:28:10.811493 < "QUIT" 19:28:10.811839 > "221 bye bye baby[CR][LF]" 19:28:10.812988 MAIN sockfilt said DISC 19:28:10.813235 ====> Client disconnected 19:28:10.813731 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.208389 ====> Client connect 19:28:11.209748 Received DATA (on stdin) 19:28:11.209851 > 160 bytes data, server => client 19:28:11.209921 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.209983 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.210041 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.210591 < 16 bytes data, client => server 19:28:11.210715 'USER anonymous\r\n' 19:28:11.211803 Received DATA (on stdin) 19:28:11.211931 > 33 bytes data, server => client 19:28:11.212017 '331 We are happy you popped in!\r\n' 19:28:11.212423 < 22 bytes data, client => server 19:28:11.212546 'PASS ftp@example.com\r\n' 19:28:11.213231 Received DATA (on stdin) 19:28:11.213354 > 30 bytes data, server => client 19:28:11.213437 '230 Welcome you silly person\r\n' 19:28:11.213837 < 5 bytes data, client => server 19:28:11.213955 'PWD\r\n' 19:28:11.214549 Received DATA (on stdin) 19:28:11.214663 > 30 bytes data, server => client 19:28:11.214734 '257 "/" is current directory\r\n' 19:28:11.215126 < 6 bytes data, client => server 19:28:11.215296 'EPSV\r\n' 19:28:11.228241 Received DATA (on stdin) 19:28:11.228383 > 38 bytes data, server => client 19:28:11.228470 '229 Entering Passive Mode (|||40045|)\n' 19:28:11.229408 < 8 bytes data, client => server 19:28:11.229519 'TYPE I\r\n' 19:28:11.230678 Received DATA (on stdin) 19:28:11.230795 > 33 bytes data, server => client 19:28:11.230873 '200 I modify TYPE as you wanted\r\n' 19:28:11.231343 < 21 bytes data, client => server 19:28:11.231482 'SIZE verifiedserver\r\n' 19:28:11.232085 Received DATA (on stdin) 19:28:11.232195 > 8 bytes data, server => client 19:28:11.232263 '213 18\r\n' 19:28:11.232709 < 21 bytes data, client => server 19:28:11.232837 'RETR verifiedserver\r\n' 19:28:11.233445 Received DATA (on stdin) 19:28:11.233565 > 29 bytes data, server => client 19:28:11.233635 '150 Binary junk (18 bytes).\r\n' 19:28:11.236589 Received DATA (on stdin) 19:28:11.236707 > 28 bytes data,CMD (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/valgrind120 ../src/curl -q --output log/3/curl120.out --include --trace-ascii log/3/trace120 --trace-config all --trace-time ftp://127.0.0.1:43789/120 -Q "-DELE file" > log/3/stdout120 2> log/3/stderr120 server => client 19:28:11.236783 '226 File transfer complete\r\n' 19:28:11.275854 < 6 bytes data, client => server 19:28:11.276000 'QUIT\r\n' 19:28:11.277938 Received DATA (on stdin) 19:28:11.278070 > 18 bytes data, server => client 19:28:11.278158 '221 bye bye baby\r\n' 19:28:11.278587 ====> Client disconnect 19:28:11.279833 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.225457 Running IPv4 version 19:28:10.225817 Listening on port 40045 19:28:10.226042 Wrote pid 110768 to log/2/server/ftp_sockdata.pid 19:28:10.226144 Received PING (on stdin) 19:28:10.227449 Received PORT (on stdin) 19:28:10.229393 ====> Client connect 19:28:10.233708 Received DATA (on stdin) 19:28:10.233848 > 18 bytes data, server => client 19:28:10.233949 'WE ROOLZ: 109411\r\n' 19:28:10.234447 Received DISC (on stdin) 19:28:10.234582 ====> Client forcibly disconnected 19:28:10.235090 Received QUIT (on stdin) 19:28:10.235192 quits 19:28:10.235557 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 121 === End of file server.cmd === Start of file valgrind121 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind121 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/3/valgrind120 ../src/curl -q --output log/3/curl120.out --include --trace-ascii log/3/trace120 --trace-config all --trace-time ftp://127.0.0.1:43789/120 -Q "-DELE file" > log/3/stdout120 2> log/3/stderr120 120: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind120 ../src/curl -q --output log/3/curl120.out --include --trace-ascii log/3/trace120 --trace-config all --trace-time ftp://127.0.0.1:43789/120 -Q "-DELE file" > log/3/stdout120 2> log/3/stderr120 === End of file commands.log === Start of file ftp_server.log 19:28:10.707228 ====> Client connect 19:28:10.708044 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.710099 < "USER anonymous" 19:28:10.710477 > "331 We are happy you popped in![CR][LF]" 19:28:10.711561 < "PASS ftp@example.com" 19:28:10.711879 > "230 Welcome you silly person[CR][LF]" 19:28:10.714126 < "PWD" 19:28:10.714501 > "257 "/" is current directory[CR][LF]" 19:28:10.715743 < "EPSV" 19:28:10.716009 ====> Passive DATA channel requested by client 19:28:10.716186 DATA sockfilt for passive data channel starting... 19:28:10.726039 DATA sockfilt for passive data channel started (pid 110762) 19:28:10.726814 DATA sockfilt for passive data channel listens on port 40519 19:28:10.727163 > "229 Entering Passive Mode (|||40519|)[LF]" 19:28:10.727363 Client has been notified that DATA conn will be accepted on port 40519 19:28:10.734665 Client connects to port 40519 19:28:10.734920 ====> Client established passive DATA connection on port 40519 19:28:10.735420 < "TYPE I" 19:28:10.735718 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.737143 < "SIZE verifiedserver" 19:28:10.737507 > "213 18[CR][LF]" 19:28:10.738884 < "RETR verifiedserver" 19:28:10.739182 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.739587 =====> Closing passive DATA connection... 19:28:10.739744 Server disconnects passive DATA connection 19:28:10.741121 Server disconnected passive DATA connection 19:28:10.741358 DATA sockfilt for passive data channel quits (pid 110762) 19:28:10.742925 DATA sockfilt for passive data channel quit (pid 110762) 19:28:10.743102 =====> Closed passive DATA connection 19:28:10.743310 > "226 File transfer complete[CR][LF]" 19:28:10.782630 < "QUIT" 19:28:10.782982 > "221 bye bye baby[CR][LF]" 19:28:10.787228 MAIN sockfilt said DISC 19:28:10.787613 ====> Client disconnected 19:28:10.788043 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.172659 ====> Client connect 19:28:11.174150 Received DATA (on stdin) 19:28:11.174266 > 160 bytes data, server => client 19:28:11.174379 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.174475 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.174559 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.175089 < 16 bytes data, client => server 19:28:11.175281 'USER anonymous\r\n' 19:28:11.176299 Received DATA (on stdin) 19:28:11.176419 > 33 bytes data, server => client 19:28:11.176494 '331 We are happy you popped in!\r\n' 19:28:11.176933 < 22 bytes data, client => server 19:28:11.177063 'PASS ftp@example.com\r\n' 19:28:11.177710 Received DATA (on stdin) 19:28:11.177828 > 30 bytes data, server => client 19:28:11.177913 '230 Welcome you silly person\r\n' 19:28:11.178344 < 5 bytes data, client => server 19:28:11.178459 'PWD\r\n' 19:28:11.180371 Received DATA (on stdin) 19:28:11.180526 > 30 bytes data, server => client 19:28:11.180607 '257 "/" is current directory\r\n' 19:28:11.181138 < 6 bytes data, client => server 19:28:11.181275 'EPSV\r\n' 19:28:11.193529 Received DATA (on stdin) 19:28:11.193651 > 38 bytes data, server => client 19:28:11.193727 '229 Entering Passive Mode (|||40519|)\n' 19:28:11.200249 < 8 bytes data, client => server 19:28:11.200352 'TYPE I\r\n' 19:28:11.201790 Received DATA (on stdin) 19:28:11.201894 > 33 bytes data, server => client 19:28:11.201966 '200 I modify TYPE as you wanted\r\n' 19:28:11.202375 < 21 bytes data, client => server 19:28:11.202499 'SIZE verifiedserver\r\n' 19:28:11.203577 Received DATA (on stdin) 19:28:11.203688 > 8 bytes data, server => client 19:28:11.203754 '213 18\r\n' 19:28:11.204141 < 21 bytes data, client => server 19:28:11.204253 'RETR verifiedserver\r\n' 19:28:11.205769 Received DATA (on stdin) 19:28:11.205872 > 29 bytes data, server => client 19:28:11.205940 '150 Binary junk (18 bytes).\r\n' 19:28:11.209397 Received DATA (on stdin) 19:28:11.209536 > 28 bytes data, server => client 19:28:11.209613 '226 File transfer complete\r\n' 19:28:11.247887 < 6 bytes data, client => server 19:28:11.248052 'QUIT\r\n' 19:28:11.248806 Received DATA (on stdin) 19:28:11.248939 > 18 bytes data, server => client 19:28:11.249028 '221 bye bye baby\r\n' 19:28:11.249502 ====> Client disconnect 19:28:11.253465 Received ACKD (on stdin) === End of file ftp_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/1/valgrind122 ../src/curl -q --output log/1/curl122.out --include --trace-ascii log/1/trace122 --trace-config all --trace-time ftp://127.0.0.1:39333/122 -C 5 > log/1/stdout122 2> log/1/stderr122 ockctrl.log === Start of file ftp_sockdata.log 19:28:10.190654 Running IPv4 version 19:28:10.191040 Listening on port 40519 19:28:10.191492 Wrote pid 110762 to log/3/server/ftp_sockdata.pid 19:28:10.191647 Received PING (on stdin) 19:28:10.192215 Received PORT (on stdin) 19:28:10.199986 ====> Client connect 19:28:10.206145 Received DATA (on stdin) 19:28:10.206264 > 18 bytes data, server => client 19:28:10.206332 'WE ROOLZ: 109394\r\n' 19:28:10.206534 Received DISC (on stdin) 19:28:10.206644 ====> Client forcibly disconnected 19:28:10.207519 Received QUIT (on stdin) 19:28:10.207645 quits 19:28:10.207897 ============> 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 valgrind120 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind120 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/1/valgrind122 ../src/curl -q --output log/1/curl122.out --include --trace-ascii log/1/trace122 --trace-config all --trace-time ftp://127.0.0.1:39333/122 -C 5 > log/1/stdout122 2> log/1/stderr122 122: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind122 ../src/curl -q --output log/1/curl122.out --include --trace-ascii log/1/trace122 --trace-config all --trace-time ftp://127.0.0.1:39333/122 -C 5 > log/1/stdout122 2> log/1/stderr122 === End of file commands.log === Start of file ftp_server.log 19:28:10.826031 ====> Client connect 19:28:10.827004 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:10.828445 < "USER anonymous" 19:28:10.828747 > "331 We are happy you popped in![CR][LF]" 19:28:10.829877 < "PASS ftp@example.com" 19:28:10.830157 > "230 Welcome you silly person[CR][LF]" 19:28:10.831183 < "PWD" 19:28:10.831470 > "257 "/" is current directory[CR][LF]" 19:28:10.832487 < "EPSV" 19:28:10.832697 ====> Passive DATA channel requested by client 19:28:10.832828 DATA sockfilt for passive data channel starting... 19:28:10.840846 DATA sockfilt for passive data channel started (pid 110800) 19:28:10.841701 DATA sockfilt for passive data channel listens on port 45977 19:28:10.842046 > "229 Entering Passive Mode (|||45977|)[LF]" 19:28:10.842207 Client has been notified that DATA conn will be accepted on port 45977 19:28:10.843380 Client connects to port 45977 19:28:10.843605 ====> Client established passive DATA connection on port 45977 19:28:10.844107 < "TYPE I" 19:28:10.844391 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:10.845530 < "SIZE verifiedserver" 19:28:10.845856 > "213 18[CR][LF]" 19:28:10.846874 < "RETR verifiedserver" 19:28:10.847173 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:10.847671 =====> Closing passive DATA connection... 19:28:10.847858 Server disconnects passive DATA connection 19:28:10.849050 Server disconnected passive DATA connection 19:28:10.849245 DATA sockfilt for passive data channel quits (pid 110800) 19:28:10.850827 DATA sockfilt for passive data channel quit (pid 110800) 19:28:10.851064 =====> Closed passive DATA connection 19:28:10.851282 > "226 File transfer complete[CR][LF]" 19:28:10.898873 < "QUIT" 19:28:10.899204 > "221 bye bye baby[CR][LF]" 19:28:10.902771 MAIN sockfilt said DISC 19:28:10.903080 ====> Client disconnected 19:28:10.903406 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.291373 ====> Client connect 19:28:11.292813 Received DATA (on stdin) 19:28:11.292948 > 160 bytes data, server => client 19:28:11.293031 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.293114 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.293183 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.293665 < 16 bytes data, client => server 19:28:11.293804 'USER anonymous\r\n' 19:28:11.294580 Received DATA (on stdin) 19:28:11.294691 > 33 bytes data, server => client 19:28:11.294761 '331 We are happy you popped in!\r\n' 19:28:11.295174 < 22 bytes data, client => server 19:28:11.295377 'PASS ftp@example.com\r\n' 19:28:11.295982 Received DATA (on stdin) 19:28:11.296085 > 30 bytes data, server => client 19:28:11.296166 '230 Welcome you silly person\r\n' 19:28:11.296598 < 5 bytes data, client => server 19:28:11.296726 'PWD\r\n' 19:28:11.297295 Received DATA (on stdin) 19:28:11.297400 > 30 bytes data, server => client 19:28:11.297479 '257 "/" is current directory\r\n' 19:28:11.297910 < 6 bytes data, client => server 19:28:11.298035 'EPSV\r\n' 19:28:11.307882 Received DATA (on stdin) 19:28:11.308017 > 38 bytes data, server => client 19:28:11.308101 '229 Entering Passive Mode (|||45977|)\n' 19:28:11.308990 < 8 bytes data, client => server 19:28:11.309122 'TYPE I\r\n' 19:28:11.310232 Received DATA (on stdin) 19:28:11.310349 > 33 bytes data, server => client 19:28:11.310426 '200 I modify TYPE as you wanted\r\n' 19:28:11.310832 < 21 bytes data, client => server 19:28:11.310966 'SIZE verifiedserver\r\n' 19:28:11.311684 Received DATA (on stdin) 19:28:11.311803 > 8 bytes data, server => client 19:28:11.311874 '213 18\r\n' 19:28:11.312304 < 21 bytes data, client => server 19:28:11.312437 'RETR verifiedserver\r\n' 19:28:11.313006 Received DATA (on stdin) 19:28:11.313124 > 29 bytes data, server => client 19:28:11.313206 '150 Binary junk (18 bytes).\r\n' 19:28:11.317124 Received DATA (on stdin) 19:28:11.317249 > 28 bytes data, server => client 19:28:11.317326 '226 File transfer complete\r\n' 19:28:11.364232 < 6 bytes data, client => server 19:28:11.364397 'QUIT\r\n' 19:28:11.365025 Received DATA (on stdin) 19:28:11.365143 > 18 bytes data, server => client 19:28:11.365217 '221 bye bye baby\r\n' 19:28:11.365582 ====> Client disconnect 19:28:11.368932 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:10.305818 Running IPv4 version 19:28:10.306162 Listening on port 45977 19:28:10.306369 Wrote pid 110800 to log/1/server/ftp_sockdata.pid 19:28:10.306470 Received PING (on stdin) 19:28:10.306994 Received PORT (on stdin) 19:28:10.309027 ====> Client connect 19:28:10.313990 Received DATA (on stdin) 19:28:1CMD (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/4/valgrind123 ../src/curl -q --output log/4/curl123.out --include --trace-ascii log/4/trace123 --trace-config all --trace-time ftp://127.0.0.1:40809/123 -T log/4/upload123 -C 51 > log/4/stdout123 2> log/4/stderr123 0.314119 > 18 bytes data, server => client 19:28:10.314193 'WE ROOLZ: 109414\r\n' 19:28:10.314684 Received DISC (on stdin) 19:28:10.315456 ====> Client forcibly disconnected 19:28:10.315768 Received QUIT (on stdin) 19:28:10.315866 quits 19:28:10.316115 ============> sockfilt quits === 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 valgrind122 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind123 ../src/curl -q --output log/4/curl123.out --include --trace-ascii log/4/trace123 --trace-config all --trace-time ftp://127.0.0.1:40809/123 -T log/4/upload123 -C 51 > log/4/stdout123 2> log/4/stderr123 123: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind123 ../src/curl -q --output log/4/curl123.out --include --trace-ascii log/4/trace123 --trace-config all --trace-time ftp://127.0.0.1:40809/123 -T log/4/upload123 -C 51 > log/4/stdout123 2> log/4/stderr123 === End of file commands.log === Start of file ftp_server.log 19:28:11.106365 ====> Client connect 19:28:11.107252 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:11.109128 < "USER anonymous" 19:28:11.109584 > "331 We are happy you popped in![CR][LF]" 19:28:11.110621 < "PASS ftp@example.com" 19:28:11.110954 > "230 Welcome you silly person[CR][LF]" 19:28:11.112982 < "PWD" 19:28:11.113323 > "257 "/" is current directory[CR][LF]" 19:28:11.115901 < "EPSV" 19:28:11.116205 ====> Passive DATA channel requested by client 19:28:11.116365 DATA sockfilt for passive data channel starting... 19:28:11.124602 DATA sockfilt for passive data channel started (pid 110929) 19:28:11.125307 DATA sockfilt for passive data channel listens on port 39131 19:28:11.125765 > "229 Entering Passive Mode (|||39131|)[LF]" 19:28:11.126001 Client has been notified that DATA conn will be accepted on port 39131 19:28:11.128189 Client connects to port 39131 19:28:11.128453 ====> Client established passive DATA connection on port 39131 19:28:11.129049 < "TYPE I" 19:28:11.129360 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:11.131401 < "SIZE verifiedserver" 19:28:11.131833 > "213 18[CR][LF]" 19:28:11.133395 < "RETR verifiedserver" 19:28:11.133912 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:11.134452 =====> Closing passive DATA connection... 19:28:11.134648 Server disconnects passive DATA connection 19:28:11.136628 Server disconnected passive DATA connection 19:28:11.136861 DATA sockfilt for passive data channel quits (pid 110929) 19:28:11.138613 DATA sockfilt for passive data channel quit (pid 110929) 19:28:11.138851 =====> Closed passive DATA connection 19:28:11.139533 > "226 File transfer complete[CR][LF]" 19:28:11.178818 < "QUIT" 19:28:11.179143 > "221 bye bye baby[CR][LF]" 19:28:11.183123 MAIN sockfilt said DISC 19:28:11.183389 ====> Client disconnected 19:28:11.183733 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:10.571780 ====> Client connect 19:28:10.573039 Received DATA (on stdin) 19:28:10.573174 > 160 bytes data, server => client 19:28:10.573261 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:10.573351 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:10.573417 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:10.574340 < 16 bytes data, client => server 19:28:10.574466 'USER anonymous\r\n' 19:28:10.575390 Received DATA (on stdin) 19:28:10.575527 > 33 bytes data, server => client 19:28:10.575597 '331 We are happy you popped in!\r\n' 19:28:10.576006 < 22 bytes data, client => server 19:28:10.576138 'PASS ftp@example.com\r\n' 19:28:10.576773 Received DATA (on stdin) 19:28:10.576898 > 30 bytes data, server => client 19:28:10.576972 '230 Welcome you silly person\r\n' 19:28:10.577477 < 5 bytes data, client => server 19:28:10.577607 'PWD\r\n' 19:28:10.579509 Received DATA (on stdin) 19:28:10.579649 > 30 bytes data, server => client 19:28:10.579729 '257 "/" is current directory\r\n' 19:28:10.580170 < 6 bytes data, client => server 19:28:10.580311 'EPSV\r\n' 19:28:10.592148 Received DATA (on stdin) 19:28:10.592288 > 38 bytes data, server => client 19:28:10.592366 '229 Entering Passive Mode (|||39131|)\n' 19:28:10.593431 < 8 bytes data, client => server 19:28:10.593644 'TYPE I\r\n' 19:28:10.595348 Received DATA (on stdin) 19:28:10.595490 > 33 bytes data, server => client 19:28:10.595570 '200 I modify TYPE as you wanted\r\n' 19:28:10.596060 < 21 bytes data, client => server 19:28:10.596255 'SIZE verifiedserver\r\n' 19:28:10.597911 Received DATA (on stdin) 19:28:10.598028 > 8 bytes data, server => client 19:28:10.598102 '213 18\r\n' 19:28:10.598553 < 21 bytes data, client => server 19:28:10.598686 'RETR verifiedserver\r\n' 19:28:10.600674 Received DATA (on stdin) 19:28:10.600799 > 29 bytes data, server => client 19:28:10.600883 '150 Binary junk (18 bytes).\r\n' 19:28:10.604878 Received DATA (on stdin) 19:28:10.605008 > 28 bytes data, server => client 19:28:10.605148 '226 File transfer complete\r\n' 19:28:10.643920 < 6 bytes data, client => server 19:28:10.644072 'QUIT\r\n' 19:28:10.645187 Received DATA (on stdin) 19:28:10.645288 > 18 bytes data, server => client 19:28:10.645359 '221 bye bye baby\r\n' 19:28:10.648696 ====> Client disconnect 19:28:10.649782 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:11.589515 Running IPv4 version 19:28:11.589865 Listening on port 39131 19:28:11.590112 Wrote pid 110929 to log/4/server/ftp_sockdata.pid 19:28:11.590219 Received PING (on stdin) 19:28:11.590748 Received PORT (on stdin) 19:28:11.593828 ====> Client connect 19:28:11.601273 Received DATA (on stdin) 19:28:11.601490 > 18 bytes data, server => client 19:28:11.601616 'WE ROOLZ: 109451\r\n' 19:28:11.602232 Received DISC (on stdin) 19:28:11.602904 ====> Client forcibly disconnected 19:28:11.603408 Received QUIT (on stdin) 19:28:11.603593 quits 19:28:11.603892 ============> sockfilt quits === End of file ftp_sockdata.log === 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/2/valgrind124 ../src/curl -q --output log/2/curl124.out --include --trace-ascii log/2/trace124 --trace-config all --trace-time ftp://127.0.0.1:43671/124 > log/2/stdout124 2> log/2/stderr124 tart of file server.cmd Testnum 123 === End of file server.cmd === Start of file upload123 -------------------------------------------------- === End of file upload123 === Start of file valgrind123 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind124 ../src/curl -q --output log/2/curl124.out --include --trace-ascii log/2/trace124 --trace-config all --trace-time ftp://127.0.0.1:43671/124 > log/2/stdout124 2> log/2/stderr124 124: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind124 ../src/curl -q --output log/2/curl124.out --include --trace-ascii log/2/trace124 --trace-config all --trace-time ftp://127.0.0.1:43671/124 > log/2/stdout124 2> log/2/stderr124 === End of file commands.log === Start of file ftp_server.log 19:28:11.419875 ====> Client connect 19:28:11.420993 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:11.423478 < "USER anonymous" 19:28:11.423828 > "331 We are happy you popped in![CR][LF]" 19:28:11.425725 < "PASS ftp@example.com" 19:28:11.426080 > "230 Welcome you silly person[CR][LF]" 19:28:11.427631 < "PWD" 19:28:11.427951 > "257 "/" is current directory[CR][LF]" 19:28:11.429786 < "EPSV" 19:28:11.430074 ====> Passive DATA channel requested by client 19:28:11.430269 DATA sockfilt for passive data channel starting... 19:28:11.438355 DATA sockfilt for passive data channel started (pid 111023) 19:28:11.439284 DATA sockfilt for passive data channel listens on port 41589 19:28:11.439690 > "229 Entering Passive Mode (|||41589|)[LF]" 19:28:11.439914 Client has been notified that DATA conn will be accepted on port 41589 19:28:11.441688 Client connects to port 41589 19:28:11.441960 ====> Client established passive DATA connection on port 41589 19:28:11.442552 < "TYPE I" 19:28:11.442852 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:11.444238 < "SIZE verifiedserver" 19:28:11.444538 > "213 18[CR][LF]" 19:28:11.446023 < "RETR verifiedserver" 19:28:11.446322 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:11.446800 =====> Closing passive DATA connection... 19:28:11.446994 Server disconnects passive DATA connection 19:28:11.448106 Server disconnected passive DATA connection 19:28:11.448323 DATA sockfilt for passive data channel quits (pid 111023) 19:28:11.450185 DATA sockfilt for passive data channel quit (pid 111023) 19:28:11.450432 =====> Closed passive DATA connection 19:28:11.451648 > "226 File transfer complete[CR][LF]" 19:28:11.491135 < "QUIT" 19:28:11.491631 > "221 bye bye baby[CR][LF]" 19:28:11.492511 MAIN sockfilt said DISC 19:28:11.492814 ====> Client disconnected 19:28:11.493180 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.885285 ====> Client connect 19:28:11.887402 Received DATA (on stdin) 19:28:11.887537 > 160 bytes data, server => client 19:28:11.887625 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.887712 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.887792 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.888443 < 16 bytes data, client => server 19:28:11.888574 'USER anonymous\r\n' 19:28:11.889980 Received DATA (on stdin) 19:28:11.890245 > 33 bytes data, server => client 19:28:11.890358 '331 We are happy you popped in!\r\n' 19:28:11.890779 < 22 bytes data, client => server 19:28:11.890909 'PASS ftp@example.com\r\n' 19:28:11.892130 Received DATA (on stdin) 19:28:11.892241 > 30 bytes data, server => client 19:28:11.892314 '230 Welcome you silly person\r\n' 19:28:11.892743 < 5 bytes data, client => server 19:28:11.892864 'PWD\r\n' 19:28:11.894018 Received DATA (on stdin) 19:28:11.894148 > 30 bytes data, server => client 19:28:11.894264 '257 "/" is current directory\r\n' 19:28:11.894829 < 6 bytes data, client => server 19:28:11.894952 'EPSV\r\n' 19:28:11.905974 Received DATA (on stdin) 19:28:11.906111 > 38 bytes data, server => client 19:28:11.906196 '229 Entering Passive Mode (|||41589|)\n' 19:28:11.907121 < 8 bytes data, client => server 19:28:11.907317 'TYPE I\r\n' 19:28:11.908900 Received DATA (on stdin) 19:28:11.909006 > 33 bytes data, server => client 19:28:11.909079 '200 I modify TYPE as you wanted\r\n' 19:28:11.909475 < 21 bytes data, client => server 19:28:11.909587 'SIZE verifiedserver\r\n' 19:28:11.910540 Received DATA (on stdin) 19:28:11.910635 > 8 bytes data, server => client 19:28:11.910704 '213 18\r\n' 19:28:11.911079 < 21 bytes data, client => server 19:28:11.911194 'RETR verifiedserver\r\n' 19:28:11.913427 Received DATA (on stdin) 19:28:11.913551 > 29 bytes data, server => client 19:28:11.913633 '150 Binary junk (18 bytes).\r\n' 19:28:11.916525 Received DATA (on stdin) 19:28:11.916672 > 28 bytes data, server => client 19:28:11.916812 '226 File transfer complete\r\n' 19:28:11.955824 < 6 bytes data, client => server 19:28:11.956008 'QUIT\r\n' 19:28:11.957444 Received DATA (on stdin) 19:28:11.957588 > 18 bytes data, server => client 19:28:11.957677 '221 bye bye baby\r\n' 19:28:11.958075 ====> Client disconnect 19:28:11.958646 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:11.902785 Running IPv4 version 19:28:11.903178 Listening on port 41589 19:28:11.903670 Wrote pid 111023 to log/2/server/ftp_sockdata.pid 19:28:11.903855 Received PING (on stdin) 19:28:11.904630 Received PORT (on stdin) 19:28:11.906931 ====> Client connect 19:28:11.912393 Received DATA (on stdin) 19:28:11.912539 > 18 bytes data, server => client 19:28:11.912632 'WE ROOLZ: 109411\r\n' 19:28:11.913050 Received DISC (on stdin) 19:28:11.913177 ====> Client forcibly disconnected 19:28:11.914718 Received QUIT (on stdin) 19:28:11.914806 quits 19:28:11.915100 ============> 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 valgrind124 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the rediCMD (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/valgrind125 ../src/curl -q --output log/3/curl125.out --include --trace-ascii log/3/trace125 --trace-config all --trace-time ftp://127.0.0.1:43789/path/to/file/125 > log/3/stdout125 2> log/3/stderr125 rection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind125 ../src/curl -q --output log/3/curl125.out --include --trace-ascii log/3/trace125 --trace-config all --trace-time ftp://127.0.0.1:43789/path/to/file/125 > log/3/stdout125 2> log/3/stderr125 125: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind125 ../src/curl -q --output log/3/curl125.out --include --trace-ascii log/3/trace125 --trace-config all --trace-time ftp://127.0.0.1:43789/path/to/file/125 > log/3/stdout125 2> log/3/stderr125 === End of file commands.log === Start of file ftp_server.log 19:28:11.447681 ====> Client connect 19:28:11.448642 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:11.450729 < "USER anonymous" 19:28:11.451088 > "331 We are happy you popped in![CR][LF]" 19:28:11.452187 < "PASS ftp@example.com" 19:28:11.452466 > "230 Welcome you silly person[CR][LF]" 19:28:11.453554 < "PWD" 19:28:11.454054 > "257 "/" is current directory[CR][LF]" 19:28:11.455105 < "EPSV" 19:28:11.455304 ====> Passive DATA channel requested by client 19:28:11.455463 DATA sockfilt for passive data channel starting... 19:28:11.463655 DATA sockfilt for passive data channel started (pid 111033) 19:28:11.464383 DATA sockfilt for passive data channel listens on port 32839 19:28:11.464697 > "229 Entering Passive Mode (|||32839|)[LF]" 19:28:11.464864 Client has been notified that DATA conn will be accepted on port 32839 19:28:11.466297 Client connects to port 32839 19:28:11.466647 ====> Client established passive DATA connection on port 32839 19:28:11.467228 < "TYPE I" 19:28:11.467519 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:11.468654 < "SIZE verifiedserver" 19:28:11.468974 > "213 18[CR][LF]" 19:28:11.470182 < "RETR verifiedserver" 19:28:11.470532 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:11.471044 =====> Closing passive DATA connection... 19:28:11.471255 Server disconnects passive DATA connection 19:28:11.473039 Server disconnected passive DATA connection 19:28:11.473322 DATA sockfilt for passive data channel quits (pid 111033) 19:28:11.475421 DATA sockfilt for passive data channel quit (pid 111033) 19:28:11.475651 =====> Closed passive DATA connection 19:28:11.475947 > "226 File transfer complete[CR][LF]" 19:28:11.518640 < "QUIT" 19:28:11.518900 > "221 bye bye baby[CR][LF]" 19:28:11.521022 MAIN sockfilt said DISC 19:28:11.521513 ====> Client disconnected 19:28:11.522090 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.913098 ====> Client connect 19:28:11.914435 Received DATA (on stdin) 19:28:11.914562 > 160 bytes data, server => client 19:28:11.914643 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.914725 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.914797 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.915341 < 16 bytes data, client => server 19:28:11.915559 'USER anonymous\r\n' 19:28:11.917008 Received DATA (on stdin) 19:28:11.917100 > 33 bytes data, server => client 19:28:11.917178 '331 We are happy you popped in!\r\n' 19:28:11.917572 < 22 bytes data, client => server 19:28:11.917697 'PASS ftp@example.com\r\n' 19:28:11.918260 Received DATA (on stdin) 19:28:11.918381 > 30 bytes data, server => client 19:28:11.918450 '230 Welcome you silly person\r\n' 19:28:11.918839 < 5 bytes data, client => server 19:28:11.918963 'PWD\r\n' 19:28:11.919873 Received DATA (on stdin) 19:28:11.920003 > 30 bytes data, server => client 19:28:11.920075 '257 "/" is current directory\r\n' 19:28:11.920497 < 6 bytes data, client => server 19:28:11.920622 'EPSV\r\n' 19:28:11.930495 Received DATA (on stdin) 19:28:11.930615 > 38 bytes data, server => client 19:28:11.930696 '229 Entering Passive Mode (|||32839|)\n' 19:28:11.931767 < 8 bytes data, client => server 19:28:11.931870 'TYPE I\r\n' 19:28:11.933328 Received DATA (on stdin) 19:28:11.933442 > 33 bytes data, server => client 19:28:11.933525 '200 I modify TYPE as you wanted\r\n' 19:28:11.934029 < 21 bytes data, client => server 19:28:11.934158 'SIZE verifiedserver\r\n' 19:28:11.934775 Received DATA (on stdin) 19:28:11.934947 > 8 bytes data, server => client 19:28:11.935027 '213 18\r\n' 19:28:11.935536 < 21 bytes data, client => server 19:28:11.935671 'RETR verifiedserver\r\n' 19:28:11.936319 Received DATA (on stdin) 19:28:11.936431 > 29 bytes data, server => client 19:28:11.936508 '150 Binary junk (18 bytes).\r\n' 19:28:11.941758 Received DATA (on stdin) 19:28:11.942059 > 28 bytes data, server => client 19:28:11.942414 '226 File transfer complete\r\n' 19:28:11.983867 < 6 bytes data, client => server 19:28:11.984017 'QUIT\r\n' 19:28:11.984713 Received DATA (on stdin) 19:28:11.984820 > 18 bytes data, server => client 19:28:11.984896 '221 bye bye baby\r\n' 19:28:11.986354 ====> Client disconnect 19:28:11.988267 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:11.928475 Running IPv4 version 19:28:11.928861 Listening on port 32839 19:28:11.929098 Wrote pid 111033 to log/3/server/ftp_sockdata.pid 19:28:11.929219 Received PING (on stdin) 19:28:11.929807 Received PORT (on stdin) 19:28:11.931547 ====> Client connect 19:28:11.936771 Received DATA (on stdin) 19:28:11.936906 > 18 bytes data, server => client 19:28:11.936996 'WE ROOLZ: 109394\r\n' 19:28:11.937295 Received DISC (on stdin) 19:28:11.937448 ====> Client forcibly disconnected 19:28:11.940166 Received QUIT (on stdin) 19:28:11.940312 quits 19:28:11.940592 ============> sockfilt 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 valgrind125 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): CMD (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/1/valgrind126 ../src/curl -q --output log/1/curl126.out --include --trace-ascii log/1/trace126 --trace-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 126: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/126 > log/1/stdout126 2> log/1/stderr126 === End of file commands.log === Start of file ftp_server.log 19:28:11.512509 ====> Client connect 19:28:11.513334 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:11.514663 < "USER anonymous" 19:28:11.514937 > "331 We are happy you popped in![CR][LF]" 19:28:11.515889 < "PASS ftp@example.com" 19:28:11.516139 > "230 Welcome you silly person[CR][LF]" 19:28:11.517033 < "PWD" 19:28:11.517349 > "257 "/" is current directory[CR][LF]" 19:28:11.518477 < "EPSV" 19:28:11.518669 ====> Passive DATA channel requested by client 19:28:11.518779 DATA sockfilt for passive data channel starting... 19:28:11.527743 DATA sockfilt for passive data channel started (pid 111050) 19:28:11.528477 DATA sockfilt for passive data channel listens on port 40115 19:28:11.528828 > "229 Entering Passive Mode (|||40115|)[LF]" 19:28:11.528997 Client has been notified that DATA conn will be accepted on port 40115 19:28:11.530239 Client connects to port 40115 19:28:11.530488 ====> Client established passive DATA connection on port 40115 19:28:11.531056 < "TYPE I" 19:28:11.531333 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:11.532426 < "SIZE verifiedserver" 19:28:11.532752 > "213 18[CR][LF]" 19:28:11.537101 < "RETR verifiedserver" 19:28:11.537395 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:11.538050 =====> Closing passive DATA connection... 19:28:11.538233 Server disconnects passive DATA connection 19:28:11.539759 Server disconnected passive DATA connection 19:28:11.540002 DATA sockfilt for passive data channel quits (pid 111050) 19:28:11.541133 DATA sockfilt for passive data channel quit (pid 111050) 19:28:11.541352 =====> Closed passive DATA connection 19:28:11.541671 > "226 File transfer complete[CR][LF]" 19:28:11.582787 < "QUIT" 19:28:11.583084 > "221 bye bye baby[CR][LF]" 19:28:11.588582 MAIN sockfilt said DISC 19:28:11.588861 ====> Client disconnected 19:28:11.589179 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.977937 ====> Client connect 19:28:11.979132 Received DATA (on stdin) 19:28:11.979313 > 160 bytes data, server => client 19:28:11.979405 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.979477 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.979538 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.979944 < 16 bytes data, client => server 19:28:11.980055 'USER anonymous\r\n' 19:28:11.980737 Received DATA (on stdin) 19:28:11.980847 > 33 bytes data, server => client 19:28:11.980921 '331 We are happy you popped in!\r\n' 19:28:11.981309 < 22 bytes data, client => server 19:28:11.981424 'PASS ftp@example.com\r\n' 19:28:11.981945 Received DATA (on stdin) 19:28:11.982045 > 30 bytes data, server => client 19:28:11.982117 '230 Welcome you silly person\r\n' 19:28:11.982487 < 5 bytes data, client => server 19:28:11.982591 'PWD\r\n' 19:28:11.983167 Received DATA (on stdin) 19:28:11.983355 > 30 bytes data, server => client 19:28:11.983450 '257 "/" is current directory\r\n' 19:28:11.983893 < 6 bytes data, client => server 19:28:11.984005 'EPSV\r\n' 19:28:11.994642 Received DATA (on stdin) 19:28:11.994782 > 38 bytes data, server => client 19:28:11.994881 '229 Entering Passive Mode (|||40115|)\n' 19:28:11.995828 < 8 bytes data, client => server 19:28:11.995969 'TYPE I\r\n' 19:28:11.997153 Received DATA (on stdin) 19:28:11.997274 > 33 bytes data, server => client 19:28:11.997366 '200 I modify TYPE as you wanted\r\n' 19:28:11.997832 < 21 bytes data, client => server 19:28:11.997970 'SIZE verifiedserver\r\n' 19:28:11.998573 Received DATA (on stdin) 19:28:11.998700 > 8 bytes data, server => client 19:28:11.998779 '213 18\r\n' 19:28:12.002516 < 21 bytes data, client => server 19:28:12.002670 'RETR verifiedserver\r\n' 19:28:12.003197 Received DATA (on stdin) 19:28:12.003385 > 29 bytes data, server => client 19:28:12.003467 '150 Binary junk (18 bytes).\r\n' 19:28:12.007773 Received DATA (on stdin) 19:28:12.007914 > 28 bytes data, server => client 19:28:12.008000 '226 File transfer complete\r\n' 19:28:12.047932 < 6 bytes data, client => server 19:28:12.048076 'QUIT\r\n' 19:28:12.049109 Received DATA (on stdin) 19:28:12.049213 > 18 bytes data, server => client 19:28:12.049283 '221 bye bye baby\r\n' 19:28:12.054177 ====> Client disconnect 19:28:12.055202 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:11.992575 Running IPv4 version 19:28:11.992954 Listening on port 40115 19:28:11.993201 Wrote pid 111050 to log/1/server/ftp_sockdata.pid 19:28:11.993322 Received PING (on stdin) 19:28:11.993859 Received PORT (on stdin) 19:28:11.995866 ====> Client connect 19:28:12.004371 Received DATA (on stdin) 19:28:12.004531 > 18 bytes data, server => client 19:28:12.004620 'WE ROOLZ: 109414\r\n' 19:28:12.004858 Received DISC (on stdin) 19:28:12.004985 ====> Client forcibly disconnected 19:28:12.006020 Received QUIT (on stdin) 19:28:12.006111 quits 19:28:12.006391 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRWEIRDO Testnum 126 === End of file server.cmd === Start of file valgrind126 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. CMD (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/4/valgrind127 ../src/curl -q --output log/4/curl127.out --include --trace-ascii log/4/trace127 --trace-config all --trace-time ftp://127.0.0.1:40809/path/to/file/127 --disable-epsv > log/4/stdout127 2> log/4/stderr127 The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind127 ../src/curl -q --output log/4/curl127.out --include --trace-ascii log/4/trace127 --trace-config all --trace-time ftp://127.0.0.1:40809/path/to/file/127 --disable-epsv > log/4/stdout127 2> log/4/stderr127 127: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind127 ../src/curl -q --output log/4/curl127.out --include --trace-ascii log/4/trace127 --trace-config all --trace-time ftp://127.0.0.1:40809/path/to/file/127 --disable-epsv > log/4/stdout127 2> log/4/stderr127 === End of file commands.log === Start of file ftp_server.log 19:28:11.824975 ====> Client connect 19:28:11.825985 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:11.827997 < "USER anonymous" 19:28:11.828343 > "331 We are happy you popped in![CR][LF]" 19:28:11.830144 < "PASS ftp@example.com" 19:28:11.830442 > "230 Welcome you silly person[CR][LF]" 19:28:11.832054 < "PWD" 19:28:11.832377 > "257 "/" is current directory[CR][LF]" 19:28:11.834123 < "EPSV" 19:28:11.834346 ====> Passive DATA channel requested by client 19:28:11.834491 DATA sockfilt for passive data channel starting... 19:28:11.843466 DATA sockfilt for passive data channel started (pid 111195) 19:28:11.844305 DATA sockfilt for passive data channel listens on port 38619 19:28:11.844702 > "229 Entering Passive Mode (|||38619|)[LF]" 19:28:11.844883 Client has been notified that DATA conn will be accepted on port 38619 19:28:11.846792 Client connects to port 38619 19:28:11.847048 ====> Client established passive DATA connection on port 38619 19:28:11.847606 < "TYPE I" 19:28:11.847899 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:11.849318 < "SIZE verifiedserver" 19:28:11.849727 > "213 18[CR][LF]" 19:28:11.851166 < "RETR verifiedserver" 19:28:11.851462 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:11.851880 =====> Closing passive DATA connection... 19:28:11.852041 Server disconnects passive DATA connection 19:28:11.853798 Server disconnected passive DATA connection 19:28:11.854029 DATA sockfilt for passive data channel quits (pid 111195) 19:28:11.855572 DATA sockfilt for passive data channel quit (pid 111195) 19:28:11.855824 =====> Closed passive DATA connection 19:28:11.856467 > "226 File transfer complete[CR][LF]" 19:28:11.894777 < "QUIT" 19:28:11.895063 > "221 bye bye baby[CR][LF]" 19:28:11.899684 MAIN sockfilt said DISC 19:28:11.899909 ====> Client disconnected 19:28:11.900209 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:11.290342 ====> Client connect 19:28:11.292079 Received DATA (on stdin) 19:28:11.292200 > 160 bytes data, server => client 19:28:11.292282 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:11.292355 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:11.292425 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:11.292979 < 16 bytes data, client => server 19:28:11.293110 'USER anonymous\r\n' 19:28:11.294525 Received DATA (on stdin) 19:28:11.294715 > 33 bytes data, server => client 19:28:11.294807 '331 We are happy you popped in!\r\n' 19:28:11.295307 < 22 bytes data, client => server 19:28:11.295450 'PASS ftp@example.com\r\n' 19:28:11.296486 Received DATA (on stdin) 19:28:11.296606 > 30 bytes data, server => client 19:28:11.296683 '230 Welcome you silly person\r\n' 19:28:11.297232 < 5 bytes data, client => server 19:28:11.297367 'PWD\r\n' 19:28:11.298434 Received DATA (on stdin) 19:28:11.298547 > 30 bytes data, server => client 19:28:11.298622 '257 "/" is current directory\r\n' 19:28:11.299077 < 6 bytes data, client => server 19:28:11.299388 'EPSV\r\n' 19:28:11.310942 Received DATA (on stdin) 19:28:11.311086 > 38 bytes data, server => client 19:28:11.311176 '229 Entering Passive Mode (|||38619|)\n' 19:28:11.312139 < 8 bytes data, client => server 19:28:11.312274 'TYPE I\r\n' 19:28:11.313920 Received DATA (on stdin) 19:28:11.314024 > 33 bytes data, server => client 19:28:11.314095 '200 I modify TYPE as you wanted\r\n' 19:28:11.314534 < 21 bytes data, client => server 19:28:11.314654 'SIZE verifiedserver\r\n' 19:28:11.315785 Received DATA (on stdin) 19:28:11.315893 > 8 bytes data, server => client 19:28:11.315959 '213 18\r\n' 19:28:11.316373 < 21 bytes data, client => server 19:28:11.316487 'RETR verifiedserver\r\n' 19:28:11.318083 Received DATA (on stdin) 19:28:11.318193 > 29 bytes data, server => client 19:28:11.318269 '150 Binary junk (18 bytes).\r\n' 19:28:11.321846 Received DATA (on stdin) 19:28:11.321962 > 28 bytes data, server => client 19:28:11.322080 '226 File transfer complete\r\n' 19:28:11.359927 < 6 bytes data, client => server 19:28:11.360071 'QUIT\r\n' 19:28:11.361058 Received DATA (on stdin) 19:28:11.361195 > 18 bytes data, server => client 19:28:11.361266 '221 bye bye baby\r\n' 19:28:11.365249 ====> Client disconnect 19:28:11.366205 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:11.308350 Running IPv4 version 19:28:11.308709 Listening on port 38619 19:28:11.308946 Wrote pid 111195 to log/4/server/ftp_sockdata.pid 19:28:11.309062 Received PING (on stdin) 19:28:11.309609 Received PORT (on stdin) 19:28:11.312427 ====> Client connect 19:28:11.318629 Received DATA (on stdin) 19:28:11.318765 > 18 bytes data, server => client 19:28:11.318833 'WE ROOLZ: 109451\r\n' 19:28:11.319383 Received DISC (on stdin) 19:28:11.320041 ====> Client forcibly disconnected 19:28:11.320392 Received QUIT (on stdin) 19:28:11.320539 quits 19:28:11.320809 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 127 === End of file server.cmd === Start of file valgrind127 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libcCMD (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-config all --trace-time http://127.0.0.1:37525/129 > log/3/stdout129 2> log/3/stderr129 CMD (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/2/valgrind128 ../src/curl -q --output log/2/curl128.out --include --trace-ascii log/2/trace128 --trace-config all --trace-time ftp://127.0.0.1:43671/128 -T log/2/upload128 --crlf > log/2/stdout128 2> log/2/stderr128 6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind127 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-config all --trace-time http://127.0.0.1:37525/129 > log/3/stdout129 2> log/3/stderr129 129: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/129 > log/3/stdout129 2> log/3/stderr129 === End of file commands.log === Start of file http_server.log 19:28:11.600071 ====> Client connect 19:28:11.600276 accept_connection 3 returned 4 19:28:11.600376 accept_connection 3 returned 0 19:28:11.600808 Read 93 bytes 19:28:11.600924 Process 93 bytes request 19:28:11.600999 Got request: GET /verifiedserver HTTP/1.1 19:28:11.601056 Are-we-friendly question received 19:28:11.601209 Wrote request (93 bytes) input to log/3/server.input 19:28:11.601354 Identifying ourselves as friends 19:28:11.601705 Response sent (57 bytes) and written to log/3/server.response 19:28:11.601788 special request received, no persistency 19:28:11.601842 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 129 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind129 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind129 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/2/valgrind128 ../src/curl -q --output log/2/curl128.out --include --trace-ascii log/2/trace128 --trace-config all --trace-time ftp://127.0.0.1:43671/128 -T log/2/upload128 --crlf > log/2/stdout128 2> log/2/stderr128 128: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind128 ../src/curl -q --output log/2/curl128.out --include --trace-ascii log/2/trace128 --trace-config all --trace-time ftp://127.0.0.1:43671/128 -T log/2/upload128 --crlf > log/2/stdout128 2> log/2/stderr128 === End of file commands.log === Start of file ftp_server.log 19:28:12.085252 ====> Client connect 19:28:12.086200 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.087653 < "USER anonymous" 19:28:12.087956 > "331 We are happy you popped in![CR][LF]" 19:28:12.088930 < "PASS ftp@example.com" 19:28:12.089246 > "230 Welcome you silly person[CR][LF]" 19:28:12.091639 < "PWD" 19:28:12.092021 > "257 "/" is current directory[CR][LF]" 19:28:12.093787 < "EPSV" 19:28:12.094078 ====> Passive DATA channel requested by client 19:28:12.094354 DATA sockfilt for passive data channel starting... 19:28:12.104507 DATA sockfilt for passive data channel started (pid 111266) 19:28:12.105315 DATA sockfilt for passive data channel listens on port 34731 19:28:12.105743 > "229 Entering Passive Mode (|||34731|)[LF]" 19:28:12.105998 Client has been notified that DATA conn will be accepted on port 34731 19:28:12.107236 Client connects to port 34731 19:28:12.107535 ====> Client established passive DATA connection on port 34731 19:28:12.108153 < "TYPE I" 19:28:12.108451 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:12.109557 < "SIZE verifiedserver" 19:28:12.109909 > "213 18[CR][LF]" 19:28:12.110915 < "RETR verifiedserver" 19:28:12.111226 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:12.111721 =====> Closing passive DATA connection... 19:28:12.111894 Server disconnects passive DATA connection 19:28:12.112340 Server disconnected passive DATA connection 19:28:12.112619 DATA sockfilt for passive data channel quits (pid 111266) 19:28:12.115001 DATA sockfilt for passive data channel quit (pid 111266) 19:28:12.115274 =====> Closed passive DATA connection 19:28:12.115573 > "226 File transfer complete[CR][LF]" 19:28:12.154476 < "QUIT" 19:28:12.154803 > "221 bye bye baby[CR][LF]" 19:28:12.155562 MAIN sockfilt said DISC 19:28:12.155860 ====> Client disconnected 19:28:12.156181 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:12.550649 ====> Client connect 19:28:12.551975 Received DATA (on stdin) 19:28:12.552119 > 160 bytes data, server => client 19:28:12.552209 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:12.552293 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:12.552360 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:12.552841 < 16 bytes data, client => server 19:28:12.552976 'USER anonymous\r\n' 19:28:12.553747 Received DATA (on stdin) 19:28:12.553851 > 33 bytes data, server => client 19:28:12.553919 '331 We are happy you popped in!\r\n' 19:28:12.554346 < 22 bytes data, client => server 19:28:12.554460 'PASS ftp@example.com\r\n' 19:28:12.555035 Received DATA (on stdin) 19:28:12.555139 > 30 bytes data, server => client 19:28:12.555268 '230 Welcome you silly person\r\n' 19:28:12.555703 < 5 bytes data, client => server 19:28:12.555818 'PWD\r\n' 19:28:12.557810 Received DATA (on stdin) 19:28:12.557937 > 30 bytes data, server => client 19:28:12.558013 '257 "/" is current directory\r\n' 19:28:12.558466 < 6 bytes data, client => server 19:28:CMD (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/1/valgrind130 ../src/curl -q --output log/1/curl130.out --include --trace-ascii log/1/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc130 ftp://127.0.0.1:39333/ > log/1/stdout130 2> log/1/stderr130 12.558586 'EPSV\r\n' 19:28:12.571517 Received DATA (on stdin) 19:28:12.571658 > 38 bytes data, server => client 19:28:12.571749 '229 Entering Passive Mode (|||34731|)\n' 19:28:12.572654 < 8 bytes data, client => server 19:28:12.572764 'TYPE I\r\n' 19:28:12.574244 Received DATA (on stdin) 19:28:12.574353 > 33 bytes data, server => client 19:28:12.574427 '200 I modify TYPE as you wanted\r\n' 19:28:12.574852 < 21 bytes data, client => server 19:28:12.574981 'SIZE verifiedserver\r\n' 19:28:12.575704 Received DATA (on stdin) 19:28:12.575820 > 8 bytes data, server => client 19:28:12.575887 '213 18\r\n' 19:28:12.576300 < 21 bytes data, client => server 19:28:12.576423 'RETR verifiedserver\r\n' 19:28:12.577004 Received DATA (on stdin) 19:28:12.577114 > 29 bytes data, server => client 19:28:12.577182 '150 Binary junk (18 bytes).\r\n' 19:28:12.581360 Received DATA (on stdin) 19:28:12.581530 > 28 bytes data, server => client 19:28:12.581619 '226 File transfer complete\r\n' 19:28:12.619813 < 6 bytes data, client => server 19:28:12.619977 'QUIT\r\n' 19:28:12.620597 Received DATA (on stdin) 19:28:12.620705 > 18 bytes data, server => client 19:28:12.620774 '221 bye bye baby\r\n' 19:28:12.621120 ====> Client disconnect 19:28:12.621676 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.568977 Running IPv4 version 19:28:12.569323 Listening on port 34731 19:28:12.569618 Wrote pid 111266 to log/2/server/ftp_sockdata.pid 19:28:12.569745 Received PING (on stdin) 19:28:12.570709 Received PORT (on stdin) 19:28:12.572425 ====> Client connect 19:28:12.577401 Received DATA (on stdin) 19:28:12.577530 > 18 bytes data, server => client 19:28:12.577606 'WE ROOLZ: 109411\r\n' 19:28:12.577903 Received DISC (on stdin) 19:28:12.578044 ====> Client forcibly disconnected 19:28:12.578659 Received QUIT (on stdin) 19:28:12.578823 quits 19:28:12.579159 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 128 === End of file server.cmd === Start of file upload128 file with Unix newlines meant to be converted with the --crlf option === End of file upload128 === Start of file valgrind128 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind128 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/1/valgrind130 ../src/curl -q --output log/1/curl130.out --include --trace-ascii log/1/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc130 ftp://127.0.0.1:39333/ > log/1/stdout130 2> log/1/stderr130 130: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind130 ../src/curl -q --output log/1/curl130.out --include --trace-ascii log/1/trace130 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc130 ftp://127.0.0.1:39333/ > log/1/stdout130 2> log/1/stderr130 === End of file commands.log === Start of file ftp_server.log 19:28:12.231379 ====> Client connect 19:28:12.232223 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.234397 < "USER anonymous" 19:28:12.234722 > "331 We are happy you popped in![CR][LF]" 19:28:12.236086 < "PASS ftp@example.com" 19:28:12.236349 > "230 Welcome you silly person[CR][LF]" 19:28:12.237982 < "PWD" 19:28:12.238307 > "257 "/" is current directory[CR][LF]" 19:28:12.239867 < "EPSV" 19:28:12.240080 ====> Passive DATA channel requested by client 19:28:12.240213 DATA sockfilt for passive data channel starting... 19:28:12.247925 DATA sockfilt for passive data channel started (pid 111306) 19:28:12.248643 DATA sockfilt for passive data channel listens on port 40089 19:28:12.248953 > "229 Entering Passive Mode (|||40089|)[LF]" 19:28:12.249091 Client has been notified that DATA conn will be accepted on port 40089 19:28:12.250749 Client connects to port 40089 19:28:12.251180 ====> Client established passive DATA connection on port 40089 19:28:12.251799 < "TYPE I" 19:28:12.252141 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:12.253920 < "SIZE verifiedserver" 19:28:12.254447 > "213 18[CR][LF]" 19:28:12.255985 < "RETR verifiedserver" 19:28:12.256287 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:12.256754 =====> Closing passive DATA connection... 19:28:12.256913 Server disconnects passive DATA connection 19:28:12.258129 Server disconnected passive DATA connection 19:28:12.258388 DATA sockfilt for passive data channel quits (pid 111306) 19:28:12.259468 DATA sockfilt for passive data channel quit (pid 111306) 19:28:12.259702 =====> Closed passive DATA connection 19:28:12.259930 > "226 File transfer complete[CR][LF]" 19:28:12.303159 < "QUIT" 19:28:12.303540 > "221 bye bye baby[CR][LF]" 19:28:12.306543 MAIN sockfilt said DISC 19:28:12.306858 ====> Client disconnected 19:28:12.307255 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:12.696767 ====> Client connect 19:28:12.698297 Received DATA (on stdin) 19:28:12.698399 > 160 bytes data, server => client 19:28:12.698479 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:12.698545 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:12.698616 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:12.699318 < 16 bytes data, client => server 19:28:12.699468 'USER anonymous\r\n' 19:28:12.700741 Received DATA (on stdin) 19:28:12.700855 > 33 bytes data, server => client 19:28:12.700927 '331 We are happy you popped in!\r\n' 19:28:12.701329 < 22 bytes data, client => server 19:28:12.701434 'PASS ftp@example.com\r\n' 19:28:12.702341 Received DATA (on stdin) 19:28:12.702443 > 30 bytes data, server => client 19:28:12.702512 '230 Welcome you silly person\r\n' 19:28:12.702959 < 5 bytes data, client => server 19:28:12.703075 'PWD\r\n' 19:28:12.704320 Received DATA (on stdin) 19:28:12.704434 > 30 bytes data, server => client 19:28:12.704506 '257 "/" is current directory\r\n' 19:28:12.705049 < 6 bytes data, client => server 19:28:12.705183 'EPSV\r\n' 19:28:12.715050 Received DATA (on stdin) 19:28:12.715154 > 38 bytes data, server => client 19:28:12.715281 '229 Entering Passive Mode (|||40089|)\n' 19:28:12.716221 < 8 bytCMD (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/4/valgrind131 ../src/curl -q --output log/4/curl131.out --include --trace-ascii log/4/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc131 ftp://user2@127.0.0.1:40809/ > log/4/stdout131 2> log/4/stderr131 es data, client => server 19:28:12.716348 'TYPE I\r\n' 19:28:12.718181 Received DATA (on stdin) 19:28:12.718309 > 33 bytes data, server => client 19:28:12.718398 '200 I modify TYPE as you wanted\r\n' 19:28:12.718870 < 21 bytes data, client => server 19:28:12.719004 'SIZE verifiedserver\r\n' 19:28:12.720524 Received DATA (on stdin) 19:28:12.720653 > 8 bytes data, server => client 19:28:12.720729 '213 18\r\n' 19:28:12.721174 < 21 bytes data, client => server 19:28:12.721296 'RETR verifiedserver\r\n' 19:28:12.722921 Received DATA (on stdin) 19:28:12.723013 > 29 bytes data, server => client 19:28:12.723099 '150 Binary junk (18 bytes).\r\n' 19:28:12.725924 Received DATA (on stdin) 19:28:12.726033 > 28 bytes data, server => client 19:28:12.726104 '226 File transfer complete\r\n' 19:28:12.768044 < 6 bytes data, client => server 19:28:12.768217 'QUIT\r\n' 19:28:12.769656 Received DATA (on stdin) 19:28:12.769812 > 18 bytes data, server => client 19:28:12.769923 '221 bye bye baby\r\n' 19:28:12.772003 ====> Client disconnect 19:28:12.773456 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.712708 Running IPv4 version 19:28:12.713113 Listening on port 40089 19:28:12.713356 Wrote pid 111306 to log/1/server/ftp_sockdata.pid 19:28:12.713477 Received PING (on stdin) 19:28:12.714044 Received PORT (on stdin) 19:28:12.715960 ====> Client connect 19:28:12.722340 Received DATA (on stdin) 19:28:12.722473 > 18 bytes data, server => client 19:28:12.722555 'WE ROOLZ: 109414\r\n' 19:28:12.722905 Received DISC (on stdin) 19:28:12.723030 ====> Client forcibly disconnected 19:28:12.724358 Received QUIT (on stdin) 19:28:12.724475 quits 19:28:12.724730 ============> 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 valgrind130 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind131 ../src/curl -q --output log/4/curl131.out --include --trace-ascii log/4/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc131 ftp://user2@127.0.0.1:40809/ > log/4/stdout131 2> log/4/stderr131 131: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind131 ../src/curl -q --output log/4/curl131.out --include --trace-ascii log/4/trace131 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc131 ftp://user2@127.0.0.1:40809/ > log/4/stdout131 2> log/4/stderr131 === End of file commands.log === Start of file ftp_server.log 19:28:12.589349 ====> Client connect 19:28:12.590267 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.592307 < "USER anonymous" 19:28:12.592766 > "331 We are happy you popped in![CR][LF]" 19:28:12.593941 < "PASS ftp@example.com" 19:28:12.594447 > "230 Welcome you silly person[CR][LF]" 19:28:12.595459 < "PWD" 19:28:12.595739 > "257 "/" is current directory[CR][LF]" 19:28:12.598187 < "EPSV" 19:28:12.598447 ====> Passive DATA channel requested by client 19:28:12.598589 DATA sockfilt for passive data channel starting... 19:28:12.607227 DATA sockfilt for passive data channel started (pid 111465) 19:28:12.608001 DATA sockfilt for passive data channel listens on port 33525 19:28:12.608354 > "229 Entering Passive Mode (|||33525|)[LF]" 19:28:12.608539 Client has been notified that DATA conn will be accepted on port 33525 19:28:12.609858 Client connects to port 33525 19:28:12.610128 ====> Client established passive DATA connection on port 33525 19:28:12.610800 < "TYPE I" 19:28:12.611167 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:12.612314 < "SIZE verifiedserver" 19:28:12.612675 > "213 18[CR][LF]" 19:28:12.613981 < "RETR verifiedserver" 19:28:12.614340 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:12.615107 =====> Closing passive DATA connection... 19:28:12.615314 Server disconnects passive DATA connection 19:28:12.616495 Server disconnected passive DATA connection 19:28:12.616739 DATA sockfilt for passive data channel quits (pid 111465) 19:28:12.618248 DATA sockfilt for passive data channel quit (pid 111465) 19:28:12.618477 =====> Closed passive DATA connection 19:28:12.618689 > "226 File transfer complete[CR][LF]" 19:28:12.658620 < "QUIT" 19:28:12.658942 > "221 bye bye baby[CR][LF]" 19:28:12.661596 MAIN sockfilt said DISC 19:28:12.662237 ====> Client disconnected 19:28:12.662647 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:12.054745 ====> Client connect 19:28:12.056341 Received DATA (on stdin) 19:28:12.056479 > 160 bytes data, server => client 19:28:12.056565 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:12.056639 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:12.056707 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:12.057167 < 16 bytes data, client => server 19:28:12.057298 'USER anonymous\r\n' 19:28:12.058591 Received DATA (on stdin) 19:28:12.058719 > 33 bytes data, server => client 19:28:12.058800 '331 We are happy you popped in!\r\n' 19:28:12.059271 < 22 bytes data, client => server 19:28:12.059413 'PASS ftp@example.com\r\n' 19:28:12.060236 Received DATA (on stdin) 19:28:12.060347 > 30 bytes data, server => client 19:28:12.060422 '230 Welcome you silly person\r\n' 19:28:12.060813 < 5 bytes data, client => server 19:28:12.060946 'PWD\r\n' 19:28:12.061515 Received DATA (on stdin) 19:28:12.061619 > 30 bytes data, server => client 19:28:12.061688 '257 "/" is current directory\r\n' 19:28:12.063511 < 6 bytes data, client => server 19:28:12.063658 'EPSV\r\n' 19:28:12.074141 Received DATA (on stdin) 19:28:12.074274 > 38 bytes data, server => client 19:28:12.074358 '229 Entering Passive Mode (|||33525|)\n' 19:28:12.075329 < 8 bytes data, clienCMD (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/2/valgrind133 ../src/curl -q --output log/2/curl133.out --include --trace-ascii log/2/trace133 --trace-config all --trace-time -n --netrc-file log/2/netrc133 ftp://mary:mark@127.0.0.1:43671/ > log/2/stdout133 2> log/2/stderr133 CMD (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/valgrind132 ../src/curl -q --output log/3/curl132.out --include --trace-ascii log/3/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc132 ftp://mary:mark@127.0.0.1:43789/ > log/3/stdout132 2> log/3/stderr132 t => server 19:28:12.075465 'TYPE I\r\n' 19:28:12.076948 Received DATA (on stdin) 19:28:12.077088 > 33 bytes data, server => client 19:28:12.077176 '200 I modify TYPE as you wanted\r\n' 19:28:12.077632 < 21 bytes data, client => server 19:28:12.077764 'SIZE verifiedserver\r\n' 19:28:12.078462 Received DATA (on stdin) 19:28:12.078582 > 8 bytes data, server => client 19:28:12.078652 '213 18\r\n' 19:28:12.079089 < 21 bytes data, client => server 19:28:12.079271 'RETR verifiedserver\r\n' 19:28:12.080121 Received DATA (on stdin) 19:28:12.080241 > 29 bytes data, server => client 19:28:12.080323 '150 Binary junk (18 bytes).\r\n' 19:28:12.084483 Received DATA (on stdin) 19:28:12.084609 > 28 bytes data, server => client 19:28:12.084691 '226 File transfer complete\r\n' 19:28:12.123898 < 6 bytes data, client => server 19:28:12.124041 'QUIT\r\n' 19:28:12.124721 Received DATA (on stdin) 19:28:12.124825 > 18 bytes data, server => client 19:28:12.124893 '221 bye bye baby\r\n' 19:28:12.125263 ====> Client disconnect 19:28:12.127995 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.071937 Running IPv4 version 19:28:12.072327 Listening on port 33525 19:28:12.072613 Wrote pid 111465 to log/4/server/ftp_sockdata.pid 19:28:12.072747 Received PING (on stdin) 19:28:12.073376 Received PORT (on stdin) 19:28:12.075468 ====> Client connect 19:28:12.081305 Received DATA (on stdin) 19:28:12.081429 > 18 bytes data, server => client 19:28:12.081509 'WE ROOLZ: 109451\r\n' 19:28:12.082058 Received DISC (on stdin) 19:28:12.082726 ====> Client forcibly disconnected 19:28:12.083047 Received QUIT (on stdin) 19:28:12.083149 quits 19:28:12.083488 ============> 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 valgrind131 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind131 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/2/valgrind133 ../src/curl -q --output log/2/curl133.out --include --trace-ascii log/2/trace133 --trace-config all --trace-time -n --netrc-file log/2/netrc133 ftp://mary:mark@127.0.0.1:43671/ > log/2/stdout133 2> log/2/stderr133 133: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind133 ../src/curl -q --output log/2/curl133.out --include --trace-ascii log/2/trace133 --trace-config all --trace-time -n --netrc-file log/2/netrc133 ftp://mary:mark@127.0.0.1:43671/ > log/2/stdout133 2> log/2/stderr133 === End of file commands.log === Start of file ftp_server.log 19:28:12.809022 ====> Client connect 19:28:12.810673 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.812738 < "USER anonymous" 19:28:12.813054 > "331 We are happy you popped in![CR][LF]" 19:28:12.814306 < "PASS ftp@example.com" 19:28:12.814597 > "230 Welcome you silly person[CR][LF]" 19:28:12.816161 < "PWD" 19:28:12.816530 > "257 "/" is current directory[CR][LF]" 19:28:12.817991 < "EPSV" 19:28:12.818252 ====> Passive DATA channel requested by client 19:28:12.818572 DATA sockfilt for passive data channel starting... 19:28:12.826173 DATA sockfilt for passive data channel started (pid 111525) 19:28:12.827589 DATA sockfilt for passive data channel listens on port 38917 19:28:12.827923 > "229 Entering Passive Mode (|||38917|)[LF]" 19:28:12.828066 Client has been notified that DATA conn will be accepted on port 38917 19:28:12.829331 Client connects to port 38917 19:28:12.829722 ====> Client established passive DATA connection on port 38917 19:28:12.830233 < "TYPE I" 19:28:12.830490 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:12.833606 < "SIZE verifiedserver" 19:28:12.834000 > "213 18[CR][LF]" 19:28:12.836211 < "RETR verifiedserver" 19:28:12.836523 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:12.837008 =====> Closing passive DATA connection... 19:28:12.837202 Server disconnects passive DATA connection 19:28:12.837772 Server disconnected passive DATA connection 19:28:12.838018 DATA sockfilt for passive data channel quits (pid 111525) 19:28:12.839249 DATA sockfilt for passive data channel quit (pid 111525) 19:28:12.839516 =====> Closed passive DATA connection 19:28:12.839771 > "226 File transfer complete[CR][LF]" 19:28:12.878924 < "QUIT" 19:28:12.879225 > "221 bye bye baby[CR][LF]" 19:28:12.880015 MAIN sockfilt said DISC 19:28:12.880304 ====> Client disconnected 19:28:12.880635 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:13.274317 ====> Client connect 19:28:13.276433 Received DATA (on stdin) 19:28:13.276667 > 160 bytes data, server => client 19:28:13.276800 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:13.276928 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:13.276997 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:13.277744 < 16 bytes data, client => server 19:28:13.277912 'USER anonymous\r\n' 19:28:13.278832 Received DATA (on stdin) 19:28:13.279131 > 33 bytes data, server => client 19:28:13.279291 '331 We are happy you popped in!\r\n' 19:28:13.279680 < 22 bytes data, client => server 19:28:13.279799 'PASS ftp@example.com\r\n' 19:28:13.280388 Received DATA (on stdin) 19:28:13.280530 > 30 bytes data, server => client 19:28:13.280607 '230 Welcome you silly person\r\n' 19:28:13.281270 < 5 bytes data, client => server 19:28:13.281467 'PWD\r\n' 19:28:13.282314 Received DATA (on stdin) 19:28:13.282531 > 30 bytes data, server => client 19:28:13.282618 '257 "/" is current directory\r\n' 19:28:13.283367 < 6 bytes data, client => server 19:28:13.283496 'EPSV\r\n' 19:28:13.293688 Received DATA (on stdin) 19:28:13.293808 > 38 bytes data, server => client 19:28:13.293884 '229 Entering Passive Mode (|||38917|)\n' 19:28:13.294673 < 8 bytes data, client => server 19:28:13.294801 'TYPE I\r\n' 19:28:13.296267 Received DATA (on stdin) 19:28:13.296371 > 33 bytes data, server => client 19:28:13.296442 '200 I modify TYPE as you wanted\r\n' 19:28:13.298555 < 21 bytes data, client => server 19:28:13.298697 'SIZE verifiedserver\r\n' 19:28:13.300019 Received DATA (on stdin) 19:28:13.300137 > 8 bytes data, server => client 19:28:13.300207 '213 18\r\n' 19:28:13.301563 < 21 bytes data, client => server 19:28:13.301692 'RETR verifiedserver\r\n' 19:28:13.302296 Received DATA (on stdin) 19:28:13.302409 > 29 bytes data, server => client 19:28:13.302484 '150 Binary junk (18 bytes).\r\n' 19:28:13.305562 Received DATA (on stdin) 19:28:13.305695 > 28 bytes data, server => client 19:28:13.305813 '226 File transfer complete\r\n' 19:28:13.344263 < 6 bytes data, client => server 19:28:13.344413 'QUIT\r\n' 19:28:13.345008 Received DATA (on stdin) 19:28:13.345123 > 18 bytes data, server => client 19:28:13.345193 '221 bye bye baby\r\n' 19:28:13.345548 ====> Client disconnect 19:28:13.346101 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.290984 Running IPv4 version 19:28:12.291429 Listening on port 38917 19:28:12.291637 Wrote pid 111525 to log/2/server/ftp_sockdata.pid 19:28:12.291741 Received PING (on stdin) 19:28:12.292923 Received PORT (on stdin) 19:28:12.294931 ====> Client connect 19:28:12.302738 Received DATA (on stdin) 19:28:12.302870 > 18 bytes data, server => client 19:28:12.302948 'WE ROOLZ: 109411\r\n' 19:28:12.303319 Received DISC (on stdin) 19:28:12.303486 ====> Client forcibly disconnected 19:28:12.303989 Received QUIT (on stdin) 19:28:12.304111 quits 19:28:12.304427 ============> 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 valgrind133 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind133 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/3/valgrind132 ../src/curl -q --output log/3/curl132.out --include --trace-ascii log/3/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc132 ftp://mary:mark@127.0.0.1:43789/ > log/3/stdout132 2> log/3/stderr132 132: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind132 ../src/curl -q --output log/3/curl132.out --include --trace-ascii log/3/trace132 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc132 ftp://mary:mark@127.0.0.1:43789/ > log/3/stdout132 2> log/3/stderr132 === End of file commands.log === Start of file ftp_server.log 19:28:12.755857 ====> Client connect 19:28:12.756689 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.758974 < "USER anonymous" 19:28:12.759296 > "331 We are happy you popped in![CR][LF]" 19:28:12.760790 < "PASS ftp@example.com" 19:28:12.761128 > "230 Welcome you silly person[CR][LF]" 19:28:12.763255 < "PWD" 19:28:12.763669 > "257 "/" is current directory[CR][LF]" 19:28:12.765246 < "EPSV" 19:28:12.765557 ====> Passive DATA channel requested by client 19:28:12.765775 DATA sockfilt for passive data channel starting... 19:28:12.777391 DATA sockfilt for passive data channel started (pid 111514) 19:28:12.778175 DATA sockfilt for passive data channel listens on port 38431 19:28:12.778506 > "229 Entering Passive Mode (|||38431|)[LF]" 19:28:12.778678 Client has been notified that DATA conn will be accepted on port 38431 19:28:12.780428 Client connects to port 38431 19:28:12.780714 ====> Client established passive DATA connection on port 38431 19:28:12.781356 < "TYPE I" 19:28:12.781922 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:12.783313 < "SIZE verifiedserver" 19:28:12.783583 > "213 18[CR][LF]" 19:28:12.784861 < "RETR verifiedserver" 19:28:12.785156 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:12.785684 =====> Closing passive DATA connection... 19:28:12.785884 Server disconnects passive DATA connection 19:28:12.786618 Server disconnected passive DATA connection 19:28:12.786845 DATA sockfilt for passive data channel quits (pid 111514) 19:28:12.787979 DATA sockfilt for passive data channel quit (pid 111514) 19:28:12.788189 =====> Closed passive DATA connection 19:28:12.788762 > "226 File transfer complete[CR][LF]" 19:28:12.831680 < "QUIT" 19:28:12.832001 > "221 bye bye baby[CR][LF]" 19:28:12.833239 MAIN sockfilt said DISC 19:28:12.833542 ====> Client disconnected 19:28:12.833927 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:13.221240 ====> Client connect 19:28:13.222846 Received DATA (on stdin) 19:28:13.222991 > 160 bytes data, server => client 19:28:13.223099 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:13.223282 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:13.223395 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:13.223843 < 16 bytes data, client => server 19:28:13.223973 'USER anonymous\r\n' 19:28:13.225298 Received DATA (on stdin) 19:28:13.225402 > 33 bytes data, server => client 19:28:13.225478 '331 We are happy you popped in!\r\n' 19:28:13.225897 < 22 bytes data, client => server 19:28:13.226029 'PASS ftp@example.com\r\n' 19:28:13.227271 Received DATA (on stdin) 19:28:13.227486 > 30 bytes data, server => client 19:28:13.227627 '230 Welcome you silly person\r\n' 19:28:13.228379 < 5 bytes data, client => server 19:28:13.228504 'PWD\r\n' 19:28:13.229682 Received DATA (on stdin) 19:28:13.229813 > 30 bytes data, server => client 19:28:13.229908 '257 "/" is current directory\r\n' 19:28:13.230348 < 6 bytes data, client => server 19:28:13.230476 'EPSV\r\n' 19:28:13.244682 Received DATA (on stdin) 19:28:13.244834 > 38 bytes data, server => client 19:28:13.245018 '229 Entering Passive Mode (|||38431|)\n' 19:28:13.245966 < 8 bytes data, client => server 19:28:13.246064 'TYPE I\r\n' 19:28:13.247932 Received DATA (on stdin) 19:28:13.248050 > 33 bytes data, server => client 19:28:13.248119 '200 I modify TYPE as you wanted\r\n' 19:28:13.248523 < 21 bytes data, cliCMD (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/1/valgrind134 ../src/curl -q --output log/1/curl134.out --include --trace-ascii log/1/trace134 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:39333/ > log/1/stdout134 2> log/1/stderr134 ent => server 19:28:13.248633 'SIZE verifiedserver\r\n' 19:28:13.249523 Received DATA (on stdin) 19:28:13.249608 > 8 bytes data, server => client 19:28:13.249669 '213 18\r\n' 19:28:13.250043 < 21 bytes data, client => server 19:28:13.250162 'RETR verifiedserver\r\n' 19:28:13.251899 Received DATA (on stdin) 19:28:13.252005 > 29 bytes data, server => client 19:28:13.252161 '150 Binary junk (18 bytes).\r\n' 19:28:13.254158 Received DATA (on stdin) 19:28:13.254259 > 28 bytes data, server => client 19:28:13.254373 '226 File transfer complete\r\n' 19:28:13.296799 < 6 bytes data, client => server 19:28:13.296945 'QUIT\r\n' 19:28:13.298045 Received DATA (on stdin) 19:28:13.298170 > 18 bytes data, server => client 19:28:13.298250 '221 bye bye baby\r\n' 19:28:13.298827 ====> Client disconnect 19:28:13.300411 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.242167 Running IPv4 version 19:28:12.242505 Listening on port 38431 19:28:12.242762 Wrote pid 111514 to log/3/server/ftp_sockdata.pid 19:28:12.242899 Received PING (on stdin) 19:28:12.243571 Received PORT (on stdin) 19:28:12.245756 ====> Client connect 19:28:12.251231 Received DATA (on stdin) 19:28:12.251381 > 18 bytes data, server => client 19:28:12.251468 'WE ROOLZ: 109394\r\n' 19:28:12.251877 Received DISC (on stdin) 19:28:12.252013 ====> Client forcibly disconnected 19:28:12.252801 Received QUIT (on stdin) 19:28:12.252914 quits 19:28:12.253189 ============> 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 valgrind132 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind132 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-config all --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:39333/ > log/1/stdout134 2> log/1/stderr134 134: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --netrc-optional --netrc-file log/1/netrc134 -u romulus:rhemus ftp://mary:mark@127.0.0.1:39333/ > log/1/stdout134 2> log/1/stderr134 === End of file commands.log === Start of file ftp_server.log 19:28:12.978822 ====> Client connect 19:28:12.979768 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:12.981789 < "USER anonymous" 19:28:12.982132 > "331 We are happy you popped in![CR][LF]" 19:28:12.983735 < "PASS ftp@example.com" 19:28:12.984060 > "230 Welcome you silly person[CR][LF]" 19:28:12.985705 < "PWD" 19:28:12.986087 > "257 "/" is current directory[CR][LF]" 19:28:12.988708 < "EPSV" 19:28:12.988987 ====> Passive DATA channel requested by client 19:28:12.989139 DATA sockfilt for passive data channel starting... 19:28:12.996967 DATA sockfilt for passive data channel started (pid 111589) 19:28:12.997860 DATA sockfilt for passive data channel listens on port 38831 19:28:12.998242 > "229 Entering Passive Mode (|||38831|)[LF]" 19:28:12.998408 Client has been notified that DATA conn will be accepted on port 38831 19:28:12.999520 Client connects to port 38831 19:28:12.999783 ====> Client established passive DATA connection on port 38831 19:28:13.000366 < "TYPE I" 19:28:13.000675 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:13.002256 < "SIZE verifiedserver" 19:28:13.014463 > "213 18[CR][LF]" 19:28:13.015382 < "RETR verifiedserver" 19:28:13.016233 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:13.016758 =====> Closing passive DATA connection... 19:28:13.016927 Server disconnects passive DATA connection 19:28:13.017986 Server disconnected passive DATA connection 19:28:13.018242 DATA sockfilt for passive data channel quits (pid 111589) 19:28:13.020270 DATA sockfilt for passive data channel quit (pid 111589) 19:28:13.020502 =====> Closed passive DATA connection 19:28:13.021494 > "226 File transfer complete[CR][LF]" 19:28:13.060308 < "QUIT" 19:28:13.060618 > "221 bye bye baby[CR][LF]" 19:28:13.061629 MAIN sockfilt said DISC 19:28:13.061926 ====> Client disconnected 19:28:13.062236 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:13.444154 ====> Client connect 19:28:13.445798 Received DATA (on stdin) 19:28:13.445897 > 160 bytes data, server => client 19:28:13.445973 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:13.446040 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:13.446100 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:13.446503 < 16 bytes data, client => server 19:28:13.446624 'USER anonymous\r\n' 19:28:13.448174 Received DATA (on stdin) 19:28:13.448305 > 33 bytes data, server => client 19:28:13.448383 '331 We are happy you popped in!\r\n' 19:28:13.448840 < 22 bytes data, client => server 19:28:13.448978 'PASS ftp@example.com\r\n' 19:28:13.450093 Received DATA (on stdin) 19:28:13.450215 > 30 bytes data, server => client 19:28:13.450296 '230 Welcome you silly person\r\n' 19:28:13.450740 < 5 bytes data, client => server 19:28:13.450862 'PWD\r\n' 19:28:13.452183 Received DATA (on stdin) 19:28:13.452326 > 30 bytes data, server => client 19:28:13.452407 '257 "/" is current directory\r\n' 19:28:13.453850 < 6 bytes data, client => server 19:28:13.453974 'EPSV\r\n' 19:28:13.464008 Received DATA (on stdin) 19:28:13.464142 > 38 bytes data, server => client 19:28:13.464228 '229 Entering Passive Mode (|||38831|)\n' 19:28:13.465056 < 8 bytes data, client => server 19:28:13.465194 'TYPE I\r\n' 19:28:13.466443 Received DATA (on stdin) 19:28:13.466595 > 33 bytes data, server => client 19:28:13.466706 '200 I modify TYPE as you wanted\r\n' 19:28:13.467247 < 21 bytes data, client => server 19:28:13.467394 'SIZE verifiedserver\CMD (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/4/valgrind135 ../src/curl -q --output log/4/curl135.out --include --trace-ascii log/4/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:40809/135 > log/4/stdout135 2> log/4/stderr135 r\n' 19:28:13.479496 Received DATA (on stdin) 19:28:13.479716 > 8 bytes data, server => client 19:28:13.479914 '213 18\r\n' 19:28:13.480398 < 21 bytes data, client => server 19:28:13.480522 'RETR verifiedserver\r\n' 19:28:13.481476 Received DATA (on stdin) 19:28:13.481597 > 29 bytes data, server => client 19:28:13.481717 '150 Binary junk (18 bytes).\r\n' 19:28:13.486547 Received DATA (on stdin) 19:28:13.486680 > 28 bytes data, server => client 19:28:13.486881 '226 File transfer complete\r\n' 19:28:13.525419 < 6 bytes data, client => server 19:28:13.525574 'QUIT\r\n' 19:28:13.526598 Received DATA (on stdin) 19:28:13.526702 > 18 bytes data, server => client 19:28:13.526768 '221 bye bye baby\r\n' 19:28:13.527105 ====> Client disconnect 19:28:13.528251 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:12.461159 Running IPv4 version 19:28:12.461530 Listening on port 38831 19:28:12.461782 Wrote pid 111589 to log/1/server/ftp_sockdata.pid 19:28:12.462470 Received PING (on stdin) 19:28:12.463102 Received PORT (on stdin) 19:28:12.465110 ====> Client connect 19:28:12.482901 Received DATA (on stdin) 19:28:12.483012 > 18 bytes data, server => client 19:28:12.483081 'WE ROOLZ: 109414\r\n' 19:28:12.483449 Received DISC (on stdin) 19:28:12.483608 ====> Client forcibly disconnected 19:28:12.484914 Received QUIT (on stdin) 19:28:12.485059 quits 19:28:12.485373 ============> 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 valgrind134 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind135 ../src/curl -q --output log/4/curl135.out --include --trace-ascii log/4/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:40809/135 > log/4/stdout135 2> log/4/stderr135 135: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind135 ../src/curl -q --output log/4/curl135.out --include --trace-ascii log/4/trace135 --trace-config all --trace-time -r 4-16 ftp://127.0.0.1:40809/135 > log/4/stdout135 2> log/4/stderr135 === End of file commands.log === Start of file ftp_server.log 19:28:13.318691 ====> Client connect 19:28:13.319566 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:13.321009 < "USER anonymous" 19:28:13.321314 > "331 We are happy you popped in![CR][LF]" 19:28:13.322427 < "PASS ftp@example.com" 19:28:13.322710 > "230 Welcome you silly person[CR][LF]" 19:28:13.323681 < "PWD" 19:28:13.323961 > "257 "/" is current directory[CR][LF]" 19:28:13.324996 < "EPSV" 19:28:13.325205 ====> Passive DATA channel requested by client 19:28:13.325318 DATA sockfilt for passive data channel starting... 19:28:13.335389 DATA sockfilt for passive data channel started (pid 111730) 19:28:13.336151 DATA sockfilt for passive data channel listens on port 39335 19:28:13.336615 > "229 Entering Passive Mode (|||39335|)[LF]" 19:28:13.337091 Client has been notified that DATA conn will be accepted on port 39335 19:28:13.341197 Client connects to port 39335 19:28:13.341814 ====> Client established passive DATA connection on port 39335 19:28:13.342855 < "TYPE I" 19:28:13.343391 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:13.345004 < "SIZE verifiedserver" 19:28:13.345327 > "213 18[CR][LF]" 19:28:13.346894 < "RETR verifiedserver" 19:28:13.347491 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:13.348342 =====> Closing passive DATA connection... 19:28:13.348636 Server disconnects passive DATA connection 19:28:13.350311 Server disconnected passive DATA connection 19:28:13.350598 DATA sockfilt for passive data channel quits (pid 111730) 19:28:13.352493 DATA sockfilt for passive data channel quit (pid 111730) 19:28:13.352710 =====> Closed passive DATA connection 19:28:13.352913 > "226 File transfer complete[CR][LF]" 19:28:13.390520 < "QUIT" 19:28:13.390801 > "221 bye bye baby[CR][LF]" 19:28:13.394737 MAIN sockfilt said DISC 19:28:13.395002 ====> Client disconnected 19:28:13.395341 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:12.783901 ====> Client connect 19:28:12.785304 Received DATA (on stdin) 19:28:12.785462 > 160 bytes data, server => client 19:28:12.785554 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:12.785637 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:12.785713 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:12.786177 < 16 bytes data, client => server 19:28:12.786310 'USER anonymous\r\n' 19:28:12.787080 Received DATA (on stdin) 19:28:12.787260 > 33 bytes data, server => client 19:28:12.787353 '331 We are happy you popped in!\r\n' 19:28:12.787769 < 22 bytes data, client => server 19:28:12.787892 'PASS ftp@example.com\r\n' 19:28:12.788469 Received DATA (on stdin) 19:28:12.788575 > 30 bytes data, server => client 19:28:12.788649 '230 Welcome you silly person\r\n' 19:28:12.789038 < 5 bytes data, client => server 19:28:12.789161 'PWD\r\n' 19:28:12.789724 Received DATA (on stdin) 19:28:12.789831 > 30 bytes data, server => client 19:28:12.789900 '257 "/" is current directory\r\n' 19:28:12.790347 < 6 bytes data, client => server 19:28:12.790483 'EPSV\r\n' 19:28:12.802347 Received DATA (on stdin) 19:28:12.802669 > 38 bytes data, server => client 19:28:12.802879 '229 Entering Passive Mode (|||39335|)\n' 19:28:12.805346 < 8 bytes data, client => server 19:28:12.805785 'TYPE I\r\n' 19:28:12.809203 Received DATA (on stdin) 19:28:12.809344 > 33 bytes data, server => client 19:28:12.809419 '200 I modify TYPE as you wanted\r\n' 19:28:12.810355 < 21 bytes data, client => server 19:28:12.810490 'SIZE verifiedserver\r\n' 19:28:12.811097 Received DATA (on stdin) 19:28:12.811297 > 8 bytes data, server => client 19:28:12.811379 '213 18\r\n' 19:28:12.812099 < 21 bytes data, client => server 19:28:12.812258 'RETR verifiedserCMD (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/valgrind137 ../src/curl -q --output log/3/curl137.out --include --trace-ascii log/3/trace137 --trace-config all --trace-time ftp://127.0.0.1:43789/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 ver\r\n' 19:28:12.813246 Received DATA (on stdin) 19:28:12.813489 > 29 bytes data, server => client 19:28:12.813700 '150 Binary junk (18 bytes).\r\n' 19:28:12.818682 Received DATA (on stdin) 19:28:12.818794 > 28 bytes data, server => client 19:28:12.818871 '226 File transfer complete\r\n' 19:28:12.855823 < 6 bytes data, client => server 19:28:12.855977 'QUIT\r\n' 19:28:12.856564 Received DATA (on stdin) 19:28:12.856672 > 18 bytes data, server => client 19:28:12.856746 '221 bye bye baby\r\n' 19:28:12.860243 ====> Client disconnect 19:28:12.860790 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:13.800016 Running IPv4 version 19:28:13.800375 Listening on port 39335 19:28:13.800675 Wrote pid 111730 to log/4/server/ftp_sockdata.pid 19:28:13.800905 Received PING (on stdin) 19:28:13.801496 Received PORT (on stdin) 19:28:13.806354 ====> Client connect 19:28:13.814234 Received DATA (on stdin) 19:28:13.814386 > 18 bytes data, server => client 19:28:13.814513 'WE ROOLZ: 109451\r\n' 19:28:13.815719 Received DISC (on stdin) 19:28:13.815986 ====> Client forcibly disconnected 19:28:13.816660 Received QUIT (on stdin) 19:28:13.816850 quits 19:28:13.817430 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 135 === End of file server.cmd === Start of file valgrind135 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind135 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-config all --trace-time ftp://127.0.0.1:43789/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 137: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:43789/blalbla/lululul/137 > log/3/stdout137 2> log/3/stderr137 === End of file commands.log === Start of file ftp_server.log 19:28:13.555663 ====> Client connect 19:28:13.556613 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:13.558118 < "USER anonymous" 19:28:13.558381 > "331 We are happy you popped in![CR][LF]" 19:28:13.559653 < "PASS ftp@example.com" 19:28:13.559887 > "230 Welcome you silly person[CR][LF]" 19:28:13.569200 < "PWD" 19:28:13.569934 > "257 "/" is current directory[CR][LF]" 19:28:13.571315 < "EPSV" 19:28:13.571642 ====> Passive DATA channel requested by client 19:28:13.571899 DATA sockfilt for passive data channel starting... 19:28:13.586111 DATA sockfilt for passive data channel started (pid 111808) 19:28:13.586977 DATA sockfilt for passive data channel listens on port 37855 19:28:13.587317 > "229 Entering Passive Mode (|||37855|)[LF]" 19:28:13.587473 Client has been notified that DATA conn will be accepted on port 37855 19:28:13.588525 Client connects to port 37855 19:28:13.588866 ====> Client established passive DATA connection on port 37855 19:28:13.589589 < "TYPE I" 19:28:13.589950 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:13.591017 < "SIZE verifiedserver" 19:28:13.591344 > "213 18[CR][LF]" 19:28:13.592509 < "RETR verifiedserver" 19:28:13.592826 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:13.593320 =====> Closing passive DATA connection... 19:28:13.593649 Server disconnects passive DATA connection 19:28:13.594271 Server disconnected passive DATA connection 19:28:13.594517 DATA sockfilt for passive data channel quits (pid 111808) 19:28:13.597611 DATA sockfilt for passive data channel quit (pid 111808) 19:28:13.597871 =====> Closed passive DATA connection 19:28:13.598189 > "226 File transfer complete[CR][LF]" 19:28:13.635866 < "QUIT" 19:28:13.636217 > "221 bye bye baby[CR][LF]" 19:28:13.639358 MAIN sockfilt said DISC 19:28:13.639602 ====> Client disconnected 19:28:13.639934 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.021040 ====> Client connect 19:28:14.022108 Received DATA (on stdin) 19:28:14.022217 > 160 bytes data, server => client 19:28:14.022550 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.022634 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.022692 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.023081 < 16 bytes data, client => server 19:28:14.023257 'USER anonymous\r\n' 19:28:14.024310 Received DATA (on stdin) 19:28:14.024398 > 33 bytes data, server => client 19:28:14.024468 '331 We are happy you popped in!\r\n' 19:28:14.024840 < 22 bytes data, client => server 19:28:14.024954 'PASS ftp@example.com\r\n' 19:28:14.025810 Received DATA (on stdin) 19:28:14.025897 > 30 bytes data, server => client 19:28:14.025964 '230 Welcome you silly person\r\n' 19:28:14.033614 < 5 bytes data, client => server 19:28:14.033858 'PWD\r\n' 19:28:14.035963 Received DATA (on stdin) 19:28:14.036067 > 30 bytes data, server => client 19:28:14.036141 '257 "/" is current directory\r\n' 19:28:14.036571 < 6 bytes data, client => server 19:28:14.036700 'EPSV\r\n' 19:28:14.053075 Received DATA (on stdin) 19:28:14.053204 > 38 bytes data, server => client 19:28:14.053283 '229 Entering Passive Mode (|||37855|)\n' 19:28:14.054070 < 8 bytes data, client => server 19:28:14.054203 'TYPE I\r\n' 19:28:14.055699 Received DATA (on stdin) 19:28:14.055836 > 33 bytes data, server => client 19:28:14.055918 '200 I modify TYPE as you wanted\r\n' 19:28:14.056323 < 21 bytes data, client => server 19:28:14.056467 'SIZE verifiedserver\r\n' 19:28:14.057096 Received DATA (on stdin) 19:28:14.057207 > 8 bytes data, server => client 19:28:14.057299 '213 18\r\n' 19:28:14.057864 < 21 bytes data, client => server 19:28:14.057980 'RETR verifiedserver\r\n' 19:28:14.058580 Received DATA (on stdin) 19:28:14.058693 > 29 bytes data, server => client 19:28:14.058765 '150 Binary junk (18 bytes).\r\n' 19:28:14.063939 Received DATA (on stdin) 19:28:14.064126 > 28 bytes data, server => client 19:28:14.064234 '226 File transfer complete\r\n' 19:28:14.100008 < 6 bytes data, client => server 19:28:14.100165 'QUIT\r\n' 19:28:14.1019CMD (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/2/valgrind136 ../src/curl -q --output log/2/curl136.out --include --trace-ascii log/2/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:43671/136 > log/2/stdout136 2> log/2/stderr136 87 Received DATA (on stdin) 19:28:14.102113 > 18 bytes data, server => client 19:28:14.102192 '221 bye bye baby\r\n' 19:28:14.104824 ====> Client disconnect 19:28:14.105930 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:13.050801 Running IPv4 version 19:28:13.051264 Listening on port 37855 19:28:13.051546 Wrote pid 111808 to log/3/server/ftp_sockdata.pid 19:28:13.051663 Received PING (on stdin) 19:28:13.052203 Received PORT (on stdin) 19:28:13.054113 ====> Client connect 19:28:13.059298 Received DATA (on stdin) 19:28:13.059444 > 18 bytes data, server => client 19:28:13.059531 'WE ROOLZ: 109394\r\n' 19:28:13.059781 Received DISC (on stdin) 19:28:13.059944 ====> Client forcibly disconnected 19:28:13.062212 Received QUIT (on stdin) 19:28:13.062354 quits 19:28:13.062642 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd RETRNOSIZE Testnum 137 === End of file server.cmd === Start of file valgrind137 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind137 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/2/valgrind136 ../src/curl -q --output log/2/curl136.out --include --trace-ascii log/2/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:43671/136 > log/2/stdout136 2> log/2/stderr136 136: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind136 ../src/curl -q --output log/2/curl136.out --include --trace-ascii log/2/trace136 --trace-config all --trace-time -u user: ftp://127.0.0.1:43671/136 > log/2/stdout136 2> log/2/stderr136 === End of file commands.log === Start of file ftp_server.log 19:28:13.507682 ====> Client connect 19:28:13.508531 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:13.510096 < "USER anonymous" 19:28:13.510432 > "331 We are happy you popped in![CR][LF]" 19:28:13.511389 < "PASS ftp@example.com" 19:28:13.511671 > "230 Welcome you silly person[CR][LF]" 19:28:13.512616 < "PWD" 19:28:13.512929 > "257 "/" is current directory[CR][LF]" 19:28:13.514083 < "EPSV" 19:28:13.514354 ====> Passive DATA channel requested by client 19:28:13.514494 DATA sockfilt for passive data channel starting... 19:28:13.523501 DATA sockfilt for passive data channel started (pid 111793) 19:28:13.524310 DATA sockfilt for passive data channel listens on port 43027 19:28:13.524675 > "229 Entering Passive Mode (|||43027|)[LF]" 19:28:13.524829 Client has been notified that DATA conn will be accepted on port 43027 19:28:13.526784 Client connects to port 43027 19:28:13.527073 ====> Client established passive DATA connection on port 43027 19:28:13.527701 < "TYPE I" 19:28:13.527992 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:13.529078 < "SIZE verifiedserver" 19:28:13.529539 > "213 18[CR][LF]" 19:28:13.530737 < "RETR verifiedserver" 19:28:13.531113 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:13.531582 =====> Closing passive DATA connection... 19:28:13.531742 Server disconnects passive DATA connection 19:28:13.532074 Server disconnected passive DATA connection 19:28:13.532256 DATA sockfilt for passive data channel quits (pid 111793) 19:28:13.533622 DATA sockfilt for passive data channel quit (pid 111793) 19:28:13.533861 =====> Closed passive DATA connection 19:28:13.534085 > "226 File transfer complete[CR][LF]" 19:28:13.575058 < "QUIT" 19:28:13.575655 > "221 bye bye baby[CR][LF]" 19:28:13.583428 MAIN sockfilt said DISC 19:28:13.583717 ====> Client disconnected 19:28:13.584033 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:13.973047 ====> Client connect 19:28:13.974271 Received DATA (on stdin) 19:28:13.974422 > 160 bytes data, server => client 19:28:13.974506 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:13.974579 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:13.974656 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:13.975118 < 16 bytes data, client => server 19:28:13.975321 'USER anonymous\r\n' 19:28:13.976184 Received DATA (on stdin) 19:28:13.976303 > 33 bytes data, server => client 19:28:13.976375 '331 We are happy you popped in!\r\n' 19:28:13.976756 < 22 bytes data, client => server 19:28:13.976873 'PASS ftp@example.com\r\n' 19:28:13.977433 Received DATA (on stdin) 19:28:13.977546 > 30 bytes data, server => client 19:28:13.977617 '230 Welcome you silly person\r\n' 19:28:13.977991 < 5 bytes data, client => server 19:28:13.978098 'PWD\r\n' 19:28:13.978696 Received DATA (on stdin) 19:28:13.978821 > 30 bytes data, server => client 19:28:13.978903 '257 "/" is current directory\r\n' 19:28:13.979423 < 6 bytes data, client => server 19:28:13.979559 'EPSV\r\n' 19:28:13.990437 Received DATA (on stdin) 19:28:13.990554 > 38 bytes data, server => client 19:28:13.990624 '229 Entering Passive Mode (|||43027|)\n' 19:28:13.991834 < 8 bytes data, client => server 19:28:13.992001 'TYPE I\r\n' 19:28:13.993741 Received DATA (on stdin) 19:28:13.993862 > 33 bytes data, server => client 19:28:13.993946 '200 I modify TYPE as you wanted\r\n' 19:28:13.994421 < 21 bytes data, client => server 19:28:13.994563 'SIZE verifiedserver\r\n' 19:28:13.995243 Received DATA (on stdin) 19:28:13.995389 > 8 bytes data, server => client 19:28:13.995464 '213 18\r\n' 19:28:13.995932 < 21 bytes data, client => server 19:28:13.996064 'RETR verifiedserver\r\n' 19:28:13.996873 Received DATA (on stdin) 19:28:13.996995 > 29 bytes data, server => client 19:28:13.997065 '150 Binary junk (18 bytes).\r\n' 19:28:13.999850 Received DATA (on stdin) 19:28:13.999968 > 28 bytes data, server => client 19:28:14.000049 '226 File transfer complete\r\n' 19:28:14.040113 < 6 bytes data, client => server 19:28:14.040315 'QUIT\r\n' 19:28:14.041399 Received DATA (on stdin) 19:28:14.041687 > 18 bytes data, server => client 19:28:14.041839 '221 bye bye baby\r\n' 19:28:14.048914 ====> Client disconnect 19:28:14.049487 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:13.988077 Running IPv4 version 19:28:13.988510 Listening on port 43027 19:28:13.988900 Wrote pid 111793 to log/2/server/ftCMD (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/1/valgrind138 ../src/curl -q --output log/1/curl138.out --include --trace-ascii log/1/trace138 --trace-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/138 > log/1/stdout138 2> log/1/stderr138 p_sockdata.pid 19:28:13.989023 Received PING (on stdin) 19:28:13.989603 Received PORT (on stdin) 19:28:13.992249 ====> Client connect 19:28:13.997289 Received DATA (on stdin) 19:28:13.997409 > 18 bytes data, server => client 19:28:13.997480 'WE ROOLZ: 109411\r\n' 19:28:13.997661 Received DISC (on stdin) 19:28:13.997779 ====> Client forcibly disconnected 19:28:13.998405 Received QUIT (on stdin) 19:28:13.998527 quits 19:28:13.998788 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 136 === End of file server.cmd === Start of file valgrind136 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind136 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/1/valgrind138 ../src/curl -q --output log/1/curl138.out --include --trace-ascii log/1/trace138 --trace-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/138 > log/1/stdout138 2> log/1/stderr138 138: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind138 ../src/curl -q --output log/1/curl138.out --include --trace-ascii log/1/trace138 --trace-config all --trace-time ftp://127.0.0.1:39333/blalbla/lululul/138 > log/1/stdout138 2> log/1/stderr138 === End of file commands.log === Start of file ftp_server.log 19:28:13.734415 ====> Client connect 19:28:13.735162 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:13.736775 < "USER anonymous" 19:28:13.737162 > "331 We are happy you popped in![CR][LF]" 19:28:13.741882 < "PASS ftp@example.com" 19:28:13.742181 > "230 Welcome you silly person[CR][LF]" 19:28:13.743227 < "PWD" 19:28:13.743584 > "257 "/" is current directory[CR][LF]" 19:28:13.744690 < "EPSV" 19:28:13.744959 ====> Passive DATA channel requested by client 19:28:13.745121 DATA sockfilt for passive data channel starting... 19:28:13.754634 DATA sockfilt for passive data channel started (pid 111867) 19:28:13.755411 DATA sockfilt for passive data channel listens on port 37991 19:28:13.755797 > "229 Entering Passive Mode (|||37991|)[LF]" 19:28:13.755993 Client has been notified that DATA conn will be accepted on port 37991 19:28:13.757035 Client connects to port 37991 19:28:13.757518 ====> Client established passive DATA connection on port 37991 19:28:13.758344 < "TYPE I" 19:28:13.758691 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:13.759781 < "SIZE verifiedserver" 19:28:13.760108 > "213 18[CR][LF]" 19:28:13.761070 < "RETR verifiedserver" 19:28:13.761403 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:13.762158 =====> Closing passive DATA connection... 19:28:13.762702 Server disconnects passive DATA connection 19:28:13.762935 Fancy that; client wants to DISC, too 19:28:13.763157 Server disconnected passive DATA connection 19:28:13.763413 DATA sockfilt for passive data channel quits (pid 111867) 19:28:13.765632 DATA sockfilt for passive data channel quit (pid 111867) 19:28:13.765903 =====> Closed passive DATA connection 19:28:13.766167 > "226 File transfer complete[CR][LF]" 19:28:13.806568 < "QUIT" 19:28:13.806915 > "221 bye bye baby[CR][LF]" 19:28:13.811768 MAIN sockfilt said DISC 19:28:13.812056 ====> Client disconnected 19:28:13.812412 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.199775 ====> Client connect 19:28:14.201171 Received DATA (on stdin) 19:28:14.201278 > 160 bytes data, server => client 19:28:14.201356 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.201423 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.201480 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.201880 < 16 bytes data, client => server 19:28:14.202001 'USER anonymous\r\n' 19:28:14.203295 Received DATA (on stdin) 19:28:14.203571 > 33 bytes data, server => client 19:28:14.203731 '331 We are happy you popped in!\r\n' 19:28:14.207106 < 22 bytes data, client => server 19:28:14.207351 'PASS ftp@example.com\r\n' 19:28:14.207932 Received DATA (on stdin) 19:28:14.208035 > 30 bytes data, server => client 19:28:14.208104 '230 Welcome you silly person\r\n' 19:28:14.208543 < 5 bytes data, client => server 19:28:14.208675 'PWD\r\n' 19:28:14.209344 Received DATA (on stdin) 19:28:14.209456 > 30 bytes data, server => client 19:28:14.209534 '257 "/" is current directory\r\n' 19:28:14.209996 < 6 bytes data, client => server 19:28:14.210126 'EPSV\r\n' 19:28:14.221538 Received DATA (on stdin) 19:28:14.221674 > 38 bytes data, server => client 19:28:14.221754 '229 Entering Passive Mode (|||37991|)\n' 19:28:14.222764 < 8 bytes data, client => server 19:28:14.222955 'TYPE I\r\n' 19:28:14.224472 Received DATA (on stdin) 19:28:14.224600 > 33 bytes data, server => client 19:28:14.224680 '200 I modify TYPE as you wanted\r\n' 19:28:14.225121 < 21 bytes data, client => server 19:28:14.225248 'SIZE verifiedserver\r\n' 19:28:14.225863 Received DATA (on stdin) 19:28:14.225978 > 8 bytes data, server => client 19:28:14.226047 '213 18\r\n' 19:28:14.226440 < 21 bytes data, client => server 19:28:14.226554 'RETR verifiedserver\r\n' 19:28:14.227219 Received DATA (on stdin) 19:28:14.227387 > 29 bytes data, server => client 19:28:14.227479 '150 Binary junk (18 bytes).\r\n' 19:28:14.232365 Received DATA (on stdin) 19:28:14.232526 > 28 bytes data, server => client 19:28:14.232608 '226 File transfer complete\r\n' 19:28:14.271866 < 6 bytes data, client => server 19:28:14.272022 'QUIT\r\n' 19:28:14.273508 Received DATA (on stdin) 19:28:14.273652 > 18 bytes data, server => client 19:28:14.273731 '221 bye bye baby\r\n' 19:28:14.277239 ====> Client disconnect 19:28:14.278415 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:13.219276 Running IPv4 version 19:28:13.219716 Listening on port 37991 19:28:13.219991 Wrote pid 111867 to log/1/server/ftp_sockdata.pid 19:28:13.220124 Received PING (on stdin) 19:28:13.220738 Received PORT (on stdin) 19:28:13.222493 ====> Client connect 19:28:13.227701 Received DATA (on stdin) 19:28:13.227829 > 18 bytes data, server => client 19:28:13.227904 'WE ROOLZ: 109414\r\n' 19:28:13.228323 ====> Client disconnect 1CMD (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/4/valgrind139 ../src/curl -q --output log/4/curl139.out --include --trace-ascii log/4/trace139 --trace-config all --trace-time ftp://127.0.0.1:40809/blalbla/139 -z "1 jan 1989" > log/4/stdout139 2> log/4/stderr139 9:28:13.228693 Received DISC (on stdin) 19:28:13.228788 Crikey! Client also wants to disconnect 19:28:13.228875 Received ACKD (on stdin) 19:28:13.229619 Received QUIT (on stdin) 19:28:13.229749 quits 19:28:13.230023 ============> 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 valgrind138 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind139 ../src/curl -q --output log/4/curl139.out --include --trace-ascii log/4/trace139 --trace-config all --trace-time ftp://127.0.0.1:40809/blalbla/139 -z "1 jan 1989" > log/4/stdout139 2> log/4/stderr139 139: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind139 ../src/curl -q --output log/4/curl139.out --include --trace-ascii log/4/trace139 --trace-config all --trace-time ftp://127.0.0.1:40809/blalbla/139 -z "1 jan 1989" > log/4/stdout139 2> log/4/stderr139 === End of file commands.log === Start of file ftp_server.log 19:28:14.015955 ====> Client connect 19:28:14.016878 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.018285 < "USER anonymous" 19:28:14.018601 > "331 We are happy you popped in![CR][LF]" 19:28:14.019553 < "PASS ftp@example.com" 19:28:14.019834 > "230 Welcome you silly person[CR][LF]" 19:28:14.020785 < "PWD" 19:28:14.021090 > "257 "/" is current directory[CR][LF]" 19:28:14.022199 < "EPSV" 19:28:14.022454 ====> Passive DATA channel requested by client 19:28:14.022606 DATA sockfilt for passive data channel starting... 19:28:14.030735 DATA sockfilt for passive data channel started (pid 111990) 19:28:14.031496 DATA sockfilt for passive data channel listens on port 40543 19:28:14.031815 > "229 Entering Passive Mode (|||40543|)[LF]" 19:28:14.031977 Client has been notified that DATA conn will be accepted on port 40543 19:28:14.032909 Client connects to port 40543 19:28:14.033124 ====> Client established passive DATA connection on port 40543 19:28:14.033818 < "TYPE I" 19:28:14.034166 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.035217 < "SIZE verifiedserver" 19:28:14.035565 > "213 18[CR][LF]" 19:28:14.036587 < "RETR verifiedserver" 19:28:14.036883 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.037363 =====> Closing passive DATA connection... 19:28:14.037653 Server disconnects passive DATA connection 19:28:14.038824 Server disconnected passive DATA connection 19:28:14.039056 DATA sockfilt for passive data channel quits (pid 111990) 19:28:14.040158 DATA sockfilt for passive data channel quit (pid 111990) 19:28:14.040380 =====> Closed passive DATA connection 19:28:14.040597 > "226 File transfer complete[CR][LF]" 19:28:14.078641 < "QUIT" 19:28:14.078970 > "221 bye bye baby[CR][LF]" 19:28:14.079791 MAIN sockfilt said DISC 19:28:14.080051 ====> Client disconnected 19:28:14.080356 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:13.481291 ====> Client connect 19:28:13.482607 Received DATA (on stdin) 19:28:13.482754 > 160 bytes data, server => client 19:28:13.482842 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:13.482917 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:13.482983 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:13.483445 < 16 bytes data, client => server 19:28:13.483587 'USER anonymous\r\n' 19:28:13.484348 Received DATA (on stdin) 19:28:13.484449 > 33 bytes data, server => client 19:28:13.484514 '331 We are happy you popped in!\r\n' 19:28:13.484902 < 22 bytes data, client => server 19:28:13.485030 'PASS ftp@example.com\r\n' 19:28:13.485578 Received DATA (on stdin) 19:28:13.485685 > 30 bytes data, server => client 19:28:13.485754 '230 Welcome you silly person\r\n' 19:28:13.486127 < 5 bytes data, client => server 19:28:13.486245 'PWD\r\n' 19:28:13.486832 Received DATA (on stdin) 19:28:13.486962 > 30 bytes data, server => client 19:28:13.487040 '257 "/" is current directory\r\n' 19:28:13.487528 < 6 bytes data, client => server 19:28:13.487668 'EPSV\r\n' 19:28:13.497579 Received DATA (on stdin) 19:28:13.497705 > 38 bytes data, server => client 19:28:13.497786 '229 Entering Passive Mode (|||40543|)\n' 19:28:13.498636 < 8 bytes data, client => server 19:28:13.498740 'TYPE I\r\n' 19:28:13.499915 Received DATA (on stdin) 19:28:13.500056 > 33 bytes data, server => client 19:28:13.500139 '200 I modify TYPE as you wanted\r\n' 19:28:13.500565 < 21 bytes data, client => server 19:28:13.500690 'SIZE verifiedserver\r\n' 19:28:13.501312 Received DATA (on stdin) 19:28:13.501438 > 8 bytes data, server => client 19:28:13.501511 '213 18\r\n' 19:28:13.501925 < 21 bytes data, client => server 19:28:13.502058 'RETR verifiedserver\r\n' 19:28:13.502650 Received DATA (on stdin) 19:28:13.502757 > 29 bytes data, server => client 19:28:13.502832 '150 Binary junk (18 bytes).\r\n' 19:28:13.506351 Received DATA (on stdin) 19:28:13.506468 > 28 bytes data, server => client 19:28:13.506548 '226 File transfer complete\r\n' 19:28:13.543919 < 6 bytes data, client => server 19:28:13.544082 'QUIT\r\n' 19:28:13.544710 Received DATA (on stdin) 19:28:13.544828 > 18 bytes data, server => client 19:28:13.544914 '221 bye bye baby\r\n' 19:28:13.545301 ====> Client disconnect 19:28:13.545807 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.495606 Running IPv4 version 19:28:14.495962 Listening on port 40543 19:28:14.496169 Wrote pid 111990 to log/4/server/ftp_sockdata.pid 19:28:14.496270 Received PING (on stdin) 19:28:14.496837 Received PORT (on stdin) 19:28:14.498432 ====> Client connect 19:28:14.503592 Received DATA (on stdin) 19:28:14.503699 > 18 bytes data, server => client 19:28:14.503811 'WE ROOLZ: 109451\r\n' 19:28:14.504139 Received DISC (on stdin) 19:28:14.504271 ====> Client forcibly disconnected 19:28:14.505009 Received QUIT (on stdin) 19:28:14.505101 quits 19:28:14.505359 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 139 ===CMD (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/2/valgrind141 ../src/curl -q --include --trace-ascii log/2/trace141 --trace-config all --trace-time ftp://127.0.0.1:43671/blalbla/141 -I > log/2/stdout141 2> log/2/stderr141 End of file server.cmd === Start of file valgrind139 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind139 CMD (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/valgrind140 ../src/curl -q --output log/3/curl140.out --include --trace-ascii log/3/trace140 --trace-config all --trace-time ftp://127.0.0.1:43789/blalbla/140 -z "1 jan 2004" > log/3/stdout140 2> log/3/stderr140 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/2/valgrind141 ../src/curl -q --include --trace-ascii log/2/trace141 --trace-config all --trace-time ftp://127.0.0.1:43671/blalbla/141 -I > log/2/stdout141 2> log/2/stderr141 141: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:14.776534309 +0000 +++ log/2/check-generated 2025-05-23 19:28:14.776534309 +0000 @@ -1,3 +0,0 @@ -Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF] -Content-Length: 42[CR][LF] -Accept-ranges: bytes[CR][LF] == Contents of files in the log/2/ dir after test 141 === Start of file check-expected Last-Modified: Wed, 09 Apr 2003 10:26:59 GMT[CR][LF] Content-Length: 42[CR][LF] Accept-ranges: bytes[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind141 ../src/curl -q --include --trace-ascii log/2/trace141 --trace-config all --trace-time ftp://127.0.0.1:43671/blalbla/141 -I > log/2/stdout141 2> log/2/stderr141 === End of file commands.log === Start of file ftp_server.log 19:28:14.267842 ====> Client connect 19:28:14.268595 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.269974 < "USER anonymous" 19:28:14.270302 > "331 We are happy you popped in![CR][LF]" 19:28:14.271306 < "PASS ftp@example.com" 19:28:14.271589 > "230 Welcome you silly person[CR][LF]" 19:28:14.272543 < "PWD" 19:28:14.272843 > "257 "/" is current directory[CR][LF]" 19:28:14.274112 < "EPSV" 19:28:14.274323 ====> Passive DATA channel requested by client 19:28:14.274442 DATA sockfilt for passive data channel starting... 19:28:14.283714 DATA sockfilt for passive data channel started (pid 112067) 19:28:14.284907 DATA sockfilt for passive data channel listens on port 37529 19:28:14.285478 > "229 Entering Passive Mode (|||37529|)[LF]" 19:28:14.285697 Client has been notified that DATA conn will be accepted on port 37529 19:28:14.287244 Client connects to port 37529 19:28:14.287667 ====> Client established passive DATA connection on port 37529 19:28:14.288652 < "TYPE I" 19:28:14.288961 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.290007 < "SIZE verifiedserver" 19:28:14.290358 > "213 18[CR][LF]" 19:28:14.291329 < "RETR verifiedserver" 19:28:14.291691 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.292501 =====> Closing passive DATA connection... 19:28:14.293302 Server disconnects passive DATA connection 19:28:14.294040 Fancy that; client wants to DISC, too 19:28:14.294567 Server disconnected passive DATA connection 19:28:14.294811 DATA sockfilt for passive data channel quits (pid 112067) 19:28:14.296562 DATA sockfilt for passive data channel quit (pid 112067) 19:28:14.296873 =====> Closed passive DATA connection 19:28:14.297085 > "226 File transfer complete[CR][LF]" 19:28:14.298495 < "QUIT" 19:28:14.298774 > "221 bye bye baby[CR][LF]" 19:28:14.304091 MAIN sockfilt said DISC 19:28:14.304753 ====> Client disconnected 19:28:14.305114 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.733185 ====> Client connect 19:28:14.734319 Received DATA (on stdin) 19:28:14.734442 > 160 bytes data, server => client 19:28:14.734523 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.734593 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.734656 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.735045 < 16 bytes data, client => server 19:28:14.735224 'USER anonymous\r\n' 19:28:14.736035 Received DATA (on stdin) 19:28:14.736143 > 33 bytes data, server => client 19:28:14.736227 '331 We are happy you popped in!\r\n' 19:28:14.736634 < 22 bytes data, client => server 19:28:14.736756 'PASS ftp@example.com\r\n' 19:28:14.737329 Received DATA (on stdin) 19:28:14.737430 > 30 bytes data, server => client 19:28:14.737502 '230 Welcome you silly person\r\n' 19:28:14.737880 < 5 bytes data, client => server 19:28:14.738001 'PWD\r\n' 19:28:14.738577 Received DATA (on stdin) 19:28:14.738707 > 30 bytes data, server => client 19:28:14.738797 '257 "/" is current directory\r\n' 19:28:14.739315 < 6 bytes data, client => server 19:28:14.739443 'EPSV\r\n' 19:28:14.751242 Received DATA (on stdin) 19:28:14.751373 > 38 bytes data, server => client 19:28:14.751443 '229 Entering Passive Mode (|||37529|)\n' 19:28:14.752888 < 8 bytes data, client => server 19:28:14.752998 'TYPE I\r\n' 19:28:14.754709 Received DATA (on stdin) 19:28:14.754817 > 33 bytes data, server => client 19:28:14.754887 '200 I modify TYPE as you wanted\r\n' 19:28:14.755319 < 21 bytes data, client => server 19:28:14.755451 'SIZE verifiedserver\r\n' 19:28:14.756091 Received DATA (on stdin) 19:28:14.756211 > 8 bytes data, server => client 19:28:14.756278 '213 18\r\n' 19:28:14.756665 < 21 bytes data, client => server 19:28:14.756780 'RETR verifiedserver\r\n' 19:28:14.757430 Received DATA (on stdin) 19:28:14.757555 > 29 bytes data, server => client 19:28:14.757628 '150 Binary junk (18 bytes).\r\n' 19:28:14.762827 Received DATA (on stdin) 19:28:14.762946 > 28 bytes data, server => client 19:28:14.763027 '226 File transfer complete\r\n' 19:28:14.763658 < 6 bytes data, client => server 19:28:14.763793 'QUIT\r\n' 19:28:14.764518 Received DATA (on stdin) 19:28:14.764619 > 18 bytes data, server => client 19:28:14.764685 '221 bye bye baby\r\n' 19:28:14.765001 ====> Client disconnect 19:28:14.770504 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.747864 Running IPv4 version 19:28:14.748376 Listening on port 37529 19:28:14.748948 Wrote pid 112067 to log/2/server/ftp_sockdata.pid 19:28:14.749141 Received PING (on stdin) 19:28:14.750019 Received PORT (on stdin) 19:28:14.752547 ====> Client connect 19:28:14.757711 Received DATA (on stdin) 19:28:14.757853 > 18 bytes data, server => client 19:28:14.757995 'WE ROOLZ: 109411\r\n' 19:28:14.758634 ====> Client disconnect 19:28:14.759787 Received DISC (on stdin) 19:28:14.760059 Crikey! Client also wants to disconnect 19:28:14.760271 Received ACKD (on stdin) 19:28:14.760924 Received QUIT (on stdin) 19:28:14.761083 quits 19:28:14.761504 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 141 === End of file server.cmd === Start of file valgrind141 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind141 test 0140.CMD (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/1/valgrind142 ../src/curl -q --output log/1/curl142.out --include --trace-ascii log/1/trace142 --trace-config all --trace-time ftp://127.0.0.1:39333/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 CMD (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/4/valgrind143 ../src/curl -q --output log/4/curl143.out --include --trace-ascii log/4/trace143 --trace-config all --trace-time "ftp://127.0.0.1:40809/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143 ..[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/3/valgrind140 ../src/curl -q --output log/3/curl140.out --include --trace-ascii log/3/trace140 --trace-config all --trace-time ftp://127.0.0.1:43789/blalbla/140 -z "1 jan 2004" > log/3/stdout140 2> log/3/stderr140 140: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind140 ../src/curl -q --output log/3/curl140.out --include --trace-ascii log/3/trace140 --trace-config all --trace-time ftp://127.0.0.1:43789/blalbla/140 -z "1 jan 2004" > log/3/stdout140 2> log/3/stderr140 === End of file commands.log === Start of file ftp_server.log 19:28:14.237591 ====> Client connect 19:28:14.238431 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.240362 < "USER anonymous" 19:28:14.240662 > "331 We are happy you popped in![CR][LF]" 19:28:14.242078 < "PASS ftp@example.com" 19:28:14.242399 > "230 Welcome you silly person[CR][LF]" 19:28:14.243474 < "PWD" 19:28:14.243795 > "257 "/" is current directory[CR][LF]" 19:28:14.244924 < "EPSV" 19:28:14.245170 ====> Passive DATA channel requested by client 19:28:14.245310 DATA sockfilt for passive data channel starting... 19:28:14.252835 DATA sockfilt for passive data channel started (pid 112061) 19:28:14.253658 DATA sockfilt for passive data channel listens on port 42167 19:28:14.254033 > "229 Entering Passive Mode (|||42167|)[LF]" 19:28:14.254200 Client has been notified that DATA conn will be accepted on port 42167 19:28:14.255285 Client connects to port 42167 19:28:14.255516 ====> Client established passive DATA connection on port 42167 19:28:14.256280 < "TYPE I" 19:28:14.256674 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.257855 < "SIZE verifiedserver" 19:28:14.258210 > "213 18[CR][LF]" 19:28:14.259251 < "RETR verifiedserver" 19:28:14.259553 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.260020 =====> Closing passive DATA connection... 19:28:14.260201 Server disconnects passive DATA connection 19:28:14.260856 Server disconnected passive DATA connection 19:28:14.261085 DATA sockfilt for passive data channel quits (pid 112061) 19:28:14.262375 DATA sockfilt for passive data channel quit (pid 112061) 19:28:14.262590 =====> Closed passive DATA connection 19:28:14.262792 > "226 File transfer complete[CR][LF]" 19:28:14.302689 < "QUIT" 19:28:14.302995 > "221 bye bye baby[CR][LF]" 19:28:14.303877 MAIN sockfilt said DISC 19:28:14.304160 ====> Client disconnected 19:28:14.304499 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.702843 ====> Client connect 19:28:14.704474 Received DATA (on stdin) 19:28:14.704592 > 160 bytes data, server => client 19:28:14.704675 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.704758 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.704838 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.705294 < 16 bytes data, client => server 19:28:14.705422 'USER anonymous\r\n' 19:28:14.706613 Received DATA (on stdin) 19:28:14.706723 > 33 bytes data, server => client 19:28:14.706802 '331 We are happy you popped in!\r\n' 19:28:14.707257 < 22 bytes data, client => server 19:28:14.707391 'PASS ftp@example.com\r\n' 19:28:14.708137 Received DATA (on stdin) 19:28:14.708251 > 30 bytes data, server => client 19:28:14.708320 '230 Welcome you silly person\r\n' 19:28:14.708775 < 5 bytes data, client => server 19:28:14.708928 'PWD\r\n' 19:28:14.709536 Received DATA (on stdin) 19:28:14.709648 > 30 bytes data, server => client 19:28:14.709718 '257 "/" is current directory\r\n' 19:28:14.710220 < 6 bytes data, client => server 19:28:14.710349 'EPSV\r\n' 19:28:14.719768 Received DATA (on stdin) 19:28:14.719906 > 38 bytes data, server => client 19:28:14.719990 '229 Entering Passive Mode (|||42167|)\n' 19:28:14.720792 < 8 bytes data, client => server 19:28:14.720923 'TYPE I\r\n' 19:28:14.722405 Received DATA (on stdin) 19:28:14.722532 > 33 bytes data, server => client 19:28:14.722600 '200 I modify TYPE as you wanted\r\n' 19:28:14.723042 < 21 bytes data, client => server 19:28:14.723227 'SIZE verifiedserver\r\n' 19:28:14.723958 Received DATA (on stdin) 19:28:14.724068 > 8 bytes data, server => client 19:28:14.724135 '213 18\r\n' 19:28:14.724606 < 21 bytes data, client => server 19:28:14.724731 'RETR verifiedserver\r\n' 19:28:14.725326 Received DATA (on stdin) 19:28:14.725436 > 29 bytes data, server => client 19:28:14.725509 '150 Binary junk (18 bytes).\r\n' 19:28:14.728536 Received DATA (on stdin) 19:28:14.728648 > 28 bytes data, server => client 19:28:14.728719 '226 File transfer complete\r\n' 19:28:14.767999 < 6 bytes data, client => server 19:28:14.768149 'QUIT\r\n' 19:28:14.768764 Received DATA (on stdin) 19:28:14.768868 > 18 bytes data, server => client 19:28:14.768939 '221 bye bye baby\r\n' 19:28:14.769374 ====> Client disconnect 19:28:14.769917 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.717638 Running IPv4 version 19:28:14.718031 Listening on port 42167 19:28:14.718249 Wrote pid 112061 to log/3/server/ftp_sockdata.pid 19:28:14.718356 Received PING (on stdin) 19:28:14.718914 Received PORT (on stdin) 19:28:14.720832 ====> Client connect 19:28:14.725547 Received DATA (on stdin) 19:28:14.725695 > 18 bytes data, server => client 19:28:14.725788 'WE ROOLZ: 109394\r\n' 19:28:14.726374 Received DISC (on stdin) 19:28:14.726532 ====> Client forcibly disconnected 19:28:14.727041 Received QUIT (on stdin) 19:28:14.727236 quits 19:28:14.727530 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 140 === End of file server.cmd === Start of file valgrind140 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time ftp://127.0.0.1:39333/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 142: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:39333/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 ftp_server.log 19:28:14.461045 ====> Client connect 19:28:14.461899 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.463800 < "USER anonymous" 19:28:14.464418 > "331 We are happy you popped in![CR][LF]" 19:28:14.465904 < "PASS ftp@example.com" 19:28:14.466225 > "230 Welcome you silly person[CR][LF]" 19:28:14.467729 < "PWD" 19:28:14.468037 > "257 "/" is current directory[CR][LF]" 19:28:14.469839 < "EPSV" 19:28:14.470085 ====> Passive DATA channel requested by client 19:28:14.470245 DATA sockfilt for passive data channel starting... 19:28:14.478638 DATA sockfilt for passive data channel started (pid 112148) 19:28:14.479589 DATA sockfilt for passive data channel listens on port 41877 19:28:14.479966 > "229 Entering Passive Mode (|||41877|)[LF]" 19:28:14.480154 Client has been notified that DATA conn will be accepted on port 41877 19:28:14.482133 Client connects to port 41877 19:28:14.482468 ====> Client established passive DATA connection on port 41877 19:28:14.483142 < "TYPE I" 19:28:14.483604 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.485161 < "SIZE verifiedserver" 19:28:14.485603 > "213 18[CR][LF]" 19:28:14.487402 < "RETR verifiedserver" 19:28:14.487839 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.488329 =====> Closing passive DATA connection... 19:28:14.488547 Server disconnects passive DATA connection 19:28:14.490504 Server disconnected passive DATA connection 19:28:14.490719 DATA sockfilt for passive data channel quits (pid 112148) 19:28:14.492169 DATA sockfilt for passive data channel quit (pid 112148) 19:28:14.492402 =====> Closed passive DATA connection 19:28:14.493041 > "226 File transfer complete[CR][LF]" 19:28:14.530748 < "QUIT" 19:28:14.531053 > "221 bye bye baby[CR][LF]" 19:28:14.537531 MAIN sockfilt said DISC 19:28:14.538303 ====> Client disconnected 19:28:14.539281 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.926388 ====> Client connect 19:28:14.927909 Received DATA (on stdin) 19:28:14.928026 > 160 bytes data, server => client 19:28:14.928108 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.928179 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.928240 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.928760 < 16 bytes data, client => server 19:28:14.928886 'USER anonymous\r\n' 19:28:14.929882 Received DATA (on stdin) 19:28:14.929994 > 33 bytes data, server => client 19:28:14.930395 '331 We are happy you popped in!\r\n' 19:28:14.930846 < 22 bytes data, client => server 19:28:14.930972 'PASS ftp@example.com\r\n' 19:28:14.932223 Received DATA (on stdin) 19:28:14.932342 > 30 bytes data, server => client 19:28:14.932415 '230 Welcome you silly person\r\n' 19:28:14.932841 < 5 bytes data, client => server 19:28:14.932960 'PWD\r\n' 19:28:14.934025 Received DATA (on stdin) 19:28:14.934144 > 30 bytes data, server => client 19:28:14.934222 '257 "/" is current directory\r\n' 19:28:14.934710 < 6 bytes data, client => server 19:28:14.934854 'EPSV\r\n' 19:28:14.946108 Received DATA (on stdin) 19:28:14.946229 > 38 bytes data, server => client 19:28:14.946310 '229 Entering Passive Mode (|||41877|)\n' 19:28:14.947386 < 8 bytes data, client => server 19:28:14.947537 'TYPE I\r\n' 19:28:14.949598 Received DATA (on stdin) 19:28:14.949713 > 33 bytes data, server => client 19:28:14.949798 '200 I modify TYPE as you wanted\r\n' 19:28:14.950277 < 21 bytes data, client => server 19:28:14.950407 'SIZE verifiedserver\r\n' 19:28:14.951622 Received DATA (on stdin) 19:28:14.951768 > 8 bytes data, server => client 19:28:14.951916 '213 18\r\n' 19:28:14.952453 < 21 bytes data, client => server 19:28:14.952584 'RETR verifiedserver\r\n' 19:28:14.954509 Received DATA (on stdin) 19:28:14.954623 > 29 bytes data, server => client 19:28:14.954697 '150 Binary junk (18 bytes).\r\n' 19:28:14.958354 Received DATA (on stdin) 19:28:14.958469 > 28 bytes data, server => client 19:28:14.958586 '226 File transfer complete\r\n' 19:28:14.995822 < 6 bytes data, client => server 19:28:14.995974 'QUIT\r\n' 19:28:14.996994 Received DATA (on stdin) 19:28:14.997100 > 18 bytes data, server => client 19:28:14.997171 '221 bye bye baby\r\n' 19:28:15.002689 ====> Client disconnect 19:28:15.005745 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.943304 Running IPv4 version 19:28:14.943672 Listening on port 41877 19:28:14.943948 Wrote pid 112148 to log/1/server/ftp_sockdata.pid 19:28:14.944145 Received PING (on stdin) 19:28:14.944790 Received PORT (on stdin) 19:28:14.947673 ====> Client connect 19:28:14.955051 Received DATA (on stdin) 19:28:14.955273 > 18 bytes data, server => client 19:28:14.955359 'WE ROOLZ: 109414\r\n' 19:28:14.956016 Received DISC (on stdin) 19:28:14.956660 ====> Client forcibly disconnected 19:28:14.956998 Received QUIT (on stdin) 19:28:14.957113 quits 19:28:14.957389 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 142 === End of file server.cmd === Start of file valgrind142 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind143 ../src/curl -q --output log/4/curl143.out --include --trace-ascii log/4/trace143 --trace-config all --trace-time "ftp://127.0.0.1:40809/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143 143: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind143 ../src/curl -q --output log/4/curl143.out --include --trace-ascii log/4/trace143 --trace-config all --trace-time "ftp://127.0.0.1:40809/%2ftmp/moo/143;type=a" > log/4/stdout143 2> log/4/stderr143 === End of file commands.log === Start of file ftp_server.log 19:28:14.708662 ====> Client connect 19:28:14.709591 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.711018 < "USER anonymous" 19:28:14.711387 > "331 We are happy you popped in![CR][LF]" 19:28:14.712484 < "PASS ftp@example.com" 19:28:14.712808 > "230 Welcome you silly person[CR][LF]" 19:28:14.714742 < "PWD" 19:28:14.715560 > "257 "/" is current directory[CR][LF]" 19:28:14.718118 < "EPSV" 19:28:14.718682 ====> Passive DATA channel requested by client 19:28:14.719218 DATA sockfilt for passive data channel starting... 19:28:14.735557 DATA sockfilt for passive data channel started (pid 112225) 19:28:14.736739 DATA sockfilt for passive data channel listens on port 35077 19:28:14.737120 > "229 Entering Passive Mode (|||35077|)[LF]" 19:28:14.737592 Client has been notified that DATA conn will be accepted on port 35077 19:28:14.739172 Client connects to port 35077 19:28:14.739621 ====> Client established passive DATA connection on port 35077 19:28:14.740159 < "TYPE I" 19:28:14.740647 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.742130 < "SIZE verifiedserver" 19:28:14.742465 > "213 18[CR][LF]" 19:28:14.743500 < "RETR verifiedserver" 19:28:14.743890 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.744770 =====> Closing passive DATA connection... 19:28:14.745001 Server disconnects passive DATA connection 19:28:14.746357 Server disconnected passive DATA connection 19:28:14.746580 DATA sockfilt for passive data channel quits (pid 112225) 19:28:14.748171 DATA sockfilt for passive data channel quit (pid 112225) 19:28:14.748399 =====> Closed passive DATA connection 19:28:14.748639 > "226 File transfer complete[CR][LF]" 19:28:14.786398 < "QUIT" 19:28:14.786665 > "221 bye bye baby[CR][LF]" 19:28:14.791525 MAIN sockfilt said DISC 19:28:14.791795 ====> Client disconnected 19:28:14.792110 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.173980 ====> Client connect 19:28:14.175266 Received DATA (on stdin) 19:28:14.175430 > 160 bytes data, server => client 19:28:14.175525 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.175597 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.175664 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.176137 < 16 bytes data, client => server 19:28:14.176273 'USER anonymous\r\n' 19:28:14.177129 Received DATA (on stdin) 19:28:14.177265 > 33 bytes data, server => client 19:28:14.177346 '331 We are happy you popped in!\r\n' 19:28:14.177779 < 22 bytes data, client => server 19:28:14.177921 'PASS ftp@example.com\r\n' 19:28:14.178539 Received DATA (on stdin) 19:28:14.178671 > 30 bytes data, server => client 19:28:14.178750 '230 Welcome you silly person\r\n' 19:28:14.179255 < 5 bytes data, client => server 19:28:14.179539 'PWD\r\n' 19:28:14.181294 Received DATA (on stdin) 19:28:14.181619 > 30 bytes data, server => client 19:28:14.181860 '257 "/" is current directory\r\n' 19:28:14.182806 < 6 bytes data, client => server 19:28:14.183101 'EPSV\r\n' 19:28:14.202837 Received DATA (on stdin) 19:28:14.203215 > 38 bytes data, server => client 19:28:14.203459 '229 Entering Passive Mode (|||35077|)\n' 19:28:14.204674 < 8 bytes data, client => server 19:28:14.204807 'TYPE I\r\n' 19:28:14.206362 Received DATA (on stdin) 19:28:14.206673 > 33 bytes data, server => client 19:28:14.206852 '200 I modify TYPE as you wanted\r\n' 19:28:14.207444 < 21 bytes data, client => server 19:28:14.207586 'SIZE verifiedserver\r\n' 19:28:14.208208 Received DATA (on stdin) 19:28:14.208327 > 8 bytes data, server => client 19:28:14.208399 '213 18\r\n' 19:28:14.208821 < 21 bytes data, client => server 19:28:14.208948 'RETR verifiedserver\r\n' 19:28:14.209666 Received DATA (on stdin) 19:28:14.209807 > 29 bytes data, server => client 19:28:14.209893 '150 Binary junk (18 bytes).\r\n' 19:28:14.214378 Received DATA (on stdin) 19:28:14.214525 > 28 bytes data, server => client 19:28:14.214613 '226 File transfer complete\r\n' 19:28:14.251690 < 6 bytes data, client => server 19:28:14.251845 'QUIT\r\n' 19:28:14.252392 Received DATA (on stdin) 19:28:14.252513 > 18 bytes data, server => client 19:28:14.252595 '221 bye bye baby\r\n' 19:28:14.252931 ====> Client disconnect 19:28:14.257540 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.199957 Running IPv4 version 19:28:14.200551 Listening on port 35077 19:28:14.200979 Wrote pid 112225 to log/4/server/ftp_sockdata.pid 19:28:14.201086 Received PING (on stdin) 19:28:14.201967 Received PORT (on stdin) 19:28:14.204726 ====> Client connect 19:28:14.211064 Received DATA (on stdin) 19:28:14.211266 > 18 bytes data, server => client 19:28:14.211356 'WE ROOLZ: 109451\r\n' 19:28:14.211886 Received DISC (on stdin) 19:28:14.212558 ====> Client forcibly disconnected 19:28:14.212890 Received QUIT (on stdin) 19:28:14.212988 quits 19:28:14.213258 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 143 === End of file server.cmd === Start of file valgrind143 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: syCMD (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/2/valgrind144 ../src/curl -q --output log/2/curl144.out --include --trace-ascii log/2/trace144 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P - -l > log/2/stdout144 2> log/2/stderr144 mbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind144 ../src/curl -q --output log/2/curl144.out --include --trace-ascii log/2/trace144 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P - -l > log/2/stdout144 2> log/2/stderr144 144: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind144 ../src/curl -q --output log/2/curl144.out --include --trace-ascii log/2/trace144 --trace-config all --trace-time ftp://127.0.0.1:43671/ -P - -l > log/2/stdout144 2> log/2/stderr144 === End of file commands.log === Start of file ftp_server.log 19:28:14.889611 ====> Client connect 19:28:14.890502 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.891793 < "USER anonymous" 19:28:14.892086 > "331 We are happy you popped in![CR][LF]" 19:28:14.893067 < "PASS ftp@example.com" 19:28:14.893372 > "230 Welcome you silly person[CR][LF]" 19:28:14.894444 < "PWD" 19:28:14.894718 > "257 "/" is current directory[CR][LF]" 19:28:14.895644 < "EPSV" 19:28:14.895835 ====> Passive DATA channel requested by client 19:28:14.895970 DATA sockfilt for passive data channel starting... 19:28:14.904569 DATA sockfilt for passive data channel started (pid 112265) 19:28:14.905485 DATA sockfilt for passive data channel listens on port 33811 19:28:14.905885 > "229 Entering Passive Mode (|||33811|)[LF]" 19:28:14.906057 Client has been notified that DATA conn will be accepted on port 33811 19:28:14.906930 Client connects to port 33811 19:28:14.907157 ====> Client established passive DATA connection on port 33811 19:28:14.907741 < "TYPE I" 19:28:14.908077 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.909127 < "SIZE verifiedserver" 19:28:14.909510 > "213 18[CR][LF]" 19:28:14.910615 < "RETR verifiedserver" 19:28:14.911023 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.911566 =====> Closing passive DATA connection... 19:28:14.911813 Server disconnects passive DATA connection 19:28:14.912725 Server disconnected passive DATA connection 19:28:14.912930 DATA sockfilt for passive data channel quits (pid 112265) 19:28:14.914572 DATA sockfilt for passive data channel quit (pid 112265) 19:28:14.914812 =====> Closed passive DATA connection 19:28:14.915073 > "226 File transfer complete[CR][LF]" 19:28:14.954496 < "QUIT" 19:28:14.954819 > "221 bye bye baby[CR][LF]" 19:28:14.955675 MAIN sockfilt said DISC 19:28:14.955940 ====> Client disconnected 19:28:14.956257 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:15.354894 ====> Client connect 19:28:15.356203 Received DATA (on stdin) 19:28:15.356348 > 160 bytes data, server => client 19:28:15.356431 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:15.356502 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:15.356563 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:15.356965 < 16 bytes data, client => server 19:28:15.357091 'USER anonymous\r\n' 19:28:15.357814 Received DATA (on stdin) 19:28:15.357930 > 33 bytes data, server => client 19:28:15.358021 '331 We are happy you popped in!\r\n' 19:28:15.358402 < 22 bytes data, client => server 19:28:15.358531 'PASS ftp@example.com\r\n' 19:28:15.359110 Received DATA (on stdin) 19:28:15.359337 > 30 bytes data, server => client 19:28:15.359415 '230 Welcome you silly person\r\n' 19:28:15.359790 < 5 bytes data, client => server 19:28:15.359911 'PWD\r\n' 19:28:15.360448 Received DATA (on stdin) 19:28:15.360557 > 30 bytes data, server => client 19:28:15.360637 '257 "/" is current directory\r\n' 19:28:15.361018 < 6 bytes data, client => server 19:28:15.361141 'EPSV\r\n' 19:28:15.371598 Received DATA (on stdin) 19:28:15.371738 > 38 bytes data, server => client 19:28:15.371819 '229 Entering Passive Mode (|||33811|)\n' 19:28:15.372630 < 8 bytes data, client => server 19:28:15.372743 'TYPE I\r\n' 19:28:15.373801 Received DATA (on stdin) 19:28:15.373950 > 33 bytes data, server => client 19:28:15.374036 '200 I modify TYPE as you wanted\r\n' 19:28:15.374448 < 21 bytes data, client => server 19:28:15.374580 'SIZE verifiedserver\r\n' 19:28:15.375236 Received DATA (on stdin) 19:28:15.375380 > 8 bytes data, server => client 19:28:15.375453 '213 18\r\n' 19:28:15.375891 < 21 bytes data, client => server 19:28:15.376049 'RETR verifiedserver\r\n' 19:28:15.376760 Received DATA (on stdin) 19:28:15.376897 > 29 bytes data, server => client 19:28:15.376974 '150 Binary junk (18 bytes).\r\n' 19:28:15.380812 Received DATA (on stdin) 19:28:15.380952 > 28 bytes data, server => client 19:28:15.381047 '226 File transfer complete\r\n' 19:28:15.419758 < 6 bytes data, client => server 19:28:15.419911 'QUIT\r\n' 19:28:15.420545 Received DATA (on stdin) 19:28:15.420660 > 18 bytes data, server => client 19:28:15.420733 '221 bye bye baby\r\n' 19:28:15.421150 ====> Client disconnect 19:28:15.421679 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.369059 Running IPv4 version 19:28:14.369490 Listening on port 33811 19:28:14.369869 Wrote pid 112265 to log/2/server/ftp_sockdata.pid 19:28:14.370030 Received PING (on stdin) 19:28:14.370670 Received PORT (on stdin) 19:28:14.372451 ====> Client connect 19:28:14.377771 Received DATA (on stdin) 19:28:14.377914 > 18 bytes data, server => client 19:28:14.377997 'WE ROOLZ: 109411\r\n' 19:28:14.378247 Received DISC (on stdin) 19:28:14.378865 ====> Client forcibly disconnected 19:28:14.379350 Received QUIT (on stdin) 19:28:14.379481 quits 19:28:14.379751 ============> sockfilt quits === 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 valgrind144 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrCMD (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/valgrind145 ../src/curl -q --output log/3/curl145.out --include --trace-ascii log/3/trace145 --trace-config all --trace-time ftp://127.0.0.1:43789/ -P - -l > log/3/stdout145 2> log/3/stderr145 ind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind144 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-config all --trace-time ftp://127.0.0.1:43789/ -P - -l > log/3/stdout145 2> log/3/stderr145 145: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:43789/ -P - -l > log/3/stdout145 2> log/3/stderr145 === End of file commands.log === Start of file ftp_server.log 19:28:14.919157 ====> Client connect 19:28:14.919964 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:14.921230 < "USER anonymous" 19:28:14.921663 > "331 We are happy you popped in![CR][LF]" 19:28:14.922657 < "PASS ftp@example.com" 19:28:14.922934 > "230 Welcome you silly person[CR][LF]" 19:28:14.926246 < "PWD" 19:28:14.926541 > "257 "/" is current directory[CR][LF]" 19:28:14.927507 < "EPSV" 19:28:14.927713 ====> Passive DATA channel requested by client 19:28:14.927841 DATA sockfilt for passive data channel starting... 19:28:14.935760 DATA sockfilt for passive data channel started (pid 112276) 19:28:14.936376 DATA sockfilt for passive data channel listens on port 38007 19:28:14.936637 > "229 Entering Passive Mode (|||38007|)[LF]" 19:28:14.936796 Client has been notified that DATA conn will be accepted on port 38007 19:28:14.938376 Client connects to port 38007 19:28:14.938627 ====> Client established passive DATA connection on port 38007 19:28:14.939099 < "TYPE I" 19:28:14.939351 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:14.940366 < "SIZE verifiedserver" 19:28:14.940635 > "213 18[CR][LF]" 19:28:14.941636 < "RETR verifiedserver" 19:28:14.941940 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:14.942358 =====> Closing passive DATA connection... 19:28:14.942535 Server disconnects passive DATA connection 19:28:14.942920 Server disconnected passive DATA connection 19:28:14.943123 DATA sockfilt for passive data channel quits (pid 112276) 19:28:14.944225 DATA sockfilt for passive data channel quit (pid 112276) 19:28:14.944434 =====> Closed passive DATA connection 19:28:14.944631 > "226 File transfer complete[CR][LF]" 19:28:14.945823 < "QUIT" 19:28:14.946102 > "221 bye bye baby[CR][LF]" 19:28:14.946815 MAIN sockfilt said DISC 19:28:14.947086 ====> Client disconnected 19:28:14.947386 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:15.384505 ====> Client connect 19:28:15.385653 Received DATA (on stdin) 19:28:15.385783 > 160 bytes data, server => client 19:28:15.385864 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:15.385933 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:15.385996 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:15.386377 < 16 bytes data, client => server 19:28:15.386512 'USER anonymous\r\n' 19:28:15.387361 Received DATA (on stdin) 19:28:15.387489 > 33 bytes data, server => client 19:28:15.387556 '331 We are happy you popped in!\r\n' 19:28:15.387958 < 22 bytes data, client => server 19:28:15.388084 'PASS ftp@example.com\r\n' 19:28:15.388652 Received DATA (on stdin) 19:28:15.388762 > 30 bytes data, server => client 19:28:15.388837 '230 Welcome you silly person\r\n' 19:28:15.391552 < 5 bytes data, client => server 19:28:15.391692 'PWD\r\n' 19:28:15.392268 Received DATA (on stdin) 19:28:15.392373 > 30 bytes data, server => client 19:28:15.392448 '257 "/" is current directory\r\n' 19:28:15.392844 < 6 bytes data, client => server 19:28:15.392952 'EPSV\r\n' 19:28:15.402359 Received DATA (on stdin) 19:28:15.402489 > 38 bytes data, server => client 19:28:15.402576 '229 Entering Passive Mode (|||38007|)\n' 19:28:15.403564 < 8 bytes data, client => server 19:28:15.403711 'TYPE I\r\n' 19:28:15.405108 Received DATA (on stdin) 19:28:15.405207 > 33 bytes data, server => client 19:28:15.405280 '200 I modify TYPE as you wanted\r\n' 19:28:15.405693 < 21 bytes data, client => server 19:28:15.405817 'SIZE verifiedserver\r\n' 19:28:15.406353 Received DATA (on stdin) 19:28:15.406446 > 8 bytes data, server => client 19:28:15.406511 '213 18\r\n' 19:28:15.406898 < 21 bytes data, client => server 19:28:15.407012 'RETR verifiedserver\r\n' 19:28:15.407649 Received DATA (on stdin) 19:28:15.407759 > 29 bytes data, server => client 19:28:15.407827 '150 Binary junk (18 bytes).\r\n' 19:28:15.410360 Received DATA (on stdin) 19:28:15.410463 > 28 bytes data, server => client 19:28:15.410539 '226 File transfer complete\r\n' 19:28:15.411063 < 6 bytes data, client => server 19:28:15.411245 'QUIT\r\n' 19:28:15.411822 Received DATA (on stdin) 19:28:15.411918 > 18 bytes data, server => client 19:28:15.411980 '221 bye bye baby\r\n' 19:28:15.412309 ====> Client disconnect 19:28:15.412821 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:14.400662 Running IPv4 version 19:28:14.400999 Listening on port 38007 19:28:14.401203 Wrote pid 112276 to log/3/server/ftp_sockdata.pid 19:28:14.401301 Received PING (on stdin) 19:28:14.401769 Received PORT (on stdin) 19:28:14.403917 ====> Client connect 19:28:14.408077 Received DATA (on stdin) 19:28:14.408201 > 18 bytes data, server => client 19:28:14.408278 'WE ROOLZ: 109394\r\n' 19:28:14.408479 Received DISC (on stdin) 19:28:14.408589 ====> Client forcibly disconnected 19:28:14.409026 Received QUIT (on stdin) 19:28:14.409119 quits 19:28:14.409378 ============> sockfilt quits === 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 valgrind145 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you arCMD (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/1/valgrind146 ../src/curl -q --output log/1/curl146.out --include --trace-ascii log/1/trace146 --trace-config all --trace-time ftp://127.0.0.1:39333/first/dir/here/146 ftp://127.0.0.1:39333/146 > log/1/stdout146 2> log/1/stderr146 e debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind145 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/1/valgrind146 ../src/curl -q --output log/1/curl146.out --include --trace-ascii log/1/trace146 --trace-config all --trace-time ftp://127.0.0.1:39333/first/dir/here/146 ftp://127.0.0.1:39333/146 > log/1/stdout146 2> log/1/stderr146 146: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind146 ../src/curl -q --output log/1/curl146.out --include --trace-ascii log/1/trace146 --trace-config all --trace-time ftp://127.0.0.1:39333/first/dir/here/146 ftp://127.0.0.1:39333/146 > log/1/stdout146 2> log/1/stderr146 === End of file commands.log === Start of file ftp_server.log 19:28:15.455382 ====> Client connect 19:28:15.456232 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:15.458050 < "USER anonymous" 19:28:15.458447 > "331 We are happy you popped in![CR][LF]" 19:28:15.459528 < "PASS ftp@example.com" 19:28:15.459864 > "230 Welcome you silly person[CR][LF]" 19:28:15.460957 < "PWD" 19:28:15.461356 > "257 "/" is current directory[CR][LF]" 19:28:15.462844 < "EPSV" 19:28:15.463113 ====> Passive DATA channel requested by client 19:28:15.463293 DATA sockfilt for passive data channel starting... 19:28:15.471948 DATA sockfilt for passive data channel started (pid 112484) 19:28:15.472597 DATA sockfilt for passive data channel listens on port 39669 19:28:15.472882 > "229 Entering Passive Mode (|||39669|)[LF]" 19:28:15.473056 Client has been notified that DATA conn will be accepted on port 39669 19:28:15.474137 Client connects to port 39669 19:28:15.474352 ====> Client established passive DATA connection on port 39669 19:28:15.474929 < "TYPE I" 19:28:15.475226 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:15.476246 < "SIZE verifiedserver" 19:28:15.476558 > "213 18[CR][LF]" 19:28:15.477628 < "RETR verifiedserver" 19:28:15.477967 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:15.478969 =====> Closing passive DATA connection... 19:28:15.479165 Server disconnects passive DATA connection 19:28:15.479341 Fancy that; client wants to DISC, too 19:28:15.481186 Server disconnected passive DATA connection 19:28:15.481539 DATA sockfilt for passive data channel quits (pid 112484) 19:28:15.482962 DATA sockfilt for passive data channel quit (pid 112484) 19:28:15.483193 =====> Closed passive DATA connection 19:28:15.483443 > "226 File transfer complete[CR][LF]" 19:28:15.522787 < "QUIT" 19:28:15.523146 > "221 bye bye baby[CR][LF]" 19:28:15.524032 MAIN sockfilt said DISC 19:28:15.524337 ====> Client disconnected 19:28:15.524708 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:15.920626 ====> Client connect 19:28:15.922209 Received DATA (on stdin) 19:28:15.922314 > 160 bytes data, server => client 19:28:15.922393 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:15.922464 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:15.922528 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:15.922952 < 16 bytes data, client => server 19:28:15.923093 'USER anonymous\r\n' 19:28:15.924155 Received DATA (on stdin) 19:28:15.924286 > 33 bytes data, server => client 19:28:15.924366 '331 We are happy you popped in!\r\n' 19:28:15.924792 < 22 bytes data, client => server 19:28:15.924917 'PASS ftp@example.com\r\n' 19:28:15.925573 Received DATA (on stdin) 19:28:15.925704 > 30 bytes data, server => client 19:28:15.925786 '230 Welcome you silly person\r\n' 19:28:15.926210 < 5 bytes data, client => server 19:28:15.926341 'PWD\r\n' 19:28:15.927110 Received DATA (on stdin) 19:28:15.927328 > 30 bytes data, server => client 19:28:15.927427 '257 "/" is current directory\r\n' 19:28:15.928004 < 6 bytes data, client => server 19:28:15.928163 'EPSV\r\n' 19:28:15.938585 Received DATA (on stdin) 19:28:15.938698 > 38 bytes data, server => client 19:28:15.938783 '229 Entering Passive Mode (|||39669|)\n' 19:28:15.939686 < 8 bytes data, client => server 19:28:15.939787 'TYPE I\r\n' 19:28:15.940963 Received DATA (on stdin) 19:28:15.941059 > 33 bytes data, server => client 19:28:15.941132 '200 I modify TYPE as you wanted\r\n' 19:28:15.941537 < 21 bytes data, client => server 19:28:15.941627 'SIZE verifiedserver\r\n' 19:28:15.942299 Received DATA (on stdin) 19:28:15.942394 > 8 bytes data, server => client 19:28:15.942455 '213 18\r\n' 19:28:15.942856 < 21 bytes data, client => server 19:28:15.942961 'RETR verifiedserver\r\n' 19:28:15.943681 Received DATA (on stdin) 19:28:15.943790 > 29 bytes data, server => client 19:28:15.943859 '150 Binary junk (18 bytes).\r\n' 19:28:15.949158 Received DATA (on stdin) 19:28:15.949299 > 28 bytes data, server => client 19:28:15.949378 '226 File transfer complete\r\n' 19:28:15.987987 < 6 bytes data, client => server 19:28:15.988165 'QUIT\r\n' 19:28:15.988867 Received DATA (on stdin) 19:28:15.988987 > 18 bytes data, server => client 19:28:15.989073 '221 bye bye baby\r\n' 19:28:15.989489 ====> Client disconnect 19:28:15.990059 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:15.936695 Running IPv4 version 19:28:15.937064 Listening on port 39669 19:28:15.937312 Wrote pid 112484 to log/1/server/ftp_sockdata.pid 19:28:15.937439 Received PING (on stdin) 19:28:15.937924 Received PORT (on stdin) 19:28:15.939643 ====> Client connect 19:28:15.943928 Received DATA (on stdin) 19:28:15.944054 > 18 bytes data, server => client 19:28:15.944140 'WE ROOLZ: 109414\r\n' 19:28:15.944541 ====> Client disconnect 19:28:15.946088 Received DISC (on stdin) 19:28:15.946336 Crikey! Client also wants to disconnect 19:28:15.946496 Received ACKD (on stdin) 19:28:15.947554 Received QUIT (on stdin) 19:28:15.947710 quits 19:28:15.948019 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 146 === End of file server.cmd === Start of file valgrind146 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exitiCMD (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/4/valgrind147 ../src/curl -q --output log/4/curl147.out --include --trace-ascii log/4/trace147 --trace-config all --trace-time ftp://127.0.0.1:40809/first/dir/here/147 --ftp-create-dirs > log/4/stdout147 2> log/4/stderr147 CMD (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/2/valgrind148 ../src/curl -q --output log/2/curl148.out --include --trace-ascii log/2/trace148 --trace-config all --trace-time ftp://127.0.0.1:43671/attempt/to/get/this/148 --ftp-create-dirs > log/2/stdout148 2> log/2/stderr148 ng now. Sorry. === 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/4/valgrind147 ../src/curl -q --output log/4/curl147.out --include --trace-ascii log/4/trace147 --trace-config all --trace-time ftp://127.0.0.1:40809/first/dir/here/147 --ftp-create-dirs > log/4/stdout147 2> log/4/stderr147 147: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind147 ../src/curl -q --output log/4/curl147.out --include --trace-ascii log/4/trace147 --trace-config all --trace-time ftp://127.0.0.1:40809/first/dir/here/147 --ftp-create-dirs > log/4/stdout147 2> log/4/stderr147 === End of file commands.log === Start of file ftp_server.log 19:28:15.471766 ====> Client connect 19:28:15.472569 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:15.474056 < "USER anonymous" 19:28:15.474372 > "331 We are happy you popped in![CR][LF]" 19:28:15.475370 < "PASS ftp@example.com" 19:28:15.475626 > "230 Welcome you silly person[CR][LF]" 19:28:15.476603 < "PWD" 19:28:15.476867 > "257 "/" is current directory[CR][LF]" 19:28:15.478092 < "EPSV" 19:28:15.478327 ====> Passive DATA channel requested by client 19:28:15.478493 DATA sockfilt for passive data channel starting... 19:28:15.487120 DATA sockfilt for passive data channel started (pid 112485) 19:28:15.487794 DATA sockfilt for passive data channel listens on port 45859 19:28:15.488081 > "229 Entering Passive Mode (|||45859|)[LF]" 19:28:15.488260 Client has been notified that DATA conn will be accepted on port 45859 19:28:15.490251 Client connects to port 45859 19:28:15.490477 ====> Client established passive DATA connection on port 45859 19:28:15.490961 < "TYPE I" 19:28:15.491249 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:15.494034 < "SIZE verifiedserver" 19:28:15.494391 > "213 18[CR][LF]" 19:28:15.495351 < "RETR verifiedserver" 19:28:15.495694 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:15.496131 =====> Closing passive DATA connection... 19:28:15.496318 Server disconnects passive DATA connection 19:28:15.497537 Server disconnected passive DATA connection 19:28:15.497803 DATA sockfilt for passive data channel quits (pid 112485) 19:28:15.501319 DATA sockfilt for passive data channel quit (pid 112485) 19:28:15.501643 =====> Closed passive DATA connection 19:28:15.501849 > "226 File transfer complete[CR][LF]" 19:28:15.542796 < "QUIT" 19:28:15.543104 > "221 bye bye baby[CR][LF]" 19:28:15.546990 MAIN sockfilt said DISC 19:28:15.547241 ====> Client disconnected 19:28:15.547585 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:14.937104 ====> Client connect 19:28:14.938251 Received DATA (on stdin) 19:28:14.938386 > 160 bytes data, server => client 19:28:14.938470 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:14.938557 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:14.938636 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:14.939102 < 16 bytes data, client => server 19:28:14.939366 'USER anonymous\r\n' 19:28:14.940074 Received DATA (on stdin) 19:28:14.940173 > 33 bytes data, server => client 19:28:14.940250 '331 We are happy you popped in!\r\n' 19:28:14.940669 < 22 bytes data, client => server 19:28:14.940779 'PASS ftp@example.com\r\n' 19:28:14.941325 Received DATA (on stdin) 19:28:14.941444 > 30 bytes data, server => client 19:28:14.941531 '230 Welcome you silly person\r\n' 19:28:14.941931 < 5 bytes data, client => server 19:28:14.942038 'PWD\r\n' 19:28:14.942576 Received DATA (on stdin) 19:28:14.942692 > 30 bytes data, server => client 19:28:14.942768 '257 "/" is current directory\r\n' 19:28:14.943387 < 6 bytes data, client => server 19:28:14.943505 'EPSV\r\n' 19:28:14.954272 Received DATA (on stdin) 19:28:14.954395 > 38 bytes data, server => client 19:28:14.954468 '229 Entering Passive Mode (|||45859|)\n' 19:28:14.955464 < 8 bytes data, client => server 19:28:14.955599 'TYPE I\r\n' 19:28:14.958236 Received DATA (on stdin) 19:28:14.958378 > 33 bytes data, server => client 19:28:14.958458 '200 I modify TYPE as you wanted\r\n' 19:28:14.959286 < 21 bytes data, client => server 19:28:14.959428 'SIZE verifiedserver\r\n' 19:28:14.960102 Received DATA (on stdin) 19:28:14.960208 > 8 bytes data, server => client 19:28:14.960276 '213 18\r\n' 19:28:14.960692 < 21 bytes data, client => server 19:28:14.960814 'RETR verifiedserver\r\n' 19:28:14.961392 Received DATA (on stdin) 19:28:14.961503 > 29 bytes data, server => client 19:28:14.961570 '150 Binary junk (18 bytes).\r\n' 19:28:14.967556 Received DATA (on stdin) 19:28:14.967673 > 28 bytes data, server => client 19:28:14.967742 '226 File transfer complete\r\n' 19:28:15.008050 < 6 bytes data, client => server 19:28:15.008204 'QUIT\r\n' 19:28:15.008832 Received DATA (on stdin) 19:28:15.008949 > 18 bytes data, server => client 19:28:15.009028 '221 bye bye baby\r\n' 19:28:15.012444 ====> Client disconnect 19:28:15.012961 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:15.951950 Running IPv4 version 19:28:15.952313 Listening on port 45859 19:28:15.952540 Wrote pid 112485 to log/4/server/ftp_sockdata.pid 19:28:15.952645 Received PING (on stdin) 19:28:15.953114 Received PORT (on stdin) 19:28:15.955800 ====> Client connect 19:28:15.961928 Received DATA (on stdin) 19:28:15.962028 > 18 bytes data, server => client 19:28:15.962096 'WE ROOLZ: 109451\r\n' 19:28:15.962288 Received DISC (on stdin) 19:28:15.962405 ====> Client forcibly disconnected 19:28:15.963708 Received QUIT (on stdin) 19:28:15.963829 quits 19:28:15.966163 ============> 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 valgrind147 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind148 ../src/cCMD (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/valgrind149 ../src/curl -q --output log/3/curl149.out --include --trace-ascii log/3/trace149 --trace-config all --trace-time -T log/3/upload149 ftp://127.0.0.1:43789/dir1/149 -T log/3/upload149 ftp://127.0.0.1:43789/dir2/149 > log/3/stdout149 2> log/3/stderr149 url -q --output log/2/curl148.out --include --trace-ascii log/2/trace148 --trace-config all --trace-time ftp://127.0.0.1:43671/attempt/to/get/this/148 --ftp-create-dirs > log/2/stdout148 2> log/2/stderr148 148: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind148 ../src/curl -q --output log/2/curl148.out --include --trace-ascii log/2/trace148 --trace-config all --trace-time ftp://127.0.0.1:43671/attempt/to/get/this/148 --ftp-create-dirs > log/2/stdout148 2> log/2/stderr148 === End of file commands.log === Start of file ftp_server.log 19:28:15.588600 ====> Client connect 19:28:15.589528 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:15.591132 < "USER anonymous" 19:28:15.591518 > "331 We are happy you popped in![CR][LF]" 19:28:15.592591 < "PASS ftp@example.com" 19:28:15.592881 > "230 Welcome you silly person[CR][LF]" 19:28:15.594020 < "PWD" 19:28:15.594339 > "257 "/" is current directory[CR][LF]" 19:28:15.595386 < "EPSV" 19:28:15.595596 ====> Passive DATA channel requested by client 19:28:15.595708 DATA sockfilt for passive data channel starting... 19:28:15.604558 DATA sockfilt for passive data channel started (pid 112516) 19:28:15.605615 DATA sockfilt for passive data channel listens on port 37251 19:28:15.605924 > "229 Entering Passive Mode (|||37251|)[LF]" 19:28:15.606080 Client has been notified that DATA conn will be accepted on port 37251 19:28:15.607820 Client connects to port 37251 19:28:15.608051 ====> Client established passive DATA connection on port 37251 19:28:15.608605 < "TYPE I" 19:28:15.608887 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:15.610047 < "SIZE verifiedserver" 19:28:15.610410 > "213 18[CR][LF]" 19:28:15.611456 < "RETR verifiedserver" 19:28:15.611752 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:15.612263 =====> Closing passive DATA connection... 19:28:15.612460 Server disconnects passive DATA connection 19:28:15.613264 Server disconnected passive DATA connection 19:28:15.613679 DATA sockfilt for passive data channel quits (pid 112516) 19:28:15.615154 DATA sockfilt for passive data channel quit (pid 112516) 19:28:15.615389 =====> Closed passive DATA connection 19:28:15.615617 > "226 File transfer complete[CR][LF]" 19:28:15.654678 < "QUIT" 19:28:15.655118 > "221 bye bye baby[CR][LF]" 19:28:15.657812 MAIN sockfilt said DISC 19:28:15.658106 ====> Client disconnected 19:28:15.658483 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:16.053909 ====> Client connect 19:28:16.055232 Received DATA (on stdin) 19:28:16.055382 > 160 bytes data, server => client 19:28:16.055466 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:16.055539 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:16.055603 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:16.056128 < 16 bytes data, client => server 19:28:16.056289 'USER anonymous\r\n' 19:28:16.057225 Received DATA (on stdin) 19:28:16.057375 > 33 bytes data, server => client 19:28:16.057458 '331 We are happy you popped in!\r\n' 19:28:16.057881 < 22 bytes data, client => server 19:28:16.058013 'PASS ftp@example.com\r\n' 19:28:16.058585 Received DATA (on stdin) 19:28:16.058706 > 30 bytes data, server => client 19:28:16.058781 '230 Welcome you silly person\r\n' 19:28:16.059287 < 5 bytes data, client => server 19:28:16.059435 'PWD\r\n' 19:28:16.060050 Received DATA (on stdin) 19:28:16.060165 > 30 bytes data, server => client 19:28:16.060247 '257 "/" is current directory\r\n' 19:28:16.060678 < 6 bytes data, client => server 19:28:16.060806 'EPSV\r\n' 19:28:16.071844 Received DATA (on stdin) 19:28:16.071952 > 38 bytes data, server => client 19:28:16.072053 '229 Entering Passive Mode (|||37251|)\n' 19:28:16.072980 < 8 bytes data, client => server 19:28:16.073133 'TYPE I\r\n' 19:28:16.074589 Received DATA (on stdin) 19:28:16.074697 > 33 bytes data, server => client 19:28:16.074774 '200 I modify TYPE as you wanted\r\n' 19:28:16.075346 < 21 bytes data, client => server 19:28:16.075462 'SIZE verifiedserver\r\n' 19:28:16.076113 Received DATA (on stdin) 19:28:16.076251 > 8 bytes data, server => client 19:28:16.076323 '213 18\r\n' 19:28:16.076774 < 21 bytes data, client => server 19:28:16.076879 'RETR verifiedserver\r\n' 19:28:16.077451 Received DATA (on stdin) 19:28:16.077563 > 29 bytes data, server => client 19:28:16.077638 '150 Binary junk (18 bytes).\r\n' 19:28:16.081338 Received DATA (on stdin) 19:28:16.081469 > 28 bytes data, server => client 19:28:16.081550 '226 File transfer complete\r\n' 19:28:16.119890 < 6 bytes data, client => server 19:28:16.120069 'QUIT\r\n' 19:28:16.120806 Received DATA (on stdin) 19:28:16.120947 > 18 bytes data, server => client 19:28:16.121035 '221 bye bye baby\r\n' 19:28:16.123262 ====> Client disconnect 19:28:16.124718 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:15.069396 Running IPv4 version 19:28:15.069750 Listening on port 37251 19:28:15.069952 Wrote pid 112516 to log/2/server/ftp_sockdata.pid 19:28:15.070053 Received PING (on stdin) 19:28:15.070809 Received PORT (on stdin) 19:28:15.073317 ====> Client connect 19:28:15.078027 Received DATA (on stdin) 19:28:15.078153 > 18 bytes data, server => client 19:28:15.078228 'WE ROOLZ: 109411\r\n' 19:28:15.078733 Received DISC (on stdin) 19:28:15.078891 ====> Client forcibly disconnected 19:28:15.079775 Received QUIT (on stdin) 19:28:15.079942 quits 19:28:15.080245 ============> 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 valgrind148 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind149 ../src/curl -q --output log/3/curl149.out --include --trace-ascii log/3/trace149 --trace-config all --trace-time -T log/3/upload149 ftp://127.0.0.1:43789/dir1/149 -T log/3/upload149 ftp://127.0.0.1:43789/dir2/149 > log/3/stdout149 2> log/3/stderr149 149: protocol FAILED! ThCMD (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/1/valgrind150 ../src/curl -q --output log/1/curl150.out --include --trace-ascii log/1/trace150 --trace-config all --trace-time http://127.0.0.1:41477/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 ere was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind149 ../src/curl -q --output log/3/curl149.out --include --trace-ascii log/3/trace149 --trace-config all --trace-time -T log/3/upload149 ftp://127.0.0.1:43789/dir1/149 -T log/3/upload149 ftp://127.0.0.1:43789/dir2/149 > log/3/stdout149 2> log/3/stderr149 === End of file commands.log === Start of file ftp_server.log 19:28:15.600649 ====> Client connect 19:28:15.601400 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:15.605563 < "USER anonymous" 19:28:15.605927 > "331 We are happy you popped in![CR][LF]" 19:28:15.607440 < "PASS ftp@example.com" 19:28:15.607756 > "230 Welcome you silly person[CR][LF]" 19:28:15.609140 < "PWD" 19:28:15.609546 > "257 "/" is current directory[CR][LF]" 19:28:15.611226 < "EPSV" 19:28:15.611449 ====> Passive DATA channel requested by client 19:28:15.611599 DATA sockfilt for passive data channel starting... 19:28:15.619941 DATA sockfilt for passive data channel started (pid 112518) 19:28:15.620679 DATA sockfilt for passive data channel listens on port 34975 19:28:15.620983 > "229 Entering Passive Mode (|||34975|)[LF]" 19:28:15.621135 Client has been notified that DATA conn will be accepted on port 34975 19:28:15.622822 Client connects to port 34975 19:28:15.623060 ====> Client established passive DATA connection on port 34975 19:28:15.623540 < "TYPE I" 19:28:15.623789 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:15.625110 < "SIZE verifiedserver" 19:28:15.625397 > "213 18[CR][LF]" 19:28:15.626534 < "RETR verifiedserver" 19:28:15.626827 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:15.627501 =====> Closing passive DATA connection... 19:28:15.627724 Server disconnects passive DATA connection 19:28:15.628844 Server disconnected passive DATA connection 19:28:15.629041 DATA sockfilt for passive data channel quits (pid 112518) 19:28:15.630535 DATA sockfilt for passive data channel quit (pid 112518) 19:28:15.630773 =====> Closed passive DATA connection 19:28:15.630998 > "226 File transfer complete[CR][LF]" 19:28:15.670718 < "QUIT" 19:28:15.671154 > "221 bye bye baby[CR][LF]" 19:28:15.674743 MAIN sockfilt said DISC 19:28:15.675040 ====> Client disconnected 19:28:15.675403 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:16.065954 ====> Client connect 19:28:16.067097 Received DATA (on stdin) 19:28:16.067306 > 160 bytes data, server => client 19:28:16.067394 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:16.067472 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:16.067543 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:16.070548 < 16 bytes data, client => server 19:28:16.070687 'USER anonymous\r\n' 19:28:16.071619 Received DATA (on stdin) 19:28:16.071742 > 33 bytes data, server => client 19:28:16.071814 '331 We are happy you popped in!\r\n' 19:28:16.072248 < 22 bytes data, client => server 19:28:16.072370 'PASS ftp@example.com\r\n' 19:28:16.073731 Received DATA (on stdin) 19:28:16.073841 > 30 bytes data, server => client 19:28:16.073908 '230 Welcome you silly person\r\n' 19:28:16.074296 < 5 bytes data, client => server 19:28:16.074400 'PWD\r\n' 19:28:16.075540 Received DATA (on stdin) 19:28:16.075648 > 30 bytes data, server => client 19:28:16.075723 '257 "/" is current directory\r\n' 19:28:16.076285 < 6 bytes data, client => server 19:28:16.076387 'EPSV\r\n' 19:28:16.087029 Received DATA (on stdin) 19:28:16.087199 > 38 bytes data, server => client 19:28:16.087289 '229 Entering Passive Mode (|||34975|)\n' 19:28:16.088111 < 8 bytes data, client => server 19:28:16.088235 'TYPE I\r\n' 19:28:16.089686 Received DATA (on stdin) 19:28:16.089791 > 33 bytes data, server => client 19:28:16.089863 '200 I modify TYPE as you wanted\r\n' 19:28:16.090258 < 21 bytes data, client => server 19:28:16.090361 'SIZE verifiedserver\r\n' 19:28:16.091220 Received DATA (on stdin) 19:28:16.091363 > 8 bytes data, server => client 19:28:16.091447 '213 18\r\n' 19:28:16.091847 < 21 bytes data, client => server 19:28:16.091976 'RETR verifiedserver\r\n' 19:28:16.092522 Received DATA (on stdin) 19:28:16.092621 > 29 bytes data, server => client 19:28:16.092694 '150 Binary junk (18 bytes).\r\n' 19:28:16.096714 Received DATA (on stdin) 19:28:16.096833 > 28 bytes data, server => client 19:28:16.096914 '226 File transfer complete\r\n' 19:28:16.135960 < 6 bytes data, client => server 19:28:16.136137 'QUIT\r\n' 19:28:16.136861 Received DATA (on stdin) 19:28:16.137035 > 18 bytes data, server => client 19:28:16.137131 '221 bye bye baby\r\n' 19:28:16.138717 ====> Client disconnect 19:28:16.140772 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:15.084730 Running IPv4 version 19:28:15.085104 Listening on port 34975 19:28:15.085317 Wrote pid 112518 to log/3/server/ftp_sockdata.pid 19:28:15.085426 Received PING (on stdin) 19:28:15.085952 Received PORT (on stdin) 19:28:15.088371 ====> Client connect 19:28:15.093628 Received DATA (on stdin) 19:28:15.093741 > 18 bytes data, server => client 19:28:15.093808 'WE ROOLZ: 109394\r\n' 19:28:15.094335 Received DISC (on stdin) 19:28:15.094928 ====> Client forcibly disconnected 19:28:15.095345 Received QUIT (on stdin) 19:28:15.095467 quits 19:28:15.095724 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 149 === End of file server.cmd === Start of file upload149 send away this contents === End of file upload149 === Start of file valgrind149 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:41477/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 150: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 150 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrCMD (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/4/valgrind151 ../src/curl -q --output log/4/curl151.out --include --trace-ascii log/4/trace151 --trace-config all --trace-time http://127.0.0.1:43669/151 > log/4/stdout151 2> log/4/stderr151 CMD (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/2/valgrind152 ../src/curl -q --output log/2/curl152.out --include --trace-ascii log/2/trace152 --trace-config all --trace-time http://127.0.0.1:39599/152 --fail > log/2/stdout152 2> log/2/stderr152 ind --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-config all --trace-time http://127.0.0.1:41477/150 -u testuser:testpass --ntlm --fail > log/1/stdout150 2> log/1/stderr150 === End of file commands.log === Start of file http_server.log 19:28:16.623214 ====> Client connect 19:28:16.623466 accept_connection 3 returned 4 19:28:16.623590 accept_connection 3 returned 0 19:28:16.624069 Read 93 bytes 19:28:16.624172 Process 93 bytes request 19:28:16.624246 Got request: GET /verifiedserver HTTP/1.1 19:28:16.624306 Are-we-friendly question received 19:28:16.624473 Wrote request (93 bytes) input to log/1/server.input 19:28:16.624624 Identifying ourselves as friends 19:28:16.625139 Response sent (57 bytes) and written to log/1/server.response 19:28:16.625233 special request received, no persistency 19:28:16.625294 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 150 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind150 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind151 ../src/curl -q --output log/4/curl151.out --include --trace-ascii log/4/trace151 --trace-config all --trace-time http://127.0.0.1:43669/151 > log/4/stdout151 2> log/4/stderr151 151: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind151 ../src/curl -q --output log/4/curl151.out --include --trace-ascii log/4/trace151 --trace-config all --trace-time http://127.0.0.1:43669/151 > log/4/stdout151 2> log/4/stderr151 === End of file commands.log === Start of file http_server.log 19:28:16.691563 ====> Client connect 19:28:16.691770 accept_connection 3 returned 4 19:28:16.691866 accept_connection 3 returned 0 19:28:16.692314 Read 93 bytes 19:28:16.692457 Process 93 bytes request 19:28:16.692546 Got request: GET /verifiedserver HTTP/1.1 19:28:16.692611 Are-we-friendly question received 19:28:16.692767 Wrote request (93 bytes) input to log/4/server.input 19:28:16.692917 Identifying ourselves as friends 19:28:16.693310 Response sent (57 bytes) and written to log/4/server.response 19:28:16.693400 special request received, no persistency 19:28:16.693456 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 151 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind151 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind152 ../src/curl -q --output log/2/curl152.out --include --trace-ascii log/2/trace152 --trace-config all --trace-time http://127.0.0.1:39599/152 --fail > log/2/stdout152 2> log/2/stderr152 152: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind152 ../src/curl -q --output log/2/curl152.out --include --trace-ascii log/2/trace152 --trace-config all --trace-time http://127.0.0.1:39599/152 --fail > log/2/stdout152 2> log/2/stderr152 === End of file commands.log === Start of file http_server.log 19:28:16.776463 ====> Client connect 19:28:16.77668CMD (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/valgrind153 ../src/curl -q --include --trace-ascii log/3/trace153 --trace-config all --trace-time http://127.0.0.1:37525/1530001 -u testuser:testpass --digest http://127.0.0.1:37525/1530002 > log/3/stdout153 2> log/3/stderr153 3 accept_connection 3 returned 4 19:28:16.776800 accept_connection 3 returned 0 19:28:16.776901 Read 93 bytes 19:28:16.776967 Process 93 bytes request 19:28:16.777039 Got request: GET /verifiedserver HTTP/1.1 19:28:16.777102 Are-we-friendly question received 19:28:16.777256 Wrote request (93 bytes) input to log/2/server.input 19:28:16.777398 Identifying ourselves as friends 19:28:16.777916 Response sent (57 bytes) and written to log/2/server.response 19:28:16.778008 special request received, no persistency 19:28:16.778070 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 152 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind152 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind152 CMD (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/1/valgrind154 ../src/curl -q --output log/1/curl154.out --include --trace-ascii log/1/trace154 --trace-config all --trace-time http://127.0.0.1:41477/154 -T log/1/put154 -u testuser:testpass --anyauth > log/1/stdout154 2> log/1/stderr154 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-config all --trace-time http://127.0.0.1:37525/1530001 -u testuser:testpass --digest http://127.0.0.1:37525/1530002 > log/3/stdout153 2> log/3/stderr153 153: stdout FAILED: --- log/3/check-expected 2025-05-23 19:28:17.000590138 +0000 +++ log/3/check-generated 2025-05-23 19:28:17.000590138 +0000 @@ -1,30 +0,0 @@ -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 23[CR][LF] -[CR][LF] -This IS the real page![LF] -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 30[CR][LF] -[CR][LF] -This IS the second real page![LF] == Contents of files in the log/3/ dir after test 153 === Start of file check-expected HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 23[CR][LF] [CR][LF] This IS the real page![LF] HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="auth"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 30[CR][LF] [CR][LF] This IS the second real page![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time http://127.0.0.1:37525/1530001 -u testuser:testpass --digest http://127.0.0.1:37525/1530002 > log/3/stdout153 2> log/3/stderr153 === End of file commands.log === Start of file http_server.log 19:28:15.821250 ====> Client connect 19:28:15.821507 accept_connection 3 returned 4 19:28:15.821628 accept_connection 3 returned 0 19:28:15.821743 Read 93 bytes 19:28:15.821824 Process 93 bytes request 19:28:15.821898 Got request: GET /verifiedserver HTTP/1.1 19:28:15.821969 Are-we-friendly question received 19:28:15.822128 Wrote request (93 bytes) input to log/3/server.input 19:28:15.822272 Identifying ourselves as friends 19:28:15.822755 Response sent (57 bytes) and written to log/3/server.response 19:28:15.822846 special request received, no persistency 19:28:15.822902 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 153 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind153 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind153 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/1/valgrind154 ../src/curl -q --output log/1/curl154.out --include --trace-ascii log/1/trace154 --trace-config all --trace-time http://127.0.0.1:41477/154 -T log/1/put154 -u testuser:testpass --anyauth > log/1/stdout154 2> log/1/stderr154 154: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind154 ../src/curl -q --output log/1/curl154.out --include --trace-ascii log/1/trace154 --trace-config all --trace-time http://127.0.0.1:41477/154 -T log/1/put154 -u testuser:testpass --anyauth > log/1/stdout154 2> log/1/stderr154 === End of file commands.log === Start of file http_server.log 19:28:17.275146 ====> Client connect 19:28:17.275387 accept_connection 3 returned 4 19:28:17.275506 accept_connection 3 returned 0 19:28:17.276008 Read 93 bytes 19:28:17.276141 Process 93 bytes request 19:28:17.276240 Got request: GET /verifiedserver HTTP/1.1 19:28:17.276319 Are-we-friendly question received 19:28:17.276510 Wrote request (93 bytes) input to log/1/server.input 19:28:17.276682 Identifying ourselves as friends 19:28:17.277167 Response sent (57 bytes) and written to log/1/server.respoCMD (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/2/valgrind156 ../src/curl -q --output log/2/curl156.out --include --trace-ascii log/2/trace156 --trace-config all --trace-time http://127.0.0.1:39599/156 -T log/2/put156 -u testuser:testpass --anyauth > log/2/stdout156 2> log/2/stderr156 CMD (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/4/valgrind155 ../src/curl -q --output log/4/curl155.out --include --trace-ascii log/4/trace155 --trace-config all --trace-time http://127.0.0.1:43669/155 -T log/4/put155 -u testuser:testpass --anyauth > log/4/stdout155 2> log/4/stderr155 nse 19:28:17.277259 special request received, no persistency 19:28:17.277319 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind154 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind154 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/2/valgrind156 ../src/curl -q --output log/2/curl156.out --include --trace-ascii log/2/trace156 --trace-config all --trace-time http://127.0.0.1:39599/156 -T log/2/put156 -u testuser:testpass --anyauth > log/2/stdout156 2> log/2/stderr156 156: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind156 ../src/curl -q --output log/2/curl156.out --include --trace-ascii log/2/trace156 --trace-config all --trace-time http://127.0.0.1:39599/156 -T log/2/put156 -u testuser:testpass --anyauth > log/2/stdout156 2> log/2/stderr156 === End of file commands.log === Start of file http_server.log 19:28:17.413560 ====> Client connect 19:28:17.413805 accept_connection 3 returned 4 19:28:17.413929 accept_connection 3 returned 0 19:28:17.414087 Read 93 bytes 19:28:17.414215 Process 93 bytes request 19:28:17.414341 Got request: GET /verifiedserver HTTP/1.1 19:28:17.414409 Are-we-friendly question received 19:28:17.414663 Wrote request (93 bytes) input to log/2/server.input 19:28:17.414900 Identifying ourselves as friends 19:28:17.416092 Response sent (57 bytes) and written to log/2/server.response 19:28:17.416214 special request received, no persistency 19:28:17.416269 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file put156 This is data 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind156 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind156 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/4/valgrind155 ../src/curl -q --output log/4/curl155.out --include --trace-ascii log/4/trace155 --trace-config all --trace-time http://127.0.0.1:43669/155 -T log/4/put155 -u testuser:testpass --anyauth > log/4/stdout155 2> log/4/stderr155 155: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind155 ../src/curl -q --output log/4/curl155.out --include --trace-ascii log/4/trace155 --trace-config all --trace-time http://127.0.0.1:43669/155 -T log/4/put155 -u testuser:testpass --anyauth > log/4/stdout155 2> log/4/stderr155 === End of file commands.log === Start of file http_server.log 19:28:17.300878 ====> Client connect 19:28:17.301105 accept_connection 3 returned 4 19:28:17.301217 accept_connection 3 returned 0 19:28:17.301681 Read 93 bytes 19:28:17.301827 Process 93 bytes request 19:28:17.301908 Got request: GET /verifiedserver HTTP/1.1 19:28:17.301970 Are-we-friendly question received 19:28:17.302132 Wrote request (93 bytes) input to log/4/server.input 19:28:17.302317 Identifying ourselves as friends 19:28:17.302776 Response sent (57 bytes) and written to log/4/server.response 19:28:17.302864 special request received, no CMD (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/valgrind157 ../src/curl -q --output log/3/curl157.out --include --trace-ascii log/3/trace157 --trace-config all --trace-time http://127.0.0.1:37525/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157 CMD (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/1/valgrind158 ../src/curl -q --output log/1/curl158.out --include --trace-ascii log/1/trace158 --trace-config all --trace-time http://127.0.0.1:41477/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 persistency 19:28:17.302920 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind155 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind155 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/3/valgrind157 ../src/curl -q --output log/3/curl157.out --include --trace-ascii log/3/trace157 --trace-config all --trace-time http://127.0.0.1:37525/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157 157: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind157 ../src/curl -q --output log/3/curl157.out --include --trace-ascii log/3/trace157 --trace-config all --trace-time http://127.0.0.1:37525/157 -u testuser:testpass --anyauth > log/3/stdout157 2> log/3/stderr157 === End of file commands.log === Start of file http_server.log 19:28:16.582506 ====> Client connect 19:28:16.582740 accept_connection 3 returned 4 19:28:16.582864 accept_connection 3 returned 0 19:28:16.582991 Read 93 bytes 19:28:16.583202 Process 93 bytes request 19:28:16.583330 Got request: GET /verifiedserver HTTP/1.1 19:28:16.583409 Are-we-friendly question received 19:28:16.583579 Wrote request (93 bytes) input to log/3/server.input 19:28:16.583749 Identifying ourselves as friends 19:28:16.584330 Response sent (57 bytes) and written to log/3/server.response 19:28:16.584440 special request received, no persistency 19:28:16.584500 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 157 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind157 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind157 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-config all --trace-time http://127.0.0.1:41477/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 158: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/158 -F name=daniel > log/1/stdout158 2> log/1/stderr158 === End of file commands.log === Start of file http_server.log 19:28:17.989580 ====> Client connect 19:28:17.989797 accept_connection 3 returned 4 19:28:17.989907 accept_connection 3 returned 0 19:28:17.990011 Read 93 bytes 19:28:17.990082 Process 93 bytes request 19:28:17.990151 Got request: GET /verifiedserver HTTP/1.1 19:28:17.990217 Are-we-friendly question received 19:28:17.990370 Wrote request (93 bytes) input to log/1/server.input 19:28:17.990521 Identifying ourselves as friends 19:28:17.991024 Response sent (57 bytes) and written to log/1/server.response 19:28:17.991252 special request received, no persistency 19:28:17.991322 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent:CMD (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/2/valgrind160 ../src/curl -q --include --trace-ascii log/2/trace160 --trace-config all --trace-time http://127.0.0.1:39599/want/160 http://127.0.0.1:39599/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 158 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind158 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind158 CMD (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/4/valgrind161 ../src/curl -q --output log/4/curl161.out --include --trace-ascii log/4/trace161 --trace-config all --trace-time ftp://127.0.0.1:40809/161 > log/4/stdout161 2> log/4/stderr161 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-config all --trace-time http://127.0.0.1:39599/want/160 http://127.0.0.1:39599/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 160: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:18.128618454 +0000 +++ log/2/check-generated 2025-05-23 19:28:18.128618454 +0000 @@ -1,10 +0,0 @@ -HTTP/1.1 200 OK swsclose[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Content-Length: 9[CR][LF] -[CR][LF] -surprise[LF] -HTTP/1.1 200 OK swsclose[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Connection: close[CR][LF] -[CR][LF] -surprise2[LF] == Contents of files in the log/2/ dir after test 160 === Start of file check-expected HTTP/1.1 200 OK swsclose[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Content-Length: 9[CR][LF] [CR][LF] surprise[LF] HTTP/1.1 200 OK swsclose[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Connection: close[CR][LF] [CR][LF] surprise2[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time http://127.0.0.1:39599/want/160 http://127.0.0.1:39599/wantmore/1600001 > log/2/stdout160 2> log/2/stderr160 === End of file commands.log === Start of file http_server.log 19:28:18.036563 ====> Client connect 19:28:18.036782 accept_connection 3 returned 4 19:28:18.036892 accept_connection 3 returned 0 19:28:18.036990 Read 93 bytes 19:28:18.037053 Process 93 bytes request 19:28:18.037118 Got request: GET /verifiedserver HTTP/1.1 19:28:18.037176 Are-we-friendly question received 19:28:18.037322 Wrote request (93 bytes) input to log/2/server.input 19:28:18.037452 Identifying ourselves as friends 19:28:18.037958 Response sent (57 bytes) and written to log/2/server.response 19:28:18.038099 special request received, no persistency 19:28:18.038203 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 160 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind160 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind161 ../src/curl -q --output log/4/curl161.out --include --trace-ascii log/4/trace161 --trace-config all --trace-time ftp://127.0.0.1:40809/161 > log/4/stdout161 2> log/4/stderr161 161: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind161 ../src/curl -q --output log/4/curl161.out --include --trace-ascii log/4/trace161 --trace-config all --trace-time ftp://127.0.0.1:40809/161 > log/4/stdout161 2> log/4/stderr161 === End of file commands.log === Start of file ftp_server.log 19:28:17.636167 ====> Client connect 19:28:17.636913 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:17.638241 < "USER anonymous" 19:28:17.638526 > "331 We are happy you popped in![CR][LF]" 19:28:17.639484 < "PASS ftp@example.com" 19:28:17.639730 > "230 Welcome you silly person[CR][LF]" 19:28:17.640666 < "PWD" 19:28:17.640929 > "257 "/" is current directory[CR][LF]" 19:28:17.642002 < "EPSV" 19:28:17.642231 ====> Passive DATA channel requested by client 19:28:17.642375 DATA sockfilt for passive data channel starting... 19:28:17.653543 DATA sockfilt for passive data channel started (pid 113291) 19:28:17.654315 DATA sockfilt for passive data channel listens on port 39875 19:28:17.654668 > "229 Entering Passive Mode (|||39875|)[LF]" 19:28:17.654859 Client has been notified that DATA conn will be accepted on port 39875 19:28:17.655957 Client connects to port 39875 19:28:17.656192 ====> Client established passive DATA connection on port 39875 19:28:17.656800 < "TYPE I" 19:28:17.657087 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:17.658965 < "SIZE verifiedserver" 19:28:17.659284 > "213 18[CR][LF]" 19:28:17.660519 < "RETR verifiedserver" 19:28:17.660821 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:17.661315 =====> Closing passive DATA connection... 19:28:17.661674 Server disconnects passive DATA connection 19:28:17.661993 Fancy that; client wants to DISC, too 19:28:17.662246 Server disconnected passive DATA connection 19:28:17.662423 DATA sockfilt for passive data channel quits (pid 113291) 19:28:17.663808 DATA sockfilt for passive data channel quit (pid 113291) 19:28:17.664032 =====> Closed passive DATA connection 19:28:17.664289 > "226 File transfer complete[CR][LF]" 19:28:17.665646 < "QUIT" 19:28:17.665929 > "221 bye bye baby[CR][LF]" 19:28:17.668354 MAIN sockfilt said DISC 19:28:17.668616 ====> Client disconnected 19:28:17.668953 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:17.101427 ====> Client connect 19:28:17.102560 Received DATA (on stdin) 19:28:17.102692 > 160 bytes data, server => client 19:28:17.102780 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:17.102851 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:17.102910 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:17.103354 < 16 bytes data, client => server 19:28:17.103493 'USER anonymous\r\n' 19:28:17.104184 Received DATA (on stdin) 19:28:17.1042CMD (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/valgrind162 ../src/curl -q --output log/3/curl162.out --include --trace-ascii log/3/trace162 --trace-config all --trace-time http://127.0.0.1:37525/162 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 87 > 33 bytes data, server => client 19:28:17.104359 '331 We are happy you popped in!\r\n' 19:28:17.104756 < 22 bytes data, client => server 19:28:17.104875 'PASS ftp@example.com\r\n' 19:28:17.105390 Received DATA (on stdin) 19:28:17.105490 > 30 bytes data, server => client 19:28:17.105564 '230 Welcome you silly person\r\n' 19:28:17.105952 < 5 bytes data, client => server 19:28:17.106067 'PWD\r\n' 19:28:17.106592 Received DATA (on stdin) 19:28:17.106699 > 30 bytes data, server => client 19:28:17.106777 '257 "/" is current directory\r\n' 19:28:17.107295 < 6 bytes data, client => server 19:28:17.107422 'EPSV\r\n' 19:28:17.120332 Received DATA (on stdin) 19:28:17.120478 > 38 bytes data, server => client 19:28:17.120584 '229 Entering Passive Mode (|||39875|)\n' 19:28:17.121391 < 8 bytes data, client => server 19:28:17.121502 'TYPE I\r\n' 19:28:17.122749 Received DATA (on stdin) 19:28:17.122869 > 33 bytes data, server => client 19:28:17.122949 '200 I modify TYPE as you wanted\r\n' 19:28:17.124224 < 21 bytes data, client => server 19:28:17.124372 'SIZE verifiedserver\r\n' 19:28:17.124942 Received DATA (on stdin) 19:28:17.125065 > 8 bytes data, server => client 19:28:17.125139 '213 18\r\n' 19:28:17.125758 < 21 bytes data, client => server 19:28:17.125879 'RETR verifiedserver\r\n' 19:28:17.126468 Received DATA (on stdin) 19:28:17.126582 > 29 bytes data, server => client 19:28:17.126665 '150 Binary junk (18 bytes).\r\n' 19:28:17.129954 Received DATA (on stdin) 19:28:17.130078 > 28 bytes data, server => client 19:28:17.130154 '226 File transfer complete\r\n' 19:28:17.130840 < 6 bytes data, client => server 19:28:17.130971 'QUIT\r\n' 19:28:17.131586 Received DATA (on stdin) 19:28:17.131706 > 18 bytes data, server => client 19:28:17.131782 '221 bye bye baby\r\n' 19:28:17.133751 ====> Client disconnect 19:28:17.134290 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:17.118228 Running IPv4 version 19:28:17.118594 Listening on port 39875 19:28:17.118813 Wrote pid 113291 to log/4/server/ftp_sockdata.pid 19:28:17.118926 Received PING (on stdin) 19:28:17.119568 Received PORT (on stdin) 19:28:17.121430 ====> Client connect 19:28:17.126733 Received DATA (on stdin) 19:28:17.126889 > 18 bytes data, server => client 19:28:17.126983 'WE ROOLZ: 109451\r\n' 19:28:17.127453 ====> Client disconnect 19:28:17.127616 Received DISC (on stdin) 19:28:17.127727 Crikey! Client also wants to disconnect 19:28:17.127910 Received ACKD (on stdin) 19:28:17.128282 Received QUIT (on stdin) 19:28:17.128395 quits 19:28:17.128763 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 161 === End of file server.cmd === Start of file valgrind161 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind161 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-config all --trace-time http://127.0.0.1:37525/162 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 162: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/162 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm --fail > log/3/stdout162 2> log/3/stderr162 === End of file commands.log === Start of file http_server.log 19:28:17.206781 ====> Client connect 19:28:17.207013 accept_connection 3 returned 4 19:28:17.207229 accept_connection 3 returned 0 19:28:17.207342 Read 93 bytes 19:28:17.207440 Process 93 bytes request 19:28:17.207561 Got request: GET /verifiedserver HTTP/1.1 19:28:17.207662 Are-we-friendly question received 19:28:17.207842 Wrote request (93 bytes) input to log/3/server.input 19:28:17.208013 Identifying ourselves as friends 19:28:17.208599 Response sent (57 bytes) and written to log/3/server.response 19:28:17.208691 special request received, no persistency 19:28:17.208744 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 162 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind162 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting noCMD (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/1/valgrind163 ../src/curl -q --output log/1/curl163.out --include --trace-ascii log/1/trace163 --trace-config all --trace-time http://127.0.0.1:41477/we/want/163 -F "name= log/1/stdout163 2> log/1/stderr163 CMD (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/2/valgrind164 ../src/curl -q --output log/2/curl164.out --include --trace-ascii log/2/trace164 --trace-config all --trace-time http://127.0.0.1:39599/want/164 -r 0-10,12-15 > log/2/stdout164 2> log/2/stderr164 CMD (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/4/valgrind165 ../src/curl -q --output log/4/curl165.out --include --trace-ascii log/4/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:43669 http://www.große.de/page/165 > log/4/stdout165 2> log/4/stderr165 w. Sorry. === End of file valgrind162 test 0163...[HTTP multipart formpost with contents from 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/1/valgrind163 ../src/curl -q --output log/1/curl163.out --include --trace-ascii log/1/trace163 --trace-config all --trace-time http://127.0.0.1:41477/we/want/163 -F "name= log/1/stdout163 2> log/1/stderr163 163: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind163 ../src/curl -q --output log/1/curl163.out --include --trace-ascii log/1/trace163 --trace-config all --trace-time http://127.0.0.1:41477/we/want/163 -F "name= log/1/stdout163 2> log/1/stderr163 === End of file commands.log === Start of file field163 contents from a file newlinens? yes please [tab][CR] too === End of file field163 === Start of file http_server.log 19:28:18.630549 ====> Client connect 19:28:18.630790 accept_connection 3 returned 4 19:28:18.630913 accept_connection 3 returned 0 19:28:18.631024 Read 93 bytes 19:28:18.631230 Process 93 bytes request 19:28:18.631340 Got request: GET /verifiedserver HTTP/1.1 19:28:18.631415 Are-we-friendly question received 19:28:18.631589 Wrote request (93 bytes) input to log/1/server.input 19:28:18.631777 Identifying ourselves as friends 19:28:18.632350 Response sent (57 bytes) and written to log/1/server.response 19:28:18.632445 special request received, no persistency 19:28:18.632503 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 163 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind163 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind163 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/2/valgrind164 ../src/curl -q --output log/2/curl164.out --include --trace-ascii log/2/trace164 --trace-config all --trace-time http://127.0.0.1:39599/want/164 -r 0-10,12-15 > log/2/stdout164 2> log/2/stderr164 164: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind164 ../src/curl -q --output log/2/curl164.out --include --trace-ascii log/2/trace164 --trace-config all --trace-time http://127.0.0.1:39599/want/164 -r 0-10,12-15 > log/2/stdout164 2> log/2/stderr164 === End of file commands.log === Start of file http_server.log 19:28:18.720457 ====> Client connect 19:28:18.720697 accept_connection 3 returned 4 19:28:18.720817 accept_connection 3 returned 0 19:28:18.720931 Read 93 bytes 19:28:18.721009 Process 93 bytes request 19:28:18.721081 Got request: GET /verifiedserver HTTP/1.1 19:28:18.721140 Are-we-friendly question received 19:28:18.721303 Wrote request (93 bytes) input to log/2/server.input 19:28:18.721456 Identifying ourselves as friends 19:28:18.721949 Response sent (57 bytes) and written to log/2/server.response 19:28:18.722044 special request received, no persistency 19:28:18.722104 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 164 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind164 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind164 setenv LC_ALL = en_US.UTF-8 setenv LC_CTYPE = en_US.UTF-8 test 0165...[HTTP over proxy with IDN host name] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/buiCMD (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/valgrind166 ../src/curl -q --output log/3/curl166.out --include --trace-ascii log/3/trace166 --trace-config all --trace-time http://127.0.0.1:37525/we/want/166 -F "name=@log/3/fie ld 166" > log/3/stdout166 2> log/3/stderr166 CMD (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/1/valgrind167 ../src/curl -q --output log/1/curl167.out --include --trace-ascii log/1/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:41477 --proxy-user foo:bar --digest --user digest:alot > log/1/stdout167 2> log/1/stderr167 ld/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind165 ../src/curl -q --output log/4/curl165.out --include --trace-ascii log/4/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:43669 http://www.große.de/page/165 > log/4/stdout165 2> log/4/stderr165 165: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind165 ../src/curl -q --output log/4/curl165.out --include --trace-ascii log/4/trace165 --trace-config all --trace-time http://www.åäö.se/page/165 -x 127.0.0.1:43669 http://www.große.de/page/165 > log/4/stdout165 2> log/4/stderr165 === End of file commands.log === Start of file http_server.log 19:28:18.744093 ====> Client connect 19:28:18.744388 accept_connection 3 returned 4 19:28:18.744510 accept_connection 3 returned 0 19:28:18.744600 Read 93 bytes 19:28:18.744662 Process 93 bytes request 19:28:18.744732 Got request: GET /verifiedserver HTTP/1.1 19:28:18.744791 Are-we-friendly question received 19:28:18.744935 Wrote request (93 bytes) input to log/4/server.input 19:28:18.745071 Identifying ourselves as friends 19:28:18.745555 Response sent (57 bytes) and written to log/4/server.response 19:28:18.745653 special request received, no persistency 19:28:18.745708 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 165 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind165 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind166 ../src/curl -q --output log/3/curl166.out --include --trace-ascii log/3/trace166 --trace-config all --trace-time http://127.0.0.1:37525/we/want/166 -F "name=@log/3/fie ld 166" > log/3/stdout166 2> log/3/stderr166 166: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind166 ../src/curl -q --output log/3/curl166.out --include --trace-ascii log/3/trace166 --trace-config all --trace-time http://127.0.0.1:37525/we/want/166 -F "name=@log/3/fie ld 166" > log/3/stdout166 2> log/3/stderr166 === End of file commands.log === Start of file fie ld 166 data inside the file === End of file fie ld 166 === Start of file http_server.log 19:28:17.848360 ====> Client connect 19:28:17.848578 accept_connection 3 returned 4 19:28:17.848698 accept_connection 3 returned 0 19:28:17.848805 Read 93 bytes 19:28:17.848882 Process 93 bytes request 19:28:17.848953 Got request: GET /verifiedserver HTTP/1.1 19:28:17.849014 Are-we-friendly question received 19:28:17.849176 Wrote request (93 bytes) input to log/3/server.input 19:28:17.849350 Identifying ourselves as friends 19:28:17.849874 Response sent (57 bytes) and written to log/3/server.response 19:28:17.849957 special request received, no persistency 19:28:17.850010 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 166 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind166 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind166 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/1/valgrind167 ../src/curl -q --output log/1/curl167.out --include --trace-ascii log/1/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hCMD (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/2/valgrind168 ../src/curl -q --output log/2/curl168.out --include --trace-ascii log/2/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:39599 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/2/stdout168 2> log/2/stderr168 CMD (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/4/valgrind169 ../src/curl -q --output log/4/curl169.out --include --trace-ascii log/4/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/4/stdout169 2> log/4/stderr169 ohoho.com/167 --proxy http://127.0.0.1:41477 --proxy-user foo:bar --digest --user digest:alot > log/1/stdout167 2> log/1/stderr167 167: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind167 ../src/curl -q --output log/1/curl167.out --include --trace-ascii log/1/trace167 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/167 --proxy http://127.0.0.1:41477 --proxy-user foo:bar --digest --user digest:alot > log/1/stdout167 2> log/1/stderr167 === End of file commands.log === Start of file http_server.log 19:28:19.319368 ====> Client connect 19:28:19.319630 accept_connection 3 returned 4 19:28:19.319786 accept_connection 3 returned 0 19:28:19.319933 Read 93 bytes 19:28:19.320017 Process 93 bytes request 19:28:19.320096 Got request: GET /verifiedserver HTTP/1.1 19:28:19.320159 Are-we-friendly question received 19:28:19.320311 Wrote request (93 bytes) input to log/1/server.input 19:28:19.320455 Identifying ourselves as friends 19:28:19.320930 Response sent (57 bytes) and written to log/1/server.response 19:28:19.321023 special request received, no persistency 19:28:19.321077 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 167 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind167 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind168 ../src/curl -q --output log/2/curl168.out --include --trace-ascii log/2/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:39599 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/2/stdout168 2> log/2/stderr168 168: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind168 ../src/curl -q --output log/2/curl168.out --include --trace-ascii log/2/trace168 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/168 --proxy http://127.0.0.1:39599 --proxy-user foo:bar --proxy-digest --digest --user digest:alot > log/2/stdout168 2> log/2/stderr168 === End of file commands.log === Start of file http_server.log 19:28:19.386228 ====> Client connect 19:28:19.386472 accept_connection 3 returned 4 19:28:19.386615 accept_connection 3 returned 0 19:28:19.386749 Read 93 bytes 19:28:19.386832 Process 93 bytes request 19:28:19.386901 Got request: GET /verifiedserver HTTP/1.1 19:28:19.386964 Are-we-friendly question received 19:28:19.387200 Wrote request (93 bytes) input to log/2/server.input 19:28:19.387371 Identifying ourselves as friends 19:28:19.387900 Response sent (57 bytes) and written to log/2/server.response 19:28:19.387995 special request received, no persistency 19:28:19.388050 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 168 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind168 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind169 ../src/curl -q --output log/4/curl169.out --include --trace-ascii log/4/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/CMD (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/valgrind170 ../src/curl -q --output log/3/curl170.out --include --trace-ascii log/3/trace170 --trace-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 CMD (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/1/valgrind171 ../src/curl -q --output log/1/curl171.out --include --trace-ascii log/1/trace171 --trace-config all --trace-time -c log/1/jar171 -x 127.0.0.1:41477 http://z.x.com/171 > log/1/stdout171 2> log/1/stderr171 169 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/4/stdout169 2> log/4/stderr169 169: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind169 ../src/curl -q --output log/4/curl169.out --include --trace-ascii log/4/trace169 --trace-config all --trace-time http://data.from.server.requiring.digest.hohoho.com/169 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --digest --user digest:alot > log/4/stdout169 2> log/4/stderr169 === End of file commands.log === Start of file http_server.log 19:28:19.410360 ====> Client connect 19:28:19.410585 accept_connection 3 returned 4 19:28:19.410711 accept_connection 3 returned 0 19:28:19.410817 Read 93 bytes 19:28:19.410892 Process 93 bytes request 19:28:19.410968 Got request: GET /verifiedserver HTTP/1.1 19:28:19.411093 Are-we-friendly question received 19:28:19.411294 Wrote request (93 bytes) input to log/4/server.input 19:28:19.411459 Identifying ourselves as friends 19:28:19.411963 Response sent (57 bytes) and written to log/4/server.response 19:28:19.412053 special request received, no persistency 19:28:19.412112 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 169 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind169 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind169 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-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 170: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://a.galaxy.far.far.away/170 --proxy http://127.0.0.1:37525 --proxy-user foo:bar --proxy-ntlm -F "dummy=value" > log/3/stdout170 2> log/3/stderr170 === End of file commands.log === Start of file http_server.log 19:28:18.526358 ====> Client connect 19:28:18.526595 accept_connection 3 returned 4 19:28:18.526714 accept_connection 3 returned 0 19:28:18.526817 Read 93 bytes 19:28:18.526885 Process 93 bytes request 19:28:18.526950 Got request: GET /verifiedserver HTTP/1.1 19:28:18.527009 Are-we-friendly question received 19:28:18.527303 Wrote request (93 bytes) input to log/3/server.input 19:28:18.527460 Identifying ourselves as friends 19:28:18.527956 Response sent (57 bytes) and written to log/3/server.response 19:28:18.528042 special request received, no persistency 19:28:18.528107 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 170 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind170 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind170 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/1/valgrind171 ../src/curl -q --output log/1/curl171.out --include --trace-ascii log/1/trace171 --trace-config all --trace-time -c log/1/jar171 -x 127.0.0.1:41477 http://z.x.com/171 > log/1/stdout171 2> log/1/stderr171 171: pCMD (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/2/valgrind172 ../src/curl -q --output log/2/curl172.out --include --trace-ascii log/2/trace172 --trace-config all --trace-time http://127.0.0.1:39599/we/want/172 -b log/2/jar172.txt -b "tool=curl; name=fool" > log/2/stdout172 2> log/2/stderr172 CMD (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/4/valgrind173 ../src/curl -q --output log/4/curl173.out --include --trace-ascii log/4/trace173 --trace-config all --trace-time http://127.0.0.1:43669/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/4/stdout173 2> log/4/stderr173 CMD (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/valgrind174 ../src/curl -q --output log/3/curl174.out --include --trace-ascii log/3/trace174 --trace-config all --trace-time http://127.0.0.1:37525/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/3/stdout174 2> log/3/stderr174 rotocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind171 ../src/curl -q --output log/1/curl171.out --include --trace-ascii log/1/trace171 --trace-config all --trace-time -c log/1/jar171 -x 127.0.0.1:41477 http://z.x.com/171 > log/1/stdout171 2> log/1/stderr171 === End of file commands.log === Start of file http_server.log 19:28:20.002496 ====> Client connect 19:28:20.002726 accept_connection 3 returned 4 19:28:20.002835 accept_connection 3 returned 0 19:28:20.003427 Read 93 bytes 19:28:20.003575 Process 93 bytes request 19:28:20.003666 Got request: GET /verifiedserver HTTP/1.1 19:28:20.003743 Are-we-friendly question received 19:28:20.003940 Wrote request (93 bytes) input to log/1/server.input 19:28:20.004267 Identifying ourselves as friends 19:28:20.004925 Response sent (57 bytes) and written to log/1/server.response 19:28:20.005123 special request received, no persistency 19:28:20.005264 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 171 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind171 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind171 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/2/valgrind172 ../src/curl -q --output log/2/curl172.out --include --trace-ascii log/2/trace172 --trace-config all --trace-time http://127.0.0.1:39599/we/want/172 -b log/2/jar172.txt -b "tool=curl; name=fool" > log/2/stdout172 2> log/2/stderr172 172: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind172 ../src/curl -q --output log/2/curl172.out --include --trace-ascii log/2/trace172 --trace-config all --trace-time http://127.0.0.1:39599/we/want/172 -b log/2/jar172.txt -b "tool=curl; name=fool" > log/2/stdout172 2> log/2/stderr172 === End of file commands.log === Start of file http_server.log 19:28:20.082658 ====> Client connect 19:28:20.082898 accept_connection 3 returned 4 19:28:20.083085 accept_connection 3 returned 0 19:28:20.083215 Read 93 bytes 19:28:20.083287 Process 93 bytes request 19:28:20.083359 Got request: GET /verifiedserver HTTP/1.1 19:28:20.083428 Are-we-friendly question received 19:28:20.083588 Wrote request (93 bytes) input to log/2/server.input 19:28:20.083739 Identifying ourselves as friends 19:28:20.084276 Response sent (57 bytes) and written to log/2/server.response 19:28:20.084373 special request received, no persistency 19:28:20.084428 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind172 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind172 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/4/valgrind173 ../src/curl -q --output log/4/curl173.out --include --trace-ascii log/4/trace173 --trace-config all --trace-time http://127.0.0.1:43669/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;CMD (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/1/valgrind175 ../src/curl -q --output log/1/curl175.out --include --trace-ascii log/1/trace175 --trace-config all --trace-time http://127.0.0.1:41477/175 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout175 2> log/1/stderr175 format=x-curl" log/4/stdout173 2> log/4/stderr173 173: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind173 ../src/curl -q --output log/4/curl173.out --include --trace-ascii log/4/trace173 --trace-config all --trace-time http://127.0.0.1:43669/we/want/173 -F field1=contents1 -F "fileupload=@-;filename=/dev/null;type=text/x-null;format=x-curl" log/4/stdout173 2> log/4/stderr173 === End of file commands.log === Start of file http_server.log 19:28:20.160681 ====> Client connect 19:28:20.160901 accept_connection 3 returned 4 19:28:20.161020 accept_connection 3 returned 0 19:28:20.161582 Read 93 bytes 19:28:20.161704 Process 93 bytes request 19:28:20.161781 Got request: GET /verifiedserver HTTP/1.1 19:28:20.161840 Are-we-friendly question received 19:28:20.161997 Wrote request (93 bytes) input to log/4/server.input 19:28:20.162147 Identifying ourselves as friends 19:28:20.162540 Response sent (57 bytes) and written to log/4/server.response 19:28:20.162634 special request received, no persistency 19:28:20.162694 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 173 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file stdin-for-173 line1 line2 line3 line4 line5 line6 line7 line8 === End of file stdin-for-173 === Start of file valgrind173 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind173 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/3/valgrind174 ../src/curl -q --output log/3/curl174.out --include --trace-ascii log/3/trace174 --trace-config all --trace-time http://127.0.0.1:37525/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/3/stdout174 2> log/3/stderr174 174: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 174 === Start of file commands.log ../libtool --mode=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/valgrind174 ../src/curl -q --output log/3/curl174.out --include --trace-ascii log/3/trace174 --trace-config all --trace-time http://127.0.0.1:37525/174 -u testuser:testpass --anyauth -d "junkelijunk" > log/3/stdout174 2> log/3/stderr174 === End of file commands.log === Start of file http_server.log 19:28:19.166966 ====> Client connect 19:28:19.167344 accept_connection 3 returned 4 19:28:19.167474 accept_connection 3 returned 0 19:28:19.167994 Read 93 bytes 19:28:19.168124 Process 93 bytes request 19:28:19.168212 Got request: GET /verifiedserver HTTP/1.1 19:28:19.168280 Are-we-friendly question received 19:28:19.168444 Wrote request (93 bytes) input to log/3/server.input 19:28:19.168611 Identifying ourselves as friends 19:28:19.169070 Response sent (57 bytes) and written to log/3/server.response 19:28:19.169175 special request received, no persistency 19:28:19.169238 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 174 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind174 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind174 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/1/valgrind175 ../src/curl -q --output log/1/curl175.out --include --trace-ascii log/1/trace175 --trace-config all --trace-time http://127.0.0.1:41477/175 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout175 2> log/1/stderr175 175: protocol FAILED! There was no content at all in the file log/1/server.input. CMD (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/valgrind178 ../src/curl -q --output log/3/curl178.out --include --trace-ascii log/3/trace178 --trace-config all --trace-time http://127.0.0.1:37525/178 > log/3/stdout178 2> log/3/stderr178 CMD (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/4/valgrind177 ../src/curl -q --output log/4/curl177.out --include --trace-ascii log/4/trace177 --trace-config all --trace-time http://127.0.0.1:43669/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177 CMD (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/2/valgrind176 ../src/curl -q --output log/2/curl176.out --include --trace-ascii log/2/trace176 --trace-config all --trace-time http://127.0.0.1:39599/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/2/stdout176 2> log/2/stderr176 Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind175 ../src/curl -q --output log/1/curl175.out --include --trace-ascii log/1/trace175 --trace-config all --trace-time http://127.0.0.1:41477/175 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout175 2> log/1/stderr175 === End of file commands.log === Start of file http_server.log 19:28:20.706087 ====> Client connect 19:28:20.706903 accept_connection 3 returned 4 19:28:20.708070 accept_connection 3 returned 0 19:28:20.708490 Read 93 bytes 19:28:20.708604 Process 93 bytes request 19:28:20.708694 Got request: GET /verifiedserver HTTP/1.1 19:28:20.709120 Are-we-friendly question received 19:28:20.709515 Wrote request (93 bytes) input to log/1/server.input 19:28:20.709715 Identifying ourselves as friends 19:28:20.710390 Response sent (57 bytes) and written to log/1/server.response 19:28:20.710488 special request received, no persistency 19:28:20.710542 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 175 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind175 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind175 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-config all --trace-time http://127.0.0.1:37525/178 > log/3/stdout178 2> log/3/stderr178 178: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/178 > log/3/stdout178 2> log/3/stderr178 === End of file commands.log === Start of file http_server.log 19:28:19.808065 ====> Client connect 19:28:19.808295 accept_connection 3 returned 4 19:28:19.808417 accept_connection 3 returned 0 19:28:19.808522 Read 93 bytes 19:28:19.808595 Process 93 bytes request 19:28:19.808664 Got request: GET /verifiedserver HTTP/1.1 19:28:19.808723 Are-we-friendly question received 19:28:19.808876 Wrote request (93 bytes) input to log/3/server.input 19:28:19.809012 Identifying ourselves as friends 19:28:19.809509 Response sent (57 bytes) and written to log/3/server.response 19:28:19.809610 special request received, no persistency 19:28:19.809670 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 178 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind178 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind178 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/4/valgrind177 ../src/curl -q --output log/4/curl177.out --include --trace-ascii log/4/trace177 --trace-config all --trace-time http://127.0.0.1:43669/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177 177: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind177 ../src/curl -q --output log/4/curl177.out --include --trace-ascii log/4/trace177CMD (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/1/valgrind179 ../src/curl -q --output log/1/curl179.out --include --trace-ascii log/1/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/1/injar179 -x 127.0.0.1:41477 > log/1/stdout179 2> log/1/stderr179 --trace-config all --trace-time http://127.0.0.1:43669/177 -u auser:apasswd --digest -d "junkelijunk" > log/4/stdout177 2> log/4/stderr177 === End of file commands.log === Start of file http_server.log 19:28:20.810201 ====> Client connect 19:28:20.810411 accept_connection 3 returned 4 19:28:20.810513 accept_connection 3 returned 0 19:28:20.810614 Read 93 bytes 19:28:20.810690 Process 93 bytes request 19:28:20.810766 Got request: GET /verifiedserver HTTP/1.1 19:28:20.810833 Are-we-friendly question received 19:28:20.810980 Wrote request (93 bytes) input to log/4/server.input 19:28:20.811267 Identifying ourselves as friends 19:28:20.811739 Response sent (57 bytes) and written to log/4/server.response 19:28:20.811833 special request received, no persistency 19:28:20.811893 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 177 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind177 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind176 ../src/curl -q --output log/2/curl176.out --include --trace-ascii log/2/trace176 --trace-config all --trace-time http://127.0.0.1:39599/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/2/stdout176 2> log/2/stderr176 176: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind176 ../src/curl -q --output log/2/curl176.out --include --trace-ascii log/2/trace176 --trace-config all --trace-time http://127.0.0.1:39599/176 -u auser:apasswd --ntlm -d "junkelijunk" > log/2/stdout176 2> log/2/stderr176 === End of file commands.log === Start of file http_server.log 19:28:20.754652 ====> Client connect 19:28:20.754878 accept_connection 3 returned 4 19:28:20.755056 accept_connection 3 returned 0 19:28:20.755189 Read 93 bytes 19:28:20.755258 Process 93 bytes request 19:28:20.755323 Got request: GET /verifiedserver HTTP/1.1 19:28:20.755378 Are-we-friendly question received 19:28:20.755519 Wrote request (93 bytes) input to log/2/server.input 19:28:20.755660 Identifying ourselves as friends 19:28:20.756182 Response sent (57 bytes) and written to log/2/server.response 19:28:20.756278 special request received, no persistency 19:28:20.756341 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 176 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind176 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind176 test 0179...[HTTP using 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/1/valgrind179 ../src/curl -q --output log/1/curl179.out --include --trace-ascii log/1/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/1/injar179 -x 127.0.0.1:41477 > log/1/stdout179 2> log/1/stderr179 179: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind179 ../src/curl -q --output log/1/curl179.out --include --trace-ascii log/1/trace179 --trace-config all --trace-time http://supertrooper.fake/c/179 -b log/1/injar179 -x 127.0.0.1:41477 > log/1/stdout179 2> log/1/stderr179 === End of file commands.log === Start of file http_server.log 19:28:21.364245 ====> Client connect 19:28:21.364465 accept_connection 3 returned 4 19:28:21.364576 accept_connectionCMD (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/valgrind180 ../src/curl -q --output log/3/curl180.out --include --trace-ascii log/3/trace180 --trace-config all --trace-time http://127.0.0.1:37525/we/want/180 -T log/3/test180.txt --http1.0 > log/3/stdout180 2> log/3/stderr180 CMD (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/4/valgrind181 ../src/curl -q --output log/4/curl181.out --include --trace-ascii log/4/trace181 --trace-config all --trace-time http://127.0.0.1:43669/we/want/181 --data-binary @log/4/test181.txt --http1.0 > log/4/stdout181 2> log/4/stderr181 CMD (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/2/valgrind182 ../src/curl -q --output log/2/curl182.out --include --trace-ascii log/2/trace182 --trace-config all --trace-time ftp://127.0.0.1:43671/182 > log/2/stdout182 2> log/2/stderr182 3 returned 0 19:28:21.364677 Read 93 bytes 19:28:21.364756 Process 93 bytes request 19:28:21.364832 Got request: GET /verifiedserver HTTP/1.1 19:28:21.364901 Are-we-friendly question received 19:28:21.365059 Wrote request (93 bytes) input to log/1/server.input 19:28:21.365203 Identifying ourselves as friends 19:28:21.365664 Response sent (57 bytes) and written to log/1/server.response 19:28:21.365744 special request received, no persistency 19:28:21.365792 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind179 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind180 ../src/curl -q --output log/3/curl180.out --include --trace-ascii log/3/trace180 --trace-config all --trace-time http://127.0.0.1:37525/we/want/180 -T log/3/test180.txt --http1.0 > log/3/stdout180 2> log/3/stderr180 180: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind180 ../src/curl -q --output log/3/curl180.out --include --trace-ascii log/3/trace180 --trace-config all --trace-time http://127.0.0.1:37525/we/want/180 -T log/3/test180.txt --http1.0 > log/3/stdout180 2> log/3/stderr180 === End of file commands.log === Start of file http_server.log 19:28:20.403179 ====> Client connect 19:28:20.403423 accept_connection 3 returned 4 19:28:20.403542 accept_connection 3 returned 0 19:28:20.403661 Read 93 bytes 19:28:20.403748 Process 93 bytes request 19:28:20.403827 Got request: GET /verifiedserver HTTP/1.1 19:28:20.403893 Are-we-friendly question received 19:28:20.404055 Wrote request (93 bytes) input to log/3/server.input 19:28:20.404210 Identifying ourselves as friends 19:28:20.404754 Response sent (57 bytes) and written to log/3/server.response 19:28:20.404866 special request received, no persistency 19:28:20.404928 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 180 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file test180.txt Weird file to upload for testing the PUT feature === End of file test180.txt === Start of file valgrind180 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind180 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/2/valgrind182 ../src/curl -q --output log/2/curl182.out --include --trace-ascii log/2/trace182 --trace-config all --trace-time ftp://127.0.0.1:43671/182 > log/2/stdout182 2> log/2/stderr182 182: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind182 ../src/curl -q --output log/2/curl182.out --include --trace-ascii log/2/trace182 --trace-config all --trace-time ftp://127.0.0.1:43671/182 > log/2/stdout182 2> log/2/stderr182 === End of file commands.log === Start of file ftp_server.log 19:28:20.965777 ====> Client connect 19:28:20.966574 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:20.967946 < "USER anonymous" 19:28:20.968215 > "331 We are happy you popped in![CR][LF]" 19:28:20.969221 < "PASS ftp@example.com" 19:28:20.969572 > "230 Welcome you silly person[CR][LF]" 19:28:20.970516 < "PWD" 19:28:20.970822 > "257 "/" is current directory[CR][LF]" 19:28:20.971723 < "EPSV" 19:28:20.971975 ====> Passive DATA channel requested by client 19:28:20.972108 DATA sockfilt for passive data channel starting... 19:28:20.980231 DATA sockfilt for passive data channel started (pid 114605) 19:28:20.980975 DATA sockfilt for passive data channel listens on port 45731 19:28:20.981299 > "229 Entering Passive Mode (|||45731|)[LF]" 19:28:20.981540 Client has been notified that DATA conn will be accepted on port 45731 19:28:20.982920 Client connects to port 45731 19:28:20.983157 ====> Client established passive DATA connection on port 45731 19:28:20.983630 < "TYPE I" 19:28:20.983900 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:20.984885 < "SIZE verifiedserver" 19:28:20.985202 > "213 18[CR][LF]" 19:28:20.986271 < "RETR verifiedserver" 19:28:20.986596 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:20.987249 =====> Closing passive DATA connection... 19:28:20.987460 Server disconnects passive DATA connection 19:28:20.988554 Server disconnected passive DATA connection 19:28:20.988739 DATA sockfilt for passive data channel quits (pid 114605) 19:28:20.990283 DATA sockfilt for passive data channel quit (pid 114605) 19:28:20.990502 =====> Closed passive DATA connection 19:28:20.990728 > "226 File transfer complete[CR][LF]" 19:28:21.031273 < "QUIT" 19:28:21.031645 > "221 bye bye baby[CR][LF]" 19:28:21.035078 MAIN sockfilt said DISC 19:28:21.035330 ====> Client disconnected 19:28:21.035649 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:21.430886 ====> Client connect 19:28:21.432136 Received DATA (on stdin) 19:28:21.432266 > 160 bytes data, server => client 19:28:21.432344 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:21.432416 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:21.432484 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:21.432965 < 16 bytes data, client => server 19:28:21.433097 'USER anonymous\r\n' 19:28:21.433776 Received DATA (on stdin) 19:28:21.433893 > 33 bytes data, server => client 19:28:21.433975 '331 We are happy you popped in!\r\n' 19:28:21.434395 < 22 bytes data, client => server 19:28:21.434525 'PASS ftp@example.com\r\n' 19:28:21.435131 Received DATA (on stdin) 19:28:21.435275 > 30 bytes data, server => client 19:28:21.435347 '230 Welcome you silly person\r\n' 19:28:21.435711 < 5 bytes data, client => server 19:28:21.435820 'PWD\r\n' 19:28:21.436395 Received DATA (on stdin) 19:28:21.436510 > 30 bytes data, server => client 19:28:21.436575 '257 "/" is current directory\r\n' 19:28:21.436890 < 6 bytes data, client => server 19:28:21.436997 'EPSV\r\n' 19:28:21.446875 Received DATA (on stdin) 19:28:21.447296 > 38 bytes data, server => client 19:28:21.447422 '229 Entering Passive Mode (|||45731|)\n' 19:28:21.448270 < 8 bytes data, client => server 19:28:21.448403 'TYPE I\r\n' 19:28:21.449478 Received DATA (on stdin) 19:28:21.449609 > 33 bytes data, server => client 19:28:21.449685 '200 I modify TYPE as you wanted\r\n' 19:28:21.450090 < 21 bytes data, client => server 19:28:21.450201 'SIZE verifiedserver\r\n' 19:28:21.450789 Received DATA (on stdin) 19:28:21.450908 > 8 bytes data, server => client 19:28:21.451028 '213 18\r\n' 19:28:21.451450 < 21 bytes data, client => server 19:28:21.451572 'RETR verifiedserver\r\n' 19:28:21.452178 Received DATA (on stdin) 19:28:21.452293 > 29 bytes data, server => client 19:28:21.452368 '150 Binary junk (18 bytes).\r\n' 19:28:21.456318 Received DATA (on stdin) 19:28:21.456439 > 28 bytes data, server => client 19:28:21.456517 '226 File transfer complete\r\n' 19:28:21.496159 < 6 bytes data, client => server 19:28:21.496303 'QUIT\r\n' 19:28:21.497487 Received DATA (on stdin) 19:28:21.497618 > 18 bytes data, server => client 19:28:21.497709 '221 bye bye baby\r\n' 19:28:21.500417 ====> Client disconnect 19:28:21.501448 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:20.444908 Running IPv4 version 19:28:20.445279 Listening on port 45731 19:28:20.445501 Wrote pid 114605 to log/2/server/ftp_sockdata.pid 19:28:20.445610 Received PING (on stdin) 19:28:20.446110 Received PORT (on stdin) 19:28:20.448306 ====> Client connect 19:28:20.453211 Received DATA (on stdin) 19:28:20.453317 > 18 bytes data, server => client 19:28:20.453387 'WE ROOLZ: 109411\r\n' 19:28:20.453878 Received DISC (on stdin) 19:28:20.454483 ====> Client forcibly disconnected 19:28:20.454770 Received QUIT (on stdin) 19:28:20.454880 quits 19:28:20.455327 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 182 === End of file server.cmd === Start of file valgrind182 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind182 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/4/valgrind181 ../src/curl -q --output log/4/curl181.out --include --trace-ascii log/4/trace181 --trace-config all --trace-time http://127.0.0.1:43669/we/want/181 --data-binary @log/4/test181.txt --http1.0 > log/4/stdout181 2> log/4/stderr181 181: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind181 ../src/curl -q --output log/4/curl181.out --include --trace-ascii log/4/trace181 --trace-config all --trace-time http://127.0.0.1:43669/we/want/181 --data-binary @log/4/test181.txt --http1.0 > log/4/stdout181 2> log/4/stderr181 === End of file commands.log === Start of file http_server.log 19:28:21.427296 ====> Client connect 19:28:21.427530 accept_connection 3 returned 4 19:28:21.427654 accept_connection 3 returned 0 19:28:21.427756 Read 93 bytes 19:28:21.427828 Process 93 bytes request 19:28:21.427905 Got request: GET /verifiedserver HTTP/1.1 19:28:21.427976 Are-we-friendly question received 19:28:21.428147 Wrote request (93 bytes) input to log/4/server.input 19:28:21.428321 Identifying ourselves as friends 19:28:21.428818 Response sent (57 bytes) and written to log/4/server.response 19:28:21.428915 special request received, no persistency CMD (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/1/valgrind183 ../src/curl -q --output log/1/curl183.out --include --trace-ascii log/1/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:41477 > log/1/stdout183 2> log/1/stderr183 CMD (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/4/valgrind185 ../src/curl -q --output log/4/curl185.out --include --trace-ascii log/4/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43669 > log/4/stdout185 2> log/4/stderr185 19:28:21.428977 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 181 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file test181.txt Weird file to upload for testing the POST feature === End of file test181.txt === Start of file valgrind181 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind181 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/1/valgrind183 ../src/curl -q --output log/1/curl183.out --include --trace-ascii log/1/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:41477 > log/1/stdout183 2> log/1/stderr183 183: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind183 ../src/curl -q --output log/1/curl183.out --include --trace-ascii log/1/trace183 --trace-config all --trace-time http://deathstar.another.galaxy/183 http://a.galaxy.far.far.away/183 --proxy http://127.0.0.1:41477 > log/1/stdout183 2> log/1/stderr183 === End of file commands.log === Start of file http_server.log 19:28:21.977909 ====> Client connect 19:28:21.978130 accept_connection 3 returned 4 19:28:21.978239 accept_connection 3 returned 0 19:28:21.978679 Read 93 bytes 19:28:21.978798 Process 93 bytes request 19:28:21.978877 Got request: GET /verifiedserver HTTP/1.1 19:28:21.978936 Are-we-friendly question received 19:28:21.979231 Wrote request (93 bytes) input to log/1/server.input 19:28:21.979392 Identifying ourselves as friends 19:28:21.979832 Response sent (57 bytes) and written to log/1/server.response 19:28:21.979933 special request received, no persistency 19:28:21.979992 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 183 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind183 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind183 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/4/valgrind185 ../src/curl -q --output log/4/curl185.out --include --trace-ascii log/4/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43669 > log/4/stdout185 2> log/4/stderr185 185: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind185 ../src/curl -q --output log/4/curl185.out --include --trace-ascii log/4/trace185 --trace-config all --trace-time http://deathstar.another.galaxy/185 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:43669 > log/4/stdout185 2> log/4/stderr185 === End of file commands.log === Start of file http_server.log 19:28:22.108858 ====> Client connect 19:28:22.109109 accept_connection 3 returned 4 19:28:22.109242 accept_connection 3 returned 0 19:28:22.109735 Read 93 bytes 19:28:22.109871 Process 93 bytes request 19:28:22.109948 Got request: GET /verifiedserver HTTP/1.1 19:28:22.110007 Are-we-friendly question received 19:28:22.110164 Wrote request (93 bytes) input to log/4/server.input 19:28:22.110321 Identifying ourselves as friends 19:28:22.110740 Response sent (57 bytes) and written to log/4/server.response 19:28:22.110829 special request received, no persistency 1CMD (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/valgrind184 ../src/curl -q --output log/3/curl184.out --include --trace-ascii log/3/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:37525 > log/3/stdout184 2> log/3/stderr184 CMD (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/2/valgrind186 ../src/curl -q --output log/2/curl186.out --include --trace-ascii log/2/trace186 --trace-config all --trace-time http://127.0.0.1:39599/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/2/stdout186 2> log/2/stderr186 9:28:22.110884 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 185 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind185 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind185 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/3/valgrind184 ../src/curl -q --output log/3/curl184.out --include --trace-ascii log/3/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:37525 > log/3/stdout184 2> log/3/stderr184 184: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind184 ../src/curl -q --output log/3/curl184.out --include --trace-ascii log/3/trace184 --trace-config all --trace-time http://deathstar.another.galaxy/184 -L -H "Host: another.visitor.stay.a.while.stay.foreeeeeever" --proxy http://127.0.0.1:37525 > log/3/stdout184 2> log/3/stderr184 === End of file commands.log === Start of file http_server.log 19:28:21.074498 ====> Client connect 19:28:21.074728 accept_connection 3 returned 4 19:28:21.074865 accept_connection 3 returned 0 19:28:21.075097 Read 93 bytes 19:28:21.075210 Process 93 bytes request 19:28:21.075298 Got request: GET /verifiedserver HTTP/1.1 19:28:21.075371 Are-we-friendly question received 19:28:21.075552 Wrote request (93 bytes) input to log/3/server.input 19:28:21.075736 Identifying ourselves as friends 19:28:21.076277 Response sent (57 bytes) and written to log/3/server.response 19:28:21.076367 special request received, no persistency 19:28:21.076423 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 184 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind184 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind184 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/2/valgrind186 ../src/curl -q --output log/2/curl186.out --include --trace-ascii log/2/trace186 --trace-config all --trace-time http://127.0.0.1:39599/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/2/stdout186 2> log/2/stderr186 186: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind186 ../src/curl -q --output log/2/curl186.out --include --trace-ascii log/2/trace186 --trace-config all --trace-time http://127.0.0.1:39599/we/want/186 -F "name=daniel;type=moo/foo-.4" -F "html= hello;type=text/html;charset=verymoo" > log/2/stdout186 2> log/2/stderr186 === End of file commands.log === Start of file http_server.log 19:28:22.121770 ====> Client connect 19:28:22.122015 accept_connection 3 returned 4 19:28:22.122142 accept_connection 3 returned 0 19:28:22.122256 Read 93 bytes 19:28:22.122332 Process 93 bytes request 19:28:22.122438 Got request: GET /verifiedserver HTTP/1.1 19:28:22.122513 Are-we-friendly question received 19:28:22.122661 Wrote request (93 bytes) input to log/2/server.input 19:28:22.122802 Identifying ourselves as friends 19:28:22.123435 Response sent (57 bytes) and written to log/2/server.response 19:28:22.123541 special request received, no persistency 19:28:22.123602 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.CMD (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/1/valgrind187 ../src/curl -q --output log/1/curl187.out --include --trace-ascii log/1/trace187 --trace-config all --trace-time http://127.0.0.1:41477?oh=what-weird=test/187 -L > log/1/stdout187 2> log/1/stderr187 CMD (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/4/valgrind188 ../src/curl -q --output log/4/curl188.out --include --trace-ascii log/4/trace188 --trace-config all --trace-time http://127.0.0.1:43669/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 186 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind186 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind187 ../src/curl -q --output log/1/curl187.out --include --trace-ascii log/1/trace187 --trace-config all --trace-time http://127.0.0.1:41477?oh=what-weird=test/187 -L > log/1/stdout187 2> log/1/stderr187 187: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind187 ../src/curl -q --output log/1/curl187.out --include --trace-ascii log/1/trace187 --trace-config all --trace-time http://127.0.0.1:41477?oh=what-weird=test/187 -L > log/1/stdout187 2> log/1/stderr187 === End of file commands.log === Start of file http_server.log 19:28:22.592743 ====> Client connect 19:28:22.592960 accept_connection 3 returned 4 19:28:22.593074 accept_connection 3 returned 0 19:28:22.593172 Read 93 bytes 19:28:22.593244 Process 93 bytes request 19:28:22.593316 Got request: GET /verifiedserver HTTP/1.1 19:28:22.593377 Are-we-friendly question received 19:28:22.593532 Wrote request (93 bytes) input to log/1/server.input 19:28:22.593671 Identifying ourselves as friends 19:28:22.594185 Response sent (57 bytes) and written to log/1/server.response 19:28:22.594287 special request received, no persistency 19:28:22.594347 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 187 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind187 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:43669/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 188: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/188 -C 50 -L > log/4/stdout188 2> log/4/stderr188 === End of file commands.log === Start of file http_server.log 19:28:22.727328 ====> Client connect 19:28:22.727641 accept_connection 3 returned 4 19:28:22.727768 accept_connection 3 returned 0 19:28:22.729146 Read 93 bytes 19:28:22.729265 Process 93 bytes request 19:28:22.729348 Got request: GET /verifiedserver HTTP/1.1 19:28:22.729420 Are-we-friendly question received 19:28:22.729601 Wrote request (93 bytes) input to log/4/server.input 19:28:22.729766 Identifying ourselves as friends 19:28:22.730298 Response sent (57 bytes) and written to log/4/server.response 19:28:22.730393 special request received, no persistency 19:28:22.730458 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 10CMD (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/valgrind189 ../src/curl -q --output log/3/curl189.out --include --trace-ascii log/3/trace189 --trace-config all --trace-time http://127.0.0.1:37525/189 -C 50 -L > log/3/stdout189 2> log/3/stderr189 CMD (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/2/valgrind190 ../src/curl -q --output log/2/curl190.out --include --trace-ascii log/2/trace190 --trace-config all --trace-time ftp://127.0.0.1:43671/path/to/file/190 -m 10 > log/2/stdout190 2> log/2/stderr190 * kill pid for ftp-ctrl => 109449 RUN: Process with pid 109411 signalled to die RUN: Process with pid 109411 gracefully died 3118 === End of file http_verify.out === Start of file server.cmd Testnum 188 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind188 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind189 ../src/curl -q --output log/3/curl189.out --include --trace-ascii log/3/trace189 --trace-config all --trace-time http://127.0.0.1:37525/189 -C 50 -L > log/3/stdout189 2> log/3/stderr189 189: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind189 ../src/curl -q --output log/3/curl189.out --include --trace-ascii log/3/trace189 --trace-config all --trace-time http://127.0.0.1:37525/189 -C 50 -L > log/3/stdout189 2> log/3/stderr189 === End of file commands.log === Start of file http_server.log 19:28:21.750514 ====> Client connect 19:28:21.750758 accept_connection 3 returned 4 19:28:21.750885 accept_connection 3 returned 0 19:28:21.751159 Read 93 bytes 19:28:21.751288 Process 93 bytes request 19:28:21.751391 Got request: GET /verifiedserver HTTP/1.1 19:28:21.751470 Are-we-friendly question received 19:28:21.751677 Wrote request (93 bytes) input to log/3/server.input 19:28:21.751901 Identifying ourselves as friends 19:28:21.752588 Response sent (57 bytes) and written to log/3/server.response 19:28:21.752733 special request received, no persistency 19:28:21.752793 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 189 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind189 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind189 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/2/valgrind190 ../src/curl -q --output log/2/curl190.out --include --trace-ascii log/2/trace190 --trace-config all --trace-time ftp://127.0.0.1:43671/path/to/file/190 -m 10 > log/2/stdout190 2> log/2/stderr190 190: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind190 ../src/curl -q --output log/2/curl190.out --include --trace-ascii log/2/trace190 --trace-config all --trace-time ftp://127.0.0.1:43671/path/to/file/190 -m 10 > log/2/stdout190 2> log/2/stderr190 === End of file commands.log === Start of file ftp_server.log 19:28:22.301817 ====> Client connect 19:28:22.302607 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:22.304651 < "USER anonymous" 19:28:22.304972 > "331 We are happy you popped in![CR][LF]" 19:28:22.306643 < "PASS ftp@example.com" 19:28:22.306971 > "230 Welcome you silly person[CR][LF]" 19:28:22.308463 < "PWD" 19:28:22.308751 > "257 "/" is current directory[CR][LF]" 19:28:22.310288 < "EPSV" 19:28:22.310518 ====> Passive DATA channel requested by client 19:28:22.310648 DATA sockfilt for passive data channel starting... 19:28:22.319064 DATA sockfilt for passive data channel started (pid 115141) 19:28:22.319776 DATA sockfilt for passive data channel listens on port 37187 19:28:22.320071 > "229 Entering Passive Mode (|||37187|)[LF]" 19:28:22.320226 Client has been notified that DATA conn will be accepted on port 37187 19:28:22.321968 Client connects to port 37187 19:28:22.322206 ====> Client established passive DATA connection on port 37187 19:28:22.322721 < "TYPE I" 19:28:22.322994 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:22.324402 < "SIZE verifiedserver" 19:28:22.324698 > "213 18[CR][LF]" 19:28:22.326203 < "RETR verifiedserver" 19:28:22.326517 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:22.326922 =====> Closing passive DATA connection... 19:28:22.327097 Server disconnects passive DATA connection 19:28:22.328697 Server diCMD (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/1/valgrind191 ../src/curl -q --output log/1/curl191.out --include --trace-ascii log/1/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39333/191" > log/1/stdout191 2> log/1/stderr191 sconnected passive DATA connection 19:28:22.328897 DATA sockfilt for passive data channel quits (pid 115141) 19:28:22.330415 DATA sockfilt for passive data channel quit (pid 115141) 19:28:22.330760 =====> Closed passive DATA connection 19:28:22.331403 > "226 File transfer complete[CR][LF]" 19:28:22.370659 < "QUIT" 19:28:22.370932 > "221 bye bye baby[CR][LF]" 19:28:22.374946 MAIN sockfilt said DISC 19:28:22.375277 ====> Client disconnected 19:28:22.375667 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:22.766867 ====> Client connect 19:28:22.768405 Received DATA (on stdin) 19:28:22.768533 > 160 bytes data, server => client 19:28:22.768613 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:22.768678 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:22.768739 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:22.769368 < 16 bytes data, client => server 19:28:22.769501 'USER anonymous\r\n' 19:28:22.770816 Received DATA (on stdin) 19:28:22.771007 > 33 bytes data, server => client 19:28:22.771108 '331 We are happy you popped in!\r\n' 19:28:22.771539 < 22 bytes data, client => server 19:28:22.771665 'PASS ftp@example.com\r\n' 19:28:22.772750 Received DATA (on stdin) 19:28:22.772856 > 30 bytes data, server => client 19:28:22.772927 '230 Welcome you silly person\r\n' 19:28:22.773413 < 5 bytes data, client => server 19:28:22.773539 'PWD\r\n' 19:28:22.774479 Received DATA (on stdin) 19:28:22.774591 > 30 bytes data, server => client 19:28:22.774669 '257 "/" is current directory\r\n' 19:28:22.775239 < 6 bytes data, client => server 19:28:22.775372 'EPSV\r\n' 19:28:22.785970 Received DATA (on stdin) 19:28:22.786097 > 38 bytes data, server => client 19:28:22.786174 '229 Entering Passive Mode (|||37187|)\n' 19:28:22.787055 < 8 bytes data, client => server 19:28:22.787206 'TYPE I\r\n' 19:28:22.788734 Received DATA (on stdin) 19:28:22.788839 > 33 bytes data, server => client 19:28:22.788913 '200 I modify TYPE as you wanted\r\n' 19:28:22.789365 < 21 bytes data, client => server 19:28:22.789492 'SIZE verifiedserver\r\n' 19:28:22.790468 Received DATA (on stdin) 19:28:22.790571 > 8 bytes data, server => client 19:28:22.790637 '213 18\r\n' 19:28:22.791123 < 21 bytes data, client => server 19:28:22.791265 'RETR verifiedserver\r\n' 19:28:22.792820 Received DATA (on stdin) 19:28:22.792925 > 29 bytes data, server => client 19:28:22.792992 '150 Binary junk (18 bytes).\r\n' 19:28:22.796516 Received DATA (on stdin) 19:28:22.796625 > 28 bytes data, server => client 19:28:22.796746 '226 File transfer complete\r\n' 19:28:22.835572 < 6 bytes data, client => server 19:28:22.835721 'QUIT\r\n' 19:28:22.836655 Received DATA (on stdin) 19:28:22.836757 > 18 bytes data, server => client 19:28:22.836834 '221 bye bye baby\r\n' 19:28:22.840237 ====> Client disconnect 19:28:22.848450 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:22.783671 Running IPv4 version 19:28:22.784062 Listening on port 37187 19:28:22.784308 Wrote pid 115141 to log/2/server/ftp_sockdata.pid 19:28:22.784411 Received PING (on stdin) 19:28:22.784911 Received PORT (on stdin) 19:28:22.787344 ====> Client connect 19:28:22.793343 Received DATA (on stdin) 19:28:22.793487 > 18 bytes data, server => client 19:28:22.793568 'WE ROOLZ: 109411\r\n' 19:28:22.794040 Received DISC (on stdin) 19:28:22.794616 ====> Client forcibly disconnected 19:28:22.794933 Received QUIT (on stdin) 19:28:22.795125 quits 19:28:22.795394 ============> 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 valgrind190 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind191 ../src/curl -q --output log/1/curl191.out --include --trace-ascii log/1/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39333/191" > log/1/stdout191 2> log/1/stderr191 191: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind191 ../src/curl -q --output log/1/curl191.out --include --trace-ascii log/1/trace191 --trace-config all --trace-time "ftp://use%3fr:pass%3fword@127.0.0.1:39333/191" > log/1/stdout191 2> log/1/stderr191 === End of file commands.log === Start of file ftp_server.log 19:28:22.753066 ====> Client connect 19:28:22.754231 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:22.755562 < "USER anonymous" 19:28:22.755854 > "331 We are happy you popped in![CR][LF]" 19:28:22.756812 < "PASS ftp@example.com" 19:28:22.757079 > "230 Welcome you silly person[CR][LF]" 19:28:22.758239 < "PWD" 19:28:22.758776 > "257 "/" is current directory[CR][LF]" 19:28:22.760054 < "EPSV" 19:28:22.760490 ====> Passive DATA channel requested by client 19:28:22.760804 DATA sockfilt for passive data channel starting... 19:28:22.771097 DATA sockfilt for passive data channel started (pid 115337) 19:28:22.771982 DATA sockfilt for passive data channel listens on port 42669 19:28:22.772321 > "229 Entering Passive Mode (|||42669|)[LF]" 19:28:22.772484 Client has been notified that DATA conn will be accepted on port 42669 19:28:22.773402 Client connects to port 42669 19:28:22.773853 ====> Client established passive DATA connection on port 42669 19:28:22.774833 < "TYPE I" 19:28:22.775252 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:22.778074 < "SIZE verifiedserver" 19:28:22.778919 > "213 18[CR][LF]" 19:28:22.780033 < "RETR verifiedserver" 19:28:22.780398 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:22.780940 =====> Closing passive DATA connection... 19:28:22.781152 Server disconnects passive DATA connection 19:28:22.782327 Server disconnected passive DATA connection 19:28:22.782578 DATA sockfilt for passive data channel quits (pid 115337) 19:28:22.783907 DATA sockfilt for passive data channel quit (pid 115337) 19:28:22.784291 =====> Closed passive DATA connection 19:28:22.784613 > "226 File transfer complete[CR][LF]" 19:28:22.822868 < "QUIT" 19:28:22.823195 > "221 bye bye baCMD (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/4/valgrind192 ../src/curl -q --include --trace-ascii log/4/trace192 --trace-config all --trace-time http://127.0.0.1:43669/192 -w "%{num_connects}\n" > log/4/stdout192 2> log/4/stderr192 by[CR][LF]" 19:28:22.826241 MAIN sockfilt said DISC 19:28:22.826535 ====> Client disconnected 19:28:22.826863 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:23.218218 ====> Client connect 19:28:23.219741 Received DATA (on stdin) 19:28:23.219878 > 160 bytes data, server => client 19:28:23.219959 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:23.220034 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:23.220101 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:23.220506 < 16 bytes data, client => server 19:28:23.220630 'USER anonymous\r\n' 19:28:23.221379 Received DATA (on stdin) 19:28:23.221486 > 33 bytes data, server => client 19:28:23.221553 '331 We are happy you popped in!\r\n' 19:28:23.221937 < 22 bytes data, client => server 19:28:23.222057 'PASS ftp@example.com\r\n' 19:28:23.222605 Received DATA (on stdin) 19:28:23.222708 > 30 bytes data, server => client 19:28:23.222777 '230 Welcome you silly person\r\n' 19:28:23.223220 < 5 bytes data, client => server 19:28:23.223348 'PWD\r\n' 19:28:23.224296 Received DATA (on stdin) 19:28:23.224420 > 30 bytes data, server => client 19:28:23.224479 '257 "/" is current directory\r\n' 19:28:23.224971 < 6 bytes data, client => server 19:28:23.225098 'EPSV\r\n' 19:28:23.237844 Received DATA (on stdin) 19:28:23.237980 > 38 bytes data, server => client 19:28:23.238059 '229 Entering Passive Mode (|||42669|)\n' 19:28:23.238851 < 8 bytes data, client => server 19:28:23.238997 'TYPE I\r\n' 19:28:23.240784 Received DATA (on stdin) 19:28:23.240893 > 33 bytes data, server => client 19:28:23.240965 '200 I modify TYPE as you wanted\r\n' 19:28:23.241424 < 21 bytes data, client => server 19:28:23.241550 'SIZE verifiedserver\r\n' 19:28:23.244448 Received DATA (on stdin) 19:28:23.244593 > 8 bytes data, server => client 19:28:23.244667 '213 18\r\n' 19:28:23.245110 < 21 bytes data, client => server 19:28:23.245241 'RETR verifiedserver\r\n' 19:28:23.245921 Received DATA (on stdin) 19:28:23.246037 > 29 bytes data, server => client 19:28:23.246112 '150 Binary junk (18 bytes).\r\n' 19:28:23.250137 Received DATA (on stdin) 19:28:23.250307 > 28 bytes data, server => client 19:28:23.250466 '226 File transfer complete\r\n' 19:28:23.287657 < 6 bytes data, client => server 19:28:23.287848 'QUIT\r\n' 19:28:23.288726 Received DATA (on stdin) 19:28:23.288835 > 18 bytes data, server => client 19:28:23.288907 '221 bye bye baby\r\n' 19:28:23.291357 ====> Client disconnect 19:28:23.292083 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:22.235081 Running IPv4 version 19:28:22.235773 Listening on port 42669 19:28:22.236147 Wrote pid 115337 to log/1/server/ftp_sockdata.pid 19:28:22.236294 Received PING (on stdin) 19:28:22.237120 Received PORT (on stdin) 19:28:22.238678 ====> Client connect 19:28:22.246860 Received DATA (on stdin) 19:28:22.247055 > 18 bytes data, server => client 19:28:22.247143 'WE ROOLZ: 109414\r\n' 19:28:22.247406 Received DISC (on stdin) 19:28:22.247551 ====> Client forcibly disconnected 19:28:22.248364 Received QUIT (on stdin) 19:28:22.248511 quits 19:28:22.248847 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 191 === End of file server.cmd === Start of file valgrind191 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind191 CMD (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/valgrind193 ../src/curl -q --include --trace-ascii log/3/trace193 --trace-config all --trace-time http://127.0.0.1:37525/193 -w "%{num_connects}\n" -L > log/3/stdout193 2> log/3/stderr193 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/4/valgrind192 ../src/curl -q --include --trace-ascii log/4/trace192 --trace-config all --trace-time http://127.0.0.1:43669/192 -w "%{num_connects}\n" > log/4/stdout192 2> log/4/stderr192 192: stdout FAILED: --- log/4/check-expected 2025-05-23 19:28:23.444751902 +0000 +++ log/4/check-generated 2025-05-23 19:28:23.444751902 +0000 @@ -1,7 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -[LF] -monster[LF] -1[LF] == Contents of files in the log/4/ dir after test 192 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] [LF] monster[LF] 1[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind192 ../src/curl -q --include --trace-ascii log/4/trace192 --trace-config all --trace-time http://127.0.0.1:43669/192 -w "%{num_connects}\n" > log/4/stdout192 2> log/4/stderr192 === End of file commands.log === Start of file http_server.log 19:28:23.379995 ====> Client connect 19:28:23.380217 accept_connection 3 returned 4 19:28:23.380332 accept_connection 3 returned 0 19:28:23.380453 Read 93 bytes 19:28:23.380546 Process 93 bytes request 19:28:23.380627 Got request: GET /verifiedserver HTTP/1.1 19:28:23.380685 Are-we-friendly question received 19:28:23.380844 Wrote request (93 bytes) input to log/4/server.input 19:28:23.380998 Identifying ourselves as friends 19:28:23.381526 Response sent (57 bytes) and written to log/4/server.response 19:28:23.381630 special request received, no persistency 19:28:23.381689 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 192 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind192 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind192 CMD (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/2/valgrind194 ../src/curl -q --output log/2/curl194.out --include --trace-ascii log/2/trace194 --trace-config all --trace-time http://127.0.0.1:39599/want/194 -C 87 --fail > log/2/stdout194 2> log/2/stderr194 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/3/valgrind193 ../src/curl -q --include --trace-ascii log/3/trace193 --trace-config all --trace-time http://127.0.0.1:37525/193 -w "%{num_connects}\n" -L > log/3/stdout193 2> log/3/stderr193 193: stdout FAILED: --- log/3/check-expected 2025-05-23 19:28:23.492753107 +0000 +++ log/3/check-generated 2025-05-23 19:28:23.492753107 +0000 @@ -1,13 +0,0 @@ -HTTP/1.1 302 OK swsbounce swsclose[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -Location: ./193[LF] -[LF] -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 8[LF] -Connection: close[LF] -[LF] -monster[LF] -2[LF] == Contents of files in the log/3/ dir after test 193 === Start of file check-expected HTTP/1.1 302 OK swsbounce swsclose[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] Location: ./193[LF] [LF] HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 8[LF] Connection: close[LF] [LF] monster[LF] 2[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind193 ../src/curl -q --include --trace-ascii log/3/trace193 --trace-config all --trace-time http://127.0.0.1:37525/193 -w "%{num_connects}\n" -L > log/3/stdout193 2> log/3/stderr193 === End of file commands.log === Start of file http_server.log 19:28:22.406903 ====> Client connect 19:28:22.407567 accept_connection 3 returned 4 19:28:22.407836 accept_connection 3 returned 0 19:28:22.407974 Read 93 bytes 19:28:22.408131 Process 93 bytes request 19:28:22.408243 Got request: GET /verifiedserver HTTP/1.1 19:28:22.408315 Are-we-friendly question received 19:28:22.408503 Wrote request (93 bytes) input to log/3/server.input 19:28:22.408763 Identifying ourselves as friends 19:28:22.409483 Response sent (57 bytes) and written to log/3/server.response 19:28:22.409587 special request received, no persistency 19:28:22.409657 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 193 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind193 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind193 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/2/valgrind194 ../src/curl -q --output log/2/curl194.out --include --trace-ascii log/2/trace194 --trace-config all --trace-time http://127.0.0.1:39599/want/194 -C 87 --fail > log/2/stdout194 2> log/2/stderr194 194: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind194 ../src/curl -q --output log/2/curl194.out --include --trace-ascii log/2/trace194 --trace-config all --trace-time http://127.0.0.1:39599/want/194 -C 87 --fail > log/2/stdout194 2> log/2/stderr194 === End of file commands.log === Start of file http_server.log 19:28:23.552460 ====> Client connect 19:28:23.552703 accept_connection 3 returned 4 19:28:23.552825 accept_connection 3 returned 0 19:28:23.552928 Read 93 bytes 19:28:23.553000 Process 93 bytes request 19:28:23.553069 Got request: GET /verifiedserver HTTP/1.1 19:28:23.553126 Are-we-friendly question received 19:28:23.553277 Wrote request (93 bytes) input to log/2/server.input 19:28:23.553427 Identifying ourselves as friends 19:28:23.554012 Response sent (57 bytes) and written to log/2/server.response 19:28:23.554183 special request received, no persistency 19:28:23.554252 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 194 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind194 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are dCMD (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/1/valgrind195 ../src/curl -q --output log/1/curl195.out --include --trace-ascii log/1/trace195 --trace-config all --trace-time ftp://127.0.0.1:39333/195 > log/1/stdout195 2> log/1/stderr195 CMD (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/valgrind197 ../src/curl -q --include --trace-ascii log/3/trace197 --trace-config all --trace-time http://127.0.0.1:37525/197 --retry 1000 > log/3/stdout197 2> log/3/stderr197 ebugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind195 ../src/curl -q --output log/1/curl195.out --include --trace-ascii log/1/trace195 --trace-config all --trace-time ftp://127.0.0.1:39333/195 > log/1/stdout195 2> log/1/stderr195 195: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind195 ../src/curl -q --output log/1/curl195.out --include --trace-ascii log/1/trace195 --trace-config all --trace-time ftp://127.0.0.1:39333/195 > log/1/stdout195 2> log/1/stderr195 === End of file commands.log === Start of file ftp_server.log 19:28:23.380188 ====> Client connect 19:28:23.381128 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:23.382961 < "USER anonymous" 19:28:23.383274 > "331 We are happy you popped in![CR][LF]" 19:28:23.384385 < "PASS ftp@example.com" 19:28:23.384652 > "230 Welcome you silly person[CR][LF]" 19:28:23.387398 < "PWD" 19:28:23.387725 > "257 "/" is current directory[CR][LF]" 19:28:23.388776 < "EPSV" 19:28:23.388995 ====> Passive DATA channel requested by client 19:28:23.389122 DATA sockfilt for passive data channel starting... 19:28:23.396962 DATA sockfilt for passive data channel started (pid 115575) 19:28:23.397748 DATA sockfilt for passive data channel listens on port 33637 19:28:23.398135 > "229 Entering Passive Mode (|||33637|)[LF]" 19:28:23.398320 Client has been notified that DATA conn will be accepted on port 33637 19:28:23.399428 Client connects to port 33637 19:28:23.399681 ====> Client established passive DATA connection on port 33637 19:28:23.400302 < "TYPE I" 19:28:23.400627 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:23.401813 < "SIZE verifiedserver" 19:28:23.402276 > "213 18[CR][LF]" 19:28:23.405074 < "RETR verifiedserver" 19:28:23.405507 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:23.406050 =====> Closing passive DATA connection... 19:28:23.406224 Server disconnects passive DATA connection 19:28:23.406914 Server disconnected passive DATA connection 19:28:23.407131 DATA sockfilt for passive data channel quits (pid 115575) 19:28:23.408389 DATA sockfilt for passive data channel quit (pid 115575) 19:28:23.408649 =====> Closed passive DATA connection 19:28:23.408888 > "226 File transfer complete[CR][LF]" 19:28:23.450494 < "QUIT" 19:28:23.450857 > "221 bye bye baby[CR][LF]" 19:28:23.451751 MAIN sockfilt said DISC 19:28:23.452027 ====> Client disconnected 19:28:23.452359 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:23.844964 ====> Client connect 19:28:23.846606 Received DATA (on stdin) 19:28:23.846742 > 160 bytes data, server => client 19:28:23.846828 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:23.846901 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:23.847177 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:23.847860 < 16 bytes data, client => server 19:28:23.847989 'USER anonymous\r\n' 19:28:23.848792 Received DATA (on stdin) 19:28:23.848905 > 33 bytes data, server => client 19:28:23.848980 '331 We are happy you popped in!\r\n' 19:28:23.849509 < 22 bytes data, client => server 19:28:23.849630 'PASS ftp@example.com\r\n' 19:28:23.850182 Received DATA (on stdin) 19:28:23.850292 > 30 bytes data, server => client 19:28:23.850366 '230 Welcome you silly person\r\n' 19:28:23.852474 < 5 bytes data, client => server 19:28:23.852626 'PWD\r\n' 19:28:23.853276 Received DATA (on stdin) 19:28:23.853381 > 30 bytes data, server => client 19:28:23.853457 '257 "/" is current directory\r\n' 19:28:23.853886 < 6 bytes data, client => server 19:28:23.854011 'EPSV\r\n' 19:28:23.863662 Received DATA (on stdin) 19:28:23.863800 > 38 bytes data, server => client 19:28:23.863880 '229 Entering Passive Mode (|||33637|)\n' 19:28:23.864697 < 8 bytes data, client => server 19:28:23.864827 'TYPE I\r\n' 19:28:23.866140 Received DATA (on stdin) 19:28:23.866263 > 33 bytes data, server => client 19:28:23.866346 '200 I modify TYPE as you wanted\r\n' 19:28:23.866809 < 21 bytes data, client => server 19:28:23.866985 'SIZE verifiedserver\r\n' 19:28:23.869477 Received DATA (on stdin) 19:28:23.869617 > 8 bytes data, server => client 19:28:23.869689 '213 18\r\n' 19:28:23.870142 < 21 bytes data, client => server 19:28:23.870270 'RETR verifiedserver\r\n' 19:28:23.870902 Received DATA (on stdin) 19:28:23.871110 > 29 bytes data, server => client 19:28:23.871188 '150 Binary junk (18 bytes).\r\n' 19:28:23.874401 Received DATA (on stdin) 19:28:23.874530 > 28 bytes data, server => client 19:28:23.874627 '226 File transfer complete\r\n' 19:28:23.915580 < 6 bytes data, client => server 19:28:23.915736 'QUIT\r\n' 19:28:23.916367 Received DATA (on stdin) 19:28:23.916572 > 18 bytes data, server => client 19:28:23.916652 '221 bye bye baby\r\n' 19:28:23.917024 ====> Client disconnect 19:28:23.917554 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:23.861477 Running IPv4 version 19:28:23.861883 Listening on port 33637 19:28:23.862122 Wrote pid 115575 to log/1/server/ftp_sockdata.pid 19:28:23.862236 Received PING (on stdin) 19:28:23.862823 Received PORT (on stdin) 19:28:23.864745 ====> Client connect 19:28:23.871337 Received DATA (on stdin) 19:28:23.871493 > 18 bytes data, server => client 19:28:23.871574 'WE ROOLZ: 109414\r\n' 19:28:23.872206 Received DISC (on stdin) 19:28:23.872358 ====> Client forcibly disconnected 19:28:23.872823 Received QUIT (on stdin) 19:28:23.872940 quits 19:28:23.873236 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASS 530 temporarily not available Testnum 195 === End of file server.cmd === Start of file valgrind195 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind195 CMD (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/4/valgrind196 ../src/curl -q --include --trace-ascii log/4/trace196 --trace-config all --trace-time ftp://127.0.0.1:40809/196 --retry 1 -w '%{num_retries}\n' > log/4/stdout196 2> log/4/stderr196 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/3/valgrind197 ../src/curl -q --include --trace-ascii log/3/trace197 --trace-config all --trace-time http://127.0.0.1:37525/197 --retry 1000 > log/3/stdout197 2> log/3/stderr197 197: stdout FAILED: --- log/3/check-expected 2025-05-23 19:28:24.176770277 +0000 +++ log/3/check-generated 2025-05-23 19:28:24.176770277 +0000 @@ -1,11 +0,0 @@ -HTTP/1.1 503 BAD swsbounce[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 21[LF] -[LF] -server not available[LF] -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Content-Length: 3[LF] -Connection: close[LF] -[LF] -ok[LF] == Contents of files in the log/3/ dir after test 197 === Start of file check-expected HTTP/1.1 503 BAD swsbounce[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 21[LF] [LF] server not available[LF] HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Content-Length: 3[LF] Connection: close[LF] [LF] ok[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind197 ../src/curl -q --include --trace-ascii log/3/trace197 --trace-config all --trace-time http://127.0.0.1:37525/197 --retry 1000 > log/3/stdout197 2> log/3/stderr197 === End of file commands.log === Start of file http_server.log 19:28:23.089074 ====> Client connect 19:28:23.089298 accept_connection 3 returned 4 19:28:23.089415 accept_connection 3 returned 0 19:28:23.089547 Read 93 bytes 19:28:23.089661 Process 93 bytes request 19:28:23.089755 Got request: GET /verifiedserver HTTP/1.1 19:28:23.089837 Are-we-friendly question received 19:28:23.090055 Wrote request (93 bytes) input to log/3/server.input 19:28:23.090271 Identifying ourselves as friends 19:28:23.090887 Response sent (57 bytes) and written to log/3/server.response 19:28:23.091057 special request received, no persistency 19:28:23.091117 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 197 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind197 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind197 CMD (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/2/valgrind198 ../src/curl -q --output log/2/curl198.out --include --trace-ascii log/2/trace198 --trace-config all --trace-time http://127.0.0.1:39599/198 --retry 1000 > log/2/stdout198 2> log/2/stderr198 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-config all --trace-time ftp://127.0.0.1:40809/196 --retry 1 -w '%{num_retries}\n' > log/4/stdout196 2> log/4/stderr196 196: stdout FAILED: --- log/4/check-expected 2025-05-23 19:28:24.216771281 +0000 +++ log/4/check-generated 2025-05-23 19:28:24.216771281 +0000 @@ -1 +0,0 @@ -1[LF] == Contents of files in the log/4/ dir after test 196 === Start of file check-expected 1[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time ftp://127.0.0.1:40809/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 19:28:23.562825 ====> Client connect 19:28:23.563702 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:23.565048 < "USER anonymous" 19:28:23.565328 > "331 We are happy you popped in![CR][LF]" 19:28:23.569721 < "PASS ftp@example.com" 19:28:23.570050 > "230 Welcome you silly person[CR][LF]" 19:28:23.571183 < "PWD" 19:28:23.571500 > "257 "/" is current directory[CR][LF]" 19:28:23.572526 < "EPSV" 19:28:23.572755 ====> Passive DATA channel requested by client 19:28:23.572901 DATA sockfilt for passive data channel starting... 19:28:23.581395 DATA sockfilt for passive data channel started (pid 115632) 19:28:23.582302 DATA sockfilt for passive data channel listens on port 44841 19:28:23.582673 > "229 Entering Passive Mode (|||44841|)[LF]" 19:28:23.582826 Client has been notified that DATA conn will be accepted on port 44841 19:28:23.585206 Client connects to port 44841 19:28:23.585534 ====> Client established passive DATA connection on port 44841 19:28:23.586046 < "TYPE I" 19:28:23.586395 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:23.587472 < "SIZE verifiedserver" 19:28:23.587826 > "213 18[CR][LF]" 19:28:23.588844 < "RETR verifiedserver" 19:28:23.589161 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:23.589832 =====> Closing passive DATA connection... 19:28:23.590083 Server disconnects passive DATA connection 19:28:23.590667 Server disconnected passive DATA connection 19:28:23.590893 DATA sockfilt for passive data channel quits (pid 115632) 19:28:23.592122 DATA sockfilt for passive data channel quit (pid 115632) 19:28:23.592328 =====> Closed passive DATA connection 19:28:23.592522 > "226 File transfer complete[CR][LF]" 19:28:23.634584 < "QUIT" 19:28:23.634966 > "221 bye bye baby[CR][LF]" 19:28:23.641812 MAIN sockfilt said DISC 19:28:23.642052 ====> Client disconnected 19:28:23.642361 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:23.027917 ====> Client connect 19:28:23.029197 Received DATA (on stdin) 19:28:23.029330 > 160 bytes data, server => client 19:28:23.029417 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:23.029493 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:23.029559 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:23.029993 < 16 bytes data, client => server 19:28:23.030122 'USER anonymous\r\n' 19:28:23.033974 Received DATA (on stdin) 19:28:23.034150 > 33 bytes data, server => client 19:28:23.034229 '331 We are happy you popped in!\r\n' 19:28:23.034675 < 22 bytes data, client => server 19:28:23.034804 'PASS ftp@example.com\r\n' 19:28:23.035605 Received DATA (on stdin) 19:28:23.035750 > 30 bytes data, server => client 19:28:23.035835 '230 Welcome you silly person\r\n' 19:28:23.036250 < 5 bytes data, client => server 19:28:23.036385 'PWD\r\n' 19:28:23.037010 Received DATA (on stdin) 19:28:23.037123 > 30 bytes data, server => client 19:28:23.037210 '257 "/" is current directory\r\n' 19:28:23.037650 < 6 bytes data, client => server 19:28:23.037766 'EPSV\r\n' 19:28:23.048174 Received DATA (on stdin) 19:28:23.048296 > 38 bytes data, server => client 19:28:23.048370 '229 Entering Passive Mode (|||44841|)\n' 19:28:23.050003 < 8 bytes data, client => server 19:28:23.050261 'TYPE I\r\n' 19:28:23.051902 Received DATA (on stdin) 19:28:23.052043 > 33 bytes data, server => client 19:28:23.052121 '200 I modify TYPE as you wanted\r\n' 19:28:23.052575 < 21 bytes data, client => server 19:28:23.052710 'SIZE verifiedserver\r\n' 19:28:23.053326 Received DATA (on stdin) 19:28:23.053455 > 8 bytes data, server => client 19:28:23.053522 '213 18\r\n' 19:28:23.053955 < 21 bytes data, client => server 19:28:23.054095 'RETR verifiedserver\r\n' 19:28:23.054997 Received DATA (on stdin) 19:28:23.055147 > 29 bytes data, server => client 19:28:23.055225 '150 Binary junk (18 bytes).\r\n' 19:28:23.065488 Received DATA (on stdin) 19:28:23.065730 > 28 bytes data, server => client 19:28:23.065878 '226 File transfer complete\r\n' 19:28:23.099568 < 6 bytes data, client => server 19:28:23.099726 'QUIT\r\n' 19:28:23.100478 Received DATA (on stdin) 19:28:23.100614 > 18 bytes data, server => client 19:28:23.100697 '221 bye bye baby\r\n' 19:28:23.107069 ====> Client disconnect 19:28:23.107576 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:23.045846 Running IPv4 version 19:28:23.046205 Listening on port 44841 19:28:23.046492 Wrote pid 115632 to log/4/server/ftp_sockdata.pid 19:28:23.046641 Received PING (on stdin) 19:28:23.047399 Received PORT (on stdin) 19:28:23.049606 ====> Client connect 19:28:23.055477 Received DATA (on stdin) 19:28:23.055603 > 18 bytes data, server => client 19:28:23.055684 'WE ROOLZ: 109451\r\n' 19:28:23.055956 Received DISC (on stdin) 19:28:23.056110 ====> Client forcibly disconnected 19:28:23.056608 Received QUIT (on stdin) 19:28:23.056772 quits 19:28:23.057053 ============> 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 valgrind196 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind196 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/2/valgrind198 ../src/curl -q -CMD (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/1/valgrind199 ../src/curl -q --output log/1/curl199.out --include --trace-ascii log/1/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:41477/{199,199}" -G > log/1/stdout199 2> log/1/stderr199 CMD (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/valgrind200 ../src/curl -q --output log/3/curl200.out --trace-ascii log/3/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test200.txt > log/3/stdout200 2> log/3/stderr200 -output log/2/curl198.out --include --trace-ascii log/2/trace198 --trace-config all --trace-time http://127.0.0.1:39599/198 --retry 1000 > log/2/stdout198 2> log/2/stderr198 198: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind198 ../src/curl -q --output log/2/curl198.out --include --trace-ascii log/2/trace198 --trace-config all --trace-time http://127.0.0.1:39599/198 --retry 1000 > log/2/stdout198 2> log/2/stderr198 === End of file commands.log === Start of file http_server.log 19:28:24.214637 ====> Client connect 19:28:24.214893 accept_connection 3 returned 4 19:28:24.215140 accept_connection 3 returned 0 19:28:24.215261 Read 93 bytes 19:28:24.215342 Process 93 bytes request 19:28:24.215431 Got request: GET /verifiedserver HTTP/1.1 19:28:24.215508 Are-we-friendly question received 19:28:24.215722 Wrote request (93 bytes) input to log/2/server.input 19:28:24.215914 Identifying ourselves as friends 19:28:24.216502 Response sent (57 bytes) and written to log/2/server.response 19:28:24.216602 special request received, no persistency 19:28:24.216688 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 198 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind198 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind199 ../src/curl -q --output log/1/curl199.out --include --trace-ascii log/1/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:41477/{199,199}" -G > log/1/stdout199 2> log/1/stderr199 199: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind199 ../src/curl -q --output log/1/curl199.out --include --trace-ascii log/1/trace199 --trace-config all --trace-time -d "foo=moo&moo=poo" "http://127.0.0.1:41477/{199,199}" -G > log/1/stdout199 2> log/1/stderr199 === End of file commands.log === Start of file http_server.log 19:28:24.502356 ====> Client connect 19:28:24.502578 accept_connection 3 returned 4 19:28:24.502696 accept_connection 3 returned 0 19:28:24.502809 Read 93 bytes 19:28:24.502887 Process 93 bytes request 19:28:24.503104 Got request: GET /verifiedserver HTTP/1.1 19:28:24.503177 Are-we-friendly question received 19:28:24.503350 Wrote request (93 bytes) input to log/1/server.input 19:28:24.503509 Identifying ourselves as friends 19:28:24.504014 Response sent (57 bytes) and written to log/1/server.response 19:28:24.504104 special request received, no persistency 19:28:24.504158 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 199 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind199 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind199 CMD (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/4/valgrind201 ../src/curl -q --output log/4/curl201.out --include --trace-ascii log/4/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/non-existent-file.txt > log/4/stdout201 2> log/4/stderr201 CMD (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/2/valgrind202 ../src/curl -q --trace-ascii log/2/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/2/test202.txt > log/2/stdout202 2> log/2/stderr202 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/3/valgrind200 ../src/curl -q --output log/3/curl200.out --trace-ascii log/3/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test200.txt > log/3/stdout200 2> log/3/stderr200 200: data FAILED: --- log/3/check-expected 2025-05-23 19:28:24.724784034 +0000 +++ log/3/check-generated 2025-05-23 19:28:24.724784034 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/3/ dir after test 200 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind200 ../src/curl -q --output log/3/curl200.out --trace-ascii log/3/trace200 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/test200.txt > log/3/stdout200 2> log/3/stderr200 === End of file commands.log === Start of file server.cmd Testnum 200 === End of file server.cmd === Start of file test200.txt foo bar bar foo moo === End of file test200.txt === Start of file valgrind200 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind201 ../src/curl -q --output log/4/curl201.out --include --trace-ascii log/4/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/non-existent-file.txt > log/4/stdout201 2> log/4/stderr201 curl returned 1, when expecting 37 201: exit FAILED == Contents of files in the log/4/ 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/4/valgrind201 ../src/curl -q --output log/4/curl201.out --include --trace-ascii log/4/trace201 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/non-existent-file.txt > log/4/stdout201 2> log/4/stderr201 === End of file commands.log === Start of file server.cmd Testnum 201 === End of file server.cmd === Start of file valgrind201 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind201 CMD (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/1/valgrind203 ../src/curl -q --output log/1/curl203.out --trace-ascii log/1/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/1/test203.txt > log/1/stdout203 2> log/1/stderr203 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/2/valgrind202 ../src/curl -q --trace-ascii log/2/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/2/test202.txt > log/2/stdout202 2> log/2/stderr202 202: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:24.804786042 +0000 +++ log/2/check-generated 2025-05-23 19:28:24.804786042 +0000 @@ -1,2 +0,0 @@ -contents in a single file[LF] -contents in a single file[LF] == Contents of files in the log/2/ dir after test 202 === Start of file check-expected contents in a single file[LF] contents in a single file[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind202 ../src/curl -q --trace-ascii log/2/trace202 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test202.txt FILE://localhost/build/curl/src/build-curl/tests/log/2/test202.txt > log/2/stdout202 2> log/2/stderr202 === End of file commands.log === Start of file server.cmd Testnum 202 === End of file server.cmd === Start of file test202.txt contents in a single file === End of file test202.txt === Start of file valgrind202 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind202 CMD (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/4/valgrind205 ../src/curl -q --output log/4/curl205.out --trace-ascii log/4/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/nonexisting/result205.txt -T log/4/upload205.txt > log/4/stdout205 2> log/4/stderr205 CMD (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/valgrind204 ../src/curl -q --output log/3/curl204.out --trace-ascii log/3/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/result204.txt -T log/3/upload204.txt > log/3/stdout204 2> log/3/stderr204 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/1/valgrind203 ../src/curl -q --output log/1/curl203.out --trace-ascii log/1/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/1/test203.txt > log/1/stdout203 2> log/1/stderr203 203: data FAILED: --- log/1/check-expected 2025-05-23 19:28:25.076792870 +0000 +++ log/1/check-generated 2025-05-23 19:28:25.076792870 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/1/ dir after test 203 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind203 ../src/curl -q --output log/1/curl203.out --trace-ascii log/1/trace203 --trace-config all --trace-time file:/build/curl/src/build-curl/tests/log/1/test203.txt > log/1/stdout203 2> log/1/stderr203 === End of file commands.log === Start of file server.cmd Testnum 203 === End of file server.cmd === Start of file test203.txt foo bar bar foo moo === End of file test203.txt === Start of file valgrind203 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind203 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/4/valgrind205 ../src/curl -q --output log/4/curl205.out --trace-ascii log/4/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/nonexisting/result205.txt -T log/4/upload205.txt > log/4/stdout205 2> log/4/stderr205 curl returned 1, when expecting 23 205: exit FAILED == Contents of files in the log/4/ 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/4/valgrind205 ../src/curl -q --output log/4/curl205.out --trace-ascii log/4/trace205 --trace-config all --trace-time file://localhost//build/curl/src/build-curl/tests/log/4/nonexisting/result205.txt -T log/4/upload205.txt > log/4/stdout205 2> log/4/stderr205 === End of file commands.log === Start of file server.cmd Testnum 205 === End of file server.cmd === Start of file upload205.txt data in file to write === End of file upload205.txt === Start of file valgrind205 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind205 CMD (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/2/valgrind206 ../src/curl -q --output log/2/curl206.out --include --trace-ascii log/2/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:39599 --proxy-user silly:person --proxy-digest --proxytunnel > log/2/stdout206 2> log/2/stderr206 CMD (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/1/valgrind207 ../src/curl -q --output log/1/curl207.out --include --trace-ascii log/1/trace207 --trace-config all --trace-time http://127.0.0.1:41477/207 > log/1/stdout207 2> log/1/stderr207 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/3/valgrind204 ../src/curl -q --output log/3/curl204.out --trace-ascii log/3/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/result204.txt -T log/3/upload204.txt > log/3/stdout204 2> log/3/stderr204 204: output (log/3/result204.txt) FAILED: --- log/3/check-expected 2025-05-23 19:28:25.300798493 +0000 +++ log/3/check-generated 2025-05-23 19:28:25.300798493 +0000 @@ -1,5 +0,0 @@ -data[LF] -in[LF] -file[LF] -to[LF] -write[LF] == Contents of files in the log/3/ dir after test 204 === Start of file check-expected data[LF] in[LF] file[LF] to[LF] write[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind204 ../src/curl -q --output log/3/curl204.out --trace-ascii log/3/trace204 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/3/result204.txt -T log/3/upload204.txt > log/3/stdout204 2> log/3/stderr204 === End of file commands.log === Start of file server.cmd Testnum 204 === End of file server.cmd === Start of file upload204.txt data in file to write === End of file upload204.txt === Start of file valgrind204 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind204 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/2/valgrind206 ../src/curl -q --output log/2/curl206.out --include --trace-ascii log/2/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:39599 --proxy-user silly:person --proxy-digest --proxytunnel > log/2/stdout206 2> log/2/stderr206 206: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind206 ../src/curl -q --output log/2/curl206.out --include --trace-ascii log/2/trace206 --trace-config all --trace-time http://test.remote.haxx.se.206:8990/path/2060002 --proxy http://127.0.0.1:39599 --proxy-user silly:person --proxy-digest --proxytunnel > log/2/stdout206 2> log/2/stderr206 === End of file commands.log === Start of file http_server.log 19:28:25.384932 ====> Client connect 19:28:25.385160 accept_connection 3 returned 4 19:28:25.385282 accept_connection 3 returned 0 19:28:25.385384 Read 93 bytes 19:28:25.385456 Process 93 bytes request 19:28:25.385535 Got request: GET /verifiedserver HTTP/1.1 19:28:25.385615 Are-we-friendly question received 19:28:25.385873 Wrote request (93 bytes) input to log/2/server.input 19:28:25.386112 Identifying ourselves as friends 19:28:25.386625 Response sent (57 bytes) and written to log/2/server.response 19:28:25.386720 special request received, no persistency 19:28:25.386779 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind206 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind206 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/1/valgrind207 ../src/curl -q --output log/1/curl207.out --include --trace-ascii log/1/trace207 --trace-config all --trace-time http://127.0.0.1:41477/207 > log/1/stdout207 2> log/1/stderr207 207: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind207 ../src/curl -q --output log/1/curl207.out --include --trace-ascii log/1/trace207 --trace-config all --trace-time http://127.0.0.1:41477/207 > log/1/stdout207 2> log/1/stderr207 === End of file commands.log === Start of file http_server.log 19:28:25.659755 ====> Client connect 19:28:25.659982 accept_connection 3 returned 4 19:2CMD (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/4/valgrind208 ../src/curl -q --output log/4/curl208.out --include --trace-ascii log/4/trace208 --trace-config all --trace-time -x http://127.0.0.1:43669 ftp://daniel:mysecret@host.com/we/want/208 -T log/4/test208.txt > log/4/stdout208 2> log/4/stderr208 CMD (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/valgrind209 ../src/curl -q --output log/3/curl209.out --include --trace-ascii log/3/trace209 --trace-config all --trace-time http://test.remote.example.com.209:37525/path/2090002 --proxy http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/3/stdout209 2> log/3/stderr209 8:25.660103 accept_connection 3 returned 0 19:28:25.660207 Read 93 bytes 19:28:25.660281 Process 93 bytes request 19:28:25.660364 Got request: GET /verifiedserver HTTP/1.1 19:28:25.660467 Are-we-friendly question received 19:28:25.660681 Wrote request (93 bytes) input to log/1/server.input 19:28:25.660838 Identifying ourselves as friends 19:28:25.661386 Response sent (57 bytes) and written to log/1/server.response 19:28:25.661486 special request received, no persistency 19:28:25.661548 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 207 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind207 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind207 test 0208...[HTTP PUT to a 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/4/valgrind208 ../src/curl -q --output log/4/curl208.out --include --trace-ascii log/4/trace208 --trace-config all --trace-time -x http://127.0.0.1:43669 ftp://daniel:mysecret@host.com/we/want/208 -T log/4/test208.txt > log/4/stdout208 2> log/4/stderr208 208: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 208 === Start of file commands.log ../libtool --mode=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/valgrind208 ../src/curl -q --output log/4/curl208.out --include --trace-ascii log/4/trace208 --trace-config all --trace-time -x http://127.0.0.1:43669 ftp://daniel:mysecret@host.com/we/want/208 -T log/4/test208.txt > log/4/stdout208 2> log/4/stderr208 === End of file commands.log === Start of file http_server.log 19:28:25.851193 ====> Client connect 19:28:25.851407 accept_connection 3 returned 4 19:28:25.851525 accept_connection 3 returned 0 19:28:25.851995 Read 93 bytes 19:28:25.852130 Process 93 bytes request 19:28:25.852218 Got request: GET /verifiedserver HTTP/1.1 19:28:25.852285 Are-we-friendly question received 19:28:25.852440 Wrote request (93 bytes) input to log/4/server.input 19:28:25.852596 Identifying ourselves as friends 19:28:25.853017 Response sent (57 bytes) and written to log/4/server.response 19:28:25.853104 special request received, no persistency 19:28:25.853158 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 208 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file test208.txt Weird file to upload for testing the PUT feature === End of file test208.txt === Start of file valgrind208 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind209 ../src/curl -q --output log/3/curl209.out --include --trace-ascii log/3/trace209 --trace-config all --trace-time http://test.remote.example.com.209:37525/path/2090002 --proxy http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/3/stdout209 2> log/3/stderr209 209: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind209 ../src/curl -q --output log/3/curl209.out --include --trace-ascii log/3/trace209 --trace-config all --trace-time http://test.remote.example.com.209:37525/path/2090002 --proxy http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel > log/3/stdout209 2> log/3/stderr209 === End of file commands.log === Start of file http_server.log 19:28:24.881128 ====> Client connect 19:28:24.881370 accept_connection 3 returned 4 19:28:24.881492 accept_connectiCMD (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/1/valgrind211 ../src/curl -q --output log/1/curl211.out --include --trace-ascii log/1/trace211 --trace-config all --trace-time ftp://127.0.0.1:39333/a/path/211 ftp://127.0.0.1:39333/a/path/211 > log/1/stdout211 2> log/1/stderr211 on 3 returned 0 19:28:24.881611 Read 93 bytes 19:28:24.881705 Process 93 bytes request 19:28:24.881785 Got request: GET /verifiedserver HTTP/1.1 19:28:24.881858 Are-we-friendly question received 19:28:24.882041 Wrote request (93 bytes) input to log/3/server.input 19:28:24.882214 Identifying ourselves as friends 19:28:24.882787 Response sent (57 bytes) and written to log/3/server.response 19:28:24.882955 special request received, no persistency 19:28:24.883022 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 209 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind209 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind209 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/1/valgrind211 ../src/curl -q --output log/1/curl211.out --include --trace-ascii log/1/trace211 --trace-config all --trace-time ftp://127.0.0.1:39333/a/path/211 ftp://127.0.0.1:39333/a/path/211 > log/1/stdout211 2> log/1/stderr211 211: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind211 ../src/curl -q --output log/1/curl211.out --include --trace-ascii log/1/trace211 --trace-config all --trace-time ftp://127.0.0.1:39333/a/path/211 ftp://127.0.0.1:39333/a/path/211 > log/1/stdout211 2> log/1/stderr211 === End of file commands.log === Start of file ftp_server.log 19:28:25.865173 ====> Client connect 19:28:25.866148 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:25.867625 < "USER anonymous" 19:28:25.867972 > "331 We are happy you popped in![CR][LF]" 19:28:25.869058 < "PASS ftp@example.com" 19:28:25.869355 > "230 Welcome you silly person[CR][LF]" 19:28:25.870519 < "PWD" 19:28:25.870839 > "257 "/" is current directory[CR][LF]" 19:28:25.871912 < "EPSV" 19:28:25.872134 ====> Passive DATA channel requested by client 19:28:25.872271 DATA sockfilt for passive data channel starting... 19:28:25.879856 DATA sockfilt for passive data channel started (pid 116483) 19:28:25.880576 DATA sockfilt for passive data channel listens on port 40505 19:28:25.880936 > "229 Entering Passive Mode (|||40505|)[LF]" 19:28:25.881093 Client has been notified that DATA conn will be accepted on port 40505 19:28:25.883492 Client connects to port 40505 19:28:25.883757 ====> Client established passive DATA connection on port 40505 19:28:25.884290 < "TYPE I" 19:28:25.884611 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:25.885803 < "SIZE verifiedserver" 19:28:25.886131 > "213 18[CR][LF]" 19:28:25.887213 < "RETR verifiedserver" 19:28:25.887552 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:25.888081 =====> Closing passive DATA connection... 19:28:25.888279 Server disconnects passive DATA connection 19:28:25.888798 Server disconnected passive DATA connection 19:28:25.889025 DATA sockfilt for passive data channel quits (pid 116483) 19:28:25.890474 DATA sockfilt for passive data channel quit (pid 116483) 19:28:25.890696 =====> Closed passive DATA connection 19:28:25.890891 > "226 File transfer complete[CR][LF]" 19:28:25.930800 < "QUIT" 19:28:25.931064 > "221 bye bye baby[CR][LF]" 19:28:25.934705 MAIN sockfilt said DISC 19:28:25.934948 ====> Client disconnected 19:28:25.935242 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:26.330194 ====> Client connect 19:28:26.331580 Received DATA (on stdin) 19:28:26.331726 > 160 bytes data, server => client 19:28:26.331810 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:26.331888 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:26.331966 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:26.332456 < 16 bytes data, client => server 19:28:26.332596 'USER anonymous\r\n' 19:28:26.333456 Received DATA (on stdin) 19:28:26.333573 > 33 bytes data, server => client 19:28:26.333654 '331 We are happy you popped in!\r\n' 19:28:26.334088 < 22 bytes data, client => server 19:28:26.334221 'PASS ftp@example.com\r\n' 19:28:26.334799 Received DATA (on stdin) 19:28:26.335001 > 30 bytes data, server => client 19:28:26.335091 '230 Welcome you silly person\r\n' 19:28:26.335533 < 5 bytes data, client => server 19:28:26.335666 'PWD\r\n' 19:28:26.336281 Received DATA (on stdin) 19:28:26.336397 > 30 bytes data, server => client 19:28:26.336477 '257 "/" is current directory\r\n' 19:28:26.336931 < 6 bytes data, client => server 19:28:26.337084 'EPSV\r\n' 19:28:26.346374 Received DATA (on stdin) 19:28:26.346495 > 38 bytes data, server => client 19:28:26.346568 '229 Entering Passive Mode (|||40505|)\n' 19:28:26.348238 < 8 bytes data, client => server 19:28:26.348499 'TYPE I\r\n' 19:28:26.350064 Received DATA (on stdin) 19:28:26.350202 > 33 bytes data, server => client 19:28:26.350294 '200 I modify TYPE as you wanted\r\n' 19:28:26.350766 < 21 bytes data, client => server 19:28:26.350963 'SIZE verifiedserver\r\n' 19:28:26.351575 Received DATA (on stdin) 19:28:26.351686 > 8 bytes data, server => client 19:28:26.351758 '213 18\r\n' 19:28:26.352222 < 21 bytes data, client => server 19:28:26.352360 'RETR verifiedserver\r\n' 19:28:26.352996 Received DATA (on stdin) 19:28:26.353121 > 29 bytes data, server => client 19:28:26.353199 '150 Binary junk (18 bytes).\r\n' 19:28:26.356352 Received DATA (on stdin) 19:28:26.356461 > 28 bytes data, server => client 19:28:26.356534 '226 File transfer complete\r\n' 19:28:26.395835 < 6 bytes data, client => server 19:28:26.395980 'QUIT\r\n' 19:28:26.396506 Received DATA (on stdin) 19:28:26.396604 > 18 bytes data, server => client 19:28:26.396676 '22CMD (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/4/valgrind212 ../src/curl -q --output log/4/curl212.out --include --trace-ascii log/4/trace212 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/212 ftp://127.0.0.1:40809/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 1 bye bye baby\r\n' 19:28:26.399910 ====> Client disconnect 19:28:26.400410 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:25.344298 Running IPv4 version 19:28:25.344660 Listening on port 40505 19:28:25.344948 Wrote pid 116483 to log/1/server/ftp_sockdata.pid 19:28:25.345073 Received PING (on stdin) 19:28:25.345635 Received PORT (on stdin) 19:28:25.348738 ====> Client connect 19:28:25.353596 Received DATA (on stdin) 19:28:25.353716 > 18 bytes data, server => client 19:28:25.353801 'WE ROOLZ: 109414\r\n' 19:28:25.354042 Received DISC (on stdin) 19:28:25.354185 ====> Client forcibly disconnected 19:28:25.354828 Received QUIT (on stdin) 19:28:25.355092 quits 19:28:25.355384 ============> 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 valgrind211 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time ftp://127.0.0.1:40809/a/path/212 ftp://127.0.0.1:40809/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 212: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:40809/a/path/212 ftp://127.0.0.1:40809/a/path/212 -P - > log/4/stdout212 2> log/4/stderr212 === End of file commands.log === Start of file ftp_server.log 19:28:26.078790 ====> Client connect 19:28:26.079528 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:26.080944 < "USER anonymous" 19:28:26.081301 > "331 We are happy you popped in![CR][LF]" 19:28:26.082440 < "PASS ftp@example.com" 19:28:26.082762 > "230 Welcome you silly person[CR][LF]" 19:28:26.084310 < "PWD" 19:28:26.084655 > "257 "/" is current directory[CR][LF]" 19:28:26.086147 < "EPSV" 19:28:26.086396 ====> Passive DATA channel requested by client 19:28:26.086553 DATA sockfilt for passive data channel starting... 19:28:26.093943 DATA sockfilt for passive data channel started (pid 116525) 19:28:26.094647 DATA sockfilt for passive data channel listens on port 36887 19:28:26.094971 > "229 Entering Passive Mode (|||36887|)[LF]" 19:28:26.095146 Client has been notified that DATA conn will be accepted on port 36887 19:28:26.096642 Client connects to port 36887 19:28:26.096945 ====> Client established passive DATA connection on port 36887 19:28:26.097669 < "TYPE I" 19:28:26.097997 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:26.099143 < "SIZE verifiedserver" 19:28:26.099510 > "213 18[CR][LF]" 19:28:26.100575 < "RETR verifiedserver" 19:28:26.100945 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:26.101773 =====> Closing passive DATA connection... 19:28:26.102343 Server disconnects passive DATA connection 19:28:26.102552 Fancy that; client wants to DISC, too 19:28:26.102807 Server disconnected passive DATA connection 19:28:26.102971 DATA sockfilt for passive data channel quits (pid 116525) 19:28:26.104049 DATA sockfilt for passive data channel quit (pid 116525) 19:28:26.104252 =====> Closed passive DATA connection 19:28:26.104467 > "226 File transfer complete[CR][LF]" 19:28:26.142573 < "QUIT" 19:28:26.142924 > "221 bye bye baby[CR][LF]" 19:28:26.144753 MAIN sockfilt said DISC 19:28:26.145098 ====> Client disconnected 19:28:26.145578 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:25.543864 ====> Client connect 19:28:25.544958 Received DATA (on stdin) 19:28:25.545083 > 160 bytes data, server => client 19:28:25.545161 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:25.545233 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:25.545294 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:25.545788 < 16 bytes data, client => server 19:28:25.545922 'USER anonymous\r\n' 19:28:25.546743 Received DATA (on stdin) 19:28:25.546969 > 33 bytes data, server => client 19:28:25.547081 '331 We are happy you popped in!\r\n' 19:28:25.547492 < 22 bytes data, client => server 19:28:25.547622 'PASS ftp@example.com\r\n' 19:28:25.548199 Received DATA (on stdin) 19:28:25.548320 > 30 bytes data, server => client 19:28:25.548402 '230 Welcome you silly person\r\n' 19:28:25.548822 < 5 bytes data, client => server 19:28:25.548954 'PWD\r\n' 19:28:25.550099 Received DATA (on stdin) 19:28:25.550224 > 30 bytes data, server => client 19:28:25.550296 '257 "/" is current directory\r\n' 19:28:25.550703 < 6 bytes data, client => server 19:28:25.550815 'EPSV\r\n' 19:28:25.560715 Received DATA (on stdin) 19:28:25.560852 > 38 bytes data, server => client 19:28:25.560945 '229 Entering Passive Mode (|||36887|)\n' 19:28:25.561792 < 8 bytes data, client => server 19:28:25.561889 'TYPE I\r\n' 19:28:25.563449 Received DATA (on stdin) 19:28:25.563585 > 33 bytes data, server => client 19:28:25.563678 '200 I modify TYPE as you wanted\r\n' 19:28:25.564110 < 21 bytes data, client => server 19:28:25.564253 'SIZE verifiedserver\r\n' 19:28:25.564958 Received DATA (on stdin) 19:28:25.565086 > 8 bytes data, server => client 19:28:25.565166 '213 18\r\n' 19:28:25.565589 < 21 bytes data, client => server 19:28:25.565707 'RETR verifiedserver\r\n' 19:28:25.566397 Received DATA (on stdin) 19:28:25.566519 > 29 bytes data, server => client 19:28:25.566591 '150 Binary junk (18 bytes).\r\n' 19:28:25.569911 Received DATA (on stdin) 19:28:25.570044 > 28 bytes data, server => client 19:28:25.570126 '226 File transfer complete\r\n' 19:28:25.607542 < 6 bytes data, client => server 19:28:25.607699 'QUIT\r\n' 19:28:25.608366 Received DATA (on stdin) 19:28:25.608494 > 18 bytes data, server => client 19:28:25.608576 '221 bye bye baby\r\n' 19:28:25.608986 ====> Client disconnect 19:28:25.611331 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:26.558239 Running IPv4 version 19:28:26.558716 Listening onCMD (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/valgrind213 ../src/curl -q --output log/3/curl213.out --include --trace-ascii log/3/trace213 --trace-config all --trace-time http://test.remote.example.com.213:37525/path/2130002 --proxy1.0 http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/3/stdout213 2> log/3/stderr213 CMD (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/1/valgrind214 ../src/curl -q --output log/1/curl214.out --include --trace-ascii log/1/trace214 --trace-config all --trace-time "http://127.0.0.1:41477/\{\}\/214" > log/1/stdout214 2> log/1/stderr214 port 36887 19:28:26.559040 Wrote pid 116525 to log/4/server/ftp_sockdata.pid 19:28:26.559165 Received PING (on stdin) 19:28:26.559709 Received PORT (on stdin) 19:28:26.561608 ====> Client connect 19:28:26.566835 Received DATA (on stdin) 19:28:26.567042 > 18 bytes data, server => client 19:28:26.567123 'WE ROOLZ: 109451\r\n' 19:28:26.567561 ====> Client disconnect 19:28:26.568040 Received DISC (on stdin) 19:28:26.568130 Crikey! Client also wants to disconnect 19:28:26.568212 Received ACKD (on stdin) 19:28:26.568613 Received QUIT (on stdin) 19:28:26.568722 quits 19:28:26.568979 ============> 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 valgrind212 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind213 ../src/curl -q --output log/3/curl213.out --include --trace-ascii log/3/trace213 --trace-config all --trace-time http://test.remote.example.com.213:37525/path/2130002 --proxy1.0 http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/3/stdout213 2> log/3/stderr213 213: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind213 ../src/curl -q --output log/3/curl213.out --include --trace-ascii log/3/trace213 --trace-config all --trace-time http://test.remote.example.com.213:37525/path/2130002 --proxy1.0 http://127.0.0.1:37525 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/3/stdout213 2> log/3/stderr213 === End of file commands.log === Start of file http_server.log 19:28:25.604989 ====> Client connect 19:28:25.605226 accept_connection 3 returned 4 19:28:25.605349 accept_connection 3 returned 0 19:28:25.605455 Read 93 bytes 19:28:25.605533 Process 93 bytes request 19:28:25.605618 Got request: GET /verifiedserver HTTP/1.1 19:28:25.605688 Are-we-friendly question received 19:28:25.605851 Wrote request (93 bytes) input to log/3/server.input 19:28:25.606003 Identifying ourselves as friends 19:28:25.606589 Response sent (57 bytes) and written to log/3/server.response 19:28:25.606758 special request received, no persistency 19:28:25.607099 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 213 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind213 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind214 ../src/curl -q --output log/1/curl214.out --include --trace-ascii log/1/trace214 --trace-config all --trace-time "http://127.0.0.1:41477/\{\}\/214" > log/1/stdout214 2> log/1/stderr214 214: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind214 ../src/curl -q --output log/1/curl214.out --include --trace-ascii log/1/trace214 --trace-config all --trace-time "http://127.0.0.1:41477/\{\}\/214" > log/1/stdout214 2> log/1/stderr214 === End of file commands.log === Start of file http_server.log 19:28:26.942569 ====> Client connect 19:28:26.942936 accept_connection 3 returned 4 19:28:26.943075 accept_connection 3 returned 0 19:28:26.943177 Read 93 bytes 19:28:26.943243 Process 93 bytes request 19:28:26.943309 Got request: GET /verifiedserver HTTP/1.1 19:28:26.943385 Are-we-friendly question received 19:28:26.943538 Wrote request (93 bytes) input to log/1/server.input 19:28:26.943711 Identifying ourselves as friends 19:28:26.944223 Response sent (57 bytes) and written to log/1/server.response 19:28:26.944330 special request received, no persistency 19:28:26.944428 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * usiCMD (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/2/valgrind210 ../src/curl -q --output log/2/curl210.out --trace-ascii log/2/trace210 --trace-config all --trace-time ftp://127.0.0.1:36773/a/path/210 ftp://127.0.0.1:36773/a/path/210 > log/2/stdout210 2> log/2/stderr210 ng HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 214 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind214 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind214 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 36773 (log/2/server/ftp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://127.0.0.1:36773/verifiedserver" 2>log/2/ftp_verify.log RUN: Verifying our test ftp server took 0 seconds RUN: FTP server is PID 116354 port 36773 * pid ftp => 116354 116354 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/2/valgrind210 ../src/curl -q --output log/2/curl210.out --trace-ascii log/2/trace210 --trace-config all --trace-time ftp://127.0.0.1:36773/a/path/210 ftp://127.0.0.1:36773/a/path/210 > log/2/stdout210 2> log/2/stderr210 210: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind210 ../src/curl -q --output log/2/curl210.out --trace-ascii log/2/trace210 --trace-config all --trace-time ftp://127.0.0.1:36773/a/path/210 ftp://127.0.0.1:36773/a/path/210 > log/2/stdout210 2> log/2/stderr210 === End of file commands.log === Start of file ftp_server.log 19:28:25.892164 FTP server listens on port IPv4/36773 19:28:25.892824 logged pid 116354 in log/2/server/ftp_server.pid 19:28:25.893011 Awaiting input 19:28:26.641524 ====> Client connect 19:28:26.642263 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:26.643651 < "USER anonymous" 19:28:26.644023 > "331 We are happy you popped in![CR][LF]" 19:28:26.645106 < "PASS ftp@example.com" 19:28:26.645386 > "230 Welcome you silly person[CR][LF]" 19:28:26.646487 < "PWD" 19:28:26.646836 > "257 "/" is current directory[CR][LF]" 19:28:26.647832 < "EPSV" 19:28:26.648052 ====> Passive DATA channel requested by client 19:28:26.648222 DATA sockfilt for passive data channel starting... 19:28:26.655522 DATA sockfilt for passive data channel started (pid 116717) 19:28:26.656282 DATA sockfilt for passive data channel listens on port 34515 19:28:26.656636 > "229 Entering Passive Mode (|||34515|)[LF]" 19:28:26.656791 Client has been notified that DATA conn will be accepted on port 34515 19:28:26.658055 Client connects to port 34515 19:28:26.658324 ====> Client established passive DATA connection on port 34515 19:28:26.658999 < "TYPE I" 19:28:26.659347 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:26.660381 < "SIZE verifiedserver" 19:28:26.660705 > "213 18[CR][LF]" 19:28:26.663439 < "RETR verifiedserver" 19:28:26.663785 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:26.664316 =====> Closing passive DATA connection... 19:28:26.664497 Server disconnects passive DATA connection 19:28:26.664855 Server disconnected passive DATA connection 19:28:26.665079 DATA sockfilt for passive data channel quits (pid 116717) 19:28:26.666351 DATA sockfilt for passive data channel quit (pid 116717) 19:28:26.666604 =====> Closed passive DATA connection 19:28:26.666872 > "226 File transfer complete[CR][LF]" 19:28:26.706602 < "QUIT" 19:28:26.707093 > "221 bye bye baby[CR][LF]" 19:28:26.707987 MAIN sockfilt said DISC 19:28:26.708269 ====> Client disconnected 19:28:26.708623 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:25.354266 Running IPv4 version 19:28:25.354609 Listening on port 36773 19:28:25.356876 Wrote pid 116485 to log/2/server/ftp_sockctrl.pid 19:28:25.357105 Wrote port 36773 to log/2/server/ftp_server.port 19:28:25.357209 Received PING (on stdin) 19:28:26.106668 ====> Client connect 19:28:26.107666 Received DATA (on stdin) 19:28:26.107811 > 160 bytes data, server => client 19:28:26.107895 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:26.107967 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:26.108026 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:26.108447 < 16 bytes data, client => server 19:28:26.108574 'USER anonymous\r\n' 19:28:26.109442 Received DATA (on stdin) 19:28:26.109581 > 33 bytes data, server => client 19:28:26.109664 '331 We are happy you popped in!\r\n' 19:28:26.110091 < 22 bytes data, client => server 19:28:26.110231 'PASS ftp@example.com\r\n' 19:28:26.110813 Received DATA (on stdin) 19:28:26.111006 > 30 bytes data, server => client 19:28:26.111085 '230 Welcome you silly person\r\n' 19:28:26.111506 < 5 bytes data, client => server 19:28:26.111631 'PWD\r\n' 19:28:26.112255 Received DATA (on stdin) 19:28:26.112380 > 30 bytes data, server => client 19:28:26.112450 '257 "/" is current directory\r\n' 19:28:26.112877 < 6 bytes data, client => server 19:28:26.112996 'EPSV\r\n' 19:28:26.122053 Received DATA (on stdin) 19:28:26.122170 > 38 bytes data, server => client 19:28:26.122242 '229 Entering Passive Mode (|||34515|)\n' 19:28:26.123195 < 8 bytes data, client => server 19:28:26.123296 'TYPE I\r\n' 19:28:26.124775 Received DATA (on stdin) 19:28:26.124896 > 33 bytes data, server => client 19:28:26.124973 '200 I modify TYPE as you wanted\r\n' 19:28:26.125408 < 21 bytes data, client => server 19:28:26.125537 'SIZE verifiedserver\r\n' 19:28:26.126139 Received DATA (on stdin) 19:28:26.126244 > 8 bytes data, server => client 19:28:26.126309 '213 18\r\n' 19:28:26.128442 < 21 bytes data, client => server 19:28:26.128601 'RETR verifiedserver\r\n' 19:28:26.129221 Received DATA (on stdin) 19:28:26.129347 > 29 bytes data, server => client 19:28:26.129424 '150 BiCMD (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/4/valgrind215 ../src/curl -q --output log/4/curl215.out --include --trace-ascii log/4/trace215 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/215/ ftp://127.0.0.1:40809/a/path/215/ > log/4/stdout215 2> log/4/stderr215 nary junk (18 bytes).\r\n' 19:28:26.132302 Received DATA (on stdin) 19:28:26.132437 > 28 bytes data, server => client 19:28:26.132519 '226 File transfer complete\r\n' 19:28:26.171480 < 6 bytes data, client => server 19:28:26.171644 'QUIT\r\n' 19:28:26.172518 Received DATA (on stdin) 19:28:26.172639 > 18 bytes data, server => client 19:28:26.172730 '221 bye bye baby\r\n' 19:28:26.173150 ====> Client disconnect 19:28:26.173721 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:26.119933 Running IPv4 version 19:28:26.120332 Listening on port 34515 19:28:26.120579 Wrote pid 116717 to log/2/server/ftp_sockdata.pid 19:28:26.120702 Received PING (on stdin) 19:28:26.121314 Received PORT (on stdin) 19:28:26.122977 ====> Client connect 19:28:26.129674 Received DATA (on stdin) 19:28:26.129807 > 18 bytes data, server => client 19:28:26.129880 'WE ROOLZ: 116354\r\n' 19:28:26.130092 Received DISC (on stdin) 19:28:26.130218 ====> Client forcibly disconnected 19:28:26.130707 Received QUIT (on stdin) 19:28:26.130812 quits 19:28:26.131220 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 210 === End of file server.cmd === Start of file valgrind210 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind210 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/4/valgrind215 ../src/curl -q --output log/4/curl215.out --include --trace-ascii log/4/trace215 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/215/ ftp://127.0.0.1:40809/a/path/215/ > log/4/stdout215 2> log/4/stderr215 215: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind215 ../src/curl -q --output log/4/curl215.out --include --trace-ascii log/4/trace215 --trace-config all --trace-time ftp://127.0.0.1:40809/a/path/215/ ftp://127.0.0.1:40809/a/path/215/ > log/4/stdout215 2> log/4/stderr215 === End of file commands.log === Start of file ftp_server.log 19:28:26.718282 ====> Client connect 19:28:26.719026 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:26.720776 < "USER anonymous" 19:28:26.721047 > "331 We are happy you popped in![CR][LF]" 19:28:26.722517 < "PASS ftp@example.com" 19:28:26.722771 > "230 Welcome you silly person[CR][LF]" 19:28:26.724028 < "PWD" 19:28:26.724320 > "257 "/" is current directory[CR][LF]" 19:28:26.725763 < "EPSV" 19:28:26.725977 ====> Passive DATA channel requested by client 19:28:26.726090 DATA sockfilt for passive data channel starting... 19:28:26.738107 DATA sockfilt for passive data channel started (pid 116742) 19:28:26.739056 DATA sockfilt for passive data channel listens on port 34997 19:28:26.739534 > "229 Entering Passive Mode (|||34997|)[LF]" 19:28:26.739730 Client has been notified that DATA conn will be accepted on port 34997 19:28:26.741613 Client connects to port 34997 19:28:26.741886 ====> Client established passive DATA connection on port 34997 19:28:26.742427 < "TYPE I" 19:28:26.742736 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:26.744224 < "SIZE verifiedserver" 19:28:26.744577 > "213 18[CR][LF]" 19:28:26.746161 < "RETR verifiedserver" 19:28:26.746497 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:26.746981 =====> Closing passive DATA connection... 19:28:26.747172 Server disconnects passive DATA connection 19:28:26.748487 Server disconnected passive DATA connection 19:28:26.750972 DATA sockfilt for passive data channel quits (pid 116742) 19:28:26.752275 DATA sockfilt for passive data channel quit (pid 116742) 19:28:26.752611 =====> Closed passive DATA connection 19:28:26.752846 > "226 File transfer complete[CR][LF]" 19:28:26.793675 < "QUIT" 19:28:26.794020 > "221 bye bye baby[CR][LF]" 19:28:26.794884 MAIN sockfilt said DISC 19:28:26.795136 ====> Client disconnected 19:28:26.795459 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:26.183285 ====> Client connect 19:28:26.184728 Received DATA (on stdin) 19:28:26.184835 > 160 bytes data, server => client 19:28:26.184913 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:26.184981 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:26.185046 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:26.185457 < 16 bytes data, client => server 19:28:26.185584 'USER anonymous\r\n' 19:28:26.186684 Received DATA (on stdin) 19:28:26.186791 > 33 bytes data, server => client 19:28:26.186985 '331 We are happy you popped in!\r\n' 19:28:26.187363 < 22 bytes data, client => server 19:28:26.187479 'PASS ftp@example.com\r\n' 19:28:26.188370 Received DATA (on stdin) 19:28:26.188463 > 30 bytes data, server => client 19:28:26.188532 '230 Welcome you silly person\r\n' 19:28:26.188900 < 5 bytes data, client => server 19:28:26.189019 'PWD\r\n' 19:28:26.189953 Received DATA (on stdin) 19:28:26.190058 > 30 bytes data, server => client 19:28:26.190132 '257 "/" is current directory\r\n' 19:28:26.190516 < 6 bytes data, client => server 19:28:26.190632 'EPSV\r\n' 19:28:26.205383 Received DATA (on stdin) 19:28:26.205517 > 38 bytes data, server => client 19:28:26.205600 '229 Entering Passive Mode (|||34997|)\n' 19:28:26.206503 < 8 bytes data, client => server 19:28:26.206645 'TYPE I\r\n' 19:28:26.208406 Received DATA (on stdin) 19:28:26.208535 > 33 bytes data, server => client 19:28:26.208628 '200 I modify TYPE as you wanted\r\n' 19:28:26.209069 < 21 bytes data, client => server 19:28:26.209195 'SIZE verifiedserver\r\n' 19:28:26.210265 Received DATA (on stdin) 19:28:26.210379 > 8 bytes data, server => client 19:28:26.210451 '213 18\r\n' 19:28:26.210967 < 21 bytes data, client => server 19:28:26.211099 'RETR verifiedserver\r\n' 19:28:26.212792 Received DATA (on stdin) 19:28:26.212908 > 29 bytes data, server => client 19:28:26.212987 '150 Binary junk (18 bytes).\r\n' 19:28:26.218282 Received DATA (on stdin) 19:28:26.218439 > 28 bytes data, server => client 19:28:26.218533 '226 File transfer complete\r\n' 19:28:26.258480 < 6 bytes data, client => server 19:28:26.258628 'QUIT\r\n' 19:28:26.259449 Received DATA (on stdin) 19:28:26.259572 > 18 CMD (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/valgrind216 ../src/curl -q --output log/3/curl216.out --include --trace-ascii log/3/trace216 --trace-config all --trace-time -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/ -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/%2e%2eanotherup.216 > log/3/stdout216 2> log/3/stderr216 bytes data, server => client 19:28:26.259654 '221 bye bye baby\r\n' 19:28:26.260067 ====> Client disconnect 19:28:26.260577 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:26.199152 Running IPv4 version 19:28:26.199519 Listening on port 34997 19:28:26.199790 Wrote pid 116742 to log/4/server/ftp_sockdata.pid 19:28:26.203259 Received PING (on stdin) 19:28:26.204027 Received PORT (on stdin) 19:28:26.206775 ====> Client connect 19:28:26.213208 Received DATA (on stdin) 19:28:26.213347 > 18 bytes data, server => client 19:28:26.213427 'WE ROOLZ: 109451\r\n' 19:28:26.213664 Received DISC (on stdin) 19:28:26.215125 ====> Client forcibly disconnected 19:28:26.216667 Received QUIT (on stdin) 19:28:26.216793 quits 19:28:26.217075 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 215 === End of file server.cmd === Start of file valgrind215 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind216 ../src/curl -q --output log/3/curl216.out --include --trace-ascii log/3/trace216 --trace-config all --trace-time -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/ -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/%2e%2eanotherup.216 > log/3/stdout216 2> log/3/stderr216 216: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind216 ../src/curl -q --output log/3/curl216.out --include --trace-ascii log/3/trace216 --trace-config all --trace-time -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/ -T log/3/upload.216 ftp://127.0.0.1:43789/a/path/216/%2e%2eanotherup.216 > log/3/stdout216 2> log/3/stderr216 === End of file commands.log === Start of file ftp_server.log 19:28:26.839540 ====> Client connect 19:28:26.840462 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:26.841982 < "USER anonymous" 19:28:26.842366 > "331 We are happy you popped in![CR][LF]" 19:28:26.843551 < "PASS ftp@example.com" 19:28:26.843828 > "230 Welcome you silly person[CR][LF]" 19:28:26.844812 < "PWD" 19:28:26.845095 > "257 "/" is current directory[CR][LF]" 19:28:26.846297 < "EPSV" 19:28:26.846529 ====> Passive DATA channel requested by client 19:28:26.846656 DATA sockfilt for passive data channel starting... 19:28:26.856625 DATA sockfilt for passive data channel started (pid 116790) 19:28:26.857307 DATA sockfilt for passive data channel listens on port 37105 19:28:26.857715 > "229 Entering Passive Mode (|||37105|)[LF]" 19:28:26.857894 Client has been notified that DATA conn will be accepted on port 37105 19:28:26.859205 Client connects to port 37105 19:28:26.859551 ====> Client established passive DATA connection on port 37105 19:28:26.860116 < "TYPE I" 19:28:26.860395 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:26.861547 < "SIZE verifiedserver" 19:28:26.861930 > "213 18[CR][LF]" 19:28:26.863041 < "RETR verifiedserver" 19:28:26.863361 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:26.863896 =====> Closing passive DATA connection... 19:28:26.864076 Server disconnects passive DATA connection 19:28:26.864515 Server disconnected passive DATA connection 19:28:26.864753 DATA sockfilt for passive data channel quits (pid 116790) 19:28:26.866209 DATA sockfilt for passive data channel quit (pid 116790) 19:28:26.866443 =====> Closed passive DATA connection 19:28:26.866672 > "226 File transfer complete[CR][LF]" 19:28:26.906877 < "QUIT" 19:28:26.907656 > "221 bye bye baby[CR][LF]" 19:28:26.912918 MAIN sockfilt said DISC 19:28:26.913220 ====> Client disconnected 19:28:26.913648 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:27.304560 ====> Client connect 19:28:27.305865 Received DATA (on stdin) 19:28:27.306000 > 160 bytes data, server => client 19:28:27.306080 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:27.306151 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:27.306214 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:27.306701 < 16 bytes data, client => server 19:28:27.306914 'USER anonymous\r\n' 19:28:27.307793 Received DATA (on stdin) 19:28:27.307923 > 33 bytes data, server => client 19:28:27.308051 '331 We are happy you popped in!\r\n' 19:28:27.308565 < 22 bytes data, client => server 19:28:27.308687 'PASS ftp@example.com\r\n' 19:28:27.309262 Received DATA (on stdin) 19:28:27.309366 > 30 bytes data, server => client 19:28:27.309438 '230 Welcome you silly person\r\n' 19:28:27.309845 < 5 bytes data, client => server 19:28:27.309956 'PWD\r\n' 19:28:27.310516 Received DATA (on stdin) 19:28:27.310628 > 30 bytes data, server => client 19:28:27.310697 '257 "/" is current directory\r\n' 19:28:27.311302 < 6 bytes data, client => server 19:28:27.311439 'EPSV\r\n' 19:28:27.323120 Received DATA (on stdin) 19:28:27.323242 > 38 bytes data, server => client 19:28:27.323312 '229 Entering Passive Mode (|||37105|)\n' 19:28:27.324172 < 8 bytes data, client => server 19:28:27.324302 'TYPE I\r\n' 19:28:27.325822 Received DATA (on stdin) 19:28:27.325935 > 33 bytes data, server => client 19:28:27.326012 '200 I modify TYPE as you wanted\r\n' 19:28:27.326460 < 21 bytes data, client => server 19:28:27.326585 'SIZE verifiedserver\r\n' 19:28:27.327362 Received DATA (on stdin) 19:28:27.327503 > 8 bytes data, server => client 19:28:27.327593 '213 18\r\n' 19:28:27.328063 < 21 bytes data, client => server 19:28:27.328197 'RETR verifiedserver\r\n' 19:28:27.328780 Received DATA (on stdin) 19:28:27.328953 > 29 bytes data, server => client 19:28:27.329079 '150 Binary junk (18 bytes).\r\n' 19:28:27.332104 Received DATA (on stdin) 19:28:27.332221 > 28 bytes data, server => client 19:28:27.332297 '226 File transfer complete\r\n' 19:28:27.371424 < 6 bytes data, client => server 19:28:27.371660 'QUIT\r\n' 19:28:27.373061 Received DATA (on stdin) 19:28:27.373374 > 18 bytes data, server => client 19:28:27.373607 '221 bye bye baby\r\n' 19:28:27.378101 ====> Client disconnect 19:28:27.378667 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 1CMD (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/1/valgrind217 ../src/curl -q --include --trace-ascii log/1/trace217 --trace-config all --trace-time http://test.remote.example.com.217:41477/path/2170002 --proxy http://127.0.0.1:41477 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/1/stdout217 2> log/1/stderr217 9:28:26.321132 Running IPv4 version 19:28:26.321504 Listening on port 37105 19:28:26.321717 Wrote pid 116790 to log/3/server/ftp_sockdata.pid 19:28:26.321825 Received PING (on stdin) 19:28:26.322366 Received PORT (on stdin) 19:28:26.324433 ====> Client connect 19:28:26.329309 Received DATA (on stdin) 19:28:26.329441 > 18 bytes data, server => client 19:28:26.329529 'WE ROOLZ: 109394\r\n' 19:28:26.329730 Received DISC (on stdin) 19:28:26.329873 ====> Client forcibly disconnected 19:28:26.330543 Received QUIT (on stdin) 19:28:26.330672 quits 19:28:26.331017 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 216 === End of file server.cmd === Start of file upload.216 upload this file twice === End of file upload.216 === Start of file valgrind216 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind216 CMD (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/4/valgrind219 ../src/curl -q --output log/4/curl219.out --include --trace-ascii log/4/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/4/stdout219 2> log/4/stderr219 CMD (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/2/valgrind218 ../src/curl -q --output log/2/curl218.out --include --trace-ascii log/2/trace218 --trace-config all --trace-time -T log/2/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:39599/218 > log/2/stdout218 2> log/2/stderr218 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-config all --trace-time http://test.remote.example.com.217:41477/path/2170002 --proxy http://127.0.0.1:41477 --proxytunnel -w "%{http_code} %{http_connect}\n" > log/1/stdout217 2> log/1/stderr217 217: stdout FAILED: --- log/1/check-expected 2025-05-23 19:28:27.640857234 +0000 +++ log/1/check-generated 2025-05-23 19:28:27.640857234 +0000 @@ -1,3 +0,0 @@ -HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] -[CR][LF] -000 405[LF] == Contents of files in the log/1/ dir after test 217 === Start of file check-expected HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] [CR][LF] 000 405[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time http://test.remote.example.com.217:41477/path/2170002 --proxy http://127.0.0.1:41477 --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 19:28:27.545512 ====> Client connect 19:28:27.545749 accept_connection 3 returned 4 19:28:27.545872 accept_connection 3 returned 0 19:28:27.545975 Read 93 bytes 19:28:27.546052 Process 93 bytes request 19:28:27.546125 Got request: GET /verifiedserver HTTP/1.1 19:28:27.546186 Are-we-friendly question received 19:28:27.546345 Wrote request (93 bytes) input to log/1/server.input 19:28:27.546516 Identifying ourselves as friends 19:28:27.547155 Response sent (57 bytes) and written to log/1/server.response 19:28:27.547271 special request received, no persistency 19:28:27.547334 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 217 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind217 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind217 * starts no server 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/4/valgrind219 ../src/curl -q --output log/4/curl219.out --include --trace-ascii log/4/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/4/stdout219 2> log/4/stderr219 curl returned 1, when expecting 7 219: exit FAILED == Contents of files in the log/4/ 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/4/valgrind219 ../src/curl -q --output log/4/curl219.out --include --trace-ascii log/4/trace219 --trace-config all --trace-time -x foo://127.0.0.1:47/219 http://127.0.0.1:47/219 > log/4/stdout219 2> log/4/stderr219 === End of file commands.log === Start of file server.cmd Testnum 219 === End of file server.cmd === Start of file valgrind219 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind218 ../src/curl -q --output log/2/curl218.out --include --trace-ascii log/2/trace218 --trace-config all --trace-time -T log/2/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:39599/218 > log/2/stdout218 2> log/2/stderr218 218: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind218 ../src/curl -q --output log/2/curl218.out --include --trace-ascii log/2/trace218 --trace-config all --trace-time -T log/2/file218 -H "Transfer-Encoding: chunked" http://127.0.0.1:39599/218 > log/2/stdout218 2> log/2/stderr218 === End of file commands.log === Start of file file218 just some tiny teeny contents === End of file file218 === Start of file http_server.log 19:28:27.840503 ====> Client connect 19:28:27.840710 accept_connection 3 returned 4 19:28:27.840811 accept_connection 3 returned 0 19:28:27.841261 Read CMD (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/valgrind220 ../src/curl -q --output log/3/curl220.out --include --trace-ascii log/3/trace220 --trace-config all --trace-time http://127.0.0.1:37525/220 --compressed > log/3/stdout220 2> log/3/stderr220 CMD (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/1/valgrind221 ../src/curl -q --output log/1/curl221.out --include --trace-ascii log/1/trace221 --trace-config all --trace-time http://127.0.0.1:41477/221 --compressed > log/1/stdout221 2> log/1/stderr221 93 bytes 19:28:27.841392 Process 93 bytes request 19:28:27.841469 Got request: GET /verifiedserver HTTP/1.1 19:28:27.841529 Are-we-friendly question received 19:28:27.841700 Wrote request (93 bytes) input to log/2/server.input 19:28:27.841954 Identifying ourselves as friends 19:28:27.842520 Response sent (57 bytes) and written to log/2/server.response 19:28:27.842638 special request received, no persistency 19:28:27.842745 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 218 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind218 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind220 ../src/curl -q --output log/3/curl220.out --include --trace-ascii log/3/trace220 --trace-config all --trace-time http://127.0.0.1:37525/220 --compressed > log/3/stdout220 2> log/3/stderr220 220: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 220 === Start of file commands.log ../libtool --mode=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/valgrind220 ../src/curl -q --output log/3/curl220.out --include --trace-ascii log/3/trace220 --trace-config all --trace-time http://127.0.0.1:37525/220 --compressed > log/3/stdout220 2> log/3/stderr220 === End of file commands.log === Start of file http_server.log 19:28:27.063303 ====> Client connect 19:28:27.063516 accept_connection 3 returned 4 19:28:27.063628 accept_connection 3 returned 0 19:28:27.063763 Read 93 bytes 19:28:27.063879 Process 93 bytes request 19:28:27.063975 Got request: GET /verifiedserver HTTP/1.1 19:28:27.064075 Are-we-friendly question received 19:28:27.064342 Wrote request (93 bytes) input to log/3/server.input 19:28:27.064580 Identifying ourselves as friends 19:28:27.065307 Response sent (57 bytes) and written to log/3/server.response 19:28:27.065442 special request received, no persistency 19:28:27.065507 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 220 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind220 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind221 ../src/curl -q --output log/1/curl221.out --include --trace-ascii log/1/trace221 --trace-config all --trace-time http://127.0.0.1:41477/221 --compressed > log/1/stdout221 2> log/1/stderr221 221: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind221 ../src/curl -q --output log/1/curl221.out --include --trace-ascii log/1/trace221 --trace-config all --trace-time http://127.0.0.1:41477/221 --compressed > log/1/stdout221 2> log/1/stderr221 === End of file commands.log === Start of file http_server.log 19:28:28.221308 ====> Client connect 19:28:28.221522 accept_connection 3 returned 4 19:28:28.221629 accept_connection 3 returned 0 19:28:28.221729 Read 93 bytes 19:28:28.221791 Process 93 bytes request 19:28:28.221857 Got request: GET /verifiedserver HTTP/1.1 19:28:28.221924 Are-we-friendly question received 19:28:28.222083 Wrote request (93 bytes) input to log/1/server.input 19:28:28.222229 Identifying ourselves as friends 19:28:28.222736 Response sent (57 bytes) and written to log/1/server.response 19:28:28.223084 special request received, no persistency 19:28:28.223172 ====> Client disconnect 0 === End of file htCMD (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/2/valgrind223 ../src/curl -q --output log/2/curl223.out --include --trace-ascii log/2/trace223 --trace-config all --trace-time http://127.0.0.1:39599/223 --compressed > log/2/stdout223 2> log/2/stderr223 CMD (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/4/valgrind222 ../src/curl -q --output log/4/curl222.out --include --trace-ascii log/4/trace222 --trace-config all --trace-time http://127.0.0.1:43669/222 --compressed > log/4/stdout222 2> log/4/stderr222 tp_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 221 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind221 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind221 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/2/valgrind223 ../src/curl -q --output log/2/curl223.out --include --trace-ascii log/2/trace223 --trace-config all --trace-time http://127.0.0.1:39599/223 --compressed > log/2/stdout223 2> log/2/stderr223 223: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind223 ../src/curl -q --output log/2/curl223.out --include --trace-ascii log/2/trace223 --trace-config all --trace-time http://127.0.0.1:39599/223 --compressed > log/2/stdout223 2> log/2/stderr223 === End of file commands.log === Start of file http_server.log 19:28:28.536577 ====> Client connect 19:28:28.536799 accept_connection 3 returned 4 19:28:28.536917 accept_connection 3 returned 0 19:28:28.537028 Read 93 bytes 19:28:28.537109 Process 93 bytes request 19:28:28.537187 Got request: GET /verifiedserver HTTP/1.1 19:28:28.537259 Are-we-friendly question received 19:28:28.537435 Wrote request (93 bytes) input to log/2/server.input 19:28:28.537589 Identifying ourselves as friends 19:28:28.538118 Response sent (57 bytes) and written to log/2/server.response 19:28:28.538208 special request received, no persistency 19:28:28.538263 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 223 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind223 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind223 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/4/valgrind222 ../src/curl -q --output log/4/curl222.out --include --trace-ascii log/4/trace222 --trace-config all --trace-time http://127.0.0.1:43669/222 --compressed > log/4/stdout222 2> log/4/stderr222 222: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind222 ../src/curl -q --output log/4/curl222.out --include --trace-ascii log/4/trace222 --trace-config all --trace-time http://127.0.0.1:43669/222 --compressed > log/4/stdout222 2> log/4/stderr222 === End of file commands.log === Start of file http_server.log 19:28:28.420030 ====> Client connect 19:28:28.420270 accept_connection 3 returned 4 19:28:28.420380 accept_connection 3 returned 0 19:28:28.420836 Read 93 bytes 19:28:28.420950 Process 93 bytes request 19:28:28.421023 Got request: GET /verifiedserver HTTP/1.1 19:28:28.421086 Are-we-friendly question received 19:28:28.421238 Wrote request (93 bytes) input to log/4/server.input 19:28:28.421371 Identifying ourselves as friends 19:28:28.421727 Response sent (57 bytes) and written to log/4/server.response 19:28:28.421806 special request received, no persistency 19:28:28.421859 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 10CMD (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/valgrind224 ../src/curl -q --output log/3/curl224.out --include --trace-ascii log/3/trace224 --trace-config all --trace-time http://127.0.0.1:37525/224 --compressed > log/3/stdout224 2> log/3/stderr224 CMD (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/1/valgrind225 ../src/curl -q --output log/1/curl225.out --include --trace-ascii log/1/trace225 --trace-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:39333/225%0a > log/1/stdout225 2> log/1/stderr225 3118 === End of file http_verify.out === Start of file server.cmd Testnum 222 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind222 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind222 test 0224...[HTTP GET gzip compressed content with huge comment and extra field] ../libtool --mode=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/valgrind224 ../src/curl -q --output log/3/curl224.out --include --trace-ascii log/3/trace224 --trace-config all --trace-time http://127.0.0.1:37525/224 --compressed > log/3/stdout224 2> log/3/stderr224 224: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind224 ../src/curl -q --output log/3/curl224.out --include --trace-ascii log/3/trace224 --trace-config all --trace-time http://127.0.0.1:37525/224 --compressed > log/3/stdout224 2> log/3/stderr224 === End of file commands.log === Start of file http_server.log 19:28:27.701662 ====> Client connect 19:28:27.701898 accept_connection 3 returned 4 19:28:27.702020 accept_connection 3 returned 0 19:28:27.702150 Read 93 bytes 19:28:27.702243 Process 93 bytes request 19:28:27.702332 Got request: GET /verifiedserver HTTP/1.1 19:28:27.702404 Are-we-friendly question received 19:28:27.702567 Wrote request (93 bytes) input to log/3/server.input 19:28:27.702729 Identifying ourselves as friends 19:28:27.703421 Response sent (57 bytes) and written to log/3/server.response 19:28:27.703524 special request received, no persistency 19:28:27.703584 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 224 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind224 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind224 test 0225...[FTP %0a-code in URL's name 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/valgrind225 ../src/curl -q --output log/1/curl225.out --include --trace-ascii log/1/trace225 --trace-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:39333/225%0a > log/1/stdout225 2> log/1/stderr225 curl returned 1, when expecting 3 225: exit FAILED == 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-config all --trace-time ftp://bad%0auser:passwd@127.0.0.1:39333/225%0a > log/1/stdout225 2> log/1/stderr225 === End of file commands.log === Start of file ftp_server.log 19:28:28.412876 ====> Client connect 19:28:28.414014 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:28.417275 < "USER anonymous" 19:28:28.417902 > "331 We are happy you popped in![CR][LF]" 19:28:28.419371 < "PASS ftp@example.com" 19:28:28.419654 > "230 Welcome you silly person[CR][LF]" 19:28:28.421070 < "PWD" 19:28:28.421366 > "257 "/" is current directory[CR][LF]" 19:28:28.422840 < "EPSV" 19:28:28.423054 ====> Passive DATA channel requested by client 19:28:28.423181 DATA sockfilt for passive data channel starting... 19:28:28.430965 DATA sockfilt for passive data channel started (pid 117397) 19:28:28.431704 DATA sockfilt for passive data channel listens on port 43423 19:28:28.432053 > "229 Entering Passive Mode (|||43423|)[LF]" 19:28:28.432223 Client has been notified that DATA conn will be accepted on port 43423 19:28:28.433830 Client connects to port 43423 19:28:28.434079 ====> Client established passive DATA connection on port 43423 19:28:28.434595 < "TYPE I" 19:28:28.434868 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:28.436242 < "SIZE verifiedserver" 19:28:28.436566 > "213 18[CR][LF]" 19:28:28.437957 < "RETR verifiedserver" 19:28:28.438353 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:28.438884 =====> Closing passive DATA connection... 19:28:28.439080 Server disconnects passive DATA connection 19:28:28.439922 Server disconnected passive DATA connection 19:28:28.440129 DATA sockfilt for passive datCMD (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/2/valgrind226 ../src/curl -q --output log/2/curl226.out --include --trace-ascii log/2/trace226 --trace-config all --trace-time ftp://127.0.0.1:36773/226%0d > log/2/stdout226 2> log/2/stderr226 a channel quits (pid 117397) 19:28:28.442445 DATA sockfilt for passive data channel quit (pid 117397) 19:28:28.442697 =====> Closed passive DATA connection 19:28:28.442944 > "226 File transfer complete[CR][LF]" 19:28:28.482504 < "QUIT" 19:28:28.482806 > "221 bye bye baby[CR][LF]" 19:28:28.485579 MAIN sockfilt said DISC 19:28:28.485886 ====> Client disconnected 19:28:28.486184 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:28.877849 ====> Client connect 19:28:28.879381 Received DATA (on stdin) 19:28:28.879531 > 160 bytes data, server => client 19:28:28.879625 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:28.879710 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:28.879783 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:28.881705 < 16 bytes data, client => server 19:28:28.881855 'USER anonymous\r\n' 19:28:28.883558 Received DATA (on stdin) 19:28:28.883677 > 33 bytes data, server => client 19:28:28.883751 '331 We are happy you popped in!\r\n' 19:28:28.884153 < 22 bytes data, client => server 19:28:28.884275 'PASS ftp@example.com\r\n' 19:28:28.885257 Received DATA (on stdin) 19:28:28.885364 > 30 bytes data, server => client 19:28:28.885438 '230 Welcome you silly person\r\n' 19:28:28.885840 < 5 bytes data, client => server 19:28:28.885974 'PWD\r\n' 19:28:28.887048 Received DATA (on stdin) 19:28:28.887156 > 30 bytes data, server => client 19:28:28.887227 '257 "/" is current directory\r\n' 19:28:28.887641 < 6 bytes data, client => server 19:28:28.887754 'EPSV\r\n' 19:28:28.897817 Received DATA (on stdin) 19:28:28.897935 > 38 bytes data, server => client 19:28:28.898011 '229 Entering Passive Mode (|||43423|)\n' 19:28:28.898900 < 8 bytes data, client => server 19:28:28.899044 'TYPE I\r\n' 19:28:28.900459 Received DATA (on stdin) 19:28:28.900547 > 33 bytes data, server => client 19:28:28.900612 '200 I modify TYPE as you wanted\r\n' 19:28:28.901008 < 21 bytes data, client => server 19:28:28.901138 'SIZE verifiedserver\r\n' 19:28:28.902185 Received DATA (on stdin) 19:28:28.902286 > 8 bytes data, server => client 19:28:28.902350 '213 18\r\n' 19:28:28.902743 < 21 bytes data, client => server 19:28:28.902924 'RETR verifiedserver\r\n' 19:28:28.906101 Received DATA (on stdin) 19:28:28.906219 > 29 bytes data, server => client 19:28:28.906301 '150 Binary junk (18 bytes).\r\n' 19:28:28.908332 Received DATA (on stdin) 19:28:28.908488 > 28 bytes data, server => client 19:28:28.908574 '226 File transfer complete\r\n' 19:28:28.947411 < 6 bytes data, client => server 19:28:28.947567 'QUIT\r\n' 19:28:28.948183 Received DATA (on stdin) 19:28:28.948305 > 18 bytes data, server => client 19:28:28.948378 '221 bye bye baby\r\n' 19:28:28.948725 ====> Client disconnect 19:28:28.951294 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:28.895329 Running IPv4 version 19:28:28.895682 Listening on port 43423 19:28:28.895965 Wrote pid 117397 to log/1/server/ftp_sockdata.pid 19:28:28.896107 Received PING (on stdin) 19:28:28.896674 Received PORT (on stdin) 19:28:28.898996 ====> Client connect 19:28:28.904667 Received DATA (on stdin) 19:28:28.904794 > 18 bytes data, server => client 19:28:28.904875 'WE ROOLZ: 109414\r\n' 19:28:28.905102 Received DISC (on stdin) 19:28:28.905759 ====> Client forcibly disconnected 19:28:28.906097 Received QUIT (on stdin) 19:28:28.906210 quits 19:28:28.907227 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 225 === End of file server.cmd === Start of file valgrind225 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind225 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/2/valgrind226 ../src/curl -q --output log/2/curl226.out --include --trace-ascii log/2/trace226 --trace-config all --trace-time ftp://127.0.0.1:36773/226%0d > log/2/stdout226 2> log/2/stderr226 curl returned 1, when expecting 3 226: exit FAILED == Contents of files in the log/2/ 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/2/valgrind226 ../src/curl -q --output log/2/curl226.out --include --trace-ascii log/2/trace226 --trace-config all --trace-time ftp://127.0.0.1:36773/226%0d > log/2/stdout226 2> log/2/stderr226 === End of file commands.log === Start of file ftp_server.log 19:28:28.719068 ====> Client connect 19:28:28.719998 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:28.721663 < "USER anonymous" 19:28:28.722436 > "331 We are happy you popped in![CR][LF]" 19:28:28.724714 < "PASS ftp@example.com" 19:28:28.725585 > "230 Welcome you silly person[CR][LF]" 19:28:28.727750 < "PWD" 19:28:28.728066 > "257 "/" is current directory[CR][LF]" 19:28:28.729215 < "EPSV" 19:28:28.729664 ====> Passive DATA channel requested by client 19:28:28.729965 DATA sockfilt for passive data channel starting... 19:28:28.748267 DATA sockfilt for passive data channel started (pid 117510) 19:28:28.749179 DATA sockfilt for passive data channel listens on port 42105 19:28:28.749682 > "229 Entering Passive Mode (|||42105|)[LF]" 19:28:28.749951 Client has been notified that DATA conn will be accepted on port 42105 19:28:28.751923 Client connects to port 42105 19:28:28.752219 ====> Client established passive DATA connection on port 42105 19:28:28.752936 < "TYPE I" 19:28:28.753289 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:28.754988 < "SIZE verifiedserver" 19:28:28.755834 > "213 18[CR][LF]" 19:28:28.756879 < "RETR verifiedserver" 19:28:28.757915 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:28.758557 =====> Closing passive DATA connection... 19:28:28.758749 Server disconnects passive DATA connection 19:28:28.759338 Server disconnected passive DATA connection 19:28:28.760097 DATA sockfilt for passive data channel quits (pid 117510) 19:28:28.761617 DATA sockfilt for passive data channel quit (pid 117510) 19:28:28.761899 =====> Closed passive DATA connection 19:28:28.762169 > "226 File transfer complete[CR][LF]" 19:28:28.802569 < "QUIT" 19:28:28.802984 > "221 bye bye baby[CR][LF]" 19:28:28.803930 MAIN sockfilt said DISC 19:28:28.804210 ====> Client disconnected 19:28:28.804566 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:28.184045 ====> Client connecCMD (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/4/valgrind227 ../src/curl -q --output log/4/curl227.out --include --trace-ascii log/4/trace227 --trace-config all --trace-time ftp://127.0.0.1:40809/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/4/stdout227 2> log/4/stderr227 CMD (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/valgrind228 ../src/curl -q --output log/3/curl228.out --include --trace-ascii log/3/trace228 --trace-config all --trace-time ftp://127.0.0.1:43789/228 --ftp-account "one count" > log/3/stdout228 2> log/3/stderr228 t 19:28:28.185339 Received DATA (on stdin) 19:28:28.185499 > 160 bytes data, server => client 19:28:28.185596 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:28.185688 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:28.185766 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:28.186225 < 16 bytes data, client => server 19:28:28.186376 'USER anonymous\r\n' 19:28:28.187825 Received DATA (on stdin) 19:28:28.188123 > 33 bytes data, server => client 19:28:28.188340 '331 We are happy you popped in!\r\n' 19:28:28.189242 < 22 bytes data, client => server 19:28:28.189524 'PASS ftp@example.com\r\n' 19:28:28.190877 Received DATA (on stdin) 19:28:28.191189 > 30 bytes data, server => client 19:28:28.191379 '230 Welcome you silly person\r\n' 19:28:28.192706 < 5 bytes data, client => server 19:28:28.192842 'PWD\r\n' 19:28:28.193484 Received DATA (on stdin) 19:28:28.193592 > 30 bytes data, server => client 19:28:28.193678 '257 "/" is current directory\r\n' 19:28:28.194118 < 6 bytes data, client => server 19:28:28.194247 'EPSV\r\n' 19:28:28.215748 Received DATA (on stdin) 19:28:28.216008 > 38 bytes data, server => client 19:28:28.216110 '229 Entering Passive Mode (|||42105|)\n' 19:28:28.217011 < 8 bytes data, client => server 19:28:28.217133 'TYPE I\r\n' 19:28:28.219046 Received DATA (on stdin) 19:28:28.219175 > 33 bytes data, server => client 19:28:28.219251 '200 I modify TYPE as you wanted\r\n' 19:28:28.219681 < 21 bytes data, client => server 19:28:28.219816 'SIZE verifiedserver\r\n' 19:28:28.220695 Received DATA (on stdin) 19:28:28.220810 > 8 bytes data, server => client 19:28:28.220931 '213 18\r\n' 19:28:28.221631 < 21 bytes data, client => server 19:28:28.221756 'RETR verifiedserver\r\n' 19:28:28.222613 Received DATA (on stdin) 19:28:28.222747 > 29 bytes data, server => client 19:28:28.222971 '150 Binary junk (18 bytes).\r\n' 19:28:28.227536 Received DATA (on stdin) 19:28:28.227683 > 28 bytes data, server => client 19:28:28.227757 '226 File transfer complete\r\n' 19:28:28.267461 < 6 bytes data, client => server 19:28:28.267642 'QUIT\r\n' 19:28:28.268358 Received DATA (on stdin) 19:28:28.268510 > 18 bytes data, server => client 19:28:28.268613 '221 bye bye baby\r\n' 19:28:28.269042 ====> Client disconnect 19:28:28.269598 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:28.207221 Running IPv4 version 19:28:28.207629 Listening on port 42105 19:28:28.207909 Wrote pid 117510 to log/2/server/ftp_sockdata.pid 19:28:28.208084 Received PING (on stdin) 19:28:28.214039 Received PORT (on stdin) 19:28:28.217059 ====> Client connect 19:28:28.223694 Received DATA (on stdin) 19:28:28.223850 > 18 bytes data, server => client 19:28:28.223934 'WE ROOLZ: 116354\r\n' 19:28:28.224501 Received DISC (on stdin) 19:28:28.224641 ====> Client forcibly disconnected 19:28:28.225795 Received QUIT (on stdin) 19:28:28.225907 quits 19:28:28.226155 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 226 === End of file server.cmd === Start of file valgrind226 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind227 ../src/curl -q --output log/4/curl227.out --include --trace-ascii log/4/trace227 --trace-config all --trace-time ftp://127.0.0.1:40809/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/4/stdout227 2> log/4/stderr227 227: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind227 ../src/curl -q --output log/4/curl227.out --include --trace-ascii log/4/trace227 --trace-config all --trace-time ftp://127.0.0.1:40809/227 -Q "NOOP 1" -Q "+NOOP 2" -Q "-NOOP 3" -Q "*FAIL" -Q "+*FAIL HARD" > log/4/stdout227 2> log/4/stderr227 === End of file commands.log === Start of file ftp_server.log 19:28:28.760108 ====> Client connect 19:28:28.760960 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:28.763270 < "USER anonymous" 19:28:28.763618 > "331 We are happy you popped in![CR][LF]" 19:28:28.764643 < "PASS ftp@example.com" 19:28:28.764925 > "230 Welcome you silly person[CR][LF]" 19:28:28.766123 < "PWD" 19:28:28.766418 > "257 "/" is current directory[CR][LF]" 19:28:28.767375 < "EPSV" 19:28:28.767559 ====> Passive DATA channel requested by client 19:28:28.767664 DATA sockfilt for passive data channel starting... 19:28:28.776410 DATA sockfilt for passive data channel started (pid 117520) 19:28:28.777088 DATA sockfilt for passive data channel listens on port 46281 19:28:28.777401 > "229 Entering Passive Mode (|||46281|)[LF]" 19:28:28.777779 Client has been notified that DATA conn will be accepted on port 46281 19:28:28.779147 Client connects to port 46281 19:28:28.779445 ====> Client established passive DATA connection on port 46281 19:28:28.780057 < "TYPE I" 19:28:28.780370 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:28.784509 < "SIZE verifiedserver" 19:28:28.784843 > "213 18[CR][LF]" 19:28:28.786681 < "RETR verifiedserver" 19:28:28.787002 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:28.787715 =====> Closing passive DATA connection... 19:28:28.788289 Server disconnects passive DATA connection 19:28:28.788501 Fancy that; client wants to DISC, too 19:28:28.788707 Server disconnected passive DATA connection 19:28:28.788860 DATA sockfilt for passive data channel quits (pid 117520) 19:28:28.790596 DATA sockfilt for passive data channel quit (pid 117520) 19:28:28.790834 =====> Closed passive DATA connection 19:28:28.791203 > "226 File transfer complete[CR][LF]" 19:28:28.830781 < "QUIT" 19:28:28.831050 > "221 bye bye baby[CR][LF]" 19:28:28.834631 MAIN sockfilt said DISC 19:28:28.834853 ====> Client disconnected 19:28:28.835157 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:28.225028 ====> Client connect 19:28:28.226316 Received DATA (on stdin) 19:28:28.226427 > 160 bytes data, server => client 19:28:28.226508 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:28.226591 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:28.226690 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:28.228064 < 16 bytes data, client => server 19:28:28.228198 'USER anonymous\r\n' 19:28:28.228990 Received DATA (on stdin) 19:28:28.229112 > 33 bytes data, server => client 19:28:28.229184 '331 We are happy you popped in!\r\n' 19:28:28.229581 < 22 bytes data, client => server 19:28:28.229710 'PASS ftp@example.com\r\n' 19:28:28.230301 Received DATA (on stdin) 19:28:28.230447 > 30 bytes data, server => client 19:28:28.230585 '230 Welcome you silly person\r\n' 19:28:28.231089 < 5 bytes data, client => server 19:28:28.231234 'PWD\r\n' 19:28:28.231788 Received DATA (on stdin) 19:28:28.231891 > 30 bytes data, server => client 19:28:28.231960 '257 "/" is current directory\r\n' 19:28:28.232356 < 6 bytes data, client => server 19:28:28.232471 'EPSV\r\n' 19:28:28.243104 Received DATA (on stdin) 19:28:28.243234 > 38 bytes data, server => client 19:28:28.243315 '229 Entering Passive Mode (|||46281|)\n' 19:28:28.244141 < 8 bytes data, client => server 19:28:28.244253 'TYPE I\r\n' 19:28:28.245779 Received DATA (on stdin) 19:28:28.245879 > 33 bytes data, server => client 19:28:28.245987 '200 I modify TYPE as you wanted\r\n' 19:28:28.249460 < 21 bytes data, client => server 19:28:28.249623 'SIZE verifiedserver\r\n' 19:28:28.250220 Received DATA (on stdin) 19:28:28.250358 > 8 bytes data, server => client 19:28:28.250429 '213 18\r\n' 19:28:28.251351 < 21 bytes data, client => server 19:28:28.251559 'RETR verifiedserver\r\n' 19:28:28.252377 Received DATA (on stdin) 19:28:28.252492 > 29 bytes data, server => client 19:28:28.252569 '150 Binary junk (18 bytes).\r\n' 19:28:28.257018 Received DATA (on stdin) 19:28:28.257379 > 28 bytes data, server => client 19:28:28.257575 '226 File transfer complete\r\n' 19:28:28.295526 < 6 bytes data, client => server 19:28:28.295672 'QUIT\r\n' 19:28:28.296607 Received DATA (on stdin) 19:28:28.296704 > 18 bytes data, server => client 19:28:28.296769 '221 bye bye baby\r\n' 19:28:28.299775 ====> Client disconnect 19:28:28.310864 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:28.240880 Running IPv4 version 19:28:28.241227 Listening on port 46281 19:28:28.241456 Wrote pid 117520 to log/4/server/ftp_sockdata.pid 19:28:28.241568 Received PING (on stdin) 19:28:28.242106 Received PORT (on stdin) 19:28:28.243969 ====> Client connect 19:28:28.252834 Received DATA (on stdin) 19:28:28.252975 > 18 bytes data, server => client 19:28:28.253054 'WE ROOLZ: 109451\r\n' 19:28:28.253504 ====> Client disconnect 19:28:28.253876 Received DISC (on stdin) 19:28:28.253962 Crikey! Client also wants to disconnect 19:28:28.254041 Received ACKD (on stdin) 19:28:28.254919 Received QUIT (on stdin) 19:28:28.255056 quits 19:28:28.255344 ============> 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 valgrind227 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind228 ../src/curl -q --output log/3/curl228.out --include --trace-ascii log/3/trace228 --trace-config all --trace-time ftp://127.0.0.1:43789/228 --ftp-account "one count" > log/3/stdout228 2> log/3/stderr228 228: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind228 ../src/curl -q --output log/3/curl228.out --include --trace-ascii log/3/trace228 --trace-config all --trace-time ftp://127.0.0.1:43789/228 --ftp-account "one count" > log/3/stdout228 2> log/3/stderr228 === End of file commands.log === Start of file ftp_server.log 19:28:28.891469 ====> Client connect 19:28:28.892250 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:28.893657 < "USER anonymous" 19:28:28.894001 > "331 We are happy you popped in![CR][LF]" 19:28:28.894987 < "PASS ftp@example.com" 19:28:28.895245 > "230 Welcome you silly person[CR][LF]" 19:28:28.896225 < "PWD" 19:28:28.896536 > "257 "/" is current directory[CR][LF]" 19:28:28.897624 < "EPSV" 19:28:28.897837 ====> Passive DATA channel requested by client 19:28:28.897979 DATA sockfilt for passive data channel starting... 19:28:28.911586 DATA sockfilt for passive data channel started (pid 117549) 19:28:28.912331 DATA sockfilt for passive data channel listens on port 46865 19:28:28.912704 > "229 Entering Passive Mode (|||46865|)[LF]" 19:28:28.912889 Client has been notified that DATA conn will be accepted on port 46865 19:28:28.915710 Client connects to port 46865 19:28:28.916267 ====> Client established passive DATA connection on port 46865 19:28:28.917085 < "TYPE I" 19:28:28.917652 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:28.918957 < "SIZE verifiedserver" 19:28:28.919375 > "213 18[CR][LF]" 19:28:28.920455 < "RETR verifiedserver" 19:28:28.920879 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:28.921490 =====> Closing passive DATA connection... 19:28:28.921733 Server disconnects passive DATA connection 19:28:28.922143 Server disconnected passive DATA connection 19:28:28.922361 DATA sockfilt for passive data channel quits (pid 117549) 19:28:28.924097 DATA sockfilt for passive data channel quit (pid 117549) 19:28:28.924420 =====> Closed passive DATA connection 19:28:28.924753 > "226 File transfer complete[CR][LF]" 19:28:28.962438 < "QUIT" 19:28:28.962733 > "221 bye bye baby[CR][LF]" 19:28:28.963593 MAIN sockfilt said DISC 19:28:28.963840 ====> Client disconnected 19:28:28.964140 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:29.356440 ====> Client connect 19:28:29.357598 Received DATA (on stdin) 19:28:29.357723 > 160 bytes data, server => client 19:28:29.357803 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:29.357875 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:29.357937 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:29.358363 < 16 bytes data, client => server 19:28:29.358491 'USER anonymous\r\n' 19:28:29.359372 Received DATA (on stdin) 19:28:29.359490 > 33 byCMD (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/1/valgrind229 ../src/curl -q --output log/1/curl229.out --include --trace-ascii log/1/trace229 --trace-config all --trace-time ftp://127.0.0.1:39333/229 --ftp-account "one count" > log/1/stdout229 2> log/1/stderr229 tes data, server => client 19:28:29.359564 '331 We are happy you popped in!\r\n' 19:28:29.359953 < 22 bytes data, client => server 19:28:29.360074 'PASS ftp@example.com\r\n' 19:28:29.360613 Received DATA (on stdin) 19:28:29.360709 > 30 bytes data, server => client 19:28:29.360781 '230 Welcome you silly person\r\n' 19:28:29.361152 < 5 bytes data, client => server 19:28:29.361271 'PWD\r\n' 19:28:29.361908 Received DATA (on stdin) 19:28:29.362017 > 30 bytes data, server => client 19:28:29.362087 '257 "/" is current directory\r\n' 19:28:29.362525 < 6 bytes data, client => server 19:28:29.362650 'EPSV\r\n' 19:28:29.378070 Received DATA (on stdin) 19:28:29.378197 > 38 bytes data, server => client 19:28:29.378280 '229 Entering Passive Mode (|||46865|)\n' 19:28:29.380061 < 8 bytes data, client => server 19:28:29.380195 'TYPE I\r\n' 19:28:29.383000 Received DATA (on stdin) 19:28:29.383153 > 33 bytes data, server => client 19:28:29.383237 '200 I modify TYPE as you wanted\r\n' 19:28:29.383759 < 21 bytes data, client => server 19:28:29.383891 'SIZE verifiedserver\r\n' 19:28:29.384749 Received DATA (on stdin) 19:28:29.384859 > 8 bytes data, server => client 19:28:29.384927 '213 18\r\n' 19:28:29.385431 < 21 bytes data, client => server 19:28:29.385555 'RETR verifiedserver\r\n' 19:28:29.386240 Received DATA (on stdin) 19:28:29.386357 > 29 bytes data, server => client 19:28:29.386435 '150 Binary junk (18 bytes).\r\n' 19:28:29.390125 Received DATA (on stdin) 19:28:29.390253 > 28 bytes data, server => client 19:28:29.390329 '226 File transfer complete\r\n' 19:28:29.427376 < 6 bytes data, client => server 19:28:29.427528 'QUIT\r\n' 19:28:29.428128 Received DATA (on stdin) 19:28:29.428234 > 18 bytes data, server => client 19:28:29.428334 '221 bye bye baby\r\n' 19:28:29.428731 ====> Client disconnect 19:28:29.429218 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:28.374677 Running IPv4 version 19:28:28.375534 Listening on port 46865 19:28:28.376305 Wrote pid 117549 to log/3/server/ftp_sockdata.pid 19:28:28.376631 Received PING (on stdin) 19:28:28.377298 Received PORT (on stdin) 19:28:28.380536 ====> Client connect 19:28:28.386506 Received DATA (on stdin) 19:28:28.386643 > 18 bytes data, server => client 19:28:28.386978 'WE ROOLZ: 109394\r\n' 19:28:28.387317 Received DISC (on stdin) 19:28:28.387451 ====> Client forcibly disconnected 19:28:28.387920 Received QUIT (on stdin) 19:28:28.388025 quits 19:28:28.388400 ============> 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 valgrind228 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind229 ../src/curl -q --output log/1/curl229.out --include --trace-ascii log/1/trace229 --trace-config all --trace-time ftp://127.0.0.1:39333/229 --ftp-account "one count" > log/1/stdout229 2> log/1/stderr229 229: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind229 ../src/curl -q --output log/1/curl229.out --include --trace-ascii log/1/trace229 --trace-config all --trace-time ftp://127.0.0.1:39333/229 --ftp-account "one count" > log/1/stdout229 2> log/1/stderr229 === End of file commands.log === Start of file ftp_server.log 19:28:29.077987 ====> Client connect 19:28:29.078837 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:29.080528 < "USER anonymous" 19:28:29.080899 > "331 We are happy you popped in![CR][LF]" 19:28:29.082133 < "PASS ftp@example.com" 19:28:29.082444 > "230 Welcome you silly person[CR][LF]" 19:28:29.083503 < "PWD" 19:28:29.083804 > "257 "/" is current directory[CR][LF]" 19:28:29.085032 < "EPSV" 19:28:29.085291 ====> Passive DATA channel requested by client 19:28:29.085569 DATA sockfilt for passive data channel starting... 19:28:29.093783 DATA sockfilt for passive data channel started (pid 117632) 19:28:29.094545 DATA sockfilt for passive data channel listens on port 40303 19:28:29.094904 > "229 Entering Passive Mode (|||40303|)[LF]" 19:28:29.095063 Client has been notified that DATA conn will be accepted on port 40303 19:28:29.096519 Client connects to port 40303 19:28:29.096780 ====> Client established passive DATA connection on port 40303 19:28:29.097374 < "TYPE I" 19:28:29.097837 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:29.099063 < "SIZE verifiedserver" 19:28:29.099404 > "213 18[CR][LF]" 19:28:29.100567 < "RETR verifiedserver" 19:28:29.100887 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:29.101474 =====> Closing passive DATA connection... 19:28:29.101682 Server disconnects passive DATA connection 19:28:29.105268 Server disconnected passive DATA connection 19:28:29.105633 DATA sockfilt for passive data channel quits (pid 117632) 19:28:29.106848 DATA sockfilt for passive data channel quit (pid 117632) 19:28:29.107061 =====> Closed passive DATA connection 19:28:29.107690 > "226 File transfer complete[CR][LF]" 19:28:29.142788 < "QUIT" 19:28:29.143091 > "221 bye bye baby[CR][LF]" 19:28:29.148115 MAIN sockfilt said DISC 19:28:29.148387 ====> Client disconnected 19:28:29.148751 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:29.542960 ====> Client connect 19:28:29.544190 Received DATA (on stdin) 19:28:29.544318 > 160 bytes data, server => client 19:28:29.544395 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:29.544463 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:29.544529 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:29.545223 < 16 bytes data, client => server 19:28:29.545407 'USER anonymous\r\n' 19:28:29.546257 Received DATA (on stdin) 19:28:29.546383 > 33 bytes data, server => client 19:28:29.546463 '331 We are happy you popped in!\r\n' 19:28:29.547040 < 22 bytes data, client => server 19:28:29.547199 'PASS ftp@example.com\r\n' 19:28:29.547817 Received DATA (on stdin) 19:28:29.547924 > 30 bytes data, server => client 19:28:29.547998 '230 Welcome you silly personCMD (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/4/valgrind231 ../src/curl -q --output log/4/curl231.out --trace-ascii log/4/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/test231.txt -C 10 > log/4/stdout231 2> log/4/stderr231 \r\n' 19:28:29.548462 < 5 bytes data, client => server 19:28:29.548584 'PWD\r\n' 19:28:29.549179 Received DATA (on stdin) 19:28:29.549282 > 30 bytes data, server => client 19:28:29.549349 '257 "/" is current directory\r\n' 19:28:29.549962 < 6 bytes data, client => server 19:28:29.550105 'EPSV\r\n' 19:28:29.560263 Received DATA (on stdin) 19:28:29.560385 > 38 bytes data, server => client 19:28:29.560465 '229 Entering Passive Mode (|||40303|)\n' 19:28:29.561875 < 8 bytes data, client => server 19:28:29.561966 'TYPE I\r\n' 19:28:29.563166 Received DATA (on stdin) 19:28:29.563366 > 33 bytes data, server => client 19:28:29.563477 '200 I modify TYPE as you wanted\r\n' 19:28:29.563992 < 21 bytes data, client => server 19:28:29.564127 'SIZE verifiedserver\r\n' 19:28:29.564775 Received DATA (on stdin) 19:28:29.564906 > 8 bytes data, server => client 19:28:29.564976 '213 18\r\n' 19:28:29.565510 < 21 bytes data, client => server 19:28:29.565666 'RETR verifiedserver\r\n' 19:28:29.566248 Received DATA (on stdin) 19:28:29.566377 > 29 bytes data, server => client 19:28:29.566465 '150 Binary junk (18 bytes).\r\n' 19:28:29.572647 Received DATA (on stdin) 19:28:29.572765 > 28 bytes data, server => client 19:28:29.572882 '226 File transfer complete\r\n' 19:28:29.607483 < 6 bytes data, client => server 19:28:29.607626 'QUIT\r\n' 19:28:29.608697 Received DATA (on stdin) 19:28:29.608812 > 18 bytes data, server => client 19:28:29.608893 '221 bye bye baby\r\n' 19:28:29.613230 ====> Client disconnect 19:28:29.614355 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:29.557982 Running IPv4 version 19:28:29.558389 Listening on port 40303 19:28:29.558682 Wrote pid 117632 to log/1/server/ftp_sockdata.pid 19:28:29.558887 Received PING (on stdin) 19:28:29.559508 Received PORT (on stdin) 19:28:29.561634 ====> Client connect 19:28:29.566710 Received DATA (on stdin) 19:28:29.566906 > 18 bytes data, server => client 19:28:29.566995 'WE ROOLZ: 109414\r\n' 19:28:29.567599 Received DISC (on stdin) 19:28:29.567755 ====> Client forcibly disconnected 19:28:29.571214 Received QUIT (on stdin) 19:28:29.571329 quits 19:28:29.571627 ============> 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 valgrind229 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind229 CMD (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/2/valgrind230 ../src/curl -q --output log/2/curl230.out --include --trace-ascii log/2/trace230 --trace-config all --trace-time http://127.0.0.1:39599/230 --compressed > log/2/stdout230 2> log/2/stderr230 CMD (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/valgrind232 ../src/curl -q --output log/3/curl232.out --include --trace-ascii log/3/trace232 --trace-config all --trace-time http://127.0.0.1:37525/232 --compressed > log/3/stdout232 2> log/3/stderr232 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/4/valgrind231 ../src/curl -q --output log/4/curl231.out --trace-ascii log/4/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/test231.txt -C 10 > log/4/stdout231 2> log/4/stderr231 231: data FAILED: --- log/4/check-expected 2025-05-23 19:28:29.996916377 +0000 +++ log/4/check-generated 2025-05-23 19:28:29.996916377 +0000 @@ -1,2 +0,0 @@ -B01234567[LF] -C01234567[LF] == Contents of files in the log/4/ dir after test 231 === Start of file check-expected B01234567[LF] C01234567[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind231 ../src/curl -q --output log/4/curl231.out --trace-ascii log/4/trace231 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/4/test231.txt -C 10 > log/4/stdout231 2> log/4/stderr231 === End of file commands.log === Start of file server.cmd Testnum 231 === End of file server.cmd === Start of file test231.txt A01234567 B01234567 C01234567 === End of file test231.txt === Start of file valgrind231 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind230 ../src/curl -q --output log/2/curl230.out --include --trace-ascii log/2/trace230 --trace-config all --trace-time http://127.0.0.1:39599/230 --compressed > log/2/stdout230 2> log/2/stderr230 230: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind230 ../src/curl -q --output log/2/curl230.out --include --trace-ascii log/2/trace230 --trace-config all --trace-time http://127.0.0.1:39599/230 --compressed > log/2/stdout230 2> log/2/stderr230 === End of file commands.log === Start of file http_server.log 19:28:29.850180 ====> Client connect 19:28:29.850417 accept_connection 3 returned 4 19:28:29.850541 accept_connection 3 returned 0 19:28:29.850644 Read 93 bytes 19:28:29.850713 Process 93 bytes request 19:28:29.850866 Got request: GET /verifiedserver HTTP/1.1 19:28:29.850963 Are-we-friendly question received 19:28:29.851137 Wrote request (93 bytes) input to log/2/server.input 19:28:29.851297 Identifying ourselves as friends 19:28:29.851984 Response sent (57 bytes) and written to log/2/server.response 19:28:29.852079 special request received, no persistency 19:28:29.852160 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 230 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind230 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind232 ../src/curl -q --output log/3/curl232.out --include --trace-ascii log/3/trace232 --trace-config all --trace-time http://127.0.0.1:37525/232 --compressed > log/3/stdout232 2> log/3/stderr232 232: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind232 ../src/curl -q --output log/3/curl232.out --include --trace-ascii log/3/trace232 --trace-config all --trace-time http://127.0.0.1:37525/232 --compressed > log/3/stdout232 2> log/3/stderr232 === End of file commands.log === Start of file http_server.log 19:28:29.053403 ====> Client connect 19:28:29.053656 accept_connection 3 returned 4 19:28:29.053788 accept_connection 3 returned 0 19:28:29.054298 Read 93 bytes 19:28:29.054444 Process 93 bytes request 19:28:29.054530 Got request: GET /verifiedserver HTTP/1.1 19:28:29.054595 Are-we-friendly question received 19:28:29.054887 Wrote request (93 bytes) input to log/3/server.input 19:28:29.05CMD (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/1/valgrind233 ../src/curl -q --output log/1/curl233.out --include --trace-ascii log/1/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:41477 --user iam:myself --proxy-user testing:this --location > log/1/stdout233 2> log/1/stderr233 CMD (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/4/valgrind234 ../src/curl -q --output log/4/curl234.out --include --trace-ascii log/4/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this --location-trusted > log/4/stdout234 2> log/4/stderr234 5347 Identifying ourselves as friends 19:28:29.056482 Response sent (57 bytes) and written to log/3/server.response 19:28:29.056763 special request received, no persistency 19:28:29.057013 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 232 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind232 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind232 test 0233...[HTTP, proxy, site+proxy auth and 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/valgrind233 ../src/curl -q --output log/1/curl233.out --include --trace-ascii log/1/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:41477 --user iam:myself --proxy-user testing:this --location > log/1/stdout233 2> log/1/stderr233 233: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind233 ../src/curl -q --output log/1/curl233.out --include --trace-ascii log/1/trace233 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/233 -x 127.0.0.1:41477 --user iam:myself --proxy-user testing:this --location > log/1/stdout233 2> log/1/stderr233 === End of file commands.log === Start of file http_server.log 19:28:30.240628 ====> Client connect 19:28:30.240879 accept_connection 3 returned 4 19:28:30.241008 accept_connection 3 returned 0 19:28:30.241116 Read 93 bytes 19:28:30.241190 Process 93 bytes request 19:28:30.241269 Got request: GET /verifiedserver HTTP/1.1 19:28:30.241334 Are-we-friendly question received 19:28:30.241502 Wrote request (93 bytes) input to log/1/server.input 19:28:30.241653 Identifying ourselves as friends 19:28:30.242196 Response sent (57 bytes) and written to log/1/server.response 19:28:30.242292 special request received, no persistency 19:28:30.242353 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 233 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind233 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind233 test 0234...[HTTP, proxy, site+proxy auth and Location: to new host using 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/4/valgrind234 ../src/curl -q --output log/4/curl234.out --include --trace-ascii log/4/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this --location-trusted > log/4/stdout234 2> log/4/stderr234 234: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind234 ../src/curl -q --output log/4/curl234.out --include --trace-ascii log/4/trace234 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/234 -x 127.0.0.1:43669 --user iam:myself --proxy-user testing:this --location-trusted > log/4/stdout234 2> log/4/stderr234 === End of file commands.log === Start of file http_server.log 19:28:30.575000 ====> Client connect 19:28:30.575226 accept_connection 3 returned 4 19:28:30.575339 accept_connection 3 returned 0 19:28:30.575437 Read 93 bytes 19:28:30.575514 Process 93 bytes request 19:28:30.575584 Got request: GET /verifiedserver HTTP/1.1 19:28:30.575647 Are-we-friendly question received 19:28:30.575800 Wrote request (93 bytes) input to log/4/server.input 19:28:30.575954 Identifying ourselves as friends 19:28:30.576466 Response sent (57 bytes) and written to log/4CMD (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/2/valgrind235 ../src/curl -q --output log/2/curl235.out --include --trace-ascii log/2/trace235 --trace-config all --trace-time ftp://127.0.0.1:36773/235 -T log/2/upload235 -C - > log/2/stdout235 2> log/2/stderr235 /server.response 19:28:30.576559 special request received, no persistency 19:28:30.576617 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 234 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind234 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind235 ../src/curl -q --output log/2/curl235.out --include --trace-ascii log/2/trace235 --trace-config all --trace-time ftp://127.0.0.1:36773/235 -T log/2/upload235 -C - > log/2/stdout235 2> log/2/stderr235 235: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind235 ../src/curl -q --output log/2/curl235.out --include --trace-ascii log/2/trace235 --trace-config all --trace-time ftp://127.0.0.1:36773/235 -T log/2/upload235 -C - > log/2/stdout235 2> log/2/stderr235 === End of file commands.log === Start of file ftp_server.log 19:28:30.166419 ====> Client connect 19:28:30.167262 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:30.173798 < "USER anonymous" 19:28:30.174140 > "331 We are happy you popped in![CR][LF]" 19:28:30.175209 < "PASS ftp@example.com" 19:28:30.175516 > "230 Welcome you silly person[CR][LF]" 19:28:30.176516 < "PWD" 19:28:30.176805 > "257 "/" is current directory[CR][LF]" 19:28:30.178032 < "EPSV" 19:28:30.178228 ====> Passive DATA channel requested by client 19:28:30.178351 DATA sockfilt for passive data channel starting... 19:28:30.186082 DATA sockfilt for passive data channel started (pid 118024) 19:28:30.186805 DATA sockfilt for passive data channel listens on port 43657 19:28:30.187133 > "229 Entering Passive Mode (|||43657|)[LF]" 19:28:30.187309 Client has been notified that DATA conn will be accepted on port 43657 19:28:30.188453 Client connects to port 43657 19:28:30.188718 ====> Client established passive DATA connection on port 43657 19:28:30.189292 < "TYPE I" 19:28:30.189693 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:30.190712 < "SIZE verifiedserver" 19:28:30.191029 > "213 18[CR][LF]" 19:28:30.192008 < "RETR verifiedserver" 19:28:30.192337 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:30.193006 =====> Closing passive DATA connection... 19:28:30.193726 Server disconnects passive DATA connection 19:28:30.196175 Fancy that; client wants to DISC, too 19:28:30.196482 Server disconnected passive DATA connection 19:28:30.196636 DATA sockfilt for passive data channel quits (pid 118024) 19:28:30.197899 DATA sockfilt for passive data channel quit (pid 118024) 19:28:30.198163 =====> Closed passive DATA connection 19:28:30.198800 > "226 File transfer complete[CR][LF]" 19:28:30.234712 < "QUIT" 19:28:30.235028 > "221 bye bye baby[CR][LF]" 19:28:30.236186 MAIN sockfilt said DISC 19:28:30.236451 ====> Client disconnected 19:28:30.236764 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:29.631357 ====> Client connect 19:28:29.632586 Received DATA (on stdin) 19:28:29.632721 > 160 bytes data, server => client 19:28:29.632804 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:29.632877 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:29.632946 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:29.633432 < 16 bytes data, client => server 19:28:29.633561 'USER anonymous\r\n' 19:28:29.639483 Received DATA (on stdin) 19:28:29.639615 > 33 bytes data, server => client 19:28:29.639696 '331 We are happy you popped in!\r\n' 19:28:29.640146 < 22 bytes data, client => server 19:28:29.640279 'PASS ftp@example.com\r\n' 19:28:29.640860 Received DATA (on stdin) 19:28:29.640965 > 30 bytes data, server => client 19:28:29.641033 '230 Welcome you silly person\r\n' 19:28:29.641475 < 5 bytes data, client => server 19:28:29.641610 'PWD\r\n' 19:28:29.642149 Received DATA (on stdin) 19:28:29.642259 > 30 bytes data, server => client 19:28:29.642329 '257 "/" is current directory\r\n' 19:28:29.643000 < 6 bytes data, client => server 19:28:29.643132 'EPSV\r\n' 19:28:29.652473 Received DATA (on stdin) 19:28:29.652604 > 38 bytes data, server => client 19:28:29.652683 '229 Entering Passive Mode (|||43657|)\n' 19:28:29.653509 < 8 bytes data, client => server 19:28:29.653605 'TYPE I\r\n' 19:28:29.655018 Received DATA (on stdin) 19:28:29.655160 > 33 bytes data, server => client 19:28:29.655235 '200 I modify TYPE as you wanted\r\n' 19:28:29.655645 < 21 bytes data, client => server 19:28:29.655768 'SIZE verifiedserver\r\n' 19:28:29.656380 Received DATA (on stdin) 19:28:29.656500 > 8 bytes data, server => client 19:28:29.656572 '213 18\r\n' 19:28:29.656967 < 21 bytes data, client => server 19:28:29.657084 'RETR verifiedserver\r\n' 19:28:29.657690 Received DATA (on stdin) 19:28:29.657808 > 29 bytes data, server => client 19:28:29.657883 '150 Binary junk (18 bytes).\r\n' 19:28:29.663731 Received DATA (on stdin) 19:28:29.663842 > 28 bytes data, server => client 19:28:29.663964 '226 File transfer complete\r\n' 19:28:29.699380 < 6 bytes data, client => server 19:28:29.699524 'QUIT\r\n' 19:28:29.700610 Received DATA (on stdin) 19:28:29.700820 > 18 bytes data, server => client 19:28:29.700903 '221 bye bye baby\r\n' 19:28:29.701298 ====> Client disconnect 19:28:29.702349 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:30.650036 Running IPv4 version 19:28:30.650463 Listening on port 43657 19:28:30.650895 Wrote pid 118024 to log/2/server/ftp_sockdata.pid 19:28:30.651203 Received PING (on stdiCMD (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/valgrind236 ../src/curl -q --output log/3/curl236.out --include --trace-ascii log/3/trace236 --trace-config all --trace-time ftp://127.0.0.1:43789/236 -T log/3/file236.txt -C - > log/3/stdout236 2> log/3/stderr236 CMD (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/1/valgrind237 ../src/curl -q --output log/1/curl237.out --include --trace-ascii log/1/trace237 --trace-config all --trace-time ftp://127.0.0.1:39333/237 --disable-epsv > log/1/stdout237 2> log/1/stderr237 n) 19:28:30.651759 Received PORT (on stdin) 19:28:30.653353 ====> Client connect 19:28:30.658111 Received DATA (on stdin) 19:28:30.658233 > 18 bytes data, server => client 19:28:30.658307 'WE ROOLZ: 116354\r\n' 19:28:30.658739 ====> Client disconnect 19:28:30.659306 Received DISC (on stdin) 19:28:30.659422 Crikey! Client also wants to disconnect 19:28:30.661810 Received ACKD (on stdin) 19:28:30.662198 Received QUIT (on stdin) 19:28:30.662305 quits 19:28:30.662550 ============> 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 upload235 this is the *****crap******** that we're gonna upload worx? === End of file upload235 === Start of file valgrind235 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind235 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/3/valgrind236 ../src/curl -q --output log/3/curl236.out --include --trace-ascii log/3/trace236 --trace-config all --trace-time ftp://127.0.0.1:43789/236 -T log/3/file236.txt -C - > log/3/stdout236 2> log/3/stderr236 236: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind236 ../src/curl -q --output log/3/curl236.out --include --trace-ascii log/3/trace236 --trace-config all --trace-time ftp://127.0.0.1:43789/236 -T log/3/file236.txt -C - > log/3/stdout236 2> log/3/stderr236 === End of file commands.log === Start of file file236.txt Test data === End of file file236.txt === Start of file ftp_server.log 19:28:30.431181 ====> Client connect 19:28:30.432134 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:30.433973 < "USER anonymous" 19:28:30.434523 > "331 We are happy you popped in![CR][LF]" 19:28:30.435582 < "PASS ftp@example.com" 19:28:30.435863 > "230 Welcome you silly person[CR][LF]" 19:28:30.436865 < "PWD" 19:28:30.437258 > "257 "/" is current directory[CR][LF]" 19:28:30.438343 < "EPSV" 19:28:30.438544 ====> Passive DATA channel requested by client 19:28:30.438654 DATA sockfilt for passive data channel starting... 19:28:30.448354 DATA sockfilt for passive data channel started (pid 118098) 19:28:30.449114 DATA sockfilt for passive data channel listens on port 41747 19:28:30.449738 > "229 Entering Passive Mode (|||41747|)[LF]" 19:28:30.449977 Client has been notified that DATA conn will be accepted on port 41747 19:28:30.451000 Client connects to port 41747 19:28:30.451264 ====> Client established passive DATA connection on port 41747 19:28:30.451904 < "TYPE I" 19:28:30.452196 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:30.453379 < "SIZE verifiedserver" 19:28:30.453822 > "213 18[CR][LF]" 19:28:30.454847 < "RETR verifiedserver" 19:28:30.455195 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:30.455682 =====> Closing passive DATA connection... 19:28:30.455874 Server disconnects passive DATA connection 19:28:30.457295 Server disconnected passive DATA connection 19:28:30.457677 DATA sockfilt for passive data channel quits (pid 118098) 19:28:30.458905 DATA sockfilt for passive data channel quit (pid 118098) 19:28:30.459144 =====> Closed passive DATA connection 19:28:30.459392 > "226 File transfer complete[CR][LF]" 19:28:30.499006 < "QUIT" 19:28:30.499340 > "221 bye bye baby[CR][LF]" 19:28:30.502816 MAIN sockfilt said DISC 19:28:30.503118 ====> Client disconnected 19:28:30.503483 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:30.896086 ====> Client connect 19:28:30.897437 Received DATA (on stdin) 19:28:30.897620 > 160 bytes data, server => client 19:28:30.897755 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:30.897864 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:30.897944 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:30.898358 < 16 bytes data, client => server 19:28:30.898516 'USER anonymous\r\n' 19:28:30.899838 Received DATA (on stdin) 19:28:30.899996 > 33 bytes data, server => client 19:28:30.900082 '331 We are happy you popped in!\r\n' 19:28:30.900473 < 22 bytes data, client => server 19:28:30.900608 'PASS ftp@example.com\r\n' 19:28:30.901185 Received DATA (on stdin) 19:28:30.901289 > 30 bytes data, server => client 19:28:30.901361 '230 Welcome you silly person\r\n' 19:28:30.901792 < 5 bytes data, client => server 19:28:30.901914 'PWD\r\n' 19:28:30.902578 Received DATA (on stdin) 19:28:30.902696 > 30 bytes data, server => client 19:28:30.902846 '257 "/" is current directory\r\n' 19:28:30.903267 < 6 bytes data, client => server 19:28:30.903388 'EPSV\r\n' 19:28:30.915031 Received DATA (on stdin) 19:28:30.915211 > 38 bytes data, server => client 19:28:30.915292 '229 Entering Passive Mode (|||41747|)\n' 19:28:30.916259 < 8 bytes data, client => server 19:28:30.916368 'TYPE I\r\n' 19:28:30.917529 Received DATA (on stdin) 19:28:30.917650 > 33 bytes data, server => client 19:28:30.917733 '200 I modify TYPE as you wanted\r\n' 19:28:30.918275 < 21 bytes data, client => server 19:28:30.918407 'SIZE verifiedserver\r\n' 19:28:30.919155 Received DATA (on stdin) 19:28:30.919285 > 8 bytes data, server => client 19:28:30.919359 '213 18\r\n' 19:28:30.919784 < 21 bytes data, client => server 19:28:30.919910 'RETR verifiedserver\r\n' 19:28:30.920528 Received DATA (on stdin) 19:28:30.920652 > 29 bytes data, server => client 19:28:30.920724 '150 Binary junk (18 bytes).\r\n' 19:28:30.924728 Received DATA (on stdin) 19:28:30.924847 > 28 bytes data, server => client 19:28:30.924925 '226 File transfer complete\r\n' 19:28:30.963737 < 6 bytes data, client => server 19:28:30.963895 'QUIT\r\n' 19:28:30.964680 Received DATA (on stdin) 19:28:30.964806 > 18 bytes data, server => client 19:28:30.964888 '221 bye bye baby\r\n' 19:28:30.965273 ====> Client disconnect 19:28:30.969062 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:30.912630 Running IPv4 version 19:28:30.913023 Listening on port 41747 19:28:30.913317 Wrote pid 118098 to log/3/server/ftp_sockdata.pid 19:28:30.913442 Received PING (on stdin) 19:28:30.914030 Received PORT (on stdin) 19:28:30.916073 ====> Client connect 19:28:30.921808 Received DATA (on stdin) 19:28:30.921959 > 18 bytes data, server => client 19:28:30.922033 'WE ROOLZ: 109394\r\n' 19:28:30.922273 Received DISC (on stdin) 19:28:30.922402 ====> Client forcibly disconnected 19:28:30.923260 Received QUIT (on stdin) 19:28:30.923388 quits 19:28:30.923658 ============> sockfilt quits === 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 valgrind236 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind236 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/1/valgrind237 ../src/curl -q --output log/1/curl237.out --include --trace-ascii log/1/trace237 --trace-config all --trace-time ftp://127.0.0.1:39333/237 --disable-epsv > log/1/stdout237 2> log/1/stderr237 237: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind237 ../src/curl -q --output log/1/curl237.out --include --trace-ascii log/1/trace237 --trace-config all --trace-time ftp://127.0.0.1:39333/237 --disable-epsv > log/1/stdout237 2> log/1/stderr237 === End of file commands.log === Start of file ftp_server.log 19:28:30.510238 ====> Client connect 19:28:30.510945 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:30.512652 < "USER anonymous" 19:28:30.512966 > "331 We are happy you popped in![CR][LF]" 19:28:30.514613 < "PASS ftp@example.com" 19:28:30.515006 > "230 Welcome you silly person[CR][LF]" 19:28:30.516553 < "PWD" 19:28:30.516945 > "257 "/" is current directory[CR][LF]" 19:28:30.518348 < "EPSV" 19:28:30.518637 ====> Passive DATA channel requested by client 19:28:30.518783 DATA sockfilt for passive data channel starting... 19:28:30.527898 DATA sockfilt for passive data channel started (pid 118137) 19:28:30.528652 DATA sockfilt for passive data channel listens on port 43723 19:28:30.528992 > "229 Entering Passive Mode (|||43723|)[LF]" 19:28:30.529188 Client has been notified that DATA conn will be accepted on port 43723 19:28:30.530353 Client connects to port 43723 19:28:30.530595 ====> Client established passive DATA connection on port 43723 19:28:30.531114 < "TYPE I" 19:28:30.531393 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:30.532384 < "SIZE verifiedserver" 19:28:30.532704 > "213 18[CR][LF]" 19:28:30.534937 < "RETR verifiedserver" 19:28:30.535255 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:30.536037 =====> Closing passive DATA connection... 19:28:30.536639 Server disconnects passive DATA connection 19:28:30.536848 Fancy that; client wants to DISC, too 19:28:30.537084 Server disconnected passive DATA connection 19:28:30.537271 DATA sockfilt for passive data channel quits (pid 118137) 19:28:30.538503 DATA sockfilt for passive data channel quit (pid 118137) 19:28:30.538729 =====> Closed passive DATA connection 19:28:30.538953 > "226 File transfer complete[CR][LF]" 19:28:30.578449 < "QUIT" 19:28:30.578761 > "221 bye bye baby[CR][LF]" 19:28:30.583315 MAIN sockfilt said DISC 19:28:30.583646 ====> Client disconnected 19:28:30.584030 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:30.975200 ====> Client connect 19:28:30.976496 Received DATA (on stdin) 19:28:30.976602 > 160 bytes data, server => client 19:28:30.976687 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:30.976766 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:30.976835 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:30.977236 < 16 bytes data, client => server 19:28:30.977354 'USER anonymous\r\n' 19:28:30.978627 Received DATA (on stdin) 19:28:30.978802 > 33 bytes data, server => client 19:28:30.978894 '331 We are happy you popped in!\r\n' 19:28:30.979299 < 22 bytes data, client => server 19:28:30.979423 'PASS ftp@example.com\r\n' 19:28:30.980689 Received DATA (on stdin) 19:28:30.980856 > 30 bytes data, server => client 19:28:30.980946 '230 Welcome you silly person\r\n' 19:28:30.981344 < 5 bytes data, client => server 19:28:30.981475 'PWD\r\n' 19:28:30.982275 Received DATA (on stdin) 19:28:30.982394 > 30 bytes data, server => client 19:28:30.982468 '257 "/" is current directory\r\n' 19:28:30.983149 < 6 bytes data, client => server 19:28:30.983294 'EPSV\r\n' 19:28:30.994315 Received DATA (on stdin) 19:28:30.994454 > 38 bytes data, server => client 19:28:30.994538 '229 Entering Passive Mode (|||43723|)\n' 19:28:30.995671 < 8 bytes data, client => server 19:28:30.995766 'TYPE I\r\n' 19:28:30.996764 Received DATA (on stdin) 19:28:30.996873 > 33 bytes data, server => client 19:28:30.996951 '200 I modify TYPE as you wanted\r\n' 19:28:30.997352 < 21 bytes data, client => server 19:28:30.997473 'SIZE verifiedserver\r\n' 19:28:30.998049 Received DATA (on stdin) 19:28:30.998160 > 8 bytes data, server => client 19:28:30.998229 '213 18\r\n' 19:28:30.999849 < 21 bytes data, client => server 19:28:30.999986 'RETR verifiedserver\r\n' 19:28:31.000581 Received DATA (on stdin) 19:28:31.000743 > 29 bytes data, server => client 19:28:31.000850 '150 Binary junk (18 bytes).\r\n' 19:28:31.004291 Received DATA (on stdin) 19:28:31.004414 > 28 bytes data, server => client 19:28:31.004499 '226 File transfer complete\r\n' 19:28:31.043366 < 6 bytes data, client => server 19:28:31.043515 'QUIT\r\n' 19:28:31.044100 Received DATA (on stdin) 19:28:31.044224 > 18 bytes data, server => client 19:28:31.044300 '221 bye bye baby\r\n' 19:28:31.044678 ====> Client disconnect 19:28:31.049000 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:30.992176 Running IPv4 version 19:28:30.992577 Listening on port 43723 19:28:30.992865 Wrote pid 118137 to log/1/server/ftp_sockdata.pid 19:28:30.992997 Received PING (on stdin) 19:28:30.993541 Received PORT (on stdin) 19:28:30.995421 ====> Client connect 19:28:31.001102 Received DATA (on stdin) 19:28:31.001242 > 18 bytes dCMD (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/4/valgrind238 ../src/curl -q --output log/4/curl238.out --include --trace-ascii log/4/trace238 --trace-config all --trace-time ftp://127.0.0.1:40809/238 > log/4/stdout238 2> log/4/stderr238 ata, server => client 19:28:31.001322 'WE ROOLZ: 109414\r\n' 19:28:31.001815 ====> Client disconnect 19:28:31.002183 Received DISC (on stdin) 19:28:31.002274 Crikey! Client also wants to disconnect 19:28:31.002367 Received ACKD (on stdin) 19:28:31.002872 Received QUIT (on stdin) 19:28:31.002982 quits 19:28:31.003226 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd REPLY PASV 227 Entering Passiv Mode (1216,256,2,127,127,127) Testnum 237 === End of file server.cmd === Start of file valgrind237 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind237 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/4/valgrind238 ../src/curl -q --output log/4/curl238.out --include --trace-ascii log/4/trace238 --trace-config all --trace-time ftp://127.0.0.1:40809/238 > log/4/stdout238 2> log/4/stderr238 238: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind238 ../src/curl -q --output log/4/curl238.out --include --trace-ascii log/4/trace238 --trace-config all --trace-time ftp://127.0.0.1:40809/238 > log/4/stdout238 2> log/4/stderr238 === End of file commands.log === Start of file ftp_server.log 19:28:30.862593 ====> Client connect 19:28:30.863562 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:30.865283 < "USER anonymous" 19:28:30.865909 > "331 We are happy you popped in![CR][LF]" 19:28:30.867736 < "PASS ftp@example.com" 19:28:30.868174 > "230 Welcome you silly person[CR][LF]" 19:28:30.869866 < "PWD" 19:28:30.870217 > "257 "/" is current directory[CR][LF]" 19:28:30.871379 < "EPSV" 19:28:30.871657 ====> Passive DATA channel requested by client 19:28:30.871803 DATA sockfilt for passive data channel starting... 19:28:30.882381 DATA sockfilt for passive data channel started (pid 118282) 19:28:30.883163 DATA sockfilt for passive data channel listens on port 44515 19:28:30.883495 > "229 Entering Passive Mode (|||44515|)[LF]" 19:28:30.883700 Client has been notified that DATA conn will be accepted on port 44515 19:28:30.886117 Client connects to port 44515 19:28:30.886460 ====> Client established passive DATA connection on port 44515 19:28:30.887095 < "TYPE I" 19:28:30.887430 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:30.890066 < "SIZE verifiedserver" 19:28:30.890422 > "213 18[CR][LF]" 19:28:30.891823 < "RETR verifiedserver" 19:28:30.892236 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:30.892932 =====> Closing passive DATA connection... 19:28:30.893268 Server disconnects passive DATA connection 19:28:30.895464 Server disconnected passive DATA connection 19:28:30.895682 DATA sockfilt for passive data channel quits (pid 118282) 19:28:30.897185 DATA sockfilt for passive data channel quit (pid 118282) 19:28:30.897726 =====> Closed passive DATA connection 19:28:30.898441 > "226 File transfer complete[CR][LF]" 19:28:30.938712 < "QUIT" 19:28:30.938976 > "221 bye bye baby[CR][LF]" 19:28:30.942575 MAIN sockfilt said DISC 19:28:30.942867 ====> Client disconnected 19:28:30.943183 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:30.325215 ====> Client connect 19:28:30.328850 Received DATA (on stdin) 19:28:30.329022 > 160 bytes data, server => client 19:28:30.329107 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:30.329192 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:30.329302 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:30.329977 < 16 bytes data, client => server 19:28:30.330127 'USER anonymous\r\n' 19:28:30.331223 Received DATA (on stdin) 19:28:30.331356 > 33 bytes data, server => client 19:28:30.331431 '331 We are happy you popped in!\r\n' 19:28:30.331963 < 22 bytes data, client => server 19:28:30.332118 'PASS ftp@example.com\r\n' 19:28:30.333505 Received DATA (on stdin) 19:28:30.333668 > 30 bytes data, server => client 19:28:30.333763 '230 Welcome you silly person\r\n' 19:28:30.334613 < 5 bytes data, client => server 19:28:30.334837 'PWD\r\n' 19:28:30.335544 Received DATA (on stdin) 19:28:30.335659 > 30 bytes data, server => client 19:28:30.335727 '257 "/" is current directory\r\n' 19:28:30.336269 < 6 bytes data, client => server 19:28:30.336395 'EPSV\r\n' 19:28:30.348859 Received DATA (on stdin) 19:28:30.348999 > 38 bytes data, server => client 19:28:30.349099 '229 Entering Passive Mode (|||44515|)\n' 19:28:30.350016 < 8 bytes data, client => server 19:28:30.350151 'TYPE I\r\n' 19:28:30.352737 Received DATA (on stdin) 19:28:30.352879 > 33 bytes data, server => client 19:28:30.352967 '200 I modify TYPE as you wanted\r\n' 19:28:30.353444 < 21 bytes data, client => server 19:28:30.353562 'SIZE verifiedserver\r\n' 19:28:30.355755 Received DATA (on stdin) 19:28:30.355896 > 8 bytes data, server => client 19:28:30.355978 '213 18\r\n' 19:28:30.356452 < 21 bytes data, client => server 19:28:30.356589 'RETR verifiedserver\r\n' 19:28:30.358869 Received DATA (on stdin) 19:28:30.359015 > 29 bytes data, server => client 19:28:30.359099 '150 Binary junk (18 bytes).\r\n' 19:28:30.363357 Received DATA (on stdin) 19:28:30.363467 > 28 bytes data, server => client 19:28:30.363589 '226 File transfer complete\r\n' 19:28:30.403406 < 6 bytes data, client => server 19:28:30.403554 'QUIT\r\n' 19:28:30.404478 Received DATA (on stdin) 19:28:30.404572 > 18 bytes data, server => client 19:28:30.404640 '221 bye bye baby\r\n' 19:28:30.406844 ====> Client disconnect 19:28:30.408211 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:30.346597 Running IPv4 version 19:28:30.346973 Listening on port 44515 19:28:30.347345 Wrote pid 118282 to log/4/server/ftp_sockdata.pid 19:28:30.347489 Received PING (on stdin) 19:28:30.348035 Received PORT (on stdin) 19:28:30.351119 ====> Client connect 19:28:30.359715 Received DATA (on stdin) 19:28:30.359934 > 18 bytes data, server => client 19:28:30.360012 'WE ROOLZ: 109451\r\n' 19:28:30.360579 Received DISC (on stdin) 19:28:30.361209 ====> Client forcibly disconnected 19:28:30.361537 Received QUIT (on stdin) 19:28:30.361654 quits 19:28:30.361931 ============> sockfilt quits ===CMD (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/2/valgrind239 ../src/curl -q --output log/2/curl239.out --include --trace-ascii log/2/trace239 --trace-config all --trace-time http://127.0.0.1:39599/239 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/2/stdout239 2> log/2/stderr239 CMD (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/2/valgrind243 ../src/curl -q --output log/2/curl243.out --include --trace-ascii log/2/trace243 --trace-config all --trace-time http://127.0.0.1:39599/243 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/2/stdout243 2> log/2/stderr243 End of file ftp_sockdata.log === Start of file server.cmd REPLY EPSV 229 Entering Passiv Mode (|||1000000|) Testnum 238 === End of file server.cmd === Start of file valgrind238 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind239 ../src/curl -q --output log/2/curl239.out --include --trace-ascii log/2/trace239 --trace-config all --trace-time http://127.0.0.1:39599/239 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/2/stdout239 2> log/2/stderr239 239: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind239 ../src/curl -q --output log/2/curl239.out --include --trace-ascii log/2/trace239 --trace-config all --trace-time http://127.0.0.1:39599/239 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-ntlm -d "postit" > log/2/stdout239 2> log/2/stderr239 === End of file commands.log === Start of file http_server.log 19:28:31.346407 ====> Client connect 19:28:31.346642 accept_connection 3 returned 4 19:28:31.346840 accept_connection 3 returned 0 19:28:31.347374 Read 93 bytes 19:28:31.347476 Process 93 bytes request 19:28:31.347555 Got request: GET /verifiedserver HTTP/1.1 19:28:31.347625 Are-we-friendly question received 19:28:31.347827 Wrote request (93 bytes) input to log/2/server.input 19:28:31.347995 Identifying ourselves as friends 19:28:31.348444 Response sent (57 bytes) and written to log/2/server.response 19:28:31.348541 special request received, no persistency 19:28:31.348600 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 239 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind239 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind239 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/2/valgrind243 ../src/curl -q --output log/2/curl243.out --include --trace-ascii log/2/trace243 --trace-config all --trace-time http://127.0.0.1:39599/243 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/2/stdout243 2> log/2/stderr243 243: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind243 ../src/curl -q --output log/2/curl243.out --include --trace-ascii log/2/trace243 --trace-config all --trace-time http://127.0.0.1:39599/243 --proxy http://127.0.0.1:39599 --proxy-user testuser:testpass --proxy-anyauth -d "postit" > log/2/stdout243 2> log/2/stderr243 === End of file commands.log === Start of file http_server.log 19:28:31.961114 ====> Client connect 19:28:31.961318 accept_connection 3 returned 4 19:28:31.961423 accept_connection 3 returned 0 19:28:31.961506 Read 93 bytes 19:28:31.961568 Process 93 bytes request 19:28:31.961631 Got request: GET /verifiedserver HTTP/1.1 19:28:31.961685 Are-we-friendly question received 19:28:31.961817 Wrote request (93 bytes) input to log/2/server.input 19:28:31.961924 Identifying ourselves as friends 19:28:31.962359 Response sent (57 bytes) and written to log/2/server.response 19:28:31.962432 special request received, no persistency 19:28:31.962487 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 243 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind243 valgrinCMD (0): ../src/curl --max-time 13 --output log/3/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:46711/verifiedserver" 2>log/3/http_ipv6_verify.log CMD (0): ../src/curl --max-time 13 --output log/1/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:35769/verifiedserver" 2>log/1/http_ipv6_verify.log CMD (0): ../src/curl --max-time 13 --output log/4/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:44769/verifiedserver" 2>log/4/http_ipv6_verify.log CMD (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/valgrind240 ../src/curl -q --output log/3/curl240.out --include --trace-ascii log/3/trace240 --trace-config all --trace-time -g "http://[::1]:46711/240" > log/3/stdout240 2> log/3/stderr240 CMD (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/2/valgrind244 ../src/curl -q --output log/2/curl244.out --include --trace-ascii log/2/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/fir%23t/th%69rd/244/ > log/2/stdout244 2> log/2/stderr244 d: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind243 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: ../src/curl --max-time 13 --output log/1/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:35769/verifiedserver" 2>log/1/http_ipv6_verify.log RUN: HTTP-IPv6 server is on PID 118335 port 35769 * pid http-ipv6 => 118335 118335 prechecked ./server/resolve --ipv6 ip6-localhost test 0241 SKIPPED: Resolving IPv6 'ip6-localhost' didn't work 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_ipv6_server.pid" --logfile "log/3/http_ipv6_server.log" --logdir "log/3" --portfile log/3/server/http_ipv6_server.port --config log/3/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/3/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:46711/verifiedserver" 2>log/3/http_ipv6_verify.log RUN: HTTP-IPv6 server is on PID 118329 port 46711 * pid http-ipv6 => 118329 118329 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/3/valgrind240 ../src/curl -q --output log/3/curl240.out --include --trace-ascii log/3/trace240 --trace-config all --trace-time -g "http://[::1]:46711/240" > log/3/stdout240 2> log/3/stderr240 240: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind240 ../src/curl -q --output log/3/curl240.out --include --trace-ascii log/3/trace240 --trace-config all --trace-time -g "http://[::1]:46711/240" > log/3/stdout240 2> log/3/stderr240 === End of file commands.log === Start of file http_ipv6_server.log 19:28:31.712079 Running HTTP IPv6 version on port 46711 19:28:31.712605 Wrote pid 118329 to log/3/server/http_ipv6_server.pid 19:28:31.712888 Wrote port 46711 to log/3/server/http_ipv6_server.port 19:28:32.638352 ====> Client connect 19:28:32.638479 accept_connection 3 returned 4 19:28:32.638583 accept_connection 3 returned 0 19:28:32.639106 Read 89 bytes 19:28:32.639251 Process 89 bytes request 19:28:32.639341 Got request: GET /verifiedserver HTTP/1.1 19:28:32.639402 Are-we-friendly question received 19:28:32.639552 Wrote request (89 bytes) input to log/3/server.input 19:28:32.639711 Identifying ourselves as friends 19:28:32.640058 Response sent (57 bytes) and written to log/3/server.response 19:28:32.640139 special request received, no persistency 19:28:32.640194 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file http_ipv6_verify.log * Trying [::1]:46711... * Connected to ::1 (::1) port 46711 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: [::1]:46711 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host ::1 left intact === End of file http_ipv6_verify.log === Start of file http_ipv6_verify.out WE ROOLZ: 118329 === End of file http_ipv6_verify.out === Start of file server.cmd Testnum 240 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 118329 === End of file server.response === Start of file valgrind240 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind240 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/2/valgrind244 ../src/curl -q --output log/2/curl244.out --include --trace-ascii log/2/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/fir%23t/th%69rd/244/ > log/2/stdout244 2> log/2/stderr244 244: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind244 ../src/curl -q --output log/2/curl244.out --include --trace-ascii log/2/trace244 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/fir%23t/th%69rd/244/ > log/2/stdout244 2> log/2/stderr244 === End of file commands.log === Start of file ftp_server.log 19:28:32.129955 ====> Client connect 19:28:32.130940 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:32.132761 < "USER anonymous" 19:28:32.133146 > "331 We are happy you popped in![CR][LF]" 19:28:32.134220 < "PASSCMD (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/1/valgrind245 ../src/curl -q --output log/1/curl245.out --include --trace-ascii log/1/trace245 --trace-config all --trace-time http://127.0.0.1:41477/245 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout245 2> log/1/stderr245 ftp@example.com" 19:28:32.134512 > "230 Welcome you silly person[CR][LF]" 19:28:32.140992 < "PWD" 19:28:32.141342 > "257 "/" is current directory[CR][LF]" 19:28:32.142686 < "EPSV" 19:28:32.142942 ====> Passive DATA channel requested by client 19:28:32.143091 DATA sockfilt for passive data channel starting... 19:28:32.151182 DATA sockfilt for passive data channel started (pid 118503) 19:28:32.151959 DATA sockfilt for passive data channel listens on port 46407 19:28:32.152314 > "229 Entering Passive Mode (|||46407|)[LF]" 19:28:32.152486 Client has been notified that DATA conn will be accepted on port 46407 19:28:32.154137 Client connects to port 46407 19:28:32.154387 ====> Client established passive DATA connection on port 46407 19:28:32.154994 < "TYPE I" 19:28:32.155306 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:32.156903 < "SIZE verifiedserver" 19:28:32.157284 > "213 18[CR][LF]" 19:28:32.159016 < "RETR verifiedserver" 19:28:32.159866 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:32.160430 =====> Closing passive DATA connection... 19:28:32.160628 Server disconnects passive DATA connection 19:28:32.165192 Server disconnected passive DATA connection 19:28:32.165507 DATA sockfilt for passive data channel quits (pid 118503) 19:28:32.166707 DATA sockfilt for passive data channel quit (pid 118503) 19:28:32.166931 =====> Closed passive DATA connection 19:28:32.167531 > "226 File transfer complete[CR][LF]" 19:28:32.206522 < "QUIT" 19:28:32.207230 > "221 bye bye baby[CR][LF]" 19:28:32.207699 MAIN sockfilt said DISC 19:28:32.208222 ====> Client disconnected 19:28:32.208597 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:31.594599 ====> Client connect 19:28:31.596532 Received DATA (on stdin) 19:28:31.596638 > 160 bytes data, server => client 19:28:31.596740 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:31.596823 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:31.596901 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:31.597368 < 16 bytes data, client => server 19:28:31.597502 'USER anonymous\r\n' 19:28:31.598433 Received DATA (on stdin) 19:28:31.598554 > 33 bytes data, server => client 19:28:31.598625 '331 We are happy you popped in!\r\n' 19:28:31.599078 < 22 bytes data, client => server 19:28:31.599215 'PASS ftp@example.com\r\n' 19:28:31.599802 Received DATA (on stdin) 19:28:31.599910 > 30 bytes data, server => client 19:28:31.599978 '230 Welcome you silly person\r\n' 19:28:31.605833 < 5 bytes data, client => server 19:28:31.605974 'PWD\r\n' 19:28:31.606626 Received DATA (on stdin) 19:28:31.606868 > 30 bytes data, server => client 19:28:31.606954 '257 "/" is current directory\r\n' 19:28:31.607392 < 6 bytes data, client => server 19:28:31.607517 'EPSV\r\n' 19:28:31.618207 Received DATA (on stdin) 19:28:31.618351 > 38 bytes data, server => client 19:28:31.618442 '229 Entering Passive Mode (|||46407|)\n' 19:28:31.619393 < 8 bytes data, client => server 19:28:31.619499 'TYPE I\r\n' 19:28:31.620602 Received DATA (on stdin) 19:28:31.620717 > 33 bytes data, server => client 19:28:31.620793 '200 I modify TYPE as you wanted\r\n' 19:28:31.621489 < 21 bytes data, client => server 19:28:31.621616 'SIZE verifiedserver\r\n' 19:28:31.622974 Received DATA (on stdin) 19:28:31.623102 > 8 bytes data, server => client 19:28:31.623180 '213 18\r\n' 19:28:31.623623 < 21 bytes data, client => server 19:28:31.623746 'RETR verifiedserver\r\n' 19:28:31.624642 Received DATA (on stdin) 19:28:31.624765 > 29 bytes data, server => client 19:28:31.624887 '150 Binary junk (18 bytes).\r\n' 19:28:31.632422 Received DATA (on stdin) 19:28:31.632531 > 28 bytes data, server => client 19:28:31.632647 '226 File transfer complete\r\n' 19:28:31.671233 < 6 bytes data, client => server 19:28:31.671370 'QUIT\r\n' 19:28:31.672050 Received DATA (on stdin) 19:28:31.672140 > 18 bytes data, server => client 19:28:31.672244 '221 bye bye baby\r\n' 19:28:31.672597 ====> Client disconnect 19:28:31.673178 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:32.615626 Running IPv4 version 19:28:32.615959 Listening on port 46407 19:28:32.616164 Wrote pid 118503 to log/2/server/ftp_sockdata.pid 19:28:32.616266 Received PING (on stdin) 19:28:32.616803 Received PORT (on stdin) 19:28:32.619210 ====> Client connect 19:28:32.629334 Received DATA (on stdin) 19:28:32.629520 > 18 bytes data, server => client 19:28:32.629619 'WE ROOLZ: 116354\r\n' 19:28:32.630258 Received DISC (on stdin) 19:28:32.630412 ====> Client forcibly disconnected 19:28:32.631029 Received QUIT (on stdin) 19:28:32.631147 quits 19:28:32.631427 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 244 === End of file server.cmd === Start of file valgrind244 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind244 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/1/valgrind245 ../src/curl -q --output log/1/curl245.out --include --trace-ascii log/1/trace245 --trace-config all --trace-time http://127.0.0.1:41477/245 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout245 2> log/1/stderr245 245: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind245 ../src/curl -q --output log/1/curl245.out --include --trace-ascii log/1/trace245 --trace-config all --trace-time http://127.0.0.1:41477/245 -u auser:apasswd --digest -d "junkelijunk" > log/1/stdout245 2> log/1/stderr245 === End of file commands.log === Start of file http_server.log 19:28:32.804095 ====> Client connect 19:28:32.804299 accept_connection 3 returned 4 19:28:32.804408 accept_connection 3 returned 0 19:28:32.804932 Read 93 bytes 19:28:32.805153 Process 93 bytes request 19:28:32.805293 Got request: GET /verifiedserver HTTP/1.1 19:28:32.805367 Are-we-friendly question received 19:28:32.805541 Wrote request (93 bytes) input to log/1/server.input 19:28:32.805728 Identifying ourselves as friends 19:28:32.806170 Response sent (57 bytes) and written to log/1/server.response 19:28:32.806272 special request received, no persistency 19:28:32.806345 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * ConnectCMD (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/4/valgrind242 ../src/curl -q --output log/4/curl242.out --include --trace-ascii log/4/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:44769/242" > log/4/stdout242 2> log/4/stderr242 CMD (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/valgrind246 ../src/curl -q --output log/3/curl246.out --include --trace-ascii log/3/trace246 --trace-config all --trace-time http://127.0.0.1:37525/246 -u auser:apasswd --digest -d "junkelijunk" > log/3/stdout246 2> log/3/stderr246 ed to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 245 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind245 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind245 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_ipv6_server.pid" --logfile "log/4/http_ipv6_server.log" --logdir "log/4" --portfile log/4/server/http_ipv6_server.port --config log/4/server.cmd --ipv6 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/4/http_ipv6_verify.out --silent --verbose --globoff "http://[::1]:44769/verifiedserver" 2>log/4/http_ipv6_verify.log RUN: HTTP-IPv6 server is on PID 118400 port 44769 * pid http-ipv6 => 118400 118400 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/4/valgrind242 ../src/curl -q --output log/4/curl242.out --include --trace-ascii log/4/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:44769/242" > log/4/stdout242 2> log/4/stderr242 242: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind242 ../src/curl -q --output log/4/curl242.out --include --trace-ascii log/4/trace242 --trace-config all --trace-time -g "http://foobar:barfoo@[::1]:44769/242" > log/4/stdout242 2> log/4/stderr242 === End of file commands.log === Start of file http_ipv6_server.log 19:28:31.012813 Running HTTP IPv6 version on port 44769 19:28:31.013275 Wrote pid 118400 to log/4/server/http_ipv6_server.pid 19:28:31.013468 Wrote port 44769 to log/4/server/http_ipv6_server.port 19:28:31.984191 ====> Client connect 19:28:31.984375 accept_connection 3 returned 4 19:28:31.984528 accept_connection 3 returned 0 19:28:31.984637 Read 89 bytes 19:28:31.984734 Process 89 bytes request 19:28:31.984841 Got request: GET /verifiedserver HTTP/1.1 19:28:31.984914 Are-we-friendly question received 19:28:31.985109 Wrote request (89 bytes) input to log/4/server.input 19:28:31.985304 Identifying ourselves as friends 19:28:31.985857 Response sent (57 bytes) and written to log/4/server.response 19:28:31.985955 special request received, no persistency 19:28:31.986021 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file http_ipv6_verify.log * Trying [::1]:44769... * Connected to ::1 (::1) port 44769 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: [::1]:44769 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host ::1 left intact === End of file http_ipv6_verify.log === Start of file http_ipv6_verify.out WE ROOLZ: 118400 === End of file http_ipv6_verify.out === Start of file server.cmd Testnum 242 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 118400 === End of file server.response === Start of file valgrind242 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind242 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/3/valgrind246 ../src/curl -q --output log/3/curl246.out --include --trace-ascii log/3/trace246 --trace-config all --trace-time http://127.0.0.1:37525/246 -u auser:apasswd --digest -d "junkelijunk" > log/3/stdout246 2> log/3/stderr246 246: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind246 ../src/curl -q --output log/3/curl246.out --include --trace-ascii log/3/trace246 --trace-config all --trace-time http://127.0.0.1:37525/246 -u auser:apasswd --digest -d "junkelijunk" > log/3/stdout246 2> log/3/stderr246 === End of file commands.log === Start of file http_server.log 19:28:32.208389 ====> Client connect 19:28:32.208597 accept_connection 3 returned 4 19:28:32.208705 accept_connection 3 returned 0 19:28:32.209165 Read 93 bytes 19:28:32.209291 Process 93 bytes request 19:28:32.209370 Got request: GET /verifiedserver HTTP/1.1 19:28:32.209436 Are-we-friendly question received 19:28:32.20959CMD (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/2/valgrind247 ../src/curl -q --output log/2/curl247.out --include --trace-ascii log/2/trace247 --trace-config all --trace-time ftp://127.0.0.1:36773/247 -T log/2/test247.txt -z "apr 1 2005 08:00:00" > log/2/stdout247 2> log/2/stderr247 4 Wrote request (93 bytes) input to log/3/server.input 19:28:32.209744 Identifying ourselves as friends 19:28:32.210157 Response sent (57 bytes) and written to log/3/server.response 19:28:32.210244 special request received, no persistency 19:28:32.210302 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 246 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind246 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind246 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/2/valgrind247 ../src/curl -q --output log/2/curl247.out --include --trace-ascii log/2/trace247 --trace-config all --trace-time ftp://127.0.0.1:36773/247 -T log/2/test247.txt -z "apr 1 2005 08:00:00" > log/2/stdout247 2> log/2/stderr247 247: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind247 ../src/curl -q --output log/2/curl247.out --include --trace-ascii log/2/trace247 --trace-config all --trace-time ftp://127.0.0.1:36773/247 -T log/2/test247.txt -z "apr 1 2005 08:00:00" > log/2/stdout247 2> log/2/stderr247 === End of file commands.log === Start of file ftp_server.log 19:28:32.783493 ====> Client connect 19:28:32.784184 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:32.785801 < "USER anonymous" 19:28:32.786123 > "331 We are happy you popped in![CR][LF]" 19:28:32.787135 < "PASS ftp@example.com" 19:28:32.787411 > "230 Welcome you silly person[CR][LF]" 19:28:32.788420 < "PWD" 19:28:32.788723 > "257 "/" is current directory[CR][LF]" 19:28:32.789898 < "EPSV" 19:28:32.790122 ====> Passive DATA channel requested by client 19:28:32.790280 DATA sockfilt for passive data channel starting... 19:28:32.799222 DATA sockfilt for passive data channel started (pid 118748) 19:28:32.800026 DATA sockfilt for passive data channel listens on port 34651 19:28:32.800356 > "229 Entering Passive Mode (|||34651|)[LF]" 19:28:32.800537 Client has been notified that DATA conn will be accepted on port 34651 19:28:32.801683 Client connects to port 34651 19:28:32.801940 ====> Client established passive DATA connection on port 34651 19:28:32.802563 < "TYPE I" 19:28:32.802886 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:32.803939 < "SIZE verifiedserver" 19:28:32.804275 > "213 18[CR][LF]" 19:28:32.805255 < "RETR verifiedserver" 19:28:32.805743 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:32.806510 =====> Closing passive DATA connection... 19:28:32.806769 Server disconnects passive DATA connection 19:28:32.808072 Server disconnected passive DATA connection 19:28:32.808302 DATA sockfilt for passive data channel quits (pid 118748) 19:28:32.809991 DATA sockfilt for passive data channel quit (pid 118748) 19:28:32.810230 =====> Closed passive DATA connection 19:28:32.810453 > "226 File transfer complete[CR][LF]" 19:28:32.853511 < "QUIT" 19:28:32.853826 > "221 bye bye baby[CR][LF]" 19:28:32.857345 MAIN sockfilt said DISC 19:28:32.857761 ====> Client disconnected 19:28:32.858095 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:32.248366 ====> Client connect 19:28:32.249670 Received DATA (on stdin) 19:28:32.249774 > 160 bytes data, server => client 19:28:32.249854 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:32.249917 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:32.249973 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:32.250375 < 16 bytes data, client => server 19:28:32.250503 'USER anonymous\r\n' 19:28:32.251411 Received DATA (on stdin) 19:28:32.251533 > 33 bytes data, server => client 19:28:32.251612 '331 We are happy you popped in!\r\n' 19:28:32.252010 < 22 bytes data, client => server 19:28:32.252137 'PASS ftp@example.com\r\n' 19:28:32.252691 Received DATA (on stdin) 19:28:32.252804 > 30 bytes data, server => client 19:28:32.252883 '230 Welcome you silly person\r\n' 19:28:32.253293 < 5 bytes data, client => server 19:28:32.253419 'PWD\r\n' 19:28:32.254008 Received DATA (on stdin) 19:28:32.254134 > 30 bytes data, server => client 19:28:32.254222 '257 "/" is current directory\r\n' 19:28:32.254661 < 6 bytes data, client => server 19:28:32.254862 'EPSV\r\n' 19:28:32.265632 Received DATA (on stdin) 19:28:32.265769 > 38 bytes data, server => client 19:28:32.265853 '229 Entering Passive Mode (|||34651|)\n' 19:28:32.266734 < 8 bytes data, client => server 19:28:32.266873 'TYPE I\r\n' 19:28:32.268213 Received DATA (on stdin) 19:28:32.268329 > 33 bytes data, server => client 19:28:32.268413 '200 I modify TYPE as you wanted\r\n' 19:28:32.268817 < 21 bytes data, client => server 19:28:32.268947 'SIZE verifiedserver\r\n' 19:28:32.269556 Received DATA (on stdin) 19:28:32.269676 > 8 bytes data, server => client 19:28:32.269745 '213 18\r\n' 19:28:32.270147 < 21 bytes data, client => server 19:28:32.270268 'RETR verifiedserver\r\n' 19:28:32.271004 Received DATA (on stdin) 19:28:32.271148 > 29 bytes data, server => client 19:28:32.271230 '150 Binary junk (18 bytes).\r\n' 19:28:32.275737 Received DATA (on stdin) 19:28:32.275879 > 28 bytes data, server => client 19:28:32.275969 '226 File transfer complete\r\n' 19:28:32.318252 < 6 bytes data, client => server 19:28:32.318406 'QUIT\r\n' 19:28:32.319092 Received DATA (on stdin) 19:28:32.319209 > 18 bytes data, server => client 19:28:32.319279 '221 bye bye baby\r\n' 19:28:32.319668 ====> Client disconnect 19:28:32.323049 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:32.263512 Running IPv4 version 19:28:32.2639CMD (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/1/valgrind248 ../src/curl -q --output log/1/curl248.out --include --trace-ascii log/1/trace248 --trace-config all --trace-time ftp://127.0.0.1:39333/248 -T log/1/test248.txt -z "apr 1 2005 08:00:00" > log/1/stdout248 2> log/1/stderr248 02 Listening on port 34651 19:28:32.264163 Wrote pid 118748 to log/2/server/ftp_sockdata.pid 19:28:32.264278 Received PING (on stdin) 19:28:32.264878 Received PORT (on stdin) 19:28:32.266780 ====> Client connect 19:28:32.272366 Received DATA (on stdin) 19:28:32.272521 > 18 bytes data, server => client 19:28:32.272600 'WE ROOLZ: 116354\r\n' 19:28:32.273130 Received DISC (on stdin) 19:28:32.273790 ====> Client forcibly disconnected 19:28:32.274106 Received QUIT (on stdin) 19:28:32.274207 quits 19:28:32.274596 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 247 === End of file server.cmd === Start of file test247.txt data to see that FTP works so does it? === End of file test247.txt === Start of file valgrind247 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind248 ../src/curl -q --output log/1/curl248.out --include --trace-ascii log/1/trace248 --trace-config all --trace-time ftp://127.0.0.1:39333/248 -T log/1/test248.txt -z "apr 1 2005 08:00:00" > log/1/stdout248 2> log/1/stderr248 248: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind248 ../src/curl -q --output log/1/curl248.out --include --trace-ascii log/1/trace248 --trace-config all --trace-time ftp://127.0.0.1:39333/248 -T log/1/test248.txt -z "apr 1 2005 08:00:00" > log/1/stdout248 2> log/1/stderr248 === End of file commands.log === Start of file ftp_server.log 19:28:32.989825 ====> Client connect 19:28:32.991385 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:32.995541 < "USER anonymous" 19:28:32.996273 > "331 We are happy you popped in![CR][LF]" 19:28:32.998362 < "PASS ftp@example.com" 19:28:32.999346 > "230 Welcome you silly person[CR][LF]" 19:28:33.000692 < "PWD" 19:28:33.001011 > "257 "/" is current directory[CR][LF]" 19:28:33.002551 < "EPSV" 19:28:33.002817 ====> Passive DATA channel requested by client 19:28:33.002969 DATA sockfilt for passive data channel starting... 19:28:33.010732 DATA sockfilt for passive data channel started (pid 118810) 19:28:33.011770 DATA sockfilt for passive data channel listens on port 34479 19:28:33.012162 > "229 Entering Passive Mode (|||34479|)[LF]" 19:28:33.012355 Client has been notified that DATA conn will be accepted on port 34479 19:28:33.014499 Client connects to port 34479 19:28:33.014825 ====> Client established passive DATA connection on port 34479 19:28:33.015512 < "TYPE I" 19:28:33.015913 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:33.017375 < "SIZE verifiedserver" 19:28:33.018093 > "213 18[CR][LF]" 19:28:33.019588 < "RETR verifiedserver" 19:28:33.020206 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:33.020761 =====> Closing passive DATA connection... 19:28:33.020969 Server disconnects passive DATA connection 19:28:33.022477 Server disconnected passive DATA connection 19:28:33.022746 DATA sockfilt for passive data channel quits (pid 118810) 19:28:33.024127 DATA sockfilt for passive data channel quit (pid 118810) 19:28:33.024385 =====> Closed passive DATA connection 19:28:33.025149 > "226 File transfer complete[CR][LF]" 19:28:33.062876 < "QUIT" 19:28:33.063152 > "221 bye bye baby[CR][LF]" 19:28:33.065995 MAIN sockfilt said DISC 19:28:33.066358 ====> Client disconnected 19:28:33.066741 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:33.454439 ====> Client connect 19:28:33.456619 Received DATA (on stdin) 19:28:33.456822 > 160 bytes data, server => client 19:28:33.456951 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:33.457035 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:33.457205 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:33.459834 < 16 bytes data, client => server 19:28:33.459992 'USER anonymous\r\n' 19:28:33.461930 Received DATA (on stdin) 19:28:33.462081 > 33 bytes data, server => client 19:28:33.462204 '331 We are happy you popped in!\r\n' 19:28:33.462796 < 22 bytes data, client => server 19:28:33.462937 'PASS ftp@example.com\r\n' 19:28:33.463955 Received DATA (on stdin) 19:28:33.464213 > 30 bytes data, server => client 19:28:33.464933 '230 Welcome you silly person\r\n' 19:28:33.465380 < 5 bytes data, client => server 19:28:33.465503 'PWD\r\n' 19:28:33.466527 Received DATA (on stdin) 19:28:33.466631 > 30 bytes data, server => client 19:28:33.466812 '257 "/" is current directory\r\n' 19:28:33.467226 < 6 bytes data, client => server 19:28:33.467346 'EPSV\r\n' 19:28:33.477864 Received DATA (on stdin) 19:28:33.477988 > 38 bytes data, server => client 19:28:33.478094 '229 Entering Passive Mode (|||34479|)\n' 19:28:33.479219 < 8 bytes data, client => server 19:28:33.479352 'TYPE I\r\n' 19:28:33.481457 Received DATA (on stdin) 19:28:33.481558 > 33 bytes data, server => client 19:28:33.481635 '200 I modify TYPE as you wanted\r\n' 19:28:33.482049 < 21 bytes data, client => server 19:28:33.482180 'SIZE verifiedserver\r\n' 19:28:33.483087 Received DATA (on stdin) 19:28:33.483214 > 8 bytes data, server => client 19:28:33.483590 '213 18\r\n' 19:28:33.484069 < 21 bytes data, client => server 19:28:33.484259 'RETR verifiedserver\r\n' 19:28:33.485175 Received DATA (on stdin) 19:28:33.485285 > 29 bytes data, server => client 19:28:33.486433 '150 Binary junk (18 bytes).\r\n' 19:28:33.489880 Received DATA (on stdin) 19:28:33.490034 > 28 bytes data, server => client 19:28:33.490197 '226 File transfer complete\r\n' 19:28:33.527387 < 6 bytes data, client => server 19:28:33.527586 'QUIT\r\n' 19:28:33.528605 Received DATA (on stdin) 19:28:33.528699 > 18 bytes data, server => client 19:28:33.528768 '221 bye bye baby\r\n' 19:28:33.530987 ====> Client disconnect 19:28:33.532319 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:33.474929 Running IPv4 version 19:28:33.475263 Listening on port 34479 19:28:33.475521 Wrote pid 118810 to log/1/server/ftp_sockdata.pid 19:28:33.475678 Received PING (on stdin) 19:28:33.476574 Received PORT (on stdin) 19:28:33.479540 CMD (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/4/valgrind249 ../src/curl -q --output log/4/curl249.out --include --trace-ascii log/4/trace249 --trace-config all --trace-time http://127.0.0.1:43669/249 -z "dec 12 12:00:00 1999 GMT" > log/4/stdout249 2> log/4/stderr249 CMD (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/valgrind250 ../src/curl -q --output log/3/curl250.out --include --trace log/3/trace250 --trace-config all --trace-time ftp://127.0.0.1:43789/ > log/3/stdout250 2> log/3/stderr250 ====> Client connect 19:28:33.486832 Received DATA (on stdin) 19:28:33.486979 > 18 bytes data, server => client 19:28:33.487057 'WE ROOLZ: 109414\r\n' 19:28:33.487291 Received DISC (on stdin) 19:28:33.487430 ====> Client forcibly disconnected 19:28:33.488353 Received QUIT (on stdin) 19:28:33.488466 quits 19:28:33.488765 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 248 === End of file server.cmd === Start of file test248.txt data to see that FTP works so does it? === End of file test248.txt === Start of file valgrind248 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind249 ../src/curl -q --output log/4/curl249.out --include --trace-ascii log/4/trace249 --trace-config all --trace-time http://127.0.0.1:43669/249 -z "dec 12 12:00:00 1999 GMT" > log/4/stdout249 2> log/4/stderr249 249: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind249 ../src/curl -q --output log/4/curl249.out --include --trace-ascii log/4/trace249 --trace-config all --trace-time http://127.0.0.1:43669/249 -z "dec 12 12:00:00 1999 GMT" > log/4/stdout249 2> log/4/stderr249 === End of file commands.log === Start of file http_server.log 19:28:33.621232 ====> Client connect 19:28:33.621448 accept_connection 3 returned 4 19:28:33.621587 accept_connection 3 returned 0 19:28:33.621757 Read 93 bytes 19:28:33.621842 Process 93 bytes request 19:28:33.621917 Got request: GET /verifiedserver HTTP/1.1 19:28:33.621993 Are-we-friendly question received 19:28:33.622169 Wrote request (93 bytes) input to log/4/server.input 19:28:33.622326 Identifying ourselves as friends 19:28:33.622906 Response sent (57 bytes) and written to log/4/server.response 19:28:33.623010 special request received, no persistency 19:28:33.623140 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 249 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind249 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind250 ../src/curl -q --output log/3/curl250.out --include --trace log/3/trace250 --trace-config all --trace-time ftp://127.0.0.1:43789/ > log/3/stdout250 2> log/3/stderr250 250: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind250 ../src/curl -q --output log/3/curl250.out --include --trace log/3/trace250 --trace-config all --trace-time ftp://127.0.0.1:43789/ > log/3/stdout250 2> log/3/stderr250 === End of file commands.log === Start of file ftp_server.log 19:28:33.481640 ====> Client connect 19:28:33.482485 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:33.486127 < "USER anonymous" 19:28:33.486446 > "331 We are happy you popped in![CR][LF]" 19:28:33.487997 < "PASS ftp@example.com" 19:28:33.488295 > "230 Welcome you silly person[CR][LF]" 19:28:33.490507 < "PWD" 19:28:33.491207 > "257 "/" is current directory[CR][LF]" 19:28:33.492663 < "EPSV" 19:28:33.492892 ====> Passive DATA channel requested by client 19:28:33.493049 DATA sockfilt for passive data channel starting... 19:28:33.501746 DATA sockfilt for passive data channel started (pid 119027) 19:28:33.502520 DATA sockfilt for passive data channel listens on port 36719 19:28:33.503087 > "229 Entering Passive Mode (|||36719|)[LF]" 19:28:33.503395 Client has been notified that DATA conn will be accepted on port 36719 19:28:33.505278 Client connects to port 36719 19:28:33.505727 ====> Client established passive DATA connection on port 36719 19:28:33.506384 < "TYPE I" 19:28:33.506702 > "200 I modify TYPE as you wanted[CR][LF]" 19:CMD (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/2/valgrind251 ../src/curl -q --output log/2/curl251.out --include --trace-ascii log/2/trace251 --trace-config all --trace-time ftp://127.0.0.1:36773/ -P 127.0.0.1 > log/2/stdout251 2> log/2/stderr251 28:33.508306 < "SIZE verifiedserver" 19:28:33.508646 > "213 18[CR][LF]" 19:28:33.510561 < "RETR verifiedserver" 19:28:33.510917 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:33.511416 =====> Closing passive DATA connection... 19:28:33.511614 Server disconnects passive DATA connection 19:28:33.513379 Server disconnected passive DATA connection 19:28:33.513799 DATA sockfilt for passive data channel quits (pid 119027) 19:28:33.515294 DATA sockfilt for passive data channel quit (pid 119027) 19:28:33.515657 =====> Closed passive DATA connection 19:28:33.516470 > "226 File transfer complete[CR][LF]" 19:28:33.554699 < "QUIT" 19:28:33.554965 > "221 bye bye baby[CR][LF]" 19:28:33.558507 MAIN sockfilt said DISC 19:28:33.558746 ====> Client disconnected 19:28:33.559038 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:33.946315 ====> Client connect 19:28:33.947703 Received DATA (on stdin) 19:28:33.947854 > 160 bytes data, server => client 19:28:33.947936 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:33.948010 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:33.948078 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:33.949995 < 16 bytes data, client => server 19:28:33.950175 'USER anonymous\r\n' 19:28:33.951935 Received DATA (on stdin) 19:28:33.952060 > 33 bytes data, server => client 19:28:33.952147 '331 We are happy you popped in!\r\n' 19:28:33.952611 < 22 bytes data, client => server 19:28:33.952743 'PASS ftp@example.com\r\n' 19:28:33.953806 Received DATA (on stdin) 19:28:33.953940 > 30 bytes data, server => client 19:28:33.954015 '230 Welcome you silly person\r\n' 19:28:33.955086 < 5 bytes data, client => server 19:28:33.955235 'PWD\r\n' 19:28:33.956159 Received DATA (on stdin) 19:28:33.956284 > 30 bytes data, server => client 19:28:33.956732 '257 "/" is current directory\r\n' 19:28:33.957291 < 6 bytes data, client => server 19:28:33.957423 'EPSV\r\n' 19:28:33.968929 Received DATA (on stdin) 19:28:33.969056 > 38 bytes data, server => client 19:28:33.969135 '229 Entering Passive Mode (|||36719|)\n' 19:28:33.970011 < 8 bytes data, client => server 19:28:33.970167 'TYPE I\r\n' 19:28:33.972188 Received DATA (on stdin) 19:28:33.972306 > 33 bytes data, server => client 19:28:33.972391 '200 I modify TYPE as you wanted\r\n' 19:28:33.972847 < 21 bytes data, client => server 19:28:33.973003 'SIZE verifiedserver\r\n' 19:28:33.974158 Received DATA (on stdin) 19:28:33.974286 > 8 bytes data, server => client 19:28:33.974367 '213 18\r\n' 19:28:33.975166 < 21 bytes data, client => server 19:28:33.975305 'RETR verifiedserver\r\n' 19:28:33.977159 Received DATA (on stdin) 19:28:33.977280 > 29 bytes data, server => client 19:28:33.977357 '150 Binary junk (18 bytes).\r\n' 19:28:33.981272 Received DATA (on stdin) 19:28:33.981408 > 28 bytes data, server => client 19:28:33.981536 '226 File transfer complete\r\n' 19:28:34.019320 < 6 bytes data, client => server 19:28:34.019460 'QUIT\r\n' 19:28:34.020396 Received DATA (on stdin) 19:28:34.020483 > 18 bytes data, server => client 19:28:34.020549 '221 bye bye baby\r\n' 19:28:34.023512 ====> Client disconnect 19:28:34.024464 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:33.966026 Running IPv4 version 19:28:33.966360 Listening on port 36719 19:28:33.966595 Wrote pid 119027 to log/3/server/ftp_sockdata.pid 19:28:33.966774 Received PING (on stdin) 19:28:33.967344 Received PORT (on stdin) 19:28:33.970372 ====> Client connect 19:28:33.977737 Received DATA (on stdin) 19:28:33.977869 > 18 bytes data, server => client 19:28:33.977939 'WE ROOLZ: 109394\r\n' 19:28:33.978431 Received DISC (on stdin) 19:28:33.979277 ====> Client forcibly disconnected 19:28:33.979601 Received QUIT (on stdin) 19:28:33.979714 quits 19:28:33.979982 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 250 === End of file server.cmd === Start of file valgrind250 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind250 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/2/valgrind251 ../src/curl -q --output log/2/curl251.out --include --trace-ascii log/2/trace251 --trace-config all --trace-time ftp://127.0.0.1:36773/ -P 127.0.0.1 > log/2/stdout251 2> log/2/stderr251 251: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind251 ../src/curl -q --output log/2/curl251.out --include --trace-ascii log/2/trace251 --trace-config all --trace-time ftp://127.0.0.1:36773/ -P 127.0.0.1 > log/2/stdout251 2> log/2/stderr251 === End of file commands.log === Start of file ftp_server.log 19:28:33.533893 ====> Client connect 19:28:33.534723 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:33.535999 < "USER anonymous" 19:28:33.536294 > "331 We are happy you popped in![CR][LF]" 19:28:33.537197 < "PASS ftp@example.com" 19:28:33.537534 > "230 Welcome you silly person[CR][LF]" 19:28:33.538445 < "PWD" 19:28:33.538787 > "257 "/" is current directory[CR][LF]" 19:28:33.539752 < "EPSV" 19:28:33.539944 ====> Passive DATA channel requested by client 19:28:33.540068 DATA sockfilt for passive data channel starting... 19:28:33.547092 DATA sockfilt for passive data channel started (pid 119036) 19:28:33.547731 DATA sockfilt for passive data channel listens on port 33349 19:28:33.547999 > "229 Entering Passive Mode (|||33349|)[LF]" 19:28:33.548155 Client has been notified that DATA conn will be accepted on port 33349 19:28:33.549137 Client connects to port 33349 19:28:33.549369 ====> Client established passive DATA connection on port 33349 19:28:33.549945 < "TYPE I" 19:28:33.550197 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:33.551096 < "SIZE verifiedserver" 19:28:33.551367 > "213 18[CR][LF]" 19:28:33.552215 < "RETR verifiedserver" 19:28:33.552488 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:33.552939 =====> Closing passive DATA connection... 19:28:33.553120 Server disconnects passive DATA connection 19:28:33.559811 Server disconnected passive DATA connection 19:28:33.560036 DATA socCMD (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/1/valgrind252 ../src/curl -q --output log/1/curl252.out --include --trace-ascii log/1/trace252 --trace-config all --trace-time -g "ftp://[::1]:46409/" > log/1/stdout252 2> log/1/stderr252 kfilt for passive data channel quits (pid 119036) 19:28:33.561120 DATA sockfilt for passive data channel quit (pid 119036) 19:28:33.561316 =====> Closed passive DATA connection 19:28:33.561645 > "226 File transfer complete[CR][LF]" 19:28:33.594393 < "QUIT" 19:28:33.594674 > "221 bye bye baby[CR][LF]" 19:28:33.595425 MAIN sockfilt said DISC 19:28:33.595681 ====> Client disconnected 19:28:33.595986 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:32.998770 ====> Client connect 19:28:32.999954 Received DATA (on stdin) 19:28:33.000089 > 160 bytes data, server => client 19:28:33.000171 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:33.000246 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:33.000307 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:33.000696 < 16 bytes data, client => server 19:28:33.000828 'USER anonymous\r\n' 19:28:33.001554 Received DATA (on stdin) 19:28:33.001659 > 33 bytes data, server => client 19:28:33.001733 '331 We are happy you popped in!\r\n' 19:28:33.002090 < 22 bytes data, client => server 19:28:33.002197 'PASS ftp@example.com\r\n' 19:28:33.002778 Received DATA (on stdin) 19:28:33.002904 > 30 bytes data, server => client 19:28:33.002974 '230 Welcome you silly person\r\n' 19:28:33.003334 < 5 bytes data, client => server 19:28:33.003439 'PWD\r\n' 19:28:33.004038 Received DATA (on stdin) 19:28:33.004150 > 30 bytes data, server => client 19:28:33.004218 '257 "/" is current directory\r\n' 19:28:33.004635 < 6 bytes data, client => server 19:28:33.004742 'EPSV\r\n' 19:28:33.013252 Received DATA (on stdin) 19:28:33.013368 > 38 bytes data, server => client 19:28:33.013440 '229 Entering Passive Mode (|||33349|)\n' 19:28:33.014181 < 8 bytes data, client => server 19:28:33.014296 'TYPE I\r\n' 19:28:33.015453 Received DATA (on stdin) 19:28:33.015556 > 33 bytes data, server => client 19:28:33.015627 '200 I modify TYPE as you wanted\r\n' 19:28:33.015992 < 21 bytes data, client => server 19:28:33.016102 'SIZE verifiedserver\r\n' 19:28:33.016622 Received DATA (on stdin) 19:28:33.016709 > 8 bytes data, server => client 19:28:33.016771 '213 18\r\n' 19:28:33.017118 < 21 bytes data, client => server 19:28:33.017220 'RETR verifiedserver\r\n' 19:28:33.017738 Received DATA (on stdin) 19:28:33.017828 > 29 bytes data, server => client 19:28:33.017893 '150 Binary junk (18 bytes).\r\n' 19:28:33.026893 Received DATA (on stdin) 19:28:33.027014 > 28 bytes data, server => client 19:28:33.027082 '226 File transfer complete\r\n' 19:28:33.059228 < 6 bytes data, client => server 19:28:33.059384 'QUIT\r\n' 19:28:33.059928 Received DATA (on stdin) 19:28:33.060034 > 18 bytes data, server => client 19:28:33.060102 '221 bye bye baby\r\n' 19:28:33.060442 ====> Client disconnect 19:28:33.060950 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:33.011517 Running IPv4 version 19:28:33.011858 Listening on port 33349 19:28:33.012058 Wrote pid 119036 to log/2/server/ftp_sockdata.pid 19:28:33.012150 Received PING (on stdin) 19:28:33.012657 Received PORT (on stdin) 19:28:33.014217 ====> Client connect 19:28:33.017961 Received DATA (on stdin) 19:28:33.018254 > 18 bytes data, server => client 19:28:33.018345 'WE ROOLZ: 116354\r\n' 19:28:33.024861 Received DISC (on stdin) 19:28:33.025004 ====> Client forcibly disconnected 19:28:33.025474 Received QUIT (on stdin) 19:28:33.025569 quits 19:28:33.025849 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd SLOWDOWN Testnum 251 === End of file server.cmd === Start of file valgrind251 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind251 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 46409 (log/1/server/ftp_ipv6_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://[::1]:46409/verifiedserver" 2>log/1/ftp_ipv6_verify.log RUN: Verifying our test ftp-ipv6 server took 0 seconds RUN: FTP-IPv6 server is PID 119038 port 46409 * pid ftp-ipv6 => 119038 119038 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/1/valgrind252 ../src/curl -q --output log/1/curl252.out --include --trace-ascii log/1/trace252 --trace-config all --trace-time -g "ftp://[::1]:46409/" > log/1/stdout252 2> log/1/stderr252 252: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind252 ../src/curl -q --output log/1/curl252.out --include --trace-ascii log/1/trace252 --trace-config all --trace-time -g "ftp://[::1]:46409/" > log/1/stdout252 2> log/1/stderr252 === End of file commands.log === Start of file ftp_ipv6_server.log 19:28:33.973484 FTP server listens on port IPv6/46409 19:28:33.974129 logged pid 119038 in log/1/server/ftp_ipv6_server.pid 19:28:33.974300 Awaiting input 19:28:34.747950 ====> Client connect 19:28:34.748766 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:34.750226 < "USER anonymous" 19:28:34.750547 > "331 We are happy you popped in![CR][LF]" 19:28:34.751440 < "PASS ftp@example.com" 19:28:34.751691 > "230 Welcome you silly person[CR][LF]" 19:28:34.752630 < "PWD" 19:28:34.752880 > "257 "/" is current directory[CR][LF]" 19:28:34.753925 < "EPSV" 19:28:34.754149 ====> Passive DATA channel requested by client 19:28:34.754266 DATA sockfilt for passive data channel starting... 19:28:34.760847 DATA sockfilt for passive data channel started (pid 119164) 19:28:34.761794 DATA sockfilt for passive data channel listens on port 41607 19:28:34.762193 > "229 Entering Passive Mode (|||41607|)[LF]" 19:28:34.762377 Client has been notified that DATA conn will be accepted on port 41607 19:28:34.763376 Client connects to port 41607 19:28:34.763623 ====> Client established passive DATA connection on port 41607 19:28:34.764215 < "TYPE I" 19:28:34.764532 > "200 I modify TYPE as you wanted[CR][LF]" 19:CMD (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/4/valgrind253 ../src/curl -q --output log/4/curl253.out --include --trace-ascii log/4/trace253 --trace-config all --trace-time -g "ftp://[::1]:45687/" -P - > log/4/stdout253 2> log/4/stderr253 28:34.765820 < "SIZE verifiedserver" 19:28:34.766161 > "213 18[CR][LF]" 19:28:34.767303 < "RETR verifiedserver" 19:28:34.767628 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:34.768197 =====> Closing passive DATA connection... 19:28:34.768411 Server disconnects passive DATA connection 19:28:34.768906 Server disconnected passive DATA connection 19:28:34.769230 DATA sockfilt for passive data channel quits (pid 119164) 19:28:34.770781 DATA sockfilt for passive data channel quit (pid 119164) 19:28:34.771033 =====> Closed passive DATA connection 19:28:34.771293 > "226 File transfer complete[CR][LF]" 19:28:34.814500 < "QUIT" 19:28:34.814766 > "221 bye bye baby[CR][LF]" 19:28:34.815659 MAIN sockfilt said DISC 19:28:34.815885 ====> Client disconnected 19:28:34.816368 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 19:28:33.437253 Running IPv6 version 19:28:33.437633 Listening on port 46409 19:28:33.437906 Wrote pid 119132 to log/1/server/ftp_ipv6_sockctrl.pid 19:28:33.438156 Wrote port 46409 to log/1/server/ftp_ipv6_server.port 19:28:33.438279 Received PING (on stdin) 19:28:34.212888 ====> Client connect 19:28:34.213953 Received DATA (on stdin) 19:28:34.214095 > 160 bytes data, server => client 19:28:34.214173 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:34.214237 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:34.214299 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:34.214753 < 16 bytes data, client => server 19:28:34.214868 'USER anonymous\r\n' 19:28:34.215776 Received DATA (on stdin) 19:28:34.215881 > 33 bytes data, server => client 19:28:34.215954 '331 We are happy you popped in!\r\n' 19:28:34.216297 < 22 bytes data, client => server 19:28:34.216403 'PASS ftp@example.com\r\n' 19:28:34.216913 Received DATA (on stdin) 19:28:34.217007 > 30 bytes data, server => client 19:28:34.217074 '230 Welcome you silly person\r\n' 19:28:34.217489 < 5 bytes data, client => server 19:28:34.217608 'PWD\r\n' 19:28:34.218105 Received DATA (on stdin) 19:28:34.218214 > 30 bytes data, server => client 19:28:34.218292 '257 "/" is current directory\r\n' 19:28:34.218744 < 6 bytes data, client => server 19:28:34.218870 'EPSV\r\n' 19:28:34.227374 Received DATA (on stdin) 19:28:34.227517 > 38 bytes data, server => client 19:28:34.227602 '229 Entering Passive Mode (|||41607|)\n' 19:28:34.228551 < 8 bytes data, client => server 19:28:34.228674 'TYPE I\r\n' 19:28:34.229750 Received DATA (on stdin) 19:28:34.229867 > 33 bytes data, server => client 19:28:34.229978 '200 I modify TYPE as you wanted\r\n' 19:28:34.230428 < 21 bytes data, client => server 19:28:34.230615 'SIZE verifiedserver\r\n' 19:28:34.231387 Received DATA (on stdin) 19:28:34.231527 > 8 bytes data, server => client 19:28:34.231615 '213 18\r\n' 19:28:34.232067 < 21 bytes data, client => server 19:28:34.232217 'RETR verifiedserver\r\n' 19:28:34.232850 Received DATA (on stdin) 19:28:34.232972 > 29 bytes data, server => client 19:28:34.233057 '150 Binary junk (18 bytes).\r\n' 19:28:34.236565 Received DATA (on stdin) 19:28:34.236694 > 28 bytes data, server => client 19:28:34.236782 '226 File transfer complete\r\n' 19:28:34.279307 < 6 bytes data, client => server 19:28:34.279460 'QUIT\r\n' 19:28:34.279984 Received DATA (on stdin) 19:28:34.280097 > 18 bytes data, server => client 19:28:34.280196 '221 bye bye baby\r\n' 19:28:34.280574 ====> Client disconnect 19:28:34.281130 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 19:28:34.225137 Running IPv6 version 19:28:34.225475 Listening on port 41607 19:28:34.225702 Wrote pid 119164 to log/1/server/ftp_ipv6_sockdata.pid 19:28:34.225807 Received PING (on stdin) 19:28:34.226415 Received PORT (on stdin) 19:28:34.228360 ====> Client connect 19:28:34.233144 Received DATA (on stdin) 19:28:34.233319 > 18 bytes data, server => client 19:28:34.233444 'WE ROOLZ: 119038\r\n' 19:28:34.233898 Received DISC (on stdin) 19:28:34.234059 ====> Client forcibly disconnected 19:28:34.234832 Received QUIT (on stdin) 19:28:34.234993 quits 19:28:34.235325 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 252 === End of file server.cmd === Start of file valgrind252 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind252 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 45687 (log/4/server/ftp_ipv6_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://[::1]:45687/verifiedserver" 2>log/4/ftp_ipv6_verify.log RUN: Verifying our test ftp-ipv6 server took 0 seconds RUN: FTP-IPv6 server is PID 119054 port 45687 * pid ftp-ipv6 => 119054 119054 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-config all --trace-time -g "ftp://[::1]:45687/" -P - > log/4/stdout253 2> log/4/stderr253 253: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time -g "ftp://[::1]:45687/" -P - > log/4/stdout253 2> log/4/stderr253 === End of file commands.log === Start of file ftp_ipv6_server.log 19:28:34.033166 FTP server listens on port IPv6/45687 19:28:34.034183 logged pid 119054 in log/4/server/ftp_ipv6_server.pid 19:28:34.034473 Awaiting input 19:28:34.807079 ====> Client connect 19:28:34.807848 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:34.809267 < "USER anonymous" 19:28:34.809658 > "331 We are happy you popped in![CR][LF]" 19:28:34.810653 < "PASS ftp@example.com" 19:28:34.810902 > "230 Welcome you silly person[CR][LF]" 19:28:34.811758 < "PWD" 19:28:34.812006 > "257 "/" is current directory[CR][LF]" 19:28:34CMD (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/valgrind254 ../src/curl -q --output log/3/curl254.out --include --trace-ascii log/3/trace254 --trace-config all --trace-time -g "ftp://[::1]:38947/" --disable-epsv > log/3/stdout254 2> log/3/stderr254 .812884 < "EPSV" 19:28:34.813071 ====> Passive DATA channel requested by client 19:28:34.813190 DATA sockfilt for passive data channel starting... 19:28:34.823614 DATA sockfilt for passive data channel started (pid 119175) 19:28:34.824335 DATA sockfilt for passive data channel listens on port 46425 19:28:34.824647 > "229 Entering Passive Mode (|||46425|)[LF]" 19:28:34.824818 Client has been notified that DATA conn will be accepted on port 46425 19:28:34.826308 Client connects to port 46425 19:28:34.826563 ====> Client established passive DATA connection on port 46425 19:28:34.827092 < "TYPE I" 19:28:34.827355 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:34.828440 < "SIZE verifiedserver" 19:28:34.828749 > "213 18[CR][LF]" 19:28:34.829874 < "RETR verifiedserver" 19:28:34.830178 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:34.830665 =====> Closing passive DATA connection... 19:28:34.830875 Server disconnects passive DATA connection 19:28:34.831604 Server disconnected passive DATA connection 19:28:34.831820 DATA sockfilt for passive data channel quits (pid 119175) 19:28:34.833003 DATA sockfilt for passive data channel quit (pid 119175) 19:28:34.833206 =====> Closed passive DATA connection 19:28:34.833509 > "226 File transfer complete[CR][LF]" 19:28:34.834644 < "QUIT" 19:28:34.834865 > "221 bye bye baby[CR][LF]" 19:28:34.835583 MAIN sockfilt said DISC 19:28:34.835842 ====> Client disconnected 19:28:34.836153 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 19:28:34.496176 Running IPv6 version 19:28:34.496587 Listening on port 45687 19:28:34.496964 Wrote pid 119137 to log/4/server/ftp_ipv6_sockctrl.pid 19:28:34.497319 Wrote port 45687 to log/4/server/ftp_ipv6_server.port 19:28:34.497525 Received PING (on stdin) 19:28:35.271973 ====> Client connect 19:28:35.273033 Received DATA (on stdin) 19:28:35.273154 > 160 bytes data, server => client 19:28:35.273247 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:35.273333 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:35.273409 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:35.273858 < 16 bytes data, client => server 19:28:35.273982 'USER anonymous\r\n' 19:28:35.274872 Received DATA (on stdin) 19:28:35.274999 > 33 bytes data, server => client 19:28:35.275081 '331 We are happy you popped in!\r\n' 19:28:35.275483 < 22 bytes data, client => server 19:28:35.275598 'PASS ftp@example.com\r\n' 19:28:35.276125 Received DATA (on stdin) 19:28:35.276215 > 30 bytes data, server => client 19:28:35.276286 '230 Welcome you silly person\r\n' 19:28:35.276649 < 5 bytes data, client => server 19:28:35.276760 'PWD\r\n' 19:28:35.277225 Received DATA (on stdin) 19:28:35.277315 > 30 bytes data, server => client 19:28:35.277386 '257 "/" is current directory\r\n' 19:28:35.277762 < 6 bytes data, client => server 19:28:35.277872 'EPSV\r\n' 19:28:35.289874 Received DATA (on stdin) 19:28:35.290019 > 38 bytes data, server => client 19:28:35.290114 '229 Entering Passive Mode (|||46425|)\n' 19:28:35.291228 < 8 bytes data, client => server 19:28:35.291400 'TYPE I\r\n' 19:28:35.292591 Received DATA (on stdin) 19:28:35.292726 > 33 bytes data, server => client 19:28:35.292820 '200 I modify TYPE as you wanted\r\n' 19:28:35.293291 < 21 bytes data, client => server 19:28:35.293424 'SIZE verifiedserver\r\n' 19:28:35.293976 Received DATA (on stdin) 19:28:35.294103 > 8 bytes data, server => client 19:28:35.294186 '213 18\r\n' 19:28:35.294601 < 21 bytes data, client => server 19:28:35.294839 'RETR verifiedserver\r\n' 19:28:35.295410 Received DATA (on stdin) 19:28:35.295518 > 29 bytes data, server => client 19:28:35.295607 '150 Binary junk (18 bytes).\r\n' 19:28:35.298729 Received DATA (on stdin) 19:28:35.298873 > 28 bytes data, server => client 19:28:35.298965 '226 File transfer complete\r\n' 19:28:35.299510 < 6 bytes data, client => server 19:28:35.299636 'QUIT\r\n' 19:28:35.300094 Received DATA (on stdin) 19:28:35.300195 > 18 bytes data, server => client 19:28:35.300272 '221 bye bye baby\r\n' 19:28:35.300588 ====> Client disconnect 19:28:35.301098 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 19:28:34.287864 Running IPv6 version 19:28:34.288266 Listening on port 46425 19:28:34.288509 Wrote pid 119175 to log/4/server/ftp_ipv6_sockdata.pid 19:28:34.288624 Received PING (on stdin) 19:28:34.289187 Received PORT (on stdin) 19:28:34.291328 ====> Client connect 19:28:34.295641 Received DATA (on stdin) 19:28:34.295775 > 18 bytes data, server => client 19:28:34.296089 'WE ROOLZ: 119054\r\n' 19:28:34.296608 Received DISC (on stdin) 19:28:34.296768 ====> Client forcibly disconnected 19:28:34.297232 Received QUIT (on stdin) 19:28:34.297336 quits 19:28:34.297620 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 253 === End of file server.cmd === Start of file valgrind253 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind253 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/ftp_ipv6_server.pid" --logfile "log/3/ftp_ipv6_server.log" --logdir "log/3" --portfile "log/3/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 38947 (log/3/server/ftp_ipv6_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://[::1]:38947/verifiedserver" 2>log/3/ftp_ipv6_verify.log RUN: Verifying our test ftp-ipv6 server took 0 seconds RUN: FTP-IPv6 server is PID 119140 port 38947 * pid ftp-ipv6 => 119140 119140 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/3/valgrind254 ../src/curl -q --output log/3/curl254.out --include --trace-ascii log/3/trace254 --trace-config all --trace-time -g "ftp://[::1]:38947/" --disable-epsv > log/3/stdout254 2> log/3/stderr254 254: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind254 ../src/curl -q --output log/3/curl254.out --include --trace-ascii log/3/trace254 --trace-config all --trace-time -g "ftp://[::1]:38947/" --disable-epsv > log/3/stdout254 2> log/3/stderr254 === End of file commands.log === Start of file ftp_ipv6CMD (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/2/valgrind255 ../src/curl -q --output log/2/curl255.out --include --trace-ascii log/2/trace255 --trace-config all --trace-time -g "ftp://[::1]:44033/" -P - --disable-eprt > log/2/stdout255 2> log/2/stderr255 _server.log 19:28:34.373857 FTP server listens on port IPv6/38947 19:28:34.374501 logged pid 119140 in log/3/server/ftp_ipv6_server.pid 19:28:34.374668 Awaiting input 19:28:35.173870 ====> Client connect 19:28:35.174604 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:35.176102 < "USER anonymous" 19:28:35.176458 > "331 We are happy you popped in![CR][LF]" 19:28:35.177677 < "PASS ftp@example.com" 19:28:35.178073 > "230 Welcome you silly person[CR][LF]" 19:28:35.179142 < "PWD" 19:28:35.179506 > "257 "/" is current directory[CR][LF]" 19:28:35.180567 < "EPSV" 19:28:35.180789 ====> Passive DATA channel requested by client 19:28:35.180929 DATA sockfilt for passive data channel starting... 19:28:35.189188 DATA sockfilt for passive data channel started (pid 119293) 19:28:35.190096 DATA sockfilt for passive data channel listens on port 41845 19:28:35.190465 > "229 Entering Passive Mode (|||41845|)[LF]" 19:28:35.190652 Client has been notified that DATA conn will be accepted on port 41845 19:28:35.193831 Client connects to port 41845 19:28:35.194100 ====> Client established passive DATA connection on port 41845 19:28:35.194656 < "TYPE I" 19:28:35.194945 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:35.195929 < "SIZE verifiedserver" 19:28:35.196255 > "213 18[CR][LF]" 19:28:35.197309 < "RETR verifiedserver" 19:28:35.197721 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:35.198233 =====> Closing passive DATA connection... 19:28:35.198444 Server disconnects passive DATA connection 19:28:35.199200 Server disconnected passive DATA connection 19:28:35.199456 DATA sockfilt for passive data channel quits (pid 119293) 19:28:35.200663 DATA sockfilt for passive data channel quit (pid 119293) 19:28:35.200895 =====> Closed passive DATA connection 19:28:35.201115 > "226 File transfer complete[CR][LF]" 19:28:35.242540 < "QUIT" 19:28:35.242861 > "221 bye bye baby[CR][LF]" 19:28:35.243684 MAIN sockfilt said DISC 19:28:35.243954 ====> Client disconnected 19:28:35.244313 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 19:28:34.837758 Running IPv6 version 19:28:34.838107 Listening on port 38947 19:28:34.838343 Wrote pid 119142 to log/3/server/ftp_ipv6_sockctrl.pid 19:28:34.838530 Wrote port 38947 to log/3/server/ftp_ipv6_server.port 19:28:34.838621 Received PING (on stdin) 19:28:35.638825 ====> Client connect 19:28:35.639800 Received DATA (on stdin) 19:28:35.639942 > 160 bytes data, server => client 19:28:35.640031 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:35.640110 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:35.640175 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:35.640609 < 16 bytes data, client => server 19:28:35.640766 'USER anonymous\r\n' 19:28:35.641679 Received DATA (on stdin) 19:28:35.641820 > 33 bytes data, server => client 19:28:35.641913 '331 We are happy you popped in!\r\n' 19:28:35.642342 < 22 bytes data, client => server 19:28:35.642479 'PASS ftp@example.com\r\n' 19:28:35.643282 Received DATA (on stdin) 19:28:35.643428 > 30 bytes data, server => client 19:28:35.643513 '230 Welcome you silly person\r\n' 19:28:35.643919 < 5 bytes data, client => server 19:28:35.644042 'PWD\r\n' 19:28:35.644727 Received DATA (on stdin) 19:28:35.644854 > 30 bytes data, server => client 19:28:35.644930 '257 "/" is current directory\r\n' 19:28:35.645363 < 6 bytes data, client => server 19:28:35.645520 'EPSV\r\n' 19:28:35.655663 Received DATA (on stdin) 19:28:35.655800 > 38 bytes data, server => client 19:28:35.655893 '229 Entering Passive Mode (|||41845|)\n' 19:28:35.656765 < 8 bytes data, client => server 19:28:35.656884 'TYPE I\r\n' 19:28:35.660155 Received DATA (on stdin) 19:28:35.660268 > 33 bytes data, server => client 19:28:35.660337 '200 I modify TYPE as you wanted\r\n' 19:28:35.660746 < 21 bytes data, client => server 19:28:35.660857 'SIZE verifiedserver\r\n' 19:28:35.661467 Received DATA (on stdin) 19:28:35.661579 > 8 bytes data, server => client 19:28:35.661648 '213 18\r\n' 19:28:35.662063 < 21 bytes data, client => server 19:28:35.662186 'RETR verifiedserver\r\n' 19:28:35.662926 Received DATA (on stdin) 19:28:35.663045 > 29 bytes data, server => client 19:28:35.663124 '150 Binary junk (18 bytes).\r\n' 19:28:35.666324 Received DATA (on stdin) 19:28:35.666434 > 28 bytes data, server => client 19:28:35.666519 '226 File transfer complete\r\n' 19:28:35.707306 < 6 bytes data, client => server 19:28:35.707454 'QUIT\r\n' 19:28:35.708076 Received DATA (on stdin) 19:28:35.708192 > 18 bytes data, server => client 19:28:35.708266 '221 bye bye baby\r\n' 19:28:35.708639 ====> Client disconnect 19:28:35.709191 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 19:28:35.653454 Running IPv6 version 19:28:35.653829 Listening on port 41845 19:28:35.654068 Wrote pid 119293 to log/3/server/ftp_ipv6_sockdata.pid 19:28:35.654186 Received PING (on stdin) 19:28:35.654885 Received PORT (on stdin) 19:28:35.658809 ====> Client connect 19:28:35.663187 Received DATA (on stdin) 19:28:35.663526 > 18 bytes data, server => client 19:28:35.663629 'WE ROOLZ: 119140\r\n' 19:28:35.664172 Received DISC (on stdin) 19:28:35.664334 ====> Client forcibly disconnected 19:28:35.664871 Received QUIT (on stdin) 19:28:35.664984 quits 19:28:35.665275 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 254 === End of file server.cmd === Start of file valgrind254 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind254 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/2/server/ftp_ipv6_server.pid" --logfile "log/2/ftp_ipv6_server.log" --logdir "log/2" --portfile "log/2/server/ftp_ipv6_server.port" --srcdir "/build/curl/src/curl/tests" --proto ftp --ipv6 --port 0 --addr "[::1]" PINGPONG runs on port 44033 (log/2/server/ftp_ipv6_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "ftp://[::1]:44033/verifiedserver" 2>log/2/ftp_ipv6_verify.log RUN: Verifying our test ftp-ipv6 server took 0 seconds RUN: FTP-IPv6 server is PID 119141 port 44033 * pid ftp-ipv6 => 119141 119141 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/2/valgrind255 ../src/curl -q --output log/2/curl255.out --include --trace-ascii log/2/trace255 --trace-config all --trace-time -g "ftp://[::CMD (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/1/valgrind256 ../src/curl -q --include --trace-ascii log/1/trace256 --trace-config all --trace-time -x http://127.0.0.1:41477 http://127.0.0.1:41477/want/256 -C - --no-include -o log/1/fewl256.txt -U daniel:stenberg > log/1/stdout256 2> log/1/stderr256 1]:44033/" -P - --disable-eprt > log/2/stdout255 2> log/2/stderr255 255: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind255 ../src/curl -q --output log/2/curl255.out --include --trace-ascii log/2/trace255 --trace-config all --trace-time -g "ftp://[::1]:44033/" -P - --disable-eprt > log/2/stdout255 2> log/2/stderr255 === End of file commands.log === Start of file ftp_ipv6_server.log 19:28:34.406181 FTP server listens on port IPv6/44033 19:28:34.406809 logged pid 119141 in log/2/server/ftp_ipv6_server.pid 19:28:34.406976 Awaiting input 19:28:35.229709 ====> Client connect 19:28:35.231022 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:35.232917 < "USER anonymous" 19:28:35.233593 > "331 We are happy you popped in![CR][LF]" 19:28:35.234561 < "PASS ftp@example.com" 19:28:35.234804 > "230 Welcome you silly person[CR][LF]" 19:28:35.235732 < "PWD" 19:28:35.236050 > "257 "/" is current directory[CR][LF]" 19:28:35.237031 < "EPSV" 19:28:35.237356 ====> Passive DATA channel requested by client 19:28:35.237644 DATA sockfilt for passive data channel starting... 19:28:35.246933 DATA sockfilt for passive data channel started (pid 119302) 19:28:35.269956 DATA sockfilt for passive data channel listens on port 45203 19:28:35.270346 > "229 Entering Passive Mode (|||45203|)[LF]" 19:28:35.270524 Client has been notified that DATA conn will be accepted on port 45203 19:28:35.272705 Client connects to port 45203 19:28:35.273146 ====> Client established passive DATA connection on port 45203 19:28:35.274020 < "TYPE I" 19:28:35.274587 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:35.276819 < "SIZE verifiedserver" 19:28:35.277153 > "213 18[CR][LF]" 19:28:35.278315 < "RETR verifiedserver" 19:28:35.278636 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:35.279087 =====> Closing passive DATA connection... 19:28:35.279285 Server disconnects passive DATA connection 19:28:35.280044 Server disconnected passive DATA connection 19:28:35.280240 DATA sockfilt for passive data channel quits (pid 119302) 19:28:35.286072 DATA sockfilt for passive data channel quit (pid 119302) 19:28:35.286316 =====> Closed passive DATA connection 19:28:35.286558 > "226 File transfer complete[CR][LF]" 19:28:35.322820 < "QUIT" 19:28:35.323095 > "221 bye bye baby[CR][LF]" 19:28:35.326005 MAIN sockfilt said DISC 19:28:35.326267 ====> Client disconnected 19:28:35.326577 Awaiting input === End of file ftp_ipv6_server.log === Start of file ftp_ipv6_sockctrl.log 19:28:34.869736 Running IPv6 version 19:28:34.870170 Listening on port 44033 19:28:34.870470 Wrote pid 119143 to log/2/server/ftp_ipv6_sockctrl.pid 19:28:34.870829 Wrote port 44033 to log/2/server/ftp_ipv6_server.port 19:28:34.870952 Received PING (on stdin) 19:28:35.694551 ====> Client connect 19:28:35.696200 Received DATA (on stdin) 19:28:35.696341 > 160 bytes data, server => client 19:28:35.696508 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:35.696627 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:35.696689 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:35.697381 < 16 bytes data, client => server 19:28:35.697507 'USER anonymous\r\n' 19:28:35.698797 Received DATA (on stdin) 19:28:35.698927 > 33 bytes data, server => client 19:28:35.699000 '331 We are happy you popped in!\r\n' 19:28:35.699391 < 22 bytes data, client => server 19:28:35.699509 'PASS ftp@example.com\r\n' 19:28:35.700019 Received DATA (on stdin) 19:28:35.700120 > 30 bytes data, server => client 19:28:35.700198 '230 Welcome you silly person\r\n' 19:28:35.700568 < 5 bytes data, client => server 19:28:35.700682 'PWD\r\n' 19:28:35.701266 Received DATA (on stdin) 19:28:35.701381 > 30 bytes data, server => client 19:28:35.701457 '257 "/" is current directory\r\n' 19:28:35.701851 < 6 bytes data, client => server 19:28:35.701971 'EPSV\r\n' 19:28:35.735557 Received DATA (on stdin) 19:28:35.735701 > 38 bytes data, server => client 19:28:35.735791 '229 Entering Passive Mode (|||45203|)\n' 19:28:35.737304 < 8 bytes data, client => server 19:28:35.737492 'TYPE I\r\n' 19:28:35.739798 Received DATA (on stdin) 19:28:35.739918 > 33 bytes data, server => client 19:28:35.739998 '200 I modify TYPE as you wanted\r\n' 19:28:35.740421 < 21 bytes data, client => server 19:28:35.740547 'SIZE verifiedserver\r\n' 19:28:35.742383 Received DATA (on stdin) 19:28:35.742507 > 8 bytes data, server => client 19:28:35.742585 '213 18\r\n' 19:28:35.743116 < 21 bytes data, client => server 19:28:35.743246 'RETR verifiedserver\r\n' 19:28:35.743860 Received DATA (on stdin) 19:28:35.743977 > 29 bytes data, server => client 19:28:35.744080 '150 Binary junk (18 bytes).\r\n' 19:28:35.751783 Received DATA (on stdin) 19:28:35.751917 > 28 bytes data, server => client 19:28:35.752008 '226 File transfer complete\r\n' 19:28:35.787629 < 6 bytes data, client => server 19:28:35.787772 'QUIT\r\n' 19:28:35.789443 Received DATA (on stdin) 19:28:35.789595 > 18 bytes data, server => client 19:28:35.789675 '221 bye bye baby\r\n' 19:28:35.790945 ====> Client disconnect 19:28:35.792001 Received ACKD (on stdin) === End of file ftp_ipv6_sockctrl.log === Start of file ftp_ipv6_sockdata.log 19:28:35.710525 Running IPv6 version 19:28:35.711010 Listening on port 45203 19:28:35.711275 Wrote pid 119302 to log/2/server/ftp_ipv6_sockdata.pid 19:28:35.711894 Received PING (on stdin) 19:28:35.734715 Received PORT (on stdin) 19:28:35.737718 ====> Client connect 19:28:35.744432 Received DATA (on stdin) 19:28:35.744554 > 18 bytes data, server => client 19:28:35.744618 'WE ROOLZ: 119141\r\n' 19:28:35.745068 Received DISC (on stdin) 19:28:35.745201 ====> Client forcibly disconnected 19:28:35.748936 Received QUIT (on stdin) 19:28:35.749092 quits 19:28:35.749392 ============> sockfilt quits === End of file ftp_ipv6_sockdata.log === Start of file server.cmd Testnum 255 === End of file server.cmd === Start of file valgrind255 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind256 ../src/curl -q --include CMD (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/4/valgrind257 ../src/curl -q --output log/4/curl257.out --include --trace-ascii log/4/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:43669 --netrc-optional --netrc-file log/4/netrc257 > log/4/stdout257 2> log/4/stderr257 CMD (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/1/valgrind260 ../src/curl -q --output log/1/curl260.out --include --trace-ascii log/1/trace260 --trace-config all --trace-time "http://127.0.0.1:41477?260" > log/1/stdout260 2> log/1/stderr260 --trace-ascii log/1/trace256 --trace-config all --trace-time -x http://127.0.0.1:41477 http://127.0.0.1:41477/want/256 -C - --no-include -o log/1/fewl256.txt -U daniel:stenberg > log/1/stdout256 2> log/1/stderr256 256: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind256 ../src/curl -q --include --trace-ascii log/1/trace256 --trace-config all --trace-time -x http://127.0.0.1:41477 http://127.0.0.1:41477/want/256 -C - --no-include -o log/1/fewl256.txt -U daniel:stenberg > log/1/stdout256 2> log/1/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 19:28:35.838493 ====> Client connect 19:28:35.838856 accept_connection 3 returned 4 19:28:35.839011 accept_connection 3 returned 0 19:28:35.839522 Read 93 bytes 19:28:35.839648 Process 93 bytes request 19:28:35.839721 Got request: GET /verifiedserver HTTP/1.1 19:28:35.839785 Are-we-friendly question received 19:28:35.839948 Wrote request (93 bytes) input to log/1/server.input 19:28:35.840122 Identifying ourselves as friends 19:28:35.840576 Response sent (57 bytes) and written to log/1/server.response 19:28:35.840674 special request received, no persistency 19:28:35.840736 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 256 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind256 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind257 ../src/curl -q --output log/4/curl257.out --include --trace-ascii log/4/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:43669 --netrc-optional --netrc-file log/4/netrc257 > log/4/stdout257 2> log/4/stderr257 257: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind257 ../src/curl -q --output log/4/curl257.out --include --trace-ascii log/4/trace257 --trace-config all --trace-time http://supersite.com/want/257 -L -x http://127.0.0.1:43669 --netrc-optional --netrc-file log/4/netrc257 > log/4/stdout257 2> log/4/stderr257 === End of file commands.log === Start of file http_server.log 19:28:35.873364 ====> Client connect 19:28:35.873605 accept_connection 3 returned 4 19:28:35.873732 accept_connection 3 returned 0 19:28:35.873836 Read 93 bytes 19:28:35.873905 Process 93 bytes request 19:28:35.873978 Got request: GET /verifiedserver HTTP/1.1 19:28:35.874036 Are-we-friendly question received 19:28:35.874196 Wrote request (93 bytes) input to log/4/server.input 19:28:35.874352 Identifying ourselves as friends 19:28:35.875006 Response sent (57 bytes) and written to log/4/server.response 19:28:35.875109 special request received, no persistency 19:28:35.875219 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind257 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind257 test 0260...[HTTP GET URL without slash but with questionmark] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-filCMD (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/valgrind258 ../src/curl -q --output log/3/curl258.out --include --trace-ascii log/3/trace258 --trace-config all --trace-time -x http://127.0.0.1:37525 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/3/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/3/stdout258 2> log/3/stderr258 CMD (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/2/valgrind259 ../src/curl -q --output log/2/curl259.out --include --trace-ascii log/2/trace259 --trace-config all --trace-time -x http://127.0.0.1:39599 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/2/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/2/stdout259 2> log/2/stderr259 e=log/1/valgrind260 ../src/curl -q --output log/1/curl260.out --include --trace-ascii log/1/trace260 --trace-config all --trace-time "http://127.0.0.1:41477?260" > log/1/stdout260 2> log/1/stderr260 260: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind260 ../src/curl -q --output log/1/curl260.out --include --trace-ascii log/1/trace260 --trace-config all --trace-time "http://127.0.0.1:41477?260" > log/1/stdout260 2> log/1/stderr260 === End of file commands.log === Start of file http_server.log 19:28:36.498329 ====> Client connect 19:28:36.498568 accept_connection 3 returned 4 19:28:36.498772 accept_connection 3 returned 0 19:28:36.498888 Read 93 bytes 19:28:36.498966 Process 93 bytes request 19:28:36.499041 Got request: GET /verifiedserver HTTP/1.1 19:28:36.499104 Are-we-friendly question received 19:28:36.499264 Wrote request (93 bytes) input to log/1/server.input 19:28:36.499418 Identifying ourselves as friends 19:28:36.499921 Response sent (57 bytes) and written to log/1/server.response 19:28:36.500013 special request received, no persistency 19:28:36.500072 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 260 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind260 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind260 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/3/valgrind258 ../src/curl -q --output log/3/curl258.out --include --trace-ascii log/3/trace258 --trace-config all --trace-time -x http://127.0.0.1:37525 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/3/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/3/stdout258 2> log/3/stderr258 258: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind258 ../src/curl -q --output log/3/curl258.out --include --trace-ascii log/3/trace258 --trace-config all --trace-time -x http://127.0.0.1:37525 http://remotehost:54321/we/want/258 -F name=daniel -F tool=curl -F file=@log/3/test258.txt -H "Expect:" -U uuuser:pppassword --proxy-anyauth > log/3/stdout258 2> log/3/stderr258 === End of file commands.log === Start of file http_server.log 19:28:35.359246 ====> Client connect 19:28:35.359480 accept_connection 3 returned 4 19:28:35.359597 accept_connection 3 returned 0 19:28:35.359700 Read 93 bytes 19:28:35.359765 Process 93 bytes request 19:28:35.359832 Got request: GET /verifiedserver HTTP/1.1 19:28:35.359896 Are-we-friendly question received 19:28:35.360046 Wrote request (93 bytes) input to log/3/server.input 19:28:35.360194 Identifying ourselves as friends 19:28:35.360708 Response sent (57 bytes) and written to log/3/server.response 19:28:35.360809 special request received, no persistency 19:28:35.360877 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 258 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file test258.txt foo- This is a moo- bar === End of file test258.txt === Start of file valgrind258 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind258 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/2/valgrind259 ../src/curl -q --output log/2/curl259.out --include --traceCMD (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/4/valgrind261 ../src/curl -q --output log/4/curl261.out --include --trace-ascii log/4/trace261 --trace-config all --trace-time ftp://127.0.0.1:40809/261 > log/4/stdout261 2> log/4/stderr261 -ascii log/2/trace259 --trace-config all --trace-time -x http://127.0.0.1:39599 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/2/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/2/stdout259 2> log/2/stderr259 259: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind259 ../src/curl -q --output log/2/curl259.out --include --trace-ascii log/2/trace259 --trace-config all --trace-time -x http://127.0.0.1:39599 http://remotehost:54321/we/want/259 -F name=daniel -F tool=curl -F file=@log/2/test259.txt -U uuuser:pppassword --proxy-anyauth -H "Expect: 100-continue" > log/2/stdout259 2> log/2/stderr259 === End of file commands.log === Start of file http_server.log 19:28:36.472491 ====> Client connect 19:28:36.472718 accept_connection 3 returned 4 19:28:36.472845 accept_connection 3 returned 0 19:28:36.472994 Read 93 bytes 19:28:36.473134 Process 93 bytes request 19:28:36.473237 Got request: GET /verifiedserver HTTP/1.1 19:28:36.473312 Are-we-friendly question received 19:28:36.473478 Wrote request (93 bytes) input to log/2/server.input 19:28:36.473654 Identifying ourselves as friends 19:28:36.474375 Response sent (57 bytes) and written to log/2/server.response 19:28:36.474500 special request received, no persistency 19:28:36.474569 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 259 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file test259.txt foo- This is a moo- bar === End of file test259.txt === Start of file valgrind259 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind259 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-config all --trace-time ftp://127.0.0.1:40809/261 > log/4/stdout261 2> log/4/stderr261 261: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:40809/261 > log/4/stdout261 2> log/4/stderr261 === End of file commands.log === Start of file ftp_server.log 19:28:36.146692 ====> Client connect 19:28:36.147519 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:36.151232 < "USER anonymous" 19:28:36.151533 > "331 We are happy you popped in![CR][LF]" 19:28:36.154149 < "PASS ftp@example.com" 19:28:36.154467 > "230 Welcome you silly person[CR][LF]" 19:28:36.155983 < "PWD" 19:28:36.156275 > "257 "/" is current directory[CR][LF]" 19:28:36.157869 < "EPSV" 19:28:36.158101 ====> Passive DATA channel requested by client 19:28:36.158271 DATA sockfilt for passive data channel starting... 19:28:36.170454 DATA sockfilt for passive data channel started (pid 119617) 19:28:36.171723 DATA sockfilt for passive data channel listens on port 37005 19:28:36.173616 > "229 Entering Passive Mode (|||37005|)[LF]" 19:28:36.173907 Client has been notified that DATA conn will be accepted on port 37005 19:28:36.178512 Client connects to port 37005 19:28:36.178737 ====> Client established passive DATA connection on port 37005 19:28:36.179404 < "TYPE I" 19:28:36.179734 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:36.180800 < "SIZE verifiedserver" 19:28:36.181156 > "213 18[CR][LF]" 19:28:36.182292 < "RETR verifiedserver" 19:28:36.182678 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:36.183292 =====> Closing passive DATA connection... 19:28:36.183491 Server disconnects passive DATA connection 19:28:36.184529 Server disconnected passive DATA connection 19:28:36.184760 DATA sockfilt for passive data channel quits (pid 119617) 19:28:36.185919 DATA sockfilt for passive data channel quit (pid 119617) 19:28:36.186138 =====> Closed passive DATA connection 19:28:36.186333 > "226 File transfer complete[CR][LF]" 19:28:36.226809 < "QUIT" 19:28:36.227288 > "221 bye bye baby[CR][LF]" 19:28:36.228436 MAIN sockfilt said DISC 19:28:36.228748 ====> Client disconnected 19:28:36.229152 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:35.611489 ====> Client connect 19:28:35.612685 Received DATA (on stdin) 19:28:35.612816 > 160 bytes data, server => client 19:28:35.612910 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:35.612991 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:35.613066 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:35.615617 < 16 bytes data, client => server 19:28:35.615764 'USER anonymous\r\n' 19:28:35.617865 Received DATA (on stdin) 19:28:35.618019 > 33 bytes data, server => client 19:28:35.618103 '331 We are happy you popped in!\r\n' 19:28:35.618541 < 22 bytes data, client => server 19:28:35.618787 'PASS ftp@example.com\r\n' 19:28:35.619923 Received DATA (on stdin) 19:28:35.620057 > 30 bytes data, server => client 19:28:35.620133 '230 Welcome you silly person\r\n' 19:28:35.620557 < 5 bytes data, client => server 19:28:35.620688 'PWD\r\n' 19:28:35.621700 Received DATA (on stdin) 19:28:35.621811 > 30 bytes data, server => client 19:28:35.621892 '257 "/" is current directory\r\n' 19:28:35.622322 < 6 bytes data, client => server 19:28:3CMD (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/1/valgrind262 ../src/curl -q --output log/1/curl262.out --include --trace-ascii log/1/trace262 --trace-config all --trace-time http://127.0.0.1:41477/262 > log/1/stdout262 2> log/1/stderr262 CMD (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/valgrind263 ../src/curl -q --output log/3/curl263.out --include --trace-ascii log/3/trace263 --trace-config all --trace-time -g -x "http://[::1]:46711" http://veryveryremotesite.com/263 > log/3/stdout263 2> log/3/stderr263 5.622450 'EPSV\r\n' 19:28:35.637252 Received DATA (on stdin) 19:28:35.637395 > 38 bytes data, server => client 19:28:35.642752 '229 Entering Passive Mode (|||37005|)\n' 19:28:35.643631 < 8 bytes data, client => server 19:28:35.643737 'TYPE I\r\n' 19:28:35.644919 Received DATA (on stdin) 19:28:35.645060 > 33 bytes data, server => client 19:28:35.645148 '200 I modify TYPE as you wanted\r\n' 19:28:35.645561 < 21 bytes data, client => server 19:28:35.645693 'SIZE verifiedserver\r\n' 19:28:35.646349 Received DATA (on stdin) 19:28:35.646462 > 8 bytes data, server => client 19:28:35.646529 '213 18\r\n' 19:28:35.647076 < 21 bytes data, client => server 19:28:35.647209 'RETR verifiedserver\r\n' 19:28:35.647862 Received DATA (on stdin) 19:28:35.648061 > 29 bytes data, server => client 19:28:35.648149 '150 Binary junk (18 bytes).\r\n' 19:28:35.651537 Received DATA (on stdin) 19:28:35.651651 > 28 bytes data, server => client 19:28:35.651729 '226 File transfer complete\r\n' 19:28:35.691394 < 6 bytes data, client => server 19:28:35.691577 'QUIT\r\n' 19:28:35.692469 Received DATA (on stdin) 19:28:35.692628 > 18 bytes data, server => client 19:28:35.692780 '221 bye bye baby\r\n' 19:28:35.693278 ====> Client disconnect 19:28:35.694781 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:36.629911 Running IPv4 version 19:28:36.630290 Listening on port 37005 19:28:36.630565 Wrote pid 119617 to log/4/server/ftp_sockdata.pid 19:28:36.633882 Received PING (on stdin) 19:28:36.636001 Received PORT (on stdin) 19:28:36.643469 ====> Client connect 19:28:36.648897 Received DATA (on stdin) 19:28:36.649016 > 18 bytes data, server => client 19:28:36.649089 'WE ROOLZ: 109451\r\n' 19:28:36.649318 Received DISC (on stdin) 19:28:36.649439 ====> Client forcibly disconnected 19:28:36.650156 Received QUIT (on stdin) 19:28:36.650246 quits 19:28:36.650499 ============> 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 valgrind261 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind261 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/1/valgrind262 ../src/curl -q --output log/1/curl262.out --include --trace-ascii log/1/trace262 --trace-config all --trace-time http://127.0.0.1:41477/262 > log/1/stdout262 2> log/1/stderr262 262: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind262 ../src/curl -q --output log/1/curl262.out --include --trace-ascii log/1/trace262 --trace-config all --trace-time http://127.0.0.1:41477/262 > log/1/stdout262 2> log/1/stderr262 === End of file commands.log === Start of file http_server.log 19:28:37.102861 ====> Client connect 19:28:37.103071 accept_connection 3 returned 4 19:28:37.103179 accept_connection 3 returned 0 19:28:37.103274 Read 93 bytes 19:28:37.103335 Process 93 bytes request 19:28:37.103397 Got request: GET /verifiedserver HTTP/1.1 19:28:37.103452 Are-we-friendly question received 19:28:37.103588 Wrote request (93 bytes) input to log/1/server.input 19:28:37.103721 Identifying ourselves as friends 19:28:37.104159 Response sent (57 bytes) and written to log/1/server.response 19:28:37.104247 special request received, no persistency 19:28:37.104297 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 262 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind262 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind262 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/3/valgrind263 ../src/curl -q --output log/3/curl263.out --include --trace-ascii log/3/trace263 --trace-config all --trace-time -g -x "http://[::1]:46711" http://veryveryremotesite.com/263 > log/3/stdout263 2> log/3/stderr263 263: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 263 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppreCMD (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/2/valgrind264 ../src/curl -q --output log/2/curl264.out --include --trace-ascii log/2/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:39599 > log/2/stdout264 2> log/2/stderr264 CMD (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/4/valgrind265 ../src/curl -q --output log/4/curl265.out --include --trace-ascii log/4/trace265 --trace-config all --trace-time http://test.remote.example.com.265:43669/path/2650002 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/4/stdout265 2> log/4/stderr265 ssions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/3/valgrind263 ../src/curl -q --output log/3/curl263.out --include --trace-ascii log/3/trace263 --trace-config all --trace-time -g -x "http://[::1]:46711" http://veryveryremotesite.com/263 > log/3/stdout263 2> log/3/stderr263 === End of file commands.log === Start of file http_ipv6_server.log 19:28:37.209255 ====> Client connect 19:28:37.209484 accept_connection 3 returned 4 19:28:37.209593 accept_connection 3 returned 0 19:28:37.210059 Read 89 bytes 19:28:37.210178 Process 89 bytes request 19:28:37.210253 Got request: GET /verifiedserver HTTP/1.1 19:28:37.210313 Are-we-friendly question received 19:28:37.210479 Wrote request (89 bytes) input to log/3/server.input 19:28:37.210760 Identifying ourselves as friends 19:28:37.211226 Response sent (57 bytes) and written to log/3/server.response 19:28:37.211318 special request received, no persistency 19:28:37.211372 ====> Client disconnect 0 === End of file http_ipv6_server.log === Start of file http_ipv6_verify.log * Trying [::1]:46711... * Connected to ::1 (::1) port 46711 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: [::1]:46711 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host ::1 left intact === End of file http_ipv6_verify.log === Start of file http_ipv6_verify.out WE ROOLZ: 118329 === End of file http_ipv6_verify.out === Start of file server.cmd Testnum 263 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 118329 === End of file server.response === Start of file valgrind263 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind264 ../src/curl -q --output log/2/curl264.out --include --trace-ascii log/2/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:39599 > log/2/stdout264 2> log/2/stderr264 264: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind264 ../src/curl -q --output log/2/curl264.out --include --trace-ascii log/2/trace264 --trace-config all --trace-time http://we.want.that.site.com/264 -x http://f%61ke:user@127.0.0.1:39599 > log/2/stdout264 2> log/2/stderr264 === End of file commands.log === Start of file http_server.log 19:28:37.242255 ====> Client connect 19:28:37.242474 accept_connection 3 returned 4 19:28:37.242635 accept_connection 3 returned 0 19:28:37.242793 Read 93 bytes 19:28:37.242888 Process 93 bytes request 19:28:37.242979 Got request: GET /verifiedserver HTTP/1.1 19:28:37.243064 Are-we-friendly question received 19:28:37.243246 Wrote request (93 bytes) input to log/2/server.input 19:28:37.243438 Identifying ourselves as friends 19:28:37.244001 Response sent (57 bytes) and written to log/2/server.response 19:28:37.244102 special request received, no persistency 19:28:37.244161 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 264 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind264 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind265 ../src/curl -q --output log/4/curl265.out --include --trace-ascii log/4/trace265 --trace-config all --trace-time http://test.remote.example.com.265:43669/path/2650002 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/4/stdout265 2> log/4/stderr265 265: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind265 ../src/curl -q --output log/4/curl265.out --include --trace-ascii log/4/trace265 --trace-config all --trace-time http://test.remote.example.com.CMD (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/1/valgrind266 ../src/curl -q --output log/1/curl266.out --include --trace-ascii log/1/trace266 --trace-config all --trace-time http://127.0.0.1:41477/266 -D log/1/heads266 > log/1/stdout266 2> log/1/stderr266 CMD (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/2/valgrind268 ../src/curl -q --output log/2/curl268.out --include --trace-ascii log/2/trace268 --trace-config all --trace-time http://127.0.0.1:39599/268 --variable hello@log/2/junk --expand-data {{hello:json}} > log/2/stdout268 2> log/2/stderr268 265:43669/path/2650002 --proxy http://127.0.0.1:43669 --proxy-user testuser:testpass --proxy-ntlm --proxytunnel -d "postit" > log/4/stdout265 2> log/4/stderr265 === End of file commands.log === Start of file http_server.log 19:28:37.357750 ====> Client connect 19:28:37.357985 accept_connection 3 returned 4 19:28:37.358113 accept_connection 3 returned 0 19:28:37.358758 Read 93 bytes 19:28:37.358895 Process 93 bytes request 19:28:37.358977 Got request: GET /verifiedserver HTTP/1.1 19:28:37.359044 Are-we-friendly question received 19:28:37.359229 Wrote request (93 bytes) input to log/4/server.input 19:28:37.359434 Identifying ourselves as friends 19:28:37.359926 Response sent (57 bytes) and written to log/4/server.response 19:28:37.360031 special request received, no persistency 19:28:37.360090 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 265 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind265 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind265 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/1/valgrind266 ../src/curl -q --output log/1/curl266.out --include --trace-ascii log/1/trace266 --trace-config all --trace-time http://127.0.0.1:41477/266 -D log/1/heads266 > log/1/stdout266 2> log/1/stderr266 266: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind266 ../src/curl -q --output log/1/curl266.out --include --trace-ascii log/1/trace266 --trace-config all --trace-time http://127.0.0.1:41477/266 -D log/1/heads266 > log/1/stdout266 2> log/1/stderr266 === End of file commands.log === Start of file http_server.log 19:28:37.738321 ====> Client connect 19:28:37.738545 accept_connection 3 returned 4 19:28:37.738777 accept_connection 3 returned 0 19:28:37.741406 Read 93 bytes 19:28:37.741536 Process 93 bytes request 19:28:37.741610 Got request: GET /verifiedserver HTTP/1.1 19:28:37.741667 Are-we-friendly question received 19:28:37.741831 Wrote request (93 bytes) input to log/1/server.input 19:28:37.741978 Identifying ourselves as friends 19:28:37.742490 Response sent (57 bytes) and written to log/1/server.response 19:28:37.742741 special request received, no persistency 19:28:37.742826 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd writedelay: 10 Testnum 266 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind266 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind266 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/2/valgrind268 ../src/curl -q --output log/2/curl268.out --include --trace-ascii log/2/trace268 --trace-config all --trace-time http://127.0.0.1:39599/268 --variable hello@log/2/junk --expand-data {{hello:json}} > log/2/stdout268 2> log/2/stderr268 268: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind268 ../src/curl -q --output log/2/curl268.out --include --trace-ascii log/2/trace268 --trace-config all --trace-time http://127.0.0.1:39599/268 --variable hello@log/2/junk --expand-data {{hello:json}} > log/2/stdout268 2> log/2/stderr268 === End of file commands.log === Start of file http_server.log 19:28:37.859746 ====> Client connect 19:28:37.859959 accept_connection 3 returned 4 19:28:37.860062 accept_connection 3 returned 0 19:28CMD (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/valgrind267 ../src/curl -q --output log/3/curl267.out --include --trace-ascii log/3/trace267 --trace-config all --trace-time http://127.0.0.1:37525/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/3/stdout267 2> log/3/stderr267 CMD (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/4/valgrind269 ../src/curl -q --output log/4/curl269.out --include --trace-ascii log/4/trace269 --trace-config all --trace-time http://127.0.0.1:43669/269 --ignore-content-length > log/4/stdout269 2> log/4/stderr269 :37.860499 Read 93 bytes 19:28:37.860619 Process 93 bytes request 19:28:37.860698 Got request: GET /verifiedserver HTTP/1.1 19:28:37.860765 Are-we-friendly question received 19:28:37.860929 Wrote request (93 bytes) input to log/2/server.input 19:28:37.861107 Identifying ourselves as friends 19:28:37.861506 Response sent (57 bytes) and written to log/2/server.response 19:28:37.861587 special request received, no persistency 19:28:37.861647 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind268 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind268 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/3/valgrind267 ../src/curl -q --output log/3/curl267.out --include --trace-ascii log/3/trace267 --trace-config all --trace-time http://127.0.0.1:37525/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/3/stdout267 2> log/3/stderr267 267: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind267 ../src/curl -q --output log/3/curl267.out --include --trace-ascii log/3/trace267 --trace-config all --trace-time http://127.0.0.1:37525/267 -u testuser:testpass --ntlm -d "data" -H "Header1: yes" -H "Header2: no" > log/3/stdout267 2> log/3/stderr267 === End of file commands.log === Start of file http_server.log 19:28:36.846712 ====> Client connect 19:28:36.846985 accept_connection 3 returned 4 19:28:36.847114 accept_connection 3 returned 0 19:28:36.847216 Read 93 bytes 19:28:36.847292 Process 93 bytes request 19:28:36.847371 Got request: GET /verifiedserver HTTP/1.1 19:28:36.847434 Are-we-friendly question received 19:28:36.847592 Wrote request (93 bytes) input to log/3/server.input 19:28:36.847731 Identifying ourselves as friends 19:28:36.848262 Response sent (57 bytes) and written to log/3/server.response 19:28:36.848355 special request received, no persistency 19:28:36.848413 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 267 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind267 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind269 ../src/curl -q --output log/4/curl269.out --include --trace-ascii log/4/trace269 --trace-config all --trace-time http://127.0.0.1:43669/269 --ignore-content-length > log/4/stdout269 2> log/4/stderr269 269: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind269 ../src/curl -q --output log/4/curl269.out --include --trace-ascii log/4/trace269 --trace-config all --trace-time http://127.0.0.1:43669/269 --ignore-content-length > log/4/stdout269 2> log/4/stderr269 === End of file commands.log === Start of file http_server.log 19:28:38.129455 ====> Client connect 19:28:38.129719 accept_connection 3 returned 4 19:28:38.129846 accept_connection 3 returned 0 19:28:38.130029 Read 93 bytes 19:28:38.130180 Process 93 bytes request 19:28:38.130332 Got request: GET /verifiedserver HTTP/1.1 19:28:38.130408 Are-we-friendly question received 19:28:38.130649 Wrote request (93 bytes) input to log/4/server.input 19:28:38.130838 Identifying ourselves as fCMD (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/1/valgrind270 ../src/curl -q --output log/1/curl270.out --include --trace-ascii log/1/trace270 --trace-config all --trace-time ftp://127.0.0.1:39333/270 --ftp-skip-pasv-ip --disable-epsv > log/1/stdout270 2> log/1/stderr270 riends 19:28:38.131404 Response sent (57 bytes) and written to log/4/server.response 19:28:38.131509 special request received, no persistency 19:28:38.131570 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 269 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind269 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind269 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/1/valgrind270 ../src/curl -q --output log/1/curl270.out --include --trace-ascii log/1/trace270 --trace-config all --trace-time ftp://127.0.0.1:39333/270 --ftp-skip-pasv-ip --disable-epsv > log/1/stdout270 2> log/1/stderr270 270: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind270 ../src/curl -q --output log/1/curl270.out --include --trace-ascii log/1/trace270 --trace-config all --trace-time ftp://127.0.0.1:39333/270 --ftp-skip-pasv-ip --disable-epsv > log/1/stdout270 2> log/1/stderr270 === End of file commands.log === Start of file ftp_server.log 19:28:37.981894 ====> Client connect 19:28:37.982718 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:37.986371 < "USER anonymous" 19:28:37.986711 > "331 We are happy you popped in![CR][LF]" 19:28:37.988355 < "PASS ftp@example.com" 19:28:37.988703 > "230 Welcome you silly person[CR][LF]" 19:28:37.990363 < "PWD" 19:28:37.990691 > "257 "/" is current directory[CR][LF]" 19:28:37.992213 < "EPSV" 19:28:37.992437 ====> Passive DATA channel requested by client 19:28:37.992598 DATA sockfilt for passive data channel starting... 19:28:38.005136 DATA sockfilt for passive data channel started (pid 120324) 19:28:38.006049 DATA sockfilt for passive data channel listens on port 37443 19:28:38.006434 > "229 Entering Passive Mode (|||37443|)[LF]" 19:28:38.006635 Client has been notified that DATA conn will be accepted on port 37443 19:28:38.008859 Client connects to port 37443 19:28:38.009100 ====> Client established passive DATA connection on port 37443 19:28:38.009780 < "TYPE I" 19:28:38.010099 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:38.011237 < "SIZE verifiedserver" 19:28:38.011577 > "213 18[CR][LF]" 19:28:38.012617 < "RETR verifiedserver" 19:28:38.012973 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:38.013656 =====> Closing passive DATA connection... 19:28:38.013879 Server disconnects passive DATA connection 19:28:38.014941 Server disconnected passive DATA connection 19:28:38.015162 DATA sockfilt for passive data channel quits (pid 120324) 19:28:38.016692 DATA sockfilt for passive data channel quit (pid 120324) 19:28:38.016918 =====> Closed passive DATA connection 19:28:38.017181 > "226 File transfer complete[CR][LF]" 19:28:38.054534 < "QUIT" 19:28:38.054878 > "221 bye bye baby[CR][LF]" 19:28:38.060339 MAIN sockfilt said DISC 19:28:38.060621 ====> Client disconnected 19:28:38.060962 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:38.446640 ====> Client connect 19:28:38.448155 Received DATA (on stdin) 19:28:38.448273 > 160 bytes data, server => client 19:28:38.448363 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:38.448439 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:38.448504 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:38.450445 < 16 bytes data, client => server 19:28:38.450782 'USER anonymous\r\n' 19:28:38.452098 Received DATA (on stdin) 19:28:38.452236 > 33 bytes data, server => client 19:28:38.452353 '331 We are happy you popped in!\r\n' 19:28:38.452810 < 22 bytes data, client => server 19:28:38.452964 'PASS ftp@example.com\r\n' 19:28:38.454122 Received DATA (on stdin) 19:28:38.454233 > 30 bytes data, server => client 19:28:38.454323 '230 Welcome you silly person\r\n' 19:28:38.454861 < 5 bytes data, client => server 19:28:38.455004 'PWD\r\n' 19:28:38.456057 Received DATA (on stdin) 19:28:38.456171 > 30 bytes data, server => client 19:28:38.456253 '257 "/" is current directory\r\n' 19:28:38.456729 < 6 bytes data, client => server 19:28:38.456851 'EPSV\r\n' 19:28:38.471572 Received DATA (on stdin) 19:28:38.471720 > 38 bytes data, server => client 19:28:38.471810 '229 Entering Passive Mode (|||37443|)\n' 19:28:38.472769 < 8 bytes data, client => server 19:28:38.472910 'TYPE I\r\n' 19:28:38.475240 Received DATA (on stdin) 19:28:38.475395 > 33 bytes data, server => client 19:28:38.475514 '200 I modify TYPE as you wanted\r\n' 19:28:38.475995 < 21 bytes data, client => server 19:28:38.476131 'SIZE verifiedserver\r\n' 19:28:38.476733 Received DATA (on stdin) 19:28:38.476857 > 8 bytes data, server => client 19:28:38.476929 '213 18\r\n' 19:28:38.477372 < 21 bytes data, client => server 19:28:38.477510 'RETR verifiedserver\r\n' 19:28:38.478124 Received DATA (on stdin) 19:28:38.478243 > 29 bytes data, server => client 19:28:38.478318 '150 Binary junk (18 bytes).\r\n' 19:28:38.482676 Received DATA (on stdin) 19:28:38.482850 > 28 bytes data, server => client 19:28:38.482941 '226 File transfer complete\r\n' 19:28:38.519235 < 6 bytes data, client => server 19:28:38.519388 'QUIT\r\n' 19:28:38.520336 Received DATA (on stdin) 19:28:38.520467 > 18 bytes data, server => client 19:28:38.520549 '221 bye bye baby\r\n' 19:28:38.525255 ====> Client disconnect 19:28:38.525790 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:38.468614 Running IPv4 version 19:28:38.469000 Listening on port 37443 19:28:38.469302 Wrote pid 120324 to log/1/server/ftp_sockdata.pid 19:28:38.470000 RecCMD (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/valgrind272 ../src/curl -q --output log/3/curl272.out --include --trace-ascii log/3/trace272 --trace-config all --trace-time ftp://127.0.0.1:43789/272 -z "2004 jan 1 12:12:12 UTC" > log/3/stdout272 2> log/3/stderr272 eived PING (on stdin) 19:28:38.470685 Received PORT (on stdin) 19:28:38.473789 ====> Client connect 19:28:38.479223 Received DATA (on stdin) 19:28:38.479349 > 18 bytes data, server => client 19:28:38.479427 'WE ROOLZ: 109414\r\n' 19:28:38.479727 Received DISC (on stdin) 19:28:38.480508 ====> Client forcibly disconnected 19:28:38.480840 Received QUIT (on stdin) 19:28:38.480948 quits 19:28:38.481218 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd PASVBADIP Testnum 270 === End of file server.cmd === Start of file valgrind270 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind270 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/3/valgrind272 ../src/curl -q --output log/3/curl272.out --include --trace-ascii log/3/trace272 --trace-config all --trace-time ftp://127.0.0.1:43789/272 -z "2004 jan 1 12:12:12 UTC" > log/3/stdout272 2> log/3/stderr272 272: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind272 ../src/curl -q --output log/3/curl272.out --include --trace-ascii log/3/trace272 --trace-config all --trace-time ftp://127.0.0.1:43789/272 -z "2004 jan 1 12:12:12 UTC" > log/3/stdout272 2> log/3/stderr272 === End of file commands.log === Start of file ftp_server.log 19:28:38.106319 ====> Client connect 19:28:38.107036 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:38.108846 < "USER anonymous" 19:28:38.109129 > "331 We are happy you popped in![CR][LF]" 19:28:38.110847 < "PASS ftp@example.com" 19:28:38.111146 > "230 Welcome you silly person[CR][LF]" 19:28:38.112501 < "PWD" 19:28:38.112758 > "257 "/" is current directory[CR][LF]" 19:28:38.114187 < "EPSV" 19:28:38.114390 ====> Passive DATA channel requested by client 19:28:38.114505 DATA sockfilt for passive data channel starting... 19:28:38.121512 DATA sockfilt for passive data channel started (pid 120348) 19:28:38.122163 DATA sockfilt for passive data channel listens on port 42573 19:28:38.122931 > "229 Entering Passive Mode (|||42573|)[LF]" 19:28:38.123147 Client has been notified that DATA conn will be accepted on port 42573 19:28:38.124192 Client connects to port 42573 19:28:38.124420 ====> Client established passive DATA connection on port 42573 19:28:38.124881 < "TYPE I" 19:28:38.125650 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:38.126840 < "SIZE verifiedserver" 19:28:38.127645 > "213 18[CR][LF]" 19:28:38.128838 < "RETR verifiedserver" 19:28:38.130608 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:38.131782 =====> Closing passive DATA connection... 19:28:38.132232 Server disconnects passive DATA connection 19:28:38.134281 Server disconnected passive DATA connection 19:28:38.134600 DATA sockfilt for passive data channel quits (pid 120348) 19:28:38.135754 DATA sockfilt for passive data channel quit (pid 120348) 19:28:38.135969 =====> Closed passive DATA connection 19:28:38.136832 > "226 File transfer complete[CR][LF]" 19:28:38.174713 < "QUIT" 19:28:38.180551 > "221 bye bye baby[CR][LF]" 19:28:38.180834 MAIN sockfilt said DISC 19:28:38.181526 ====> Client disconnected 19:28:38.181975 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:38.571051 ====> Client connect 19:28:38.572389 Received DATA (on stdin) 19:28:38.572499 > 160 bytes data, server => client 19:28:38.572584 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:38.572652 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:38.572709 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:38.573211 < 16 bytes data, client => server 19:28:38.573342 'USER anonymous\r\n' 19:28:38.574468 Received DATA (on stdin) 19:28:38.574640 > 33 bytes data, server => client 19:28:38.574810 '331 We are happy you popped in!\r\n' 19:28:38.575353 < 22 bytes data, client => server 19:28:38.575475 'PASS ftp@example.com\r\n' 19:28:38.576495 Received DATA (on stdin) 19:28:38.576586 > 30 bytes data, server => client 19:28:38.576652 '230 Welcome you silly person\r\n' 19:28:38.577068 < 5 bytes data, client => server 19:28:38.577196 'PWD\r\n' 19:28:38.578077 Received DATA (on stdin) 19:28:38.578176 > 30 bytes data, server => client 19:28:38.578251 '257 "/" is current directory\r\n' 19:28:38.578753 < 6 bytes data, client => server 19:28:38.578879 'EPSV\r\n' 19:28:38.587567 Received DATA (on stdin) 19:28:38.587678 > 38 bytes data, server => client 19:28:38.587794 '229 Entering Passive Mode (|||42573|)\n' 19:28:38.589092 < 8 bytes data, client => server 19:28:38.589199 'TYPE I\r\n' 19:28:38.590237 Received DATA (on stdin) 19:28:38.590343 > 33 bytes data, server => client 19:28:38.590459 '200 I modify TYPE as you wanted\r\n' 19:28:38.591336 < 21 bytes data, client => server 19:28:38.591478 'SIZE verifiedserver\r\n' 19:28:38.592305 Received DATA (on stdin) 19:28:38.592428 > 8 bytes data, server => client 19:28:38.592545 '213 18\r\n' 19:28:38.593359 < 21 bytes data, client => server 19:28:38.593496 'RETR verifiedserver\r\n' 19:28:38.594292 Received DATA (on stdin) 19:28:38.594415 > 29 bytes data, server => client 19:28:38.594819 '150 Binary junk (18 bytes).\r\n' 19:28:38.601314 Received DATA (on stdin) 19:28:38.601492 > 28 bytes data, server => client 19:28:38.601722 '226 File transfer complete\r\n' 19:28:38.639142 < 6 bytes data, client => server 19:28:38.639280 'QUIT\r\n' 19:28:38.640137 Received DATA (on stdin) 19:28:38.640254 > 18 bytes data, server => client 19:28:38.640368 '221 bye bye baby\r\n' 19:28:38.641925 ====> Client disconnect 19:28:38.646136 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:38.585705 Running IPv4 version 19:28:38.586059 Listening on port 42573 19:28:38.586269 Wrote pid 120348 to log/3/server/ftp_sockdata.pid 19:28:38.586373 Received PING (on stdin) 19:28:38.586967 Received PORT (on stdin) 19:28:38.588933 ====> Client connect 19:28:38.596418 Received DATA (on stdin) 19:28:38.596710 > 18 bytes data, server => client 19:28:38.596935 'WE ROOLZ: 109394\r\n' 19:28:38.598035 Received DISC (on stdin) 19:28:38.598368 ====> Client forcibly disconnected 19:28CMD (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/4/valgrind273 ../src/curl -q --output log/4/curl273.out --include --trace-ascii log/4/trace273 --trace-config all --trace-time http://127.0.0.1:43669/273 -u testuser:testpass --digest > log/4/stdout273 2> log/4/stderr273 CMD (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/1/valgrind274 ../src/curl -q --output log/1/curl274.out --include --trace-ascii log/1/trace274 --trace-config all --trace-time http://127.0.0.1:41477/want/274 -L --max-redirs 0 > log/1/stdout274 2> log/1/stderr274 :38.599911 Received QUIT (on stdin) 19:28:38.600016 quits 19:28:38.600278 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 272 === End of file server.cmd === Start of file valgrind272 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind272 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/4/valgrind273 ../src/curl -q --output log/4/curl273.out --include --trace-ascii log/4/trace273 --trace-config all --trace-time http://127.0.0.1:43669/273 -u testuser:testpass --digest > log/4/stdout273 2> log/4/stderr273 273: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind273 ../src/curl -q --output log/4/curl273.out --include --trace-ascii log/4/trace273 --trace-config all --trace-time http://127.0.0.1:43669/273 -u testuser:testpass --digest > log/4/stdout273 2> log/4/stderr273 === End of file commands.log === Start of file http_server.log 19:28:38.730806 ====> Client connect 19:28:38.731028 accept_connection 3 returned 4 19:28:38.731137 accept_connection 3 returned 0 19:28:38.731582 Read 93 bytes 19:28:38.731713 Process 93 bytes request 19:28:38.731793 Got request: GET /verifiedserver HTTP/1.1 19:28:38.731856 Are-we-friendly question received 19:28:38.732024 Wrote request (93 bytes) input to log/4/server.input 19:28:38.732178 Identifying ourselves as friends 19:28:38.732609 Response sent (57 bytes) and written to log/4/server.response 19:28:38.732708 special request received, no persistency 19:28:38.732772 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 273 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind273 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind274 ../src/curl -q --output log/1/curl274.out --include --trace-ascii log/1/trace274 --trace-config all --trace-time http://127.0.0.1:41477/want/274 -L --max-redirs 0 > log/1/stdout274 2> log/1/stderr274 274: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind274 ../src/curl -q --output log/1/curl274.out --include --trace-ascii log/1/trace274 --trace-config all --trace-time http://127.0.0.1:41477/want/274 -L --max-redirs 0 > log/1/stdout274 2> log/1/stderr274 === End of file commands.log === Start of file http_server.log 19:28:39.109175 ====> Client connect 19:28:39.109383 accept_connection 3 returned 4 19:28:39.109488 accept_connection 3 returned 0 19:28:39.109579 Read 93 bytes 19:28:39.109646 Process 93 bytes request 19:28:39.109711 Got request: GET /verifiedserver HTTP/1.1 19:28:39.109768 Are-we-friendly question received 19:28:39.109907 Wrote request (93 bytes) input to log/1/server.input 19:28:39.110031 Identifying ourselves as friends 19:28:39.110497 Response sent (57 bytes) and written to log/1/server.response 19:28:39.110719 special request received, no persistency 19:28:39.110787 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 274 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind274 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: vaCMD (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/4/valgrind276 ../src/curl -q --output log/4/curl276.out --include --trace-ascii log/4/trace276 --trace-config all --trace-time "http://127.0.0.1:43669/want?uri=http://anything/276?secondq/276" -L > log/4/stdout276 2> log/4/stderr276 CMD (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/valgrind275 ../src/curl -q --output log/3/curl275.out --include --trace-ascii log/3/trace275 --trace-config all --trace-time http://remotesite.com.275:37525/we/want/that/page/275 -p -x 127.0.0.1:45749 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:37525/we/want/that/page/275 > log/3/stdout275 2> log/3/stderr275 lgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind274 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/4/valgrind276 ../src/curl -q --output log/4/curl276.out --include --trace-ascii log/4/trace276 --trace-config all --trace-time "http://127.0.0.1:43669/want?uri=http://anything/276?secondq/276" -L > log/4/stdout276 2> log/4/stderr276 276: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind276 ../src/curl -q --output log/4/curl276.out --include --trace-ascii log/4/trace276 --trace-config all --trace-time "http://127.0.0.1:43669/want?uri=http://anything/276?secondq/276" -L > log/4/stdout276 2> log/4/stderr276 === End of file commands.log === Start of file http_server.log 19:28:39.346782 ====> Client connect 19:28:39.347036 accept_connection 3 returned 4 19:28:39.347165 accept_connection 3 returned 0 19:28:39.347272 Read 93 bytes 19:28:39.347352 Process 93 bytes request 19:28:39.347425 Got request: GET /verifiedserver HTTP/1.1 19:28:39.347484 Are-we-friendly question received 19:28:39.347662 Wrote request (93 bytes) input to log/4/server.input 19:28:39.347941 Identifying ourselves as friends 19:28:39.348483 Response sent (57 bytes) and written to log/4/server.response 19:28:39.348570 special request received, no persistency 19:28:39.348622 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 276 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind276 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind276 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/3/valgrind275 ../src/curl -q --output log/3/curl275.out --include --trace-ascii log/3/trace275 --trace-config all --trace-time http://remotesite.com.275:37525/we/want/that/page/275 -p -x 127.0.0.1:45749 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:37525/we/want/that/page/275 > log/3/stdout275 2> log/3/stderr275 275: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind275 ../src/curl -q --output log/3/curl275.out --include --trace-ascii log/3/trace275 --trace-config all --trace-time http://remotesite.com.275:37525/we/want/that/page/275 -p -x 127.0.0.1:45749 --user iam:myself --proxy-user youare:yourself http://remotesite.com.275:37525/we/want/that/page/275 > log/3/stdout275 2> log/3/stderr275 === End of file commands.log === Start of file http2_server.log 19:28:39.333242 ====> Client connect 19:28:39.333483 accept_connection 3 returned 4 19:28:39.333625 accept_connection 3 returned 0 19:28:39.334238 Read 93 bytes 19:28:39.334364 Process 93 bytes request 19:28:39.334453 Got request: GET /verifiedserver HTTP/1.1 19:28:39.334519 Are-we-friendly question received 19:28:39.334863 Wrote request (93 bytes) input to log/3/proxy.input 19:28:39.335056 Identifying ourselves as friends 19:28:39.335525 Response sent (57 bytes) and written to log/3/proxy.response 19:28:39.335623 special request received, no persistency 19:28:39.335696 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:45749... * Connected to 127.0.0.1 (127.0.0.1) port 45749 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45749 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108276 === End of file http2_verify.out === Start of file http_server.log 19:28:38.244069 ====> Client connect 19:28:38.244277 accept_connection 3 returned 4 19:28:38.244388 accept_connection 3 returned 0 19:28:38.244828 Read 93 bytes 19:28:38.244957 Process 93 bytes request 19:28:38.245039 Got request: GET /verifiedserver HTTP/1.1 19:28:38.245106 Are-we-friendly question received 19:28:38.245262 Wrote request (93 bytes) input to log/3/server.input 19:28:38.245396 Identifying ourselves as friends 19:28:38.245798 Response sent (57 bytes) andCMD (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/2/valgrind271 ../src/curl -q --output log/2/curl271.out --include --trace-ascii log/2/trace271 --trace-config all --trace-time tftp://127.0.0.1:56721//271 > log/2/stdout271 2> log/2/stderr271 CMD (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/1/valgrind277 ../src/curl -q --output log/1/curl277.out --include --trace-ascii log/1/trace277 --trace-config all --trace-time http://127.0.0.1:41477/want/277 -F name=daniel -H "Content-Type: text/info" > log/1/stdout277 2> log/1/stderr277 written to log/3/server.response 19:28:38.245895 special request received, no persistency 19:28:38.245955 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 108276 === End of file proxy.response === Start of file server.cmd Testnum 275 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind275 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind275 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/2/server/tftp_server.pid" --portfile "log/2/server/tftp_server.port" --logfile "log/2/tftp_server.log" --logdir "log/2" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --silent --verbose --globoff "tftp://127.0.0.1:56721/verifiedserver" 2>log/2/tftp_verify.log RUN: Verifying our test tftp server took 1 seconds RUN: TFTP server on PID 120314 port 56721 * pid tftp => 120314 120314 test 0271...[TFTP retrieve] ../libtool --mode=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/valgrind271 ../src/curl -q --output log/2/curl271.out --include --trace-ascii log/2/trace271 --trace-config all --trace-time tftp://127.0.0.1:56721//271 > log/2/stdout271 2> log/2/stderr271 271: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind271 ../src/curl -q --output log/2/curl271.out --include --trace-ascii log/2/trace271 --trace-config all --trace-time tftp://127.0.0.1:56721//271 > log/2/stdout271 2> log/2/stderr271 === End of file commands.log === Start of file server.cmd Testnum 271 === End of file server.cmd === Start of file tftp_server.log 19:28:38.576083 Wrote pid 120314 to log/2/server/tftp_server.pid 19:28:38.576475 Wrote port 56721 to log/2/server/tftp_server.port 19:28:38.576563 Running IPv4 version on port UDP/56721 19:28:39.523941 trying to get file: verifiedserver mode 1 19:28:39.524055 Are-we-friendly question received 19:28:39.524131 write 19:28:39.524289 read 19:28:39.524510 read: 4 19:28:39.524777 end of one transfer === End of file tftp_server.log === Start of file valgrind271 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind271 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/1/valgrind277 ../src/curl -q --output log/1/curl277.out --include --trace-ascii log/1/trace277 --trace-config all --trace-time http://127.0.0.1:41477/want/277 -F name=daniel -H "Content-Type: text/info" > log/1/stdout277 2> log/1/stderr277 277: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind277 ../src/curl -q --output log/1/curl277.out --include --trace-ascii log/1/trace277 --trace-config all --trace-time http://127.0.0.1:41477/want/277 -F name=daniel -H "Content-Type: text/info" > log/1/stdout277 2> log/1/stderr277 === End of file commands.log === Start of file http_server.log 19:28:39.656434 ====> Client connect 19:28:39.656726 accept_connection 3 returned 4 19:28:39.656895 accept_connection 3 returned 0 19:28:39.657015 Read 93 bytes 19:28:39.657115 Process 93 bytes request 19:28:39.657249 Got request: GET /verifiedserver HTTP/1.1 19:28:39.657353 Are-we-friendly question received 19:28:39.657539 Wrote request (93 bytes) input to log/1/server.input 19:28:39.657700 Identifying ourselves as friends 19:28:39.658268 Response sent (57 bytes) and written to log/1/server.response 19:28:39.658364 special request received, no persistency 19:28:39.658420 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 10311CMD (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/4/valgrind278 ../src/curl -q --output log/4/curl278.out --include --trace-ascii log/4/trace278 --trace-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:43669 > log/4/stdout278 2> log/4/stderr278 CMD (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/valgrind279 ../src/curl -q --output log/3/curl279.out --include --trace-ascii log/3/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:37525 > log/3/stdout279 2> log/3/stderr279 5 === End of file http_verify.out === Start of file server.cmd Testnum 277 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind277 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind277 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-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:43669 > log/4/stdout278 2> log/4/stderr278 278: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://we.want.that.site.com/278 -x http://f%61ke:@127.0.0.1:43669 > log/4/stdout278 2> log/4/stderr278 === End of file commands.log === Start of file http_server.log 19:28:40.011480 ====> Client connect 19:28:40.011708 accept_connection 3 returned 4 19:28:40.011829 accept_connection 3 returned 0 19:28:40.011946 Read 93 bytes 19:28:40.012052 Process 93 bytes request 19:28:40.012363 Got request: GET /verifiedserver HTTP/1.1 19:28:40.012920 Are-we-friendly question received 19:28:40.013147 Wrote request (93 bytes) input to log/4/server.input 19:28:40.013338 Identifying ourselves as friends 19:28:40.013960 Response sent (57 bytes) and written to log/4/server.response 19:28:40.014087 special request received, no persistency 19:28:40.014185 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 278 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind278 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind279 ../src/curl -q --output log/3/curl279.out --include --trace-ascii log/3/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:37525 > log/3/stdout279 2> log/3/stderr279 279: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind279 ../src/curl -q --output log/3/curl279.out --include --trace-ascii log/3/trace279 --trace-config all --trace-time http://we.want.that.site.com/279 -x http://f%61ke@127.0.0.1:37525 > log/3/stdout279 2> log/3/stderr279 === End of file commands.log === Start of file http_server.log 19:28:39.032506 ====> Client connect 19:28:39.032744 accept_connection 3 returned 4 19:28:39.032865 accept_connection 3 returned 0 19:28:39.032990 Read 93 bytes 19:28:39.033082 Process 93 bytes request 19:28:39.033200 Got request: GET /verifiedserver HTTP/1.1 19:28:39.033304 Are-we-friendly question received 19:28:39.033527 Wrote request (93 bytes) input to log/3/server.input 19:28:39.033713 Identifying ourselves as friends 19:28:39.034304 Response sent (57 bytes) and written to log/3/server.response 19:28:39.034408 special request received, no persistency 19:28:39.034477 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 279 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind279 valgrind: Fatal error at startup: a function redirectionCMD (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/2/valgrind280 ../src/curl -q --output log/2/curl280.out --include --trace-ascii log/2/trace280 --trace-config all --trace-time ftp://127.0.0.1:36773/280/ --ftp-alternative-to-user "USER replacement" > log/2/stdout280 2> log/2/stderr280 valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind279 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/2/valgrind280 ../src/curl -q --output log/2/curl280.out --include --trace-ascii log/2/trace280 --trace-config all --trace-time ftp://127.0.0.1:36773/280/ --ftp-alternative-to-user "USER replacement" > log/2/stdout280 2> log/2/stderr280 280: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind280 ../src/curl -q --output log/2/curl280.out --include --trace-ascii log/2/trace280 --trace-config all --trace-time ftp://127.0.0.1:36773/280/ --ftp-alternative-to-user "USER replacement" > log/2/stdout280 2> log/2/stderr280 === End of file commands.log === Start of file ftp_server.log 19:28:39.645555 ====> Client connect 19:28:39.654859 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:39.656306 < "USER anonymous" 19:28:39.656681 > "331 We are happy you popped in![CR][LF]" 19:28:39.657842 < "PASS ftp@example.com" 19:28:39.658152 > "230 Welcome you silly person[CR][LF]" 19:28:39.659178 < "PWD" 19:28:39.659496 > "257 "/" is current directory[CR][LF]" 19:28:39.660580 < "EPSV" 19:28:39.660800 ====> Passive DATA channel requested by client 19:28:39.660949 DATA sockfilt for passive data channel starting... 19:28:39.671363 DATA sockfilt for passive data channel started (pid 120896) 19:28:39.672099 DATA sockfilt for passive data channel listens on port 37365 19:28:39.672470 > "229 Entering Passive Mode (|||37365|)[LF]" 19:28:39.672729 Client has been notified that DATA conn will be accepted on port 37365 19:28:39.674408 Client connects to port 37365 19:28:39.674858 ====> Client established passive DATA connection on port 37365 19:28:39.675637 < "TYPE I" 19:28:39.676208 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:39.677707 < "SIZE verifiedserver" 19:28:39.678152 > "213 18[CR][LF]" 19:28:39.679346 < "RETR verifiedserver" 19:28:39.680043 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:39.680826 =====> Closing passive DATA connection... 19:28:39.681127 Server disconnects passive DATA connection 19:28:39.682532 Server disconnected passive DATA connection 19:28:39.682817 DATA sockfilt for passive data channel quits (pid 120896) 19:28:39.684427 DATA sockfilt for passive data channel quit (pid 120896) 19:28:39.684667 =====> Closed passive DATA connection 19:28:39.684921 > "226 File transfer complete[CR][LF]" 19:28:39.722450 < "QUIT" 19:28:39.722813 > "221 bye bye baby[CR][LF]" 19:28:39.727492 MAIN sockfilt said DISC 19:28:39.727794 ====> Client disconnected 19:28:39.728118 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:39.110222 ====> Client connect 19:28:39.119928 Received DATA (on stdin) 19:28:39.120076 > 160 bytes data, server => client 19:28:39.120159 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:39.120229 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:39.120292 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:39.120791 < 16 bytes data, client => server 19:28:39.120922 'USER anonymous\r\n' 19:28:39.121786 Received DATA (on stdin) 19:28:39.121912 > 33 bytes data, server => client 19:28:39.121988 '331 We are happy you popped in!\r\n' 19:28:39.122449 < 22 bytes data, client => server 19:28:39.122648 'PASS ftp@example.com\r\n' 19:28:39.123252 Received DATA (on stdin) 19:28:39.123367 > 30 bytes data, server => client 19:28:39.123440 '230 Welcome you silly person\r\n' 19:28:39.123883 < 5 bytes data, client => server 19:28:39.123993 'PWD\r\n' 19:28:39.124601 Received DATA (on stdin) 19:28:39.124727 > 30 bytes data, server => client 19:28:39.124805 '257 "/" is current directory\r\n' 19:28:39.125282 < 6 bytes data, client => server 19:28:39.125410 'EPSV\r\n' 19:28:39.137563 Received DATA (on stdin) 19:28:39.137775 > 38 bytes data, server => client 19:28:39.137910 '229 Entering Passive Mode (|||37365|)\n' 19:28:39.139573 < 8 bytes data, client => server 19:28:39.139812 'TYPE I\r\n' 19:28:39.141367 Received DATA (on stdin) 19:28:39.141541 > 33 bytes data, server => client 19:28:39.141647 '200 I modify TYPE as you wanted\r\n' 19:28:39.142216 < 21 bytes data, client => server 19:28:39.142332 'SIZE verifiedserver\r\n' 19:28:39.143257 Received DATA (on stdin) 19:28:39.143396 > 8 bytes data, server => client 19:28:39.143477 '213 18\r\n' 19:28:39.143993 < 21 bytes data, client => server 19:28:39.144150 'RETR verifiedserver\r\n' 19:28:39.145121 Received DATA (on stdin) 19:28:39.145313 > 29 bytes data, server => client 19:28:39.145497 '150 Binary junk (18 bytes).\r\n' 19:28:39.150288 Received DATA (on stdin) 19:28:39.150435 > 28 bytes data, server => client 19:28:39.150654 '226 File transfer complete\r\n' 19:28:39.187107 < 6 bytes data, client => server 19:28:39.187259 'QUIT\r\n' 19:28:39.187913 Received DATA (on stdin) 19:28:39.188041 > 18 bytes data, server => client 19:28:39.188116 '221 bye bye baby\r\n' 19:28:39.191366 ====> Client disconnect 19:28:39.193451 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:39.134983 Running IPv4 version 19:28:39.135766 Listening on port 37365 19:28:39.136149 Wrote pid 120896 to log/2/server/ftp_sockdata.pid 19:28:39.136256 Received PING (on stdin) 19:28:39.136776 Received PORT (on stdin) 19:28:39.139047 ====> Client connect 19:28:39.146610 Received DATA (on stdin) 19:28:39.146740 > 18 bytes data, server => client 19:28:39.146862 'WE ROOLZ: 116354\r\n' 19:28:39.147256 Received DISC (on stdin) 19:28:39.147377 ====> Client forcibly disconnected 19:28:39.148449 Received QUIT (on stdin) 19:28:39.148623 quits 19:28:39.148940 ============> 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 valgrind280 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an objectCMD (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/1/valgrind281 ../src/curl -q --output log/1/curl281.out --include --trace-ascii log/1/trace281 --trace-config all --trace-time http://127.0.0.1:41477/we/want/281 -f -T log/1/test281.txt > log/1/stdout281 2> log/1/stderr281 CMD (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/4/valgrind282 ../src/curl -q --output log/4/curl282.out --include --trace-ascii log/4/trace282 --trace-config all --trace-time http://127.0.0.1:43669/282 > log/4/stdout282 2> log/4/stderr282 with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind280 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/1/valgrind281 ../src/curl -q --output log/1/curl281.out --include --trace-ascii log/1/trace281 --trace-config all --trace-time http://127.0.0.1:41477/we/want/281 -f -T log/1/test281.txt > log/1/stdout281 2> log/1/stderr281 281: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind281 ../src/curl -q --output log/1/curl281.out --include --trace-ascii log/1/trace281 --trace-config all --trace-time http://127.0.0.1:41477/we/want/281 -f -T log/1/test281.txt > log/1/stdout281 2> log/1/stderr281 === End of file commands.log === Start of file http_server.log 19:28:40.289324 ====> Client connect 19:28:40.289565 accept_connection 3 returned 4 19:28:40.289683 accept_connection 3 returned 0 19:28:40.289788 Read 93 bytes 19:28:40.289856 Process 93 bytes request 19:28:40.289921 Got request: GET /verifiedserver HTTP/1.1 19:28:40.289977 Are-we-friendly question received 19:28:40.290117 Wrote request (93 bytes) input to log/1/server.input 19:28:40.290244 Identifying ourselves as friends 19:28:40.290821 Response sent (57 bytes) and written to log/1/server.response 19:28:40.290919 special request received, no persistency 19:28:40.291074 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 281 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file test281.txt Weird file to upload === End of file test281.txt === Start of file valgrind281 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind282 ../src/curl -q --output log/4/curl282.out --include --trace-ascii log/4/trace282 --trace-config all --trace-time http://127.0.0.1:43669/282 > log/4/stdout282 2> log/4/stderr282 282: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind282 ../src/curl -q --output log/4/curl282.out --include --trace-ascii log/4/trace282 --trace-config all --trace-time http://127.0.0.1:43669/282 > log/4/stdout282 2> log/4/stderr282 === End of file commands.log === Start of file http_server.log 19:28:40.635959 ====> Client connect 19:28:40.636190 accept_connection 3 returned 4 19:28:40.636315 accept_connection 3 returned 0 19:28:40.636805 Read 93 bytes 19:28:40.636939 Process 93 bytes request 19:28:40.637018 Got request: GET /verifiedserver HTTP/1.1 19:28:40.637106 Are-we-friendly question received 19:28:40.637417 Wrote request (93 bytes) input to log/4/server.input 19:28:40.637684 Identifying ourselves as friends 19:28:40.638141 Response sent (57 bytes) and written to log/4/server.response 19:28:40.638237 special request received, no persistency 19:28:40.638300 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 282 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind282 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: foCMD (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/2/valgrind284 ../src/curl -q --output log/2/curl284.out --include --trace-ascii log/2/trace284 --trace-config all --trace-time tftp://127.0.0.1:56721//284 > log/2/stdout284 2> log/2/stderr284 CMD (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/2/valgrind287 ../src/curl -q --include --trace-ascii log/2/trace287 --trace-config all --trace-time http://test.remote.example.com.287:39599/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:39599 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/2/stdout287 2> log/2/stderr287 r your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind282 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/2/valgrind284 ../src/curl -q --output log/2/curl284.out --include --trace-ascii log/2/trace284 --trace-config all --trace-time tftp://127.0.0.1:56721//284 > log/2/stdout284 2> log/2/stderr284 284: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind284 ../src/curl -q --output log/2/curl284.out --include --trace-ascii log/2/trace284 --trace-config all --trace-time tftp://127.0.0.1:56721//284 > log/2/stdout284 2> log/2/stderr284 === End of file commands.log === Start of file server.cmd Testnum 284 === End of file server.cmd === Start of file tftp_server.log 19:28:40.847974 trying to get file: verifiedserver mode 1 19:28:40.848184 Are-we-friendly question received 19:28:40.848279 write 19:28:40.848424 read 19:28:40.848741 read: 4 19:28:40.849029 end of one transfer === End of file tftp_server.log === Start of file valgrind284 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind284 CMD (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/valgrind283 ../src/curl -q --output log/3/curl283.out --include --trace-ascii log/3/trace283 --trace-config all --trace-time tftp://127.0.0.1:47074//invalid-file --tftp-blksize 1024 > log/3/stdout283 2> log/3/stderr283 CMD (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/2/valgrind288 ../src/curl -q --output log/2/curl288.out --trace-ascii log/2/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test288.txt > log/2/stdout288 2> log/2/stderr288 test 0287...[HTTP proxy CONNECT with custom User-Agent 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/valgrind287 ../src/curl -q --include --trace-ascii log/2/trace287 --trace-config all --trace-time http://test.remote.example.com.287:39599/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:39599 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/2/stdout287 2> log/2/stderr287 287: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:41.361201647 +0000 +++ log/2/check-generated 2025-05-23 19:28:41.361201647 +0000 @@ -1,2 +0,0 @@ -HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] -[CR][LF] == Contents of files in the log/2/ dir after test 287 === Start of file check-expected HTTP/1.1 405 Method Not Allowed swsclose[CR][LF] [CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind287 ../src/curl -q --include --trace-ascii log/2/trace287 --trace-config all --trace-time http://test.remote.example.com.287:39599/path/287 -H "User-Agent: looser/2015" --proxy http://127.0.0.1:39599 --proxytunnel --proxy-header "User-Agent: looser/2007" > log/2/stdout287 2> log/2/stderr287 === End of file commands.log === Start of file http_server.log 19:28:41.378910 ====> Client connect 19:28:41.379117 accept_connection 3 returned 4 19:28:41.379219 accept_connection 3 returned 0 19:28:41.379305 Read 93 bytes 19:28:41.379367 Process 93 bytes request 19:28:41.379432 Got request: GET /verifiedserver HTTP/1.1 19:28:41.379490 Are-we-friendly question received 19:28:41.379622 Wrote request (93 bytes) input to log/2/server.input 19:28:41.379730 Identifying ourselves as friends 19:28:41.380147 Response sent (57 bytes) and written to log/2/server.response 19:28:41.380225 special request received, no persistency 19:28:41.380274 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 287 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind287 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind287 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/tftpserver.pl --pidfile "log/3/server/tftp_server.pid" --portfile "log/3/server/tftp_server.port" --logfile "log/3/tftp_server.log" --logdir "log/3" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --silent --verbose --globoff "tftp://127.0.0.1:47074/verifiedserver" 2>log/3/tftp_verify.log RUN: Verifying our test tftp server took 0 seconds RUN: TFTP server on PID 121084 port 47074 * pid tftp => 121084 121084 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/3/valgrind283 ../src/curl -q --output log/3/curl283.out --include --trace-ascii log/3/trace283 --trace-config all --trace-time tftp://127.0.0.1:47074//invalid-file --tftp-blksize 1024 > log/3/stdout283 2> log/3/stderr283 283: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind283 ../src/curl -q --output log/3/curl283.out --include --trace-ascii log/3/trace283 --trace-config all --trace-time tftp://127.0.0.1:47074//invalid-file --tftp-blksize 1024 > log/3/stdout283 2> log/3/stderr283 === End of file commands.log === Start of file server.cmd Testnum 283 === End of file server.cmd === Start of file tftp_server.log 19:28:40.717805 Wrote pid 121084 to log/3/server/tftp_server.pid 19:28:40.718153 Wrote port 47074 to log/3/server/tftp_server.port 19:28:40.718230 Running IPv4 version on port UDP/47074 19:28:41.644578 trying to get file: verifiedserver mode 1 19:28:41.644689 Are-we-friendly question received 19:28:41.644773 write 19:28:41.644938 read 19:28:41.645184 read: 4 19:28:41.645505 end of one transfer === End of file tftp_server.log === Start of file valgrind283 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind283 CMD (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/1/valgrind285 ../src/curl -q --output log/1/curl285.out --include --trace-ascii log/1/trace285 --trace-config all --trace-time -T log/1/test285.txt tftp://127.0.0.1:41216// --connect-timeout 549 > log/1/stdout285 2> log/1/stderr285 CMD (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/valgrind289 ../src/curl -q --output log/3/curl289.out --include --trace-ascii log/3/trace289 --trace-config all --trace-time ftp://127.0.0.1:43789/289 -T log/3/illegal-nonexistent-file -C - > log/3/stdout289 2> log/3/stderr289 * starts no server 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/2/valgrind288 ../src/curl -q --output log/2/curl288.out --trace-ascii log/2/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test288.txt > log/2/stdout288 2> log/2/stderr288 288: data FAILED: --- log/2/check-expected 2025-05-23 19:28:41.869214399 +0000 +++ log/2/check-generated 2025-05-23 19:28:41.869214399 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/2/ dir after test 288 === Start of file check-expected foo[LF] bar[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind288 ../src/curl -q --output log/2/curl288.out --trace-ascii log/2/trace288 --trace-config all --trace-time file://localhost/build/curl/src/build-curl/tests/log/2/test288.txt > log/2/stdout288 2> log/2/stderr288 === End of file commands.log === Start of file server.cmd Testnum 288 === End of file server.cmd === Start of file test288.txt foo bar bar foo moo === End of file test288.txt === Start of file valgrind288 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind288 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: ../src/curl --max-time 13 --silent --verbose --globoff "tftp://127.0.0.1:41216/verifiedserver" 2>log/1/tftp_verify.log RUN: Verifying our test tftp server took 0 seconds RUN: TFTP server on PID 121166 port 41216 * pid tftp => 121166 121166 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/1/valgrind285 ../src/curl -q --output log/1/curl285.out --include --trace-ascii log/1/trace285 --trace-config all --trace-time -T log/1/test285.txt tftp://127.0.0.1:41216// --connect-timeout 549 > log/1/stdout285 2> log/1/stderr285 285: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind285 ../src/curl -q --output log/1/curl285.out --include --trace-ascii log/1/trace285 --trace-config all --trace-time -T log/1/test285.txt tftp://127.0.0.1:41216// --connect-timeout 549 > log/1/stdout285 2> log/1/stderr285 === End of file commands.log === Start of file server.cmd Testnum 285 === End of file server.cmd === Start of file test285.txt a chunk of data sent to server === End of file test285.txt === Start of file tftp_server.log 19:28:40.987337 Wrote pid 121166 to log/1/server/tftp_server.pid 19:28:40.987781 Wrote port 41216 to log/1/server/tftp_server.port 19:28:40.987870 Running IPv4 version on port UDP/41216 19:28:41.936396 trying to get file: verifiedserver mode 1 19:28:41.936548 Are-we-friendly question received 19:28:41.936629 write 19:28:41.936791 read 19:28:41.937091 read: 4 19:28:41.937426 end of one transfer === End of file tftp_server.log === Start of file valgrind285 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind285 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/3/valgrind289 ../src/curl -q --output log/3/curl289.out --include --trace-ascii log/3/trace289 --trace-config all --trace-time ftp://127.0.0.1:43789/289 -T log/3/illegal-nonexistent-file -C - > log/3/stdout289 2> log/3/stderr289 curl returned 1, when expecting 26 289: exit FAILED == Contents of files in the log/3/ 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/3/valgrind289 ../src/curl -q --output log/3/curl289.out --include --trace-ascii log/3/trace289 --trace-config all --trace-time ftp://127.0.0.1:43789/289 -T log/3/illegal-nonexistent-file -C - > log/3/stdout289 2> log/3/stderr289 === End of file commands.log === Start of file ftp_server.log 19:28:41.695431 ====> Client connect 19:28:41.696288 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:41.699286 < "USER anonymous" 19:28:41.699689 > "331 We are happy you popped in![CR][LF]" 19:28:41.700744 < "PASS ftp@example.com" 19:28:41.701051 > "230 Welcome you silly person[CR][LF]" 19:28CMD (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/4/valgrind286 ../src/curl -q --output log/4/curl286.out --include --trace-ascii log/4/trace286 --trace-config all --trace-time -T log/4/test286.txt tftp://127.0.0.1:43445// > log/4/stdout286 2> log/4/stderr286 :41.702242 < "PWD" 19:28:41.702732 > "257 "/" is current directory[CR][LF]" 19:28:41.703914 < "EPSV" 19:28:41.704194 ====> Passive DATA channel requested by client 19:28:41.704357 DATA sockfilt for passive data channel starting... 19:28:41.712732 DATA sockfilt for passive data channel started (pid 121487) 19:28:41.713497 DATA sockfilt for passive data channel listens on port 34331 19:28:41.713824 > "229 Entering Passive Mode (|||34331|)[LF]" 19:28:41.714002 Client has been notified that DATA conn will be accepted on port 34331 19:28:41.715529 Client connects to port 34331 19:28:41.715799 ====> Client established passive DATA connection on port 34331 19:28:41.716388 < "TYPE I" 19:28:41.716661 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:41.718655 < "SIZE verifiedserver" 19:28:41.719002 > "213 18[CR][LF]" 19:28:41.720061 < "RETR verifiedserver" 19:28:41.720364 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:41.720829 =====> Closing passive DATA connection... 19:28:41.721045 Server disconnects passive DATA connection 19:28:41.729530 Server disconnected passive DATA connection 19:28:41.729790 DATA sockfilt for passive data channel quits (pid 121487) 19:28:41.730906 DATA sockfilt for passive data channel quit (pid 121487) 19:28:41.731121 =====> Closed passive DATA connection 19:28:41.731330 > "226 File transfer complete[CR][LF]" 19:28:41.732461 < "QUIT" 19:28:41.732749 > "221 bye bye baby[CR][LF]" 19:28:41.733582 MAIN sockfilt said DISC 19:28:41.733892 ====> Client disconnected 19:28:41.734223 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:42.160096 ====> Client connect 19:28:42.161609 Received DATA (on stdin) 19:28:42.161712 > 160 bytes data, server => client 19:28:42.161808 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:42.161896 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:42.161969 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:42.163616 < 16 bytes data, client => server 19:28:42.163760 'USER anonymous\r\n' 19:28:42.164733 Received DATA (on stdin) 19:28:42.164854 > 33 bytes data, server => client 19:28:42.164927 '331 We are happy you popped in!\r\n' 19:28:42.165352 < 22 bytes data, client => server 19:28:42.165473 'PASS ftp@example.com\r\n' 19:28:42.166109 Received DATA (on stdin) 19:28:42.166225 > 30 bytes data, server => client 19:28:42.166302 '230 Welcome you silly person\r\n' 19:28:42.166780 < 5 bytes data, client => server 19:28:42.166910 'PWD\r\n' 19:28:42.167787 Received DATA (on stdin) 19:28:42.167925 > 30 bytes data, server => client 19:28:42.168004 '257 "/" is current directory\r\n' 19:28:42.168461 < 6 bytes data, client => server 19:28:42.168620 'EPSV\r\n' 19:28:42.178877 Received DATA (on stdin) 19:28:42.179015 > 38 bytes data, server => client 19:28:42.179105 '229 Entering Passive Mode (|||34331|)\n' 19:28:42.179979 < 8 bytes data, client => server 19:28:42.180103 'TYPE I\r\n' 19:28:42.181998 Received DATA (on stdin) 19:28:42.182137 > 33 bytes data, server => client 19:28:42.182226 '200 I modify TYPE as you wanted\r\n' 19:28:42.183235 < 21 bytes data, client => server 19:28:42.183382 'SIZE verifiedserver\r\n' 19:28:42.184057 Received DATA (on stdin) 19:28:42.184181 > 8 bytes data, server => client 19:28:42.184259 '213 18\r\n' 19:28:42.184674 < 21 bytes data, client => server 19:28:42.184805 'RETR verifiedserver\r\n' 19:28:42.185405 Received DATA (on stdin) 19:28:42.185514 > 29 bytes data, server => client 19:28:42.185585 '150 Binary junk (18 bytes).\r\n' 19:28:42.196390 Received DATA (on stdin) 19:28:42.196501 > 28 bytes data, server => client 19:28:42.196575 '226 File transfer complete\r\n' 19:28:42.197095 < 6 bytes data, client => server 19:28:42.197218 'QUIT\r\n' 19:28:42.197799 Received DATA (on stdin) 19:28:42.197908 > 18 bytes data, server => client 19:28:42.197980 '221 bye bye baby\r\n' 19:28:42.198360 ====> Client disconnect 19:28:42.198964 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:41.176889 Running IPv4 version 19:28:41.177245 Listening on port 34331 19:28:41.177467 Wrote pid 121487 to log/3/server/ftp_sockdata.pid 19:28:41.177575 Received PING (on stdin) 19:28:41.178106 Received PORT (on stdin) 19:28:41.180369 ====> Client connect 19:28:41.185979 Received DATA (on stdin) 19:28:41.186091 > 18 bytes data, server => client 19:28:41.186165 'WE ROOLZ: 109394\r\n' 19:28:41.186373 Received DISC (on stdin) 19:28:41.186614 ====> Client forcibly disconnected 19:28:41.195019 Received QUIT (on stdin) 19:28:41.195135 quits 19:28:41.195395 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 289 === End of file server.cmd === Start of file valgrind289 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind289 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: ../src/curl --max-time 13 --silent --verbose --globoff "tftp://127.0.0.1:43445/verifiedserver" 2>log/4/tftp_verify.log RUN: Verifying our test tftp server took 0 seconds RUN: TFTP server on PID 121218 port 43445 * pid tftp => 121218 121218 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/4/valgrind286 ../src/curl -q --output log/4/curl286.out --include --trace-ascii log/4/trace286 --trace-config all --trace-time -T log/4/test286.txt tftp://127.0.0.1:43445// > log/4/stdout286 2> log/4/stderr286 286: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind286 ../src/curl -q --output log/4/curl286.out --include --trace-ascii log/4/trace286 --trace-config all --trace-time -T log/4/test286.txt tftp://127.0.0.1:43445// > log/4/stdout286 2> log/4/stderr286 === End of file commands.log === Start of file server.cmd Testnum 286 === End of file server.cmd === 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 CMD (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/2/valgrind290 ../src/curl -q --output log/2/curl290.out --include --trace-ascii log/2/trace290 --trace-config all --trace-time ftp://127.0.0.1:36773/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 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 19:28:40.217643 Wrote pid 121218 to log/4/server/tftp_server.pid 19:28:40.217957 Wrote port 43445 to log/4/server/tftp_server.port 19:28:40.218020 Running IPv4 version on port UDP/43445 19:28:41.181535 trying to get file: verifiedserver mode 1 19:28:41.181619 Are-we-friendly question received 19:28:41.181714 write 19:28:41.181857 read 19:28:41.182567 read: 4 19:28:41.182859 end of one transfer === End of file tftp_server.log === Start of file valgrind286 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind286 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-config all --trace-time ftp://127.0.0.1:36773/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 290: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:36773/290 --max-filesize 30 > log/2/stdout290 2> log/2/stderr290 === End of file commands.log === Start of file ftp_server.log 19:28:42.013909 ====> Client connect 19:28:42.014789 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:42.016671 < "USER anonymous" 19:28:42.017061 > "331 We are happy you popped in![CR][LF]" 19:28:42.018178 < "PASS ftp@example.com" 19:28:42.018504 > "230 Welcome you silly person[CR][LF]" 19:28:42.019578 < "PWD" 19:28:42.019963 > "257 "/" is current directory[CR][LF]" 19:28:42.021158 < "EPSV" 19:28:42.021585 ====> Passive DATA channel requested by client 19:28:42.021822 DATA sockfilt for passive data channel starting... 19:28:42.031121 DATA sockfilt for passive data channel started (pid 121596) 19:28:42.031948 DATA sockfilt for passive data channel listens on port 36513 19:28:42.032301 > "229 Entering Passive Mode (|||36513|)[LF]" 19:28:42.032475 Client has been notified that DATA conn will be accepted on port 36513 19:28:42.033495 Client connects to port 36513 19:28:42.033763 ====> Client established passive DATA connection on port 36513 19:28:42.034395 < "TYPE I" 19:28:42.034724 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:42.035757 < "SIZE verifiedserver" 19:28:42.036076 > "213 18[CR][LF]" 19:28:42.037067 < "RETR verifiedserver" 19:28:42.037377 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:42.038353 =====> Closing passive DATA connection... 19:28:42.038958 Server disconnects passive DATA connection 19:28:42.039178 Fancy that; client wants to DISC, too 19:28:42.039482 Server disconnected passive DATA connection 19:28:42.039719 DATA sockfilt for passive data channel quits (pid 121596) 19:28:42.040988 DATA sockfilt for passive data channel quit (pid 121596) 19:28:42.041216 =====> Closed passive DATA connection 19:28:42.041499 > "226 File transfer complete[CR][LF]" 19:28:42.083710 < "QUIT" 19:28:42.084054 > "221 bye bye baby[CR][LF]" 19:28:42.085794 MAIN sockfilt said DISC 19:28:42.086089 ====> Client disconnected 19:28:42.086458 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:41.478396 ====> Client connect 19:28:41.480138 Received DATA (on stdin) 19:28:41.480261 > 160 bytes data, server => client 19:28:41.480367 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:41.480473 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:41.480555 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:41.480912 < 16 bytes data, client => server 19:28:41.481039 'USER anonymous\r\n' 19:28:41.482102 Received DATA (on stdin) 19:28:41.482232 > 33 bytes data, server => client 19:28:41.482305 '331 We are happy you popped in!\r\n' 19:28:41.482758 < 22 bytes data, client => server 19:28:41.482892 'PASS ftp@example.com\r\n' 19:28:41.483540 Received DATA (on stdin) 19:28:41.483662 > 30 bytes data, server => client 19:28:41.483737 '230 Welcome you silly person\r\n' 19:28:41.484164 < 5 bytes data, client => server 19:28:41.484292 'PWD\r\n' 19:28:41.484997 Received DATA (on stdin) 19:28:41.485180 > 30 bytes data, server => client 19:28:41.485261 '257 "/" is current directory\r\n' 19:28:41.485721 < 6 bytes data, client => server 19:28:41.485848 'EPSV\r\n' 19:28:41.497337 Received DATA (on stdin) 19:28:41.497462 > 38 bytes data, server => client 19:28:41.497544 '229 Entering Passive Mode (|||36513|)\n' 19:28:41.498551 < 8 bytes data, client => server 19:28:41.498668 'TYPE I\r\n' 19:28:41.499767 Received DATA (on stdin) 19:28:41.499897 > 33 bytes data, server => client 19:28:41.499973 '200 I modify TYPE as you wanted\r\n' 19:28:41.500403 < 21 bytes data, client => server 19:28:41.500529 'SIZE verifiedserver\r\n' 19:28:41.501132 Received DATA (on stdin) 19:28:41.501250 > 8 bytes data, server => client 19:28:41.501316 '213 18\r\n' 19:28:41.501720 < 21 bytes data, client => server 19:28:41.501834 'RETR verifiedserver\r\n' 19:28:41.502420 Received DATA (on stdin) 19:28:41.502605 > 29 bytes data, server => client 19:28:41.502710 '150 Binary junk (18 bytes).\r\n' 19:28:41.506557 Received DATA (on stdin) 19:28:41.506685 > 28 bytes data, server => client 19:28:41.506758 '226 File transfer complete\r\n' 19:28:41.548206 < 6 bytes data, client => server 19:28:41.548412 'QUIT\r\n' 19:28:41.549087 Received DATA (on stdin) 19:28:41.549207 > 18 bytes data, server => client 19:28:41.549274 '221 bye bye baby\r\n' 19:28:41.550588 ====> Client disconnect 19:28:41.558576 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:42.495129 Running IPv4 version 19:28:42.495533 Listening on port 36513 19:28:42.495799 Wrote pid 121596 to log/2/server/ftp_sockdata.pid 19:28:42.495924 Received PING (on stdin) 19:28:42.496508 Received PORT (on stdin) 19:CMD (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/1/valgrind291 ../src/curl -q --output log/1/curl291.out --include --trace-ascii log/1/trace291 --trace-config all --trace-time ftp://127.0.0.1:39333/291 --max-filesize 100 > log/1/stdout291 2> log/1/stderr291 28:42.498230 ====> Client connect 19:28:42.502999 Received DATA (on stdin) 19:28:42.503143 > 18 bytes data, server => client 19:28:42.503229 'WE ROOLZ: 116354\r\n' 19:28:42.503703 ====> Client disconnect 19:28:42.504233 Received DISC (on stdin) 19:28:42.504354 Crikey! Client also wants to disconnect 19:28:42.504446 Received ACKD (on stdin) 19:28:42.505014 Received QUIT (on stdin) 19:28:42.505135 quits 19:28:42.505413 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 290 === End of file server.cmd === Start of file valgrind290 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind290 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/1/valgrind291 ../src/curl -q --output log/1/curl291.out --include --trace-ascii log/1/trace291 --trace-config all --trace-time ftp://127.0.0.1:39333/291 --max-filesize 100 > log/1/stdout291 2> log/1/stderr291 291: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind291 ../src/curl -q --output log/1/curl291.out --include --trace-ascii log/1/trace291 --trace-config all --trace-time ftp://127.0.0.1:39333/291 --max-filesize 100 > log/1/stdout291 2> log/1/stderr291 === End of file commands.log === Start of file ftp_server.log 19:28:42.103210 ====> Client connect 19:28:42.104102 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:42.105735 < "USER anonymous" 19:28:42.106066 > "331 We are happy you popped in![CR][LF]" 19:28:42.107069 < "PASS ftp@example.com" 19:28:42.107374 > "230 Welcome you silly person[CR][LF]" 19:28:42.110377 < "PWD" 19:28:42.110691 > "257 "/" is current directory[CR][LF]" 19:28:42.111773 < "EPSV" 19:28:42.111992 ====> Passive DATA channel requested by client 19:28:42.112132 DATA sockfilt for passive data channel starting... 19:28:42.120641 DATA sockfilt for passive data channel started (pid 121642) 19:28:42.121385 DATA sockfilt for passive data channel listens on port 38909 19:28:42.121816 > "229 Entering Passive Mode (|||38909|)[LF]" 19:28:42.121995 Client has been notified that DATA conn will be accepted on port 38909 19:28:42.122939 Client connects to port 38909 19:28:42.123163 ====> Client established passive DATA connection on port 38909 19:28:42.123727 < "TYPE I" 19:28:42.124018 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:42.125061 < "SIZE verifiedserver" 19:28:42.125369 > "213 18[CR][LF]" 19:28:42.126532 < "RETR verifiedserver" 19:28:42.126842 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:42.127683 =====> Closing passive DATA connection... 19:28:42.127901 Server disconnects passive DATA connection 19:28:42.128700 Server disconnected passive DATA connection 19:28:42.128921 DATA sockfilt for passive data channel quits (pid 121642) 19:28:42.130392 DATA sockfilt for passive data channel quit (pid 121642) 19:28:42.130649 =====> Closed passive DATA connection 19:28:42.130867 > "226 File transfer complete[CR][LF]" 19:28:42.170418 < "QUIT" 19:28:42.170707 > "221 bye bye baby[CR][LF]" 19:28:42.171461 MAIN sockfilt said DISC 19:28:42.171733 ====> Client disconnected 19:28:42.172053 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:42.566814 ====> Client connect 19:28:42.569139 Received DATA (on stdin) 19:28:42.569286 > 160 bytes data, server => client 19:28:42.569370 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:42.569450 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:42.569523 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:42.569956 < 16 bytes data, client => server 19:28:42.570100 'USER anonymous\r\n' 19:28:42.571115 Received DATA (on stdin) 19:28:42.571237 > 33 bytes data, server => client 19:28:42.571318 '331 We are happy you popped in!\r\n' 19:28:42.571720 < 22 bytes data, client => server 19:28:42.571848 'PASS ftp@example.com\r\n' 19:28:42.572426 Received DATA (on stdin) 19:28:42.572561 > 30 bytes data, server => client 19:28:42.572632 '230 Welcome you silly person\r\n' 19:28:42.573061 < 5 bytes data, client => server 19:28:42.573193 'PWD\r\n' 19:28:42.575750 Received DATA (on stdin) 19:28:42.575892 > 30 bytes data, server => client 19:28:42.575981 '257 "/" is current directory\r\n' 19:28:42.576405 < 6 bytes data, client => server 19:28:42.576531 'EPSV\r\n' 19:28:42.586853 Received DATA (on stdin) 19:28:42.586995 > 38 bytes data, server => client 19:28:42.587074 '229 Entering Passive Mode (|||38909|)\n' 19:28:42.587908 < 8 bytes data, client => server 19:28:42.588016 'TYPE I\r\n' 19:28:42.589066 Received DATA (on stdin) 19:28:42.589193 > 33 bytes data, server => client 19:28:42.589279 '200 I modify TYPE as you wanted\r\n' 19:28:42.589701 < 21 bytes data, client => server 19:28:42.589833 'SIZE verifiedserver\r\n' 19:28:42.590423 Received DATA (on stdin) 19:28:42.590690 > 8 bytes data, server => client 19:28:42.590766 '213 18\r\n' 19:28:42.591175 < 21 bytes data, client => server 19:28:42.591306 'RETR verifiedserver\r\n' 19:28:42.591881 Received DATA (on stdin) 19:28:42.592005 > 29 bytes data, server => client 19:28:42.592080 '150 Binary junk (18 bytes).\r\n' 19:28:42.595921 Received DATA (on stdin) 19:28:42.596055 > 28 bytes data, server => client 19:28:42.596140 '226 File transfer complete\r\n' 19:28:42.635019 < 6 bytes data, client => server 19:28:42.635171 'QUIT\r\n' 19:28:42.635740 Received DATA (on stdin) 19:28:42.635841 > 18 bytes data, server => client 19:28:42.635910 '221 bye bye baby\r\n' 19:28:42.636257 ====> Client disconnect 19:28:42.636787 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:42.584765 Running IPv4 version 19:28:42.585124 Listening on port 38909 19:28:42.585357 Wrote pid 121642 to log/1/server/ftp_sockdata.pid 19:28:42.585468 Received PING (on stdin) 19:28:42.586015 Received PORT (on stdin) 19:28:42.587732 ====> Client connect 19:28:42.592168 Received DATA (on stdin) 19:28:42.592303 > 18 bytes data, server => client 19:28:42.593115 'WE ROOLZ: 109414\r\n' 19:28:42.593384 Received DISC (on stdin) 19:28:42.593515 ====> Client forcibly disconnected 19:28:42.594204 Received QUIT CMD (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/valgrind292 ../src/curl -q --output log/3/curl292.out --include --trace-ascii log/3/trace292 --trace-config all --trace-time http://127.0.0.1:37525/292 --max-filesize 1000 > log/3/stdout292 2> log/3/stderr292 CMD (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/4/valgrind293 ../src/curl -q --output log/4/curl293.out --include --trace-ascii log/4/trace293 --trace-config all --trace-time http://127.0.0.1:43669/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 (on stdin) 19:28:42.594317 quits 19:28:42.594688 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 291 === End of file server.cmd === Start of file valgrind291 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind292 ../src/curl -q --output log/3/curl292.out --include --trace-ascii log/3/trace292 --trace-config all --trace-time http://127.0.0.1:37525/292 --max-filesize 1000 > log/3/stdout292 2> log/3/stderr292 292: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind292 ../src/curl -q --output log/3/curl292.out --include --trace-ascii log/3/trace292 --trace-config all --trace-time http://127.0.0.1:37525/292 --max-filesize 1000 > log/3/stdout292 2> log/3/stderr292 === End of file commands.log === Start of file http_server.log 19:28:41.815880 ====> Client connect 19:28:41.816108 accept_connection 3 returned 4 19:28:41.816232 accept_connection 3 returned 0 19:28:41.816341 Read 93 bytes 19:28:41.816425 Process 93 bytes request 19:28:41.816515 Got request: GET /verifiedserver HTTP/1.1 19:28:41.816581 Are-we-friendly question received 19:28:41.816755 Wrote request (93 bytes) input to log/3/server.input 19:28:41.816913 Identifying ourselves as friends 19:28:41.817444 Response sent (57 bytes) and written to log/3/server.response 19:28:41.817530 special request received, no persistency 19:28:41.817582 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 292 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind292 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind292 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-config all --trace-time http://127.0.0.1:43669/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 293: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/293 --max-filesize 2 > log/4/stdout293 2> log/4/stderr293 === End of file commands.log === Start of file http_server.log 19:28:42.888769 ====> Client connect 19:28:42.889069 accept_connection 3 returned 4 19:28:42.889191 accept_connection 3 returned 0 19:28:42.889289 Read 93 bytes 19:28:42.889361 Process 93 bytes request 19:28:42.889435 Got request: GET /verifiedserver HTTP/1.1 19:28:42.889515 Are-we-friendly question received 19:28:42.889699 Wrote request (93 bytes) input to log/4/server.input 19:28:42.889913 Identifying ourselves as friends 19:28:42.890593 Response sent (57 bytes) and written to log/4/server.response 19:28:42.890705 special request received, no persistency 19:28:42.890768 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 293 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind293 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-CMD (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/2/valgrind294 ../src/curl -q --output log/2/curl294.out --include --trace-ascii log/2/trace294 --trace-config all --trace-time ftp://127.0.0.1:36773/294/ --ftp-account "data for acct" > log/2/stdout294 2> log/2/stderr294 CMD (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/1/valgrind295 ../src/curl -q --output log/1/curl295.out --include --trace-ascii log/1/trace295 --trace-config all --trace-time ftp://127.0.0.1:39333/295/ > log/1/stdout295 2> log/1/stderr295 be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind294 ../src/curl -q --output log/2/curl294.out --include --trace-ascii log/2/trace294 --trace-config all --trace-time ftp://127.0.0.1:36773/294/ --ftp-account "data for acct" > log/2/stdout294 2> log/2/stderr294 294: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind294 ../src/curl -q --output log/2/curl294.out --include --trace-ascii log/2/trace294 --trace-config all --trace-time ftp://127.0.0.1:36773/294/ --ftp-account "data for acct" > log/2/stdout294 2> log/2/stderr294 === End of file commands.log === Start of file ftp_server.log 19:28:42.732291 ====> Client connect 19:28:42.733079 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:42.734531 < "USER anonymous" 19:28:42.734860 > "331 We are happy you popped in![CR][LF]" 19:28:42.735894 < "PASS ftp@example.com" 19:28:42.736171 > "230 Welcome you silly person[CR][LF]" 19:28:42.737133 < "PWD" 19:28:42.737539 > "257 "/" is current directory[CR][LF]" 19:28:42.738643 < "EPSV" 19:28:42.738868 ====> Passive DATA channel requested by client 19:28:42.739042 DATA sockfilt for passive data channel starting... 19:28:42.756174 DATA sockfilt for passive data channel started (pid 121870) 19:28:42.756886 DATA sockfilt for passive data channel listens on port 35405 19:28:42.757225 > "229 Entering Passive Mode (|||35405|)[LF]" 19:28:42.757460 Client has been notified that DATA conn will be accepted on port 35405 19:28:42.759111 Client connects to port 35405 19:28:42.759446 ====> Client established passive DATA connection on port 35405 19:28:42.760203 < "TYPE I" 19:28:42.760567 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:42.761781 < "SIZE verifiedserver" 19:28:42.762125 > "213 18[CR][LF]" 19:28:42.763193 < "RETR verifiedserver" 19:28:42.763548 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:42.764095 =====> Closing passive DATA connection... 19:28:42.764315 Server disconnects passive DATA connection 19:28:42.765161 Server disconnected passive DATA connection 19:28:42.765474 DATA sockfilt for passive data channel quits (pid 121870) 19:28:42.767010 DATA sockfilt for passive data channel quit (pid 121870) 19:28:42.767238 =====> Closed passive DATA connection 19:28:42.767441 > "226 File transfer complete[CR][LF]" 19:28:42.806675 < "QUIT" 19:28:42.807006 > "221 bye bye baby[CR][LF]" 19:28:42.812155 MAIN sockfilt said DISC 19:28:42.812459 ====> Client disconnected 19:28:42.812819 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:42.196943 ====> Client connect 19:28:42.198095 Received DATA (on stdin) 19:28:42.198212 > 160 bytes data, server => client 19:28:42.198288 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:42.198357 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:42.198421 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:42.198977 < 16 bytes data, client => server 19:28:42.199106 'USER anonymous\r\n' 19:28:42.199921 Received DATA (on stdin) 19:28:42.200026 > 33 bytes data, server => client 19:28:42.200100 '331 We are happy you popped in!\r\n' 19:28:42.200514 < 22 bytes data, client => server 19:28:42.200640 'PASS ftp@example.com\r\n' 19:28:42.201199 Received DATA (on stdin) 19:28:42.201298 > 30 bytes data, server => client 19:28:42.201367 '230 Welcome you silly person\r\n' 19:28:42.201744 < 5 bytes data, client => server 19:28:42.201857 'PWD\r\n' 19:28:42.202598 Received DATA (on stdin) 19:28:42.202722 > 30 bytes data, server => client 19:28:42.202797 '257 "/" is current directory\r\n' 19:28:42.203238 < 6 bytes data, client => server 19:28:42.203370 'EPSV\r\n' 19:28:42.222247 Received DATA (on stdin) 19:28:42.222377 > 38 bytes data, server => client 19:28:42.222608 '229 Entering Passive Mode (|||35405|)\n' 19:28:42.223637 < 8 bytes data, client => server 19:28:42.223778 'TYPE I\r\n' 19:28:42.225591 Received DATA (on stdin) 19:28:42.225723 > 33 bytes data, server => client 19:28:42.225807 '200 I modify TYPE as you wanted\r\n' 19:28:42.226273 < 21 bytes data, client => server 19:28:42.226408 'SIZE verifiedserver\r\n' 19:28:42.227145 Received DATA (on stdin) 19:28:42.227258 > 8 bytes data, server => client 19:28:42.227329 '213 18\r\n' 19:28:42.227785 < 21 bytes data, client => server 19:28:42.227943 'RETR verifiedserver\r\n' 19:28:42.228555 Received DATA (on stdin) 19:28:42.228699 > 29 bytes data, server => client 19:28:42.228772 '150 Binary junk (18 bytes).\r\n' 19:28:42.232476 Received DATA (on stdin) 19:28:42.232586 > 28 bytes data, server => client 19:28:42.232662 '226 File transfer complete\r\n' 19:28:42.271221 < 6 bytes data, client => server 19:28:42.271379 'QUIT\r\n' 19:28:42.272020 Received DATA (on stdin) 19:28:42.272146 > 18 bytes data, server => client 19:28:42.272217 '221 bye bye baby\r\n' 19:28:42.275797 ====> Client disconnect 19:28:42.277538 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:42.220166 Running IPv4 version 19:28:42.220535 Listening on port 35405 19:28:42.220851 Wrote pid 121870 to log/2/server/ftp_sockdata.pid 19:28:42.220984 Received PING (on stdin) 19:28:42.221517 Received PORT (on stdin) 19:28:42.223921 ====> Client connect 19:28:42.229007 Received DATA (on stdin) 19:28:42.229160 > 18 bytes data, server => client 19:28:42.229258 'WE ROOLZ: 116354\r\n' 19:28:42.229908 Received DISC (on stdin) 19:28:42.230102 ====> Client forcibly disconnected 19:28:42.230831 Received QUIT (on stdin) 19:28:42.230966 quits 19:28:42.231367 ============> 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 valgrind294 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind295 ../src/curl -q --output log/1/curl295.out --include --trace-ascii log/1/trace295 --trace-config all --trace-time ftp://127.0.0.1:39333/295/ > log/1/stdout295 2> log/1/stderr295 295: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind295 ../src/curl -q --output log/1/curl295.out --include --trace-ascii log/1/trace295 --trace-config all --trace-time ftp://127.0.0.1:39333/295/ > log/1/stdout295 2> log/1/stderr295 === End of file commands.log === Start of file ftp_server.log 19:28:42.837920 ====> Client connect 19:28:42.838894 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:42.840550 < "USER anonymous" 19:28:42.840819 > "331 We are happy you popped in![CR][LF]" 19:28:42.841803 < "PASS ftp@example.com" 19:28:42.842064 > "230 Welcome you silly person[CR][LF]" 19:28:42.842992 < "PWD" 19:28:42.843257 > "257 "/" is current directory[CR][LF]" 19:28:42.844274 < "EPSV" 19:28:42.844472 ====> Passive DATA channel requested by client 19:28:42.844589 DATA sockfilt for passive data channel starting... 19:28:42.851929 DATA sockfilt for passive data channel started (pid 121906) 19:28:42.852622 DATA sockfilt for passive data channel listens on port 43515 19:28:42.852904 > "229 Entering Passive Mode (|||43515|)[LF]" 19:28:42.853070 Client has been notified that DATA conn will be accepted on port 43515 19:28:42.854283 Client connects to port 43515 19:28:42.854536 ====> Client established passive DATA connection on port 43515 19:28:42.855116 < "TYPE I" 19:28:42.855479 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:42.856543 < "SIZE verifiedserver" 19:28:42.856853 > "213 18[CR][LF]" 19:28:42.857837 < "RETR verifiedserver" 19:28:42.858137 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:42.858602 =====> Closing passive DATA connection... 19:28:42.858796 Server disconnects passive DATA connection 19:28:42.859169 Server disconnected passive DATA connection 19:28:42.859381 DATA sockfilt for passive data channel quits (pid 121906) 19:28:42.860511 DATA sockfilt for passive data channel quit (pid 121906) 19:28:42.860733 =====> Closed passive DATA connection 19:28:42.860931 > "226 File transfer complete[CR][LF]" 19:28:42.902490 < "QUIT" 19:28:42.902771 > "221 bye bye baby[CR][LF]" 19:28:42.903592 MAIN sockfilt said DISC 19:28:42.903851 ====> Client disconnected 19:28:42.904178 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:43.302333 ====> Client connect 19:28:43.303903 Received DATA (on stdin) 19:28:43.304018 > 160 bytes data, server => client 19:28:43.304097 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:43.304168 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:43.304226 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:43.304937 < 16 bytes data, client => server 19:28:43.305154 'USER anonymous\r\n' 19:28:43.305834 Received DATA (on stdin) 19:28:43.305931 > 33 bytes data, server => client 19:28:43.306000 '331 We are happy you popped in!\r\n' 19:28:43.306358 < 22 bytes data, client => server 19:28:43.306574 'PASS ftp@example.com\r\n' 19:28:43.307082 Received DATA (on stdin) 19:28:43.307172 > 30 bytes data, server => client 19:28:43.307240 '230 Welcome you silly person\r\n' 19:28:43.307625 < 5 bytes data, client => server 19:28:43.307747 'PWD\r\n' 19:28:43.308274 Received DATA (on stdin) 19:28:43.308366 > 30 bytes data, server => client 19:28:43.308431 '257 "/" is current directory\r\n' 19:28:43.308817 < 6 bytes data, client => server 19:28:43.309033 'EPSV\r\n' 19:28:43.317919 Received DATA (on stdin) 19:28:43.318040 > 38 bytes data, server => client 19:28:43.318114 '229 Entering Passive Mode (|||43515|)\n' 19:28:43.318986 < 8 bytes data, client => server 19:28:43.319091 'TYPE I\r\n' 19:28:43.320498 Received DATA (on stdin) 19:28:43.320631 > 33 bytes data, server => client 19:28:43.320711 '200 I modify TYPE as you wanted\r\n' 19:28:43.321140 < 21 bytes data, client => server 19:28:43.321272 'SIZE verifiedserver\r\n' 19:28:43.321872 Received DATA (on stdin) 19:28:43.321972 > 8 bytes data, server => client 19:28:43.322033 '213 18\r\n' 19:28:43.322385 < 21 bytes data, client => server 19:28:43.322617 'RETR verifiedserver\r\n' 19:28:43.323158 Received DATA (on stdin) 19:28:43.323262 > 29 bytes data, server => client 19:28:43.323331 '150 Binary junk (18 bytes).\r\n' 19:28:43.325958 Received DATA (on stdin) 19:28:43.326069 > 28 bytes data, server => client 19:28:43.326137 '226 File transfer complete\r\n' 19:28:43.367096 < 6 bytes data, client => server 19:28:43.367255 'QUIT\r\n' 19:28:43.367796 Received DATA (on stdin) 19:28:43.367916 > 18 bytes data, server => client 19:28:43.367993 '221 bye bye baby\r\n' 19:28:43.368369 ====> Client disconnect 19:28:43.368893 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:42.316012 Running IPv4 version 19:28:42.316369 Listening on port 43515 19:28:42.316600 Wrote pid 121906 to log/1/server/ftp_sockdata.pid 19:28:42.316709 Received PING (on stdin) 19:28:42.317289 Received PORT (on stdin) 19:28:42.318807 ====> Client connect 19:28:42.323567 Received DATA (on stdin) 19:28:42.323690 > 18 bytes data, server => client 19:28:42.323774 'WE ROOLZ: 109414\r\n' 19:28:42.323993 Received DISC (on stdin) 19:28:42.324128 ====> Client forcibly disconnected 19:28:42.324573 Received QUIT (on stdin) 19:28:42.324665 quits 19:28:42.324933 ============> 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 valgrind295 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the 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/valgrind296 ../src/curl -q --output log/3/curl296.out --include --trace-ascii log/3/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:43789/first/second/third/296 > log/3/stdout296 2> log/3/stderr296 tandard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind296 ../src/curl -q --output log/3/curl296.out --include --trace-ascii log/3/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:43789/first/second/third/296 > log/3/stdout296 2> log/3/stderr296 296: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind296 ../src/curl -q --output log/3/curl296.out --include --trace-ascii log/3/trace296 --trace-config all --trace-time --ftp-method multicwd ftp://127.0.0.1:43789/first/second/third/296 > log/3/stdout296 2> log/3/stderr296 === End of file commands.log === Start of file ftp_server.log 19:28:42.998081 ====> Client connect 19:28:42.998863 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:43.000350 < "USER anonymous" 19:28:43.000649 > "331 We are happy you popped in![CR][LF]" 19:28:43.001886 < "PASS ftp@example.com" 19:28:43.002195 > "230 Welcome you silly person[CR][LF]" 19:28:43.003240 < "PWD" 19:28:43.003632 > "257 "/" is current directory[CR][LF]" 19:28:43.005222 < "EPSV" 19:28:43.005570 ====> Passive DATA channel requested by client 19:28:43.005795 DATA sockfilt for passive data channel starting... 19:28:43.020111 DATA sockfilt for passive data channel started (pid 121936) 19:28:43.020828 DATA sockfilt for passive data channel listens on port 41289 19:28:43.021167 > "229 Entering Passive Mode (|||41289|)[LF]" 19:28:43.021323 Client has been notified that DATA conn will be accepted on port 41289 19:28:43.022408 Client connects to port 41289 19:28:43.022777 ====> Client established passive DATA connection on port 41289 19:28:43.023336 < "TYPE I" 19:28:43.023671 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:43.024838 < "SIZE verifiedserver" 19:28:43.025260 > "213 18[CR][LF]" 19:28:43.026796 < "RETR verifiedserver" 19:28:43.027123 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:43.027589 =====> Closing passive DATA connection... 19:28:43.027780 Server disconnects passive DATA connection 19:28:43.028196 Server disconnected passive DATA connection 19:28:43.028421 DATA sockfilt for passive data channel quits (pid 121936) 19:28:43.029614 DATA sockfilt for passive data channel quit (pid 121936) 19:28:43.029838 =====> Closed passive DATA connection 19:28:43.030049 > "226 File transfer complete[CR][LF]" 19:28:43.070563 < "QUIT" 19:28:43.070908 > "221 bye bye baby[CR][LF]" 19:28:43.072905 MAIN sockfilt said DISC 19:28:43.073228 ====> Client disconnected 19:28:43.073641 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:43.462712 ====> Client connect 19:28:43.463864 Received DATA (on stdin) 19:28:43.463999 > 160 bytes data, server => client 19:28:43.464084 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:43.464163 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:43.464234 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:43.464779 < 16 bytes data, client => server 19:28:43.464915 'USER anonymous\r\n' 19:28:43.465674 Received DATA (on stdin) 19:28:43.465787 > 33 bytes data, server => client 19:28:43.465868 '331 We are happy you popped in!\r\n' 19:28:43.466324 < 22 bytes data, client => server 19:28:43.466678 'PASS ftp@example.com\r\n' 19:28:43.467204 Received DATA (on stdin) 19:28:43.467325 > 30 bytes data, server => client 19:28:43.467403 '230 Welcome you silly person\r\n' 19:28:43.467862 < 5 bytes data, client => server 19:28:43.467986 'PWD\r\n' 19:28:43.468751 Received DATA (on stdin) 19:28:43.469167 > 30 bytes data, server => client 19:28:43.469268 '257 "/" is current directory\r\n' 19:28:43.469815 < 6 bytes data, client => server 19:28:43.469954 'EPSV\r\n' 19:28:43.486183 Received DATA (on stdin) 19:28:43.486313 > 38 bytes data, server => client 19:28:43.486395 '229 Entering Passive Mode (|||41289|)\n' 19:28:43.487410 < 8 bytes data, client => server 19:28:43.487597 'TYPE I\r\n' 19:28:43.488690 Received DATA (on stdin) 19:28:43.488817 > 33 bytes data, server => client 19:28:43.488897 '200 I modify TYPE as you wanted\r\n' 19:28:43.489394 < 21 bytes data, client => server 19:28:43.489540 'SIZE verifiedserver\r\n' 19:28:43.490241 Received DATA (on stdin) 19:28:43.490694 > 8 bytes data, server => client 19:28:43.490823 '213 18\r\n' 19:28:43.491366 < 21 bytes data, client => server 19:28:43.491499 'RETR verifiedserver\r\n' 19:28:43.492137 Received DATA (on stdin) 19:28:43.492259 > 29 bytes data, server => client 19:28:43.492351 '150 Binary junk (18 bytes).\r\n' 19:28:43.495076 Received DATA (on stdin) 19:28:43.495194 > 28 bytes data, server => client 19:28:43.495274 '226 File transfer complete\r\n' 19:28:43.535060 < 6 bytes data, client => server 19:28:43.535210 'QUIT\r\n' 19:28:43.535932 Received DATA (on stdin) 19:28:43.536044 > 18 bytes data, server => client 19:28:43.536117 '221 bye bye baby\r\n' 19:28:43.536492 ====> Client disconnect 19:28:43.538899 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:43.481767 Running IPv4 version 19:28:43.482167 Listening on port 41289 19:28:43.482405 Wrote pid 121936 to log/3/server/ftp_sockdata.pid 19:28:43.484832 Received PING (on stdin) 19:28:43.485449 Received PORT (on stdin) 19:28:43.487148 ====> Client connect 19:28:43.492406 Received DATA (on stdin) 19:28:43.492531 > 18 bytes data, server => client 19:28:43.492625 'WE ROOLZ: 109394\r\n' 19:28:43.493012 Received DISC (on stdin) 19:28:43.493153 ====> Client forcibly disconnected 19:28:43.493645 Received QUIT (on stdin) 19:28:43.493748 quits 19:28:43.494006 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 296 === End of file server.cmd === Start of file valgrind296 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a vaCMD (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/4/valgrind297 ../src/curl -q --output log/4/curl297.out --include --trace-ascii log/4/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/first/second/third/297 > log/4/stdout297 2> log/4/stderr297 CMD (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/1/valgrind299 ../src/curl -q --output log/1/curl299.out --include --trace-ascii log/1/trace299 --trace-config all --trace-time -x http://127.0.0.1:41477 -u michal:aybabtu ftp://host.com/we/want/299 > log/1/stdout299 2> log/1/stderr299 lgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind296 test 0300 SKIPPED: no stunnel test 0301 SKIPPED: no stunnel test 0302 SKIPPED: no stunnel 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/4/valgrind297 ../src/curl -q --output log/4/curl297.out --include --trace-ascii log/4/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/first/second/third/297 > log/4/stdout297 2> log/4/stderr297 297: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind297 ../src/curl -q --output log/4/curl297.out --include --trace-ascii log/4/trace297 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/first/second/third/297 > log/4/stdout297 2> log/4/stderr297 === End of file commands.log === Start of file ftp_server.log 19:28:43.110645 ====> Client connect 19:28:43.111352 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:43.113160 < "USER anonymous" 19:28:43.113740 > "331 We are happy you popped in![CR][LF]" 19:28:43.114826 < "PASS ftp@example.com" 19:28:43.115157 > "230 Welcome you silly person[CR][LF]" 19:28:43.116180 < "PWD" 19:28:43.116485 > "257 "/" is current directory[CR][LF]" 19:28:43.117858 < "EPSV" 19:28:43.118164 ====> Passive DATA channel requested by client 19:28:43.118396 DATA sockfilt for passive data channel starting... 19:28:43.127224 DATA sockfilt for passive data channel started (pid 121990) 19:28:43.127947 DATA sockfilt for passive data channel listens on port 34517 19:28:43.128265 > "229 Entering Passive Mode (|||34517|)[LF]" 19:28:43.128456 Client has been notified that DATA conn will be accepted on port 34517 19:28:43.129592 Client connects to port 34517 19:28:43.129863 ====> Client established passive DATA connection on port 34517 19:28:43.130429 < "TYPE I" 19:28:43.130727 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:43.131750 < "SIZE verifiedserver" 19:28:43.132082 > "213 18[CR][LF]" 19:28:43.133126 < "RETR verifiedserver" 19:28:43.133538 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:43.134282 =====> Closing passive DATA connection... 19:28:43.134504 Server disconnects passive DATA connection 19:28:43.135836 Server disconnected passive DATA connection 19:28:43.136082 DATA sockfilt for passive data channel quits (pid 121990) 19:28:43.137649 DATA sockfilt for passive data channel quit (pid 121990) 19:28:43.137930 =====> Closed passive DATA connection 19:28:43.138293 > "226 File transfer complete[CR][LF]" 19:28:43.178607 < "QUIT" 19:28:43.178947 > "221 bye bye baby[CR][LF]" 19:28:43.185060 MAIN sockfilt said DISC 19:28:43.185368 ====> Client disconnected 19:28:43.186038 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:42.575245 ====> Client connect 19:28:42.576598 Received DATA (on stdin) 19:28:42.576712 > 160 bytes data, server => client 19:28:42.576795 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:42.576865 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:42.576924 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:42.577381 < 16 bytes data, client => server 19:28:42.577514 'USER anonymous\r\n' 19:28:42.578748 Received DATA (on stdin) 19:28:42.578896 > 33 bytes data, server => client 19:28:42.578971 '331 We are happy you popped in!\r\n' 19:28:42.579400 < 22 bytes data, client => server 19:28:42.579520 'PASS ftp@example.com\r\n' 19:28:42.580172 Received DATA (on stdin) 19:28:42.580297 > 30 bytes data, server => client 19:28:42.580381 '230 Welcome you silly person\r\n' 19:28:42.580801 < 5 bytes data, client => server 19:28:42.580924 'PWD\r\n' 19:28:42.581502 Received DATA (on stdin) 19:28:42.581622 > 30 bytes data, server => client 19:28:42.581698 '257 "/" is current directory\r\n' 19:28:42.582336 < 6 bytes data, client => server 19:28:42.582522 'EPSV\r\n' 19:28:42.593281 Received DATA (on stdin) 19:28:42.593433 > 38 bytes data, server => client 19:28:42.593527 '229 Entering Passive Mode (|||34517|)\n' 19:28:42.594333 < 8 bytes data, client => server 19:28:42.594538 'TYPE I\r\n' 19:28:42.595749 Received DATA (on stdin) 19:28:42.595882 > 33 bytes data, server => client 19:28:42.595965 '200 I modify TYPE as you wanted\r\n' 19:28:42.596379 < 21 bytes data, client => server 19:28:42.596504 'SIZE verifiedserver\r\n' 19:28:42.597110 Received DATA (on stdin) 19:28:42.597237 > 8 bytes data, server => client 19:28:42.597310 '213 18\r\n' 19:28:42.597714 < 21 bytes data, client => server 19:28:42.597839 'RETR verifiedserver\r\n' 19:28:42.598620 Received DATA (on stdin) 19:28:42.598741 > 29 bytes data, server => client 19:28:42.598817 '150 Binary junk (18 bytes).\r\n' 19:28:42.603322 Received DATA (on stdin) 19:28:42.603471 > 28 bytes data, server => client 19:28:42.603558 '226 File transfer complete\r\n' 19:28:42.643105 < 6 bytes data, client => server 19:28:42.643282 'QUIT\r\n' 19:28:42.643964 Received DATA (on stdin) 19:28:42.644080 > 18 bytes data, server => client 19:28:42.644152 '221 bye bye baby\r\n' 19:28:42.647195 ====> Client disconnect 19:28:42.651181 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:43.591365 Running IPv4 version 19:28:43.591710 Listening on port 34517 19:28:43.591925 Wrote pid 121990 to log/4/server/ftp_sockdata.pid 19:28:43.592035 Received PING (on stdin) 19:28:43.592567 Received PORT (on stdin) 19:28:43.594370 ====> Client connect 19:28:43.599766 Received DATA (on stdin) 19:28:43.599999 > 18 bytes data, server => client 19:28:43.600108 'WE ROOLZ: 109451\r\n' 19:28:43.600640 Received DISC (on stdin) 19:28:43.601323 ====> Client forcibly disconnected 19:28:43.601636 Received QUIT (on stdin) 19:28:43.601745 quits 19:28:43.602021 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 297 === End of file server.cmd === Start of file valgrind297 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind297 test 0299...[FTP over HTTP proxy with user:pCMD (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/2/valgrind298 ../src/curl -q --output log/2/curl298.out --include --trace-ascii log/2/trace298 --trace-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 ass 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/1/valgrind299 ../src/curl -q --output log/1/curl299.out --include --trace-ascii log/1/trace299 --trace-config all --trace-time -x http://127.0.0.1:41477 -u michal:aybabtu ftp://host.com/we/want/299 > log/1/stdout299 2> log/1/stderr299 299: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind299 ../src/curl -q --output log/1/curl299.out --include --trace-ascii log/1/trace299 --trace-config all --trace-time -x http://127.0.0.1:41477 -u michal:aybabtu ftp://host.com/we/want/299 > log/1/stdout299 2> log/1/stderr299 === End of file commands.log === Start of file http_server.log 19:28:44.020352 ====> Client connect 19:28:44.020551 accept_connection 3 returned 4 19:28:44.020662 accept_connection 3 returned 0 19:28:44.020752 Read 93 bytes 19:28:44.020816 Process 93 bytes request 19:28:44.020882 Got request: GET /verifiedserver HTTP/1.1 19:28:44.020938 Are-we-friendly question received 19:28:44.021069 Wrote request (93 bytes) input to log/1/server.input 19:28:44.021188 Identifying ourselves as friends 19:28:44.021653 Response sent (57 bytes) and written to log/1/server.response 19:28:44.021736 special request received, no persistency 19:28:44.021789 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 299 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind299 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind299 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-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 298: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --ftp-method nocwd ftp://127.0.0.1:36773/first/second/th%69rd/298 > log/2/stdout298 2> log/2/stderr298 === End of file commands.log === Start of file ftp_server.log 19:28:43.495434 ====> Client connect 19:28:43.496525 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:43.498033 < "USER anonymous" 19:28:43.498399 > "331 We are happy you popped in![CR][LF]" 19:28:43.499481 < "PASS ftp@example.com" 19:28:43.499808 > "230 Welcome you silly person[CR][LF]" 19:28:43.500966 < "PWD" 19:28:43.501365 > "257 "/" is current directory[CR][LF]" 19:28:43.502693 < "EPSV" 19:28:43.502910 ====> Passive DATA channel requested by client 19:28:43.503050 DATA sockfilt for passive data channel starting... 19:28:43.510722 DATA sockfilt for passive data channel started (pid 122157) 19:28:43.511509 DATA sockfilt for passive data channel listens on port 45593 19:28:43.511935 > "229 Entering Passive Mode (|||45593|)[LF]" 19:28:43.512198 Client has been notified that DATA conn will be accepted on port 45593 19:28:43.513617 Client connects to port 45593 19:28:43.513875 ====> Client established passive DATA connection on port 45593 19:28:43.514435 < "TYPE I" 19:28:43.514845 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:43.515971 < "SIZE verifiedserver" 19:28:43.516324 > "213 18[CR][LF]" 19:28:43.517360 < "RETR verifiedserver" 19:28:43.517775 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:43.518272 =====> Closing passive DATA connection... 19:28:43.518534 Server disconnects passive DATA connection 19:28:43.519411 Server disconnected passive DATA connection 19:28:43.520571 DATA sockfilt for passive data channel quits (pid 122157) 19:28:43.521908 DATA sockfilt for passive data channel quit (pid 122157) 19:28:43.522166 =====> Closed passive DATA connection 19:28:43.522379 > "226 File transfer complete[CR][LF]" 19:28:43.562574 < "QUIT" 19:28:43.563001 > "221 bye bye baby[CR][LF]" 19:28:43.567816 MAIN sockfilt said DISC 19:28:43.568088 ====> Client disconnected 19:28:43.568416 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:42.960022 ====> Client connect 19:28:42.961479 Received DATA (on stdin) 19:28:42.961659 > 160 bytes data, server => client 19:28:42.961741 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:42.961815 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:42.961884 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:42.962378 < 16 bytes data, client => server 19:28:42.962618 'USER anonymous\r\n' 19:28:42.963407 Received DATA (on stdin) 19:28:42.963528 > 33 bytes data, server => client 19:28:42.963608 '331 We are happy you popped in!\r\n' 19:28:42.964063 < 22 bytes data, client => server 19:28:42.964196 'PASS ftp@example.com\r\n' 19:28:42.964816 Received DATA (on stdin) 19:28:42.964940 > 30 bytes data, server => client 19:28:42.965020 '230 Welcome you silly person\r\n' 19:28:42.965467 < 5 bytes data, client => server 19:28:42.965607 'PWD\r\n' 19:28:42.966364 Received DATA (on stdin) 19:28:42.966613 > 30 bytes data, server => client 19:28:42.966701 '257 "/" is current directory\r\n' 19:28:42.967291 < 6 bytesCMD (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/valgrind315 ../src/curl -q --output log/3/curl315.out --include --trace-ascii log/3/trace315 --trace-config all --trace-time http://127.0.0.1:37525/315 --compressed > log/3/stdout315 2> log/3/stderr315 CMD (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/4/valgrind314 ../src/curl -q --output log/4/curl314.out --include --trace-ascii log/4/trace314 --trace-config all --trace-time http://127.0.0.1:43669/314 --compressed > log/4/stdout314 2> log/4/stderr314 data, client => server 19:28:42.967445 'EPSV\r\n' 19:28:42.976929 Received DATA (on stdin) 19:28:42.977099 > 38 bytes data, server => client 19:28:42.977204 '229 Entering Passive Mode (|||45593|)\n' 19:28:42.978132 < 8 bytes data, client => server 19:28:42.978255 'TYPE I\r\n' 19:28:42.979833 Received DATA (on stdin) 19:28:42.980022 > 33 bytes data, server => client 19:28:42.980117 '200 I modify TYPE as you wanted\r\n' 19:28:42.980566 < 21 bytes data, client => server 19:28:42.980698 'SIZE verifiedserver\r\n' 19:28:42.981338 Received DATA (on stdin) 19:28:42.981458 > 8 bytes data, server => client 19:28:42.981531 '213 18\r\n' 19:28:42.981964 < 21 bytes data, client => server 19:28:42.982092 'RETR verifiedserver\r\n' 19:28:42.982778 Received DATA (on stdin) 19:28:42.982898 > 29 bytes data, server => client 19:28:42.982968 '150 Binary junk (18 bytes).\r\n' 19:28:42.987393 Received DATA (on stdin) 19:28:42.987516 > 28 bytes data, server => client 19:28:42.987595 '226 File transfer complete\r\n' 19:28:43.027120 < 6 bytes data, client => server 19:28:43.027266 'QUIT\r\n' 19:28:43.028002 Received DATA (on stdin) 19:28:43.028117 > 18 bytes data, server => client 19:28:43.028188 '221 bye bye baby\r\n' 19:28:43.032608 ====> Client disconnect 19:28:43.033114 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:43.974827 Running IPv4 version 19:28:43.975160 Listening on port 45593 19:28:43.975384 Wrote pid 122157 to log/2/server/ftp_sockdata.pid 19:28:43.975496 Received PING (on stdin) 19:28:43.976093 Received PORT (on stdin) 19:28:43.978383 ====> Client connect 19:28:43.983341 Received DATA (on stdin) 19:28:43.983524 > 18 bytes data, server => client 19:28:43.983653 'WE ROOLZ: 116354\r\n' 19:28:43.984180 Received DISC (on stdin) 19:28:43.984347 ====> Client forcibly disconnected 19:28:43.985757 Received QUIT (on stdin) 19:28:43.985858 quits 19:28:43.986152 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 298 === End of file server.cmd === Start of file valgrind298 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind298 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/3/valgrind315 ../src/curl -q --output log/3/curl315.out --include --trace-ascii log/3/trace315 --trace-config all --trace-time http://127.0.0.1:37525/315 --compressed > log/3/stdout315 2> log/3/stderr315 315: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind315 ../src/curl -q --output log/3/curl315.out --include --trace-ascii log/3/trace315 --trace-config all --trace-time http://127.0.0.1:37525/315 --compressed > log/3/stdout315 2> log/3/stderr315 === End of file commands.log === Start of file http_server.log 19:28:43.334732 ====> Client connect 19:28:43.334968 accept_connection 3 returned 4 19:28:43.335110 accept_connection 3 returned 0 19:28:43.335220 Read 93 bytes 19:28:43.335302 Process 93 bytes request 19:28:43.335372 Got request: GET /verifiedserver HTTP/1.1 19:28:43.335433 Are-we-friendly question received 19:28:43.335588 Wrote request (93 bytes) input to log/3/server.input 19:28:43.335740 Identifying ourselves as friends 19:28:43.336246 Response sent (57 bytes) and written to log/3/server.response 19:28:43.336341 special request received, no persistency 19:28:43.336401 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 315 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind315 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind315 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/4/valgrind314 ../src/curl -q --output log/4/curl314.out --include --trace-ascii log/4/trace314 --trace-config all --trace-time http://127.0.0.1:43669/314 --compressed > log/4/stdout314 2> log/4/stderr314 314: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/tesCMD (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/2/valgrind317 ../src/curl -q --output log/2/curl317.out --include --trace-ascii log/2/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:39599 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/2/stdout317 2> log/2/stderr317 CMD (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/1/valgrind316 ../src/curl -q --output log/1/curl316.out --include --trace-ascii log/1/trace316 --trace-config all --trace-time http://127.0.0.1:41477/316 --compressed > log/1/stdout316 2> log/1/stderr316 ts/valgrind.supp --num-callers=16 --log-file=log/4/valgrind314 ../src/curl -q --output log/4/curl314.out --include --trace-ascii log/4/trace314 --trace-config all --trace-time http://127.0.0.1:43669/314 --compressed > log/4/stdout314 2> log/4/stderr314 === End of file commands.log === Start of file http_server.log 19:28:44.288661 ====> Client connect 19:28:44.288900 accept_connection 3 returned 4 19:28:44.289027 accept_connection 3 returned 0 19:28:44.289135 Read 93 bytes 19:28:44.289213 Process 93 bytes request 19:28:44.289289 Got request: GET /verifiedserver HTTP/1.1 19:28:44.289355 Are-we-friendly question received 19:28:44.289528 Wrote request (93 bytes) input to log/4/server.input 19:28:44.289689 Identifying ourselves as friends 19:28:44.290232 Response sent (57 bytes) and written to log/4/server.response 19:28:44.290321 special request received, no persistency 19:28:44.290384 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 314 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind314 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind314 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/2/valgrind317 ../src/curl -q --output log/2/curl317.out --include --trace-ascii log/2/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:39599 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/2/stdout317 2> log/2/stderr317 317: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind317 ../src/curl -q --output log/2/curl317.out --include --trace-ascii log/2/trace317 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/317 -x 127.0.0.1:39599 -H "Authorization: s3cr3t" --proxy-user testing:this --location > log/2/stdout317 2> log/2/stderr317 === End of file commands.log === Start of file http_server.log 19:28:44.717172 ====> Client connect 19:28:44.717403 accept_connection 3 returned 4 19:28:44.717533 accept_connection 3 returned 0 19:28:44.718161 Read 93 bytes 19:28:44.718302 Process 93 bytes request 19:28:44.718380 Got request: GET /verifiedserver HTTP/1.1 19:28:44.718537 Are-we-friendly question received 19:28:44.718730 Wrote request (93 bytes) input to log/2/server.input 19:28:44.718908 Identifying ourselves as friends 19:28:44.719419 Response sent (57 bytes) and written to log/2/server.response 19:28:44.719607 special request received, no persistency 19:28:44.719729 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 317 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind317 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind317 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) 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-config all --trace-time http://127.0.0.1:41477/316 --compressed > log/1/stdout316 2> log/1/stderr316 316: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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.oCMD (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/valgrind318 ../src/curl -q --output log/3/curl318.out --include --trace-ascii log/3/trace318 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:37525 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/3/stdout318 2> log/3/stderr318 CMD (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/4/valgrind319 ../src/curl -q --output log/4/curl319.out --trace-ascii log/4/trace319 --trace-config all --trace-time http://127.0.0.1:43669/319 --raw > log/4/stdout319 2> log/4/stderr319 ut --include --trace-ascii log/1/trace316 --trace-config all --trace-time http://127.0.0.1:41477/316 --compressed > log/1/stdout316 2> log/1/stderr316 === End of file commands.log === Start of file http_server.log 19:28:44.679984 ====> Client connect 19:28:44.680203 accept_connection 3 returned 4 19:28:44.680314 accept_connection 3 returned 0 19:28:44.680418 Read 93 bytes 19:28:44.680487 Process 93 bytes request 19:28:44.680554 Got request: GET /verifiedserver HTTP/1.1 19:28:44.680618 Are-we-friendly question received 19:28:44.680777 Wrote request (93 bytes) input to log/1/server.input 19:28:44.680920 Identifying ourselves as friends 19:28:44.681443 Response sent (57 bytes) and written to log/1/server.response 19:28:44.681539 special request received, no persistency 19:28:44.681597 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 316 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind316 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind316 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/3/valgrind318 ../src/curl -q --output log/3/curl318.out --include --trace-ascii log/3/trace318 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:37525 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/3/stdout318 2> log/3/stderr318 318: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind318 ../src/curl -q --output log/3/curl318.out --include --trace-ascii log/3/trace318 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/318 -x 127.0.0.1:37525 -H "Authorization: s3cr3t" --proxy-user testing:this --location-trusted > log/3/stdout318 2> log/3/stderr318 === End of file commands.log === Start of file http_server.log 19:28:44.014703 ====> Client connect 19:28:44.014952 accept_connection 3 returned 4 19:28:44.015090 accept_connection 3 returned 0 19:28:44.015213 Read 93 bytes 19:28:44.015289 Process 93 bytes request 19:28:44.015361 Got request: GET /verifiedserver HTTP/1.1 19:28:44.015424 Are-we-friendly question received 19:28:44.015601 Wrote request (93 bytes) input to log/3/server.input 19:28:44.015878 Identifying ourselves as friends 19:28:44.016445 Response sent (57 bytes) and written to log/3/server.response 19:28:44.016543 special request received, no persistency 19:28:44.016604 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 318 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind318 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind318 test 0319...[HTTP GET gzip 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/4/valgrind319 ../src/curl -q --output log/4/curl319.out --trace-ascii log/4/trace319 --trace-config all --trace-time http://127.0.0.1:43669/319 --raw > log/4/stdout319 2> log/4/stderr319 319: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind319 ../src/curl -q --output log/4/curl319.out --trace-ascii log/4/trace319 --trace-config all --trace-time http://127.0.0.1:43669/319 --raw > log/4/stdout319 2> log/4/stderr319 === End of file commands.log === Start of file http_server.log 19:28:45.091567 ====> Client connect 19:28:45.091800 accCMD (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/2/valgrind326 ../src/curl -q --output log/2/curl326.out --trace-ascii log/2/trace326 --trace-config all --trace-time http://127.0.0.1:39599/326 --raw > log/2/stdout326 2> log/2/stderr326 CMD (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/1/valgrind327 ../src/curl -q --output log/1/curl327.out --include --trace-ascii log/1/trace327 --trace-config all --trace-time http://127.0.0.1:41477/we/want/327 -b none -c log/1/cookies327 http://127.0.0.1:41477/we/want/3270002 > log/1/stdout327 2> log/1/stderr327 ept_connection 3 returned 4 19:28:45.091922 accept_connection 3 returned 0 19:28:45.092027 Read 93 bytes 19:28:45.092120 Process 93 bytes request 19:28:45.092259 Got request: GET /verifiedserver HTTP/1.1 19:28:45.092368 Are-we-friendly question received 19:28:45.092585 Wrote request (93 bytes) input to log/4/server.input 19:28:45.092758 Identifying ourselves as friends 19:28:45.093457 Response sent (57 bytes) and written to log/4/server.response 19:28:45.093572 special request received, no persistency 19:28:45.093645 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 319 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind319 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind319 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-config all --trace-time http://127.0.0.1:39599/326 --raw > log/2/stdout326 2> log/2/stderr326 326: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:39599/326 --raw > log/2/stdout326 2> log/2/stderr326 === End of file commands.log === Start of file http_server.log 19:28:45.483032 ====> Client connect 19:28:45.483252 accept_connection 3 returned 4 19:28:45.483358 accept_connection 3 returned 0 19:28:45.483851 Read 93 bytes 19:28:45.483986 Process 93 bytes request 19:28:45.484061 Got request: GET /verifiedserver HTTP/1.1 19:28:45.484133 Are-we-friendly question received 19:28:45.484293 Wrote request (93 bytes) input to log/2/server.input 19:28:45.484454 Identifying ourselves as friends 19:28:45.484863 Response sent (57 bytes) and written to log/2/server.response 19:28:45.484959 special request received, no persistency 19:28:45.485021 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 326 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind326 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind326 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/1/valgrind327 ../src/curl -q --output log/1/curl327.out --include --trace-ascii log/1/trace327 --trace-config all --trace-time http://127.0.0.1:41477/we/want/327 -b none -c log/1/cookies327 http://127.0.0.1:41477/we/want/3270002 > log/1/stdout327 2> log/1/stderr327 327: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind327 ../src/curl -q --output log/1/curl327.out --include --trace-ascii log/1/trace327 --trace-config all --trace-time http://127.0.0.1:41477/we/want/327 -b none -c log/1/cookies327 http://127.0.0.1:41477/we/want/3270002 > log/1/stdout327 2> log/1/stderr327 === End of file commands.log === Start of file http_server.log 19:28:45.507522 ====> Client connect 19:28:45.507735 accept_connection 3 returned 4 19:28:45.507843 accept_connection 3 returned 0 19:28:45.508283 Read 93 bytes 19:28:45.508398 Process 93 bytes request 19:28:45.508470 Got request: GET /verifiedserver HTTP/1.1 19:28:45.508530 Are-we-friendly question received 19:28:45.508680 Wrote request (93 bytes) input to log/1/server.input 19:28:45.508822 Identifying ourselves as friends 19:28:45.509212 ResponseCMD (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/valgrind328 ../src/curl -q --output log/3/curl328.out --include --trace-ascii log/3/trace328 --trace-config all --trace-time http://127.0.0.1:37525/hello/328 --compressed > log/3/stdout328 2> log/3/stderr328 CMD (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/4/valgrind329 ../src/curl -q --output log/4/curl329.out --include --trace-ascii log/4/trace329 --trace-config all --trace-time http://127.0.0.1:43669/we/want/329 -b log/4/jar329.txt -b log/4/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:43669/we/want/3290002 > log/4/stdout329 2> log/4/stderr329 sent (57 bytes) and written to log/1/server.response 19:28:45.509297 special request received, no persistency 19:28:45.509349 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 327 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind327 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind328 ../src/curl -q --output log/3/curl328.out --include --trace-ascii log/3/trace328 --trace-config all --trace-time http://127.0.0.1:37525/hello/328 --compressed > log/3/stdout328 2> log/3/stderr328 328: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind328 ../src/curl -q --output log/3/curl328.out --include --trace-ascii log/3/trace328 --trace-config all --trace-time http://127.0.0.1:37525/hello/328 --compressed > log/3/stdout328 2> log/3/stderr328 === End of file commands.log === Start of file http_server.log 19:28:44.718219 ====> Client connect 19:28:44.718502 accept_connection 3 returned 4 19:28:44.718637 accept_connection 3 returned 0 19:28:44.718739 Read 93 bytes 19:28:44.718823 Process 93 bytes request 19:28:44.718965 Got request: GET /verifiedserver HTTP/1.1 19:28:44.719105 Are-we-friendly question received 19:28:44.719294 Wrote request (93 bytes) input to log/3/server.input 19:28:44.719485 Identifying ourselves as friends 19:28:44.720081 Response sent (57 bytes) and written to log/3/server.response 19:28:44.720180 special request received, no persistency 19:28:44.720240 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 328 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind328 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind328 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/4/valgrind329 ../src/curl -q --output log/4/curl329.out --include --trace-ascii log/4/trace329 --trace-config all --trace-time http://127.0.0.1:43669/we/want/329 -b log/4/jar329.txt -b log/4/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:43669/we/want/3290002 > log/4/stdout329 2> log/4/stderr329 329: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind329 ../src/curl -q --output log/4/curl329.out --include --trace-ascii log/4/trace329 --trace-config all --trace-time http://127.0.0.1:43669/we/want/329 -b log/4/jar329.txt -b log/4/jar329-2.txt -H "Host: host.foo.com" http://127.0.0.1:43669/we/want/3290002 > log/4/stdout329 2> log/4/stderr329 === End of file commands.log === Start of file http_server.log 19:28:45.753202 ====> Client connect 19:28:45.753432 accept_connection 3 returned 4 19:28:45.753555 accept_connection 3 returned 0 19:28:45.753687 Read 93 bytes 19:28:45.753771 Process 93 bytes request 19:28:45.753855 Got request: GET /verifiedserver HTTP/1.1 19:28:45.753924 Are-we-friendly question received 19:28:45.754101 Wrote request (93 bytes) input to log/4/server.input 19:28:45.754259 Identifying ourselves as friends 19:28:45.754916 Response sent (57 bytes) and written to log/4/server.response 19:28:45.755031 special request received, no persistency 19:28:45.755096 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (1CMD (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/2/valgrind330 ../src/curl -q --output log/2/curl330.out --include --trace-ascii log/2/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:39599 -H "Cookie: test=yes" --location > log/2/stdout330 2> log/2/stderr330 CMD (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/1/valgrind331 ../src/curl -q --output log/1/curl331.out --include --trace-ascii log/1/trace331 --trace-config all --trace-time -x http://127.0.0.1:41477 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/1/stdout331 2> log/1/stderr331 27.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind329 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind329 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/2/valgrind330 ../src/curl -q --output log/2/curl330.out --include --trace-ascii log/2/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:39599 -H "Cookie: test=yes" --location > log/2/stdout330 2> log/2/stderr330 330: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind330 ../src/curl -q --output log/2/curl330.out --include --trace-ascii log/2/trace330 --trace-config all --trace-time http://first.host.it.is/we/want/that/page/330 -x 127.0.0.1:39599 -H "Cookie: test=yes" --location > log/2/stdout330 2> log/2/stderr330 === End of file commands.log === Start of file http_server.log 19:28:46.153895 ====> Client connect 19:28:46.154127 accept_connection 3 returned 4 19:28:46.154251 accept_connection 3 returned 0 19:28:46.155097 Read 93 bytes 19:28:46.155239 Process 93 bytes request 19:28:46.155323 Got request: GET /verifiedserver HTTP/1.1 19:28:46.155388 Are-we-friendly question received 19:28:46.155562 Wrote request (93 bytes) input to log/2/server.input 19:28:46.155740 Identifying ourselves as friends 19:28:46.156403 Response sent (57 bytes) and written to log/2/server.response 19:28:46.156542 special request received, no persistency 19:28:46.156603 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 330 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind330 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind330 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/1/valgrind331 ../src/curl -q --output log/1/curl331.out --include --trace-ascii log/1/trace331 --trace-config all --trace-time -x http://127.0.0.1:41477 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/1/stdout331 2> log/1/stderr331 331: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind331 ../src/curl -q --output log/1/curl331.out --include --trace-ascii log/1/trace331 --trace-config all --trace-time -x http://127.0.0.1:41477 http://moo/we/want/331 -b none http://moo/we/want/3310002 > log/1/stdout331 2> log/1/stderr331 === End of file commands.log === Start of file http_server.log 19:28:46.207493 ====> Client connect 19:28:46.207720 accept_connection 3 returned 4 19:28:46.207841 accept_connection 3 returned 0 19:28:46.207950 Read 93 bytes 19:28:46.208016 Process 93 bytes request 19:28:46.208080 Got request: GET /verifiedserver HTTP/1.1 19:28:46.208137 Are-we-friendly question received 19:28:46.208271 Wrote request (93 bytes) input to log/1/server.input 19:28:46.208390 Identifying ourselves as friends 19:28:46.208859 Response sent (57 bytes) and written to log/1/server.response 19:28:46.208945 special request received, no persistency 19:28:46.209003 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-ACMD (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/valgrind332 ../src/curl -q --output log/3/curl332.out --include --trace-ascii log/3/trace332 --trace-config all --trace-time tftp://127.0.0.1:47074//332 --tftp-blksize 400 > log/3/stdout332 2> log/3/stderr332 CMD (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/4/valgrind333 ../src/curl -q --output log/4/curl333.out --include --trace-ascii log/4/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/4/stdout333 2> log/4/stderr333 CMD (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/2/valgrind334 ../src/curl -q --output log/2/curl334.out --include --trace-ascii log/2/trace334 --trace-config all --trace-time http://127.0.0.1:39599/want/334 > log/2/stdout334 2> log/2/stderr334 gent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 331 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind331 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind331 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/3/valgrind332 ../src/curl -q --output log/3/curl332.out --include --trace-ascii log/3/trace332 --trace-config all --trace-time tftp://127.0.0.1:47074//332 --tftp-blksize 400 > log/3/stdout332 2> log/3/stderr332 332: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind332 ../src/curl -q --output log/3/curl332.out --include --trace-ascii log/3/trace332 --trace-config all --trace-time tftp://127.0.0.1:47074//332 --tftp-blksize 400 > log/3/stdout332 2> log/3/stderr332 === End of file commands.log === Start of file server.cmd Testnum 332 === End of file server.cmd === Start of file tftp_server.log 19:28:46.346845 trying to get file: verifiedserver mode 1 19:28:46.347069 Are-we-friendly question received 19:28:46.347156 write 19:28:46.347317 read 19:28:46.347640 read: 4 19:28:46.347928 end of one transfer === End of file tftp_server.log === Start of file valgrind332 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind332 * starts no server 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/4/valgrind333 ../src/curl -q --output log/4/curl333.out --include --trace-ascii log/4/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/4/stdout333 2> log/4/stderr333 curl returned 1, when expecting 2 333: exit FAILED == Contents of files in the log/4/ 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/4/valgrind333 ../src/curl -q --output log/4/curl333.out --include --trace-ascii log/4/trace333 --trace-config all --trace-time --no-proxy "hey" http://127.0.0.1:47/333 > log/4/stdout333 2> log/4/stderr333 === End of file commands.log === Start of file server.cmd Testnum 333 === End of file server.cmd === Start of file valgrind333 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind333 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-config all --trace-time http://127.0.0.1:39599/want/334 > log/2/stdout334 2> log/2/stderr334 334: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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 --trCMD (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/1/valgrind335 ../src/curl -q --output log/1/curl335.out --include --trace-ascii log/1/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:41477 --proxy-digest --digest > log/1/stdout335 2> log/1/stderr335 CMD (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/4/valgrind337 ../src/curl -q --output log/4/curl337.out --include --trace-ascii log/4/trace337 --trace-config all --trace-time ftp://127.0.0.1:40809/337 --range 3-6 > log/4/stdout337 2> log/4/stderr337 ace-ascii log/2/trace334 --trace-config all --trace-time http://127.0.0.1:39599/want/334 > log/2/stdout334 2> log/2/stderr334 === End of file commands.log === Start of file http_server.log 19:28:46.853904 ====> Client connect 19:28:46.854168 accept_connection 3 returned 4 19:28:46.854299 accept_connection 3 returned 0 19:28:46.854558 Read 93 bytes 19:28:46.854647 Process 93 bytes request 19:28:46.854734 Got request: GET /verifiedserver HTTP/1.1 19:28:46.854808 Are-we-friendly question received 19:28:46.854971 Wrote request (93 bytes) input to log/2/server.input 19:28:46.855149 Identifying ourselves as friends 19:28:46.855757 Response sent (57 bytes) and written to log/2/server.response 19:28:46.855859 special request received, no persistency 19:28:46.855913 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 334 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind334 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind334 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/1/valgrind335 ../src/curl -q --output log/1/curl335.out --include --trace-ascii log/1/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:41477 --proxy-digest --digest > log/1/stdout335 2> log/1/stderr335 335: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind335 ../src/curl -q --output log/1/curl335.out --include --trace-ascii log/1/trace335 --trace-config all --trace-time http://digest:alot@data.from.server.requiring.digest.hohoho.com/335 --proxy http://foo:bar@127.0.0.1:41477 --proxy-digest --digest > log/1/stdout335 2> log/1/stderr335 === End of file commands.log === Start of file http_server.log 19:28:46.868463 ====> Client connect 19:28:46.868700 accept_connection 3 returned 4 19:28:46.868828 accept_connection 3 returned 0 19:28:46.868934 Read 93 bytes 19:28:46.869015 Process 93 bytes request 19:28:46.869085 Got request: GET /verifiedserver HTTP/1.1 19:28:46.869145 Are-we-friendly question received 19:28:46.869323 Wrote request (93 bytes) input to log/1/server.input 19:28:46.869577 Identifying ourselves as friends 19:28:46.870887 Response sent (57 bytes) and written to log/1/server.response 19:28:46.870993 special request received, no persistency 19:28:46.871048 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 335 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind335 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind337 ../src/curl -q --output log/4/curl337.out --include --trace-ascii log/4/trace337 --trace-config all --trace-time ftp://127.0.0.1:40809/337 --range 3-6 > log/4/stdout337 2> log/4/stderr337 337: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind337 ../src/curl -q --output log/4/curl337.out --include --trace-ascii log/4/trace337 --trace-config all --trace-time ftp://127.0.0.1:40809/337 --range 3-6 > log/4/stdout337 2> log/4/stderr337 === End of file commands.log === Start of file ftp_server.log 19:28:46.510184 ====> Client connect 19:28:46.510905 > "220- CMD (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/valgrind336 ../src/curl -q --output log/3/curl336.out --include --trace-ascii log/3/trace336 --trace-config all --trace-time ftp://127.0.0.1:43789/336 --range 3-6 > log/3/stdout336 2> log/3/stderr336 _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:46.512244 < "USER anonymous" 19:28:46.512525 > "331 We are happy you popped in![CR][LF]" 19:28:46.513720 < "PASS ftp@example.com" 19:28:46.514029 > "230 Welcome you silly person[CR][LF]" 19:28:46.515057 < "PWD" 19:28:46.515343 > "257 "/" is current directory[CR][LF]" 19:28:46.516369 < "EPSV" 19:28:46.516585 ====> Passive DATA channel requested by client 19:28:46.516706 DATA sockfilt for passive data channel starting... 19:28:46.525859 DATA sockfilt for passive data channel started (pid 123240) 19:28:46.526543 DATA sockfilt for passive data channel listens on port 40987 19:28:46.526860 > "229 Entering Passive Mode (|||40987|)[LF]" 19:28:46.527054 Client has been notified that DATA conn will be accepted on port 40987 19:28:46.527982 Client connects to port 40987 19:28:46.528225 ====> Client established passive DATA connection on port 40987 19:28:46.528760 < "TYPE I" 19:28:46.529061 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:46.530119 < "SIZE verifiedserver" 19:28:46.530432 > "213 18[CR][LF]" 19:28:46.531385 < "RETR verifiedserver" 19:28:46.531672 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:46.532128 =====> Closing passive DATA connection... 19:28:46.533197 Server disconnects passive DATA connection 19:28:46.533526 Fancy that; client wants to DISC, too 19:28:46.533834 Server disconnected passive DATA connection 19:28:46.534006 DATA sockfilt for passive data channel quits (pid 123240) 19:28:46.535080 DATA sockfilt for passive data channel quit (pid 123240) 19:28:46.535298 =====> Closed passive DATA connection 19:28:46.535639 > "226 File transfer complete[CR][LF]" 19:28:46.542666 < "QUIT" 19:28:46.542966 > "221 bye bye baby[CR][LF]" 19:28:46.544628 MAIN sockfilt said DISC 19:28:46.545238 ====> Client disconnected 19:28:46.545765 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:45.974720 ====> Client connect 19:28:45.975822 Received DATA (on stdin) 19:28:45.975951 > 160 bytes data, server => client 19:28:45.976036 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:45.976114 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:45.976179 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:45.976623 < 16 bytes data, client => server 19:28:45.976748 'USER anonymous\r\n' 19:28:45.977454 Received DATA (on stdin) 19:28:45.977565 > 33 bytes data, server => client 19:28:45.977640 '331 We are happy you popped in!\r\n' 19:28:45.978091 < 22 bytes data, client => server 19:28:45.978226 'PASS ftp@example.com\r\n' 19:28:45.978965 Received DATA (on stdin) 19:28:45.979081 > 30 bytes data, server => client 19:28:45.979161 '230 Welcome you silly person\r\n' 19:28:45.979577 < 5 bytes data, client => server 19:28:45.979714 'PWD\r\n' 19:28:45.980273 Received DATA (on stdin) 19:28:45.980384 > 30 bytes data, server => client 19:28:45.980457 '257 "/" is current directory\r\n' 19:28:45.980890 < 6 bytes data, client => server 19:28:45.981018 'EPSV\r\n' 19:28:45.991815 Received DATA (on stdin) 19:28:45.991960 > 38 bytes data, server => client 19:28:45.992051 '229 Entering Passive Mode (|||40987|)\n' 19:28:45.992900 < 8 bytes data, client => server 19:28:45.993013 'TYPE I\r\n' 19:28:45.993963 Received DATA (on stdin) 19:28:45.994074 > 33 bytes data, server => client 19:28:45.994144 '200 I modify TYPE as you wanted\r\n' 19:28:45.994680 < 21 bytes data, client => server 19:28:45.994811 'SIZE verifiedserver\r\n' 19:28:45.995372 Received DATA (on stdin) 19:28:45.995484 > 8 bytes data, server => client 19:28:45.995561 '213 18\r\n' 19:28:45.995971 < 21 bytes data, client => server 19:28:45.996079 'RETR verifiedserver\r\n' 19:28:45.996599 Received DATA (on stdin) 19:28:45.996712 > 29 bytes data, server => client 19:28:45.996786 '150 Binary junk (18 bytes).\r\n' 19:28:46.000575 Received DATA (on stdin) 19:28:46.000706 > 28 bytes data, server => client 19:28:46.000778 '226 File transfer complete\r\n' 19:28:46.001339 < 6 bytes data, client => server 19:28:46.001472 'QUIT\r\n' 19:28:46.007899 Received DATA (on stdin) 19:28:46.008021 > 18 bytes data, server => client 19:28:46.008088 '221 bye bye baby\r\n' 19:28:46.009339 ====> Client disconnect 19:28:46.009791 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:46.989785 Running IPv4 version 19:28:46.990138 Listening on port 40987 19:28:46.990456 Wrote pid 123240 to log/4/server/ftp_sockdata.pid 19:28:46.990578 Received PING (on stdin) 19:28:46.991121 Received PORT (on stdin) 19:28:46.992710 ====> Client connect 19:28:46.996852 Received DATA (on stdin) 19:28:46.996984 > 18 bytes data, server => client 19:28:46.997081 'WE ROOLZ: 109451\r\n' 19:28:46.997501 ====> Client disconnect 19:28:46.998523 Received DISC (on stdin) 19:28:46.998637 Crikey! Client also wants to disconnect 19:28:46.998725 Received ACKD (on stdin) 19:28:46.999149 Received QUIT (on stdin) 19:28:46.999259 quits 19:28:46.999507 ============> 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 valgrind337 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind337 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/3/valgrind336 ../src/curl -q --output log/3/curl336.out --include --trace-ascii log/3/trace336 --trace-config all --trace-time ftp://127.0.0.1:43789/336 --range 3-6 > log/3/stdout336 2> log/3/stderr336 336: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind336 ../src/curl -q --output log/3/curl336.out --include --trace-ascii log/3/trace336 --trace-config all --trace-time ftp://127.0.0.1:43789/336 --range 3-6 > log/3/stdout336 2> log/3/stderr336 === End of file commands.log === Start of file ftp_server.log 19:28:46.459293 ====> Client connect 19:28:46.460149 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]CMD (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/2/valgrind338 ../src/curl -q --output log/2/curl338.out --include --trace-ascii log/2/trace338 --trace-config all --trace-time http://127.0.0.1:39599/338 --next http://127.0.0.1:39599/338 --anyauth -u foo:moo > log/2/stdout338 2> log/2/stderr338 " 19:28:46.461747 < "USER anonymous" 19:28:46.462063 > "331 We are happy you popped in![CR][LF]" 19:28:46.463202 < "PASS ftp@example.com" 19:28:46.463500 > "230 Welcome you silly person[CR][LF]" 19:28:46.464647 < "PWD" 19:28:46.464983 > "257 "/" is current directory[CR][LF]" 19:28:46.466164 < "EPSV" 19:28:46.466392 ====> Passive DATA channel requested by client 19:28:46.466565 DATA sockfilt for passive data channel starting... 19:28:46.474378 DATA sockfilt for passive data channel started (pid 123223) 19:28:46.481478 DATA sockfilt for passive data channel listens on port 43843 19:28:46.481899 > "229 Entering Passive Mode (|||43843|)[LF]" 19:28:46.482084 Client has been notified that DATA conn will be accepted on port 43843 19:28:46.483903 Client connects to port 43843 19:28:46.484149 ====> Client established passive DATA connection on port 43843 19:28:46.484695 < "TYPE I" 19:28:46.484989 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:46.486256 < "SIZE verifiedserver" 19:28:46.486624 > "213 18[CR][LF]" 19:28:46.487756 < "RETR verifiedserver" 19:28:46.488097 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:46.488610 =====> Closing passive DATA connection... 19:28:46.488816 Server disconnects passive DATA connection 19:28:46.489280 Server disconnected passive DATA connection 19:28:46.489594 DATA sockfilt for passive data channel quits (pid 123223) 19:28:46.490793 DATA sockfilt for passive data channel quit (pid 123223) 19:28:46.491010 =====> Closed passive DATA connection 19:28:46.491228 > "226 File transfer complete[CR][LF]" 19:28:46.492498 < "QUIT" 19:28:46.492756 > "221 bye bye baby[CR][LF]" 19:28:46.497340 MAIN sockfilt said DISC 19:28:46.497683 ====> Client disconnected 19:28:46.498101 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:46.923808 ====> Client connect 19:28:46.925066 Received DATA (on stdin) 19:28:46.925219 > 160 bytes data, server => client 19:28:46.925309 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:46.925398 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:46.925480 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:46.925968 < 16 bytes data, client => server 19:28:46.926094 'USER anonymous\r\n' 19:28:46.926995 Received DATA (on stdin) 19:28:46.927137 > 33 bytes data, server => client 19:28:46.927218 '331 We are happy you popped in!\r\n' 19:28:46.927716 < 22 bytes data, client => server 19:28:46.927850 'PASS ftp@example.com\r\n' 19:28:46.928470 Received DATA (on stdin) 19:28:46.928588 > 30 bytes data, server => client 19:28:46.928669 '230 Welcome you silly person\r\n' 19:28:46.929138 < 5 bytes data, client => server 19:28:46.929259 'PWD\r\n' 19:28:46.929920 Received DATA (on stdin) 19:28:46.930040 > 30 bytes data, server => client 19:28:46.930115 '257 "/" is current directory\r\n' 19:28:46.930690 < 6 bytes data, client => server 19:28:46.930818 'EPSV\r\n' 19:28:46.946877 Received DATA (on stdin) 19:28:46.947002 > 38 bytes data, server => client 19:28:46.947087 '229 Entering Passive Mode (|||43843|)\n' 19:28:46.948031 < 8 bytes data, client => server 19:28:46.948202 'TYPE I\r\n' 19:28:46.949916 Received DATA (on stdin) 19:28:46.950043 > 33 bytes data, server => client 19:28:46.950120 '200 I modify TYPE as you wanted\r\n' 19:28:46.950721 < 21 bytes data, client => server 19:28:46.950852 'SIZE verifiedserver\r\n' 19:28:46.951558 Received DATA (on stdin) 19:28:46.951692 > 8 bytes data, server => client 19:28:46.951771 '213 18\r\n' 19:28:46.952258 < 21 bytes data, client => server 19:28:46.952394 'RETR verifiedserver\r\n' 19:28:46.953025 Received DATA (on stdin) 19:28:46.953157 > 29 bytes data, server => client 19:28:46.953233 '150 Binary junk (18 bytes).\r\n' 19:28:46.956166 Received DATA (on stdin) 19:28:46.956296 > 28 bytes data, server => client 19:28:46.956377 '226 File transfer complete\r\n' 19:28:46.957025 < 6 bytes data, client => server 19:28:46.957163 'QUIT\r\n' 19:28:46.957687 Received DATA (on stdin) 19:28:46.957798 > 18 bytes data, server => client 19:28:46.957876 '221 bye bye baby\r\n' 19:28:46.962010 ====> Client disconnect 19:28:46.962632 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:46.938147 Running IPv4 version 19:28:46.938615 Listening on port 43843 19:28:46.938928 Wrote pid 123223 to log/3/server/ftp_sockdata.pid 19:28:46.939053 Received PING (on stdin) 19:28:46.945896 Received PORT (on stdin) 19:28:46.948606 ====> Client connect 19:28:46.953318 Received DATA (on stdin) 19:28:46.953458 > 18 bytes data, server => client 19:28:46.953570 'WE ROOLZ: 109394\r\n' 19:28:46.953989 Received DISC (on stdin) 19:28:46.954145 ====> Client forcibly disconnected 19:28:46.954746 Received QUIT (on stdin) 19:28:46.954862 quits 19:28:46.955118 ============> 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 valgrind336 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind336 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/2/valgrind338 ../src/curl -q --output log/2/curl338.out --include --trace-ascii log/2/trace338 --trace-config all --trace-time http://127.0.0.1:39599/338 --next http://127.0.0.1:39599/338 --anyauth -u foo:moo > log/2/stdout338 2> log/2/stderr338 338: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind338 ../src/curl -q --output log/2/curl338.out --include --trace-ascii log/2/trace338 --trace-config all --trace-time http://127.0.0.1:39599/338 --next http://127.0.0.1:39599/338 --anyauth -u foo:moo > log/2/stdout338 2> log/2/stderr338 === End of file commands.log === Start of file http_server.log 19:28:47.445296 ====> Client connect 19:28:47.445516 accept_connection 3 returned 4 19:28:47.445638 accept_connection 3 returned 0 19:28:47.445758 Read 93 bytes 19:28:47.445839 Process 93 bytes request 19:28:47.445916 Got request: GET /verifiedserver HTTP/1.1 19:28:47.445983 Are-we-friendly question received 19:28:47.446144 Wrote request (93 bytes) input to log/2/server.input 19:28:47.446289 Identifying ourselves as friends 19:28:47.446918 Response sent (57 bytes) andCMD (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/1/valgrind339 ../src/curl -q --output log/1/curl339.out --include --trace-ascii log/1/trace339 --trace-config all --trace-time http://127.0.0.1:41477/339 --etag-save log/1/etag339 > log/1/stdout339 2> log/1/stderr339 CMD (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/valgrind341 ../src/curl -q --output log/3/curl341.out --include --trace-ascii log/3/trace341 --trace-config all --trace-time http://127.0.0.1:37525/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341 CMD (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/4/valgrind340 ../src/curl -q --output log/4/curl340.out --include --trace-ascii log/4/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/%00first/second/third/340 > log/4/stdout340 2> log/4/stderr340 written to log/2/server.response 19:28:47.447015 special request received, no persistency 19:28:47.447074 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 338 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind338 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind338 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/1/valgrind339 ../src/curl -q --output log/1/curl339.out --include --trace-ascii log/1/trace339 --trace-config all --trace-time http://127.0.0.1:41477/339 --etag-save log/1/etag339 > log/1/stdout339 2> log/1/stderr339 339: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind339 ../src/curl -q --output log/1/curl339.out --include --trace-ascii log/1/trace339 --trace-config all --trace-time http://127.0.0.1:41477/339 --etag-save log/1/etag339 > log/1/stdout339 2> log/1/stderr339 === End of file commands.log === Start of file http_server.log 19:28:47.562137 ====> Client connect 19:28:47.562621 accept_connection 3 returned 4 19:28:47.562749 accept_connection 3 returned 0 19:28:47.562843 Read 93 bytes 19:28:47.562908 Process 93 bytes request 19:28:47.562975 Got request: GET /verifiedserver HTTP/1.1 19:28:47.563034 Are-we-friendly question received 19:28:47.563195 Wrote request (93 bytes) input to log/1/server.input 19:28:47.563335 Identifying ourselves as friends 19:28:47.563890 Response sent (57 bytes) and written to log/1/server.response 19:28:47.563997 special request received, no persistency 19:28:47.564064 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 339 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind339 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind339 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/3/valgrind341 ../src/curl -q --output log/3/curl341.out --include --trace-ascii log/3/trace341 --trace-config all --trace-time http://127.0.0.1:37525/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341 341: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind341 ../src/curl -q --output log/3/curl341.out --include --trace-ascii log/3/trace341 --trace-config all --trace-time http://127.0.0.1:37525/341 --etag-compare log/3/etag341 > log/3/stdout341 2> log/3/stderr341 === End of file commands.log === Start of file http_server.log 19:28:46.675687 ====> Client connect 19:28:46.675913 accept_connection 3 returned 4 19:28:46.676030 accept_connection 3 returned 0 19:28:46.676478 Read 93 bytes 19:28:46.676602 Process 93 bytes request 19:28:46.676691 Got request: GET /verifiedserver HTTP/1.1 19:28:46.676756 Are-we-friendly question received 19:28:46.676912 Wrote request (93 bytes) input to log/3/server.input 19:28:46.677055 Identifying ourselves as friends 19:28:46.677448 Response sent (57 bytes) and written to log/3/server.response 19:28:46.677531 special request received, no persistency 19:28:46.677584 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 341 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind341 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind341 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/4/valgrind340 ../src/curl -q --output log/4/curl340.out --include --trace-ascii log/4/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/%00first/second/third/340 > log/4/stdout340 2> log/4/stderr340 340: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind340 ../src/curl -q --output log/4/curl340.out --include --trace-ascii log/4/trace340 --trace-config all --trace-time --ftp-method singlecwd ftp://127.0.0.1:40809/%00first/second/third/340 > log/4/stdout340 2> log/4/stderr340 === End of file commands.log === Start of file ftp_server.log 19:28:47.161901 ====> Client connect 19:28:47.163068 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:47.164801 < "USER anonymous" 19:28:47.165110 > "331 We are happy you popped in![CR][LF]" 19:28:47.166747 < "PASS ftp@example.com" 19:28:47.167084 > "230 Welcome you silly person[CR][LF]" 19:28:47.168710 < "PWD" 19:28:47.169024 > "257 "/" is current directory[CR][LF]" 19:28:47.170456 < "EPSV" 19:28:47.170680 ====> Passive DATA channel requested by client 19:28:47.170800 DATA sockfilt for passive data channel starting... 19:28:47.180356 DATA sockfilt for passive data channel started (pid 123498) 19:28:47.181360 DATA sockfilt for passive data channel listens on port 42993 19:28:47.181835 > "229 Entering Passive Mode (|||42993|)[LF]" 19:28:47.182019 Client has been notified that DATA conn will be accepted on port 42993 19:28:47.183761 Client connects to port 42993 19:28:47.183998 ====> Client established passive DATA connection on port 42993 19:28:47.184504 < "TYPE I" 19:28:47.184759 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:47.186204 < "SIZE verifiedserver" 19:28:47.186500 > "213 18[CR][LF]" 19:28:47.187864 < "RETR verifiedserver" 19:28:47.188169 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:47.188667 =====> Closing passive DATA connection... 19:28:47.188974 Server disconnects passive DATA connection 19:28:47.190304 Server disconnected passive DATA connection 19:28:47.190559 DATA sockfilt for passive data channel quits (pid 123498) 19:28:47.191702 DATA sockfilt for passive data channel quit (pid 123498) 19:28:47.193137 =====> Closed passive DATA connection 19:28:47.193403 > "226 File transfer complete[CR][LF]" 19:28:47.234812 < "QUIT" 19:28:47.235327 > "221 bye bye baby[CR][LF]" 19:28:47.238730 MAIN sockfilt said DISC 19:28:47.239029 ====> Client disconnected 19:28:47.239532 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:46.626391 ====> Client connect 19:28:46.627670 Received DATA (on stdin) 19:28:46.627806 > 160 bytes data, server => client 19:28:46.628222 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:46.628322 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:46.628391 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:46.628947 < 16 bytes data, client => server 19:28:46.629075 'USER anonymous\r\n' 19:28:46.630271 Received DATA (on stdin) 19:28:46.630515 > 33 bytes data, server => client 19:28:46.630599 '331 We are happy you popped in!\r\n' 19:28:46.631036 < 22 bytes data, client => server 19:28:46.631167 'PASS ftp@example.com\r\n' 19:28:46.632283 Received DATA (on stdin) 19:28:46.632397 > 30 bytes data, server => client 19:28:46.632484 '230 Welcome you silly person\r\n' 19:28:46.632994 < 5 bytes data, client => server 19:28:46.633111 'PWD\r\n' 19:28:46.634145 Received DATA (on stdin) 19:28:46.634239 > 30 bytes data, server => client 19:28:46.634303 '257 "/" is current directory\r\n' 19:28:46.634814 < 6 bytes data, client => server 19:28:46.634924 'EPSV\r\n' 19:28:46.647191 Received DATA (on stdin) 19:28:46.647329 > 38 bytes data, server => client 19:28:46.647417 '229 Entering Passive Mode (|||42993|)\n' 19:28:46.648370 < 8 bytes data, client => server 19:28:46.648479 'TYPE I\r\n' 19:28:46.649861 Received DATA (on stdin) 19:28:46.649960 > 33 bytes data, server => client 19:28:46.650029 '200 I modify TYPE as you wanted\r\n' 19:28:46.650535 < 21 bytes data, client => server 19:28:46.650672 'SIZE verifiedserver\r\n' 19:28:46.651628 Received DATA (on stdin) 19:28:46.651730 > 8 bytes data, server => client 19:28:46.651797 '213 18\r\n' 19:28:46.652221 < 21 bytes data, client => server 19:28:46.652339 'RETR verifiedserver\r\n' 19:28:46.654187 Received DATA (on stdin) 19:28:46.654299 > 29 bytes data, server => client 19:28:46.654499 '150 Binary junk (18 bytes).\r\n' 19:28:46.658530 Received DATA (on stdin) 19:28:46.658662 > 28 bytes data, server => client 19:28:46.658750 '226 File transfer complete\r\n' 19:28:46.699179 < 6 bytes data, client => server 19:28:46.699417 'QUIT\r\n' 19:28:46.700310 Received DATA (on stdin) 19:28:46.700567 > 18 bytes data, server => client 19:28:46.700785 '221 bye bye baby\r\n' 19:28:46.703359 ====> Client disconnect 19:28:46.704951 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:47.644240 Running IPv4 version 19:28:47.644590 Listening on port 42993 19:28:47.644860 Wrote pid 123498 to log/4/server/ftp_sockdata.pid 19:28:47.644999 Received PING (on stdin) 19:28:47.645826 Received PORT (on stdin) 19:28:47.648163 ====> Client connect 19:28:47.653361 Received DATA (on stdin) 19:28:47.653496 > 18 bytes data, server => client 19:28:47.653590 'WE ROOLZ: 109451\r\n' 19:28:47.654173 Received DISC (on stdin) 19:28:47.654415 ====> Client forcibly disconnected 19:28:47.655666 Received QUIT (on stdin) 19:28:47.655766 quits 19:28:47.656016 CMD (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/2/valgrind342 ../src/curl -q --output log/2/curl342.out --include --trace-ascii log/2/trace342 --trace-config all --trace-time http://127.0.0.1:39599/342 --etag-compare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 CMD (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/1/valgrind343 ../src/curl -q --output log/1/curl343.out --include --trace-ascii log/1/trace343 --trace-config all --trace-time http://127.0.0.1:41477/343 --etag-compare log/1/etag343 --etag-save log/1/out343 > log/1/stdout343 2> log/1/stderr343 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 340 === End of file server.cmd === Start of file valgrind340 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind340 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-config all --trace-time http://127.0.0.1:39599/342 --etag-compare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 342: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:39599/342 --etag-compare log/2/etag342 > log/2/stdout342 2> log/2/stderr342 === End of file commands.log === Start of file etag342 "21025-dc7-39462498" === End of file etag342 === Start of file http_server.log 19:28:48.133891 ====> Client connect 19:28:48.134159 accept_connection 3 returned 4 19:28:48.134386 accept_connection 3 returned 0 19:28:48.134704 Read 93 bytes 19:28:48.134935 Process 93 bytes request 19:28:48.135144 Got request: GET /verifiedserver HTTP/1.1 19:28:48.135357 Are-we-friendly question received 19:28:48.135766 Wrote request (93 bytes) input to log/2/server.input 19:28:48.136177 Identifying ourselves as friends 19:28:48.137524 Response sent (57 bytes) and written to log/2/server.response 19:28:48.137765 special request received, no persistency 19:28:48.137949 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 342 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind342 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind342 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-config all --trace-time http://127.0.0.1:41477/343 --etag-compare log/1/etag343 --etag-save log/1/out343 > log/1/stdout343 2> log/1/stderr343 343: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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 log/1/trace343 --trace-config all --trace-time http://127.0.0.1:41477/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 etag343 "21025-dc7-39462498" === End of file etag343 === Start of file http_server.log 19:28:48.195272 ====> Client connect 19:28:48.195501 accept_connection 3 returned 4 19:28:48.195625 accept_connection 3 returned 0 19:28:48.195732 Read 93 bytes 19:28:48.195808 Process 93 bytes request 19:28:48.195873 Got request: GET /verifiedserver HTTP/1.1 19:28:48.195927 Are-we-friendly question received 19:28:48.196078 Wrote request (93 bytes) input to log/1/server.input 19:28:48.196211 Identifying ourselves as friends 19:28:48.196716 Response sent (57 bytes) and written to log/1/server.response 19:28:48.196808 special request received, no persistency 19:28:48.196862 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 343 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind343 valgrind: FatCMD (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/valgrind344 ../src/curl -q --output log/3/curl344.out --include --trace-ascii log/3/trace344 --trace-config all --trace-time http://127.0.0.1:37525/344 --etag-compare log/3/etag344 --etag-save log/3/etag344 > log/3/stdout344 2> log/3/stderr344 CMD (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/4/valgrind345 ../src/curl -q --output log/4/curl345.out --include --trace-ascii log/4/trace345 --trace-config all --trace-time http://127.0.0.1:43669/345 --etag-compare log/4/etag345 --etag-save log/4/etag345 > log/4/stdout345 2> log/4/stderr345 al error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:37525/344 --etag-compare log/3/etag344 --etag-save log/3/etag344 > log/3/stdout344 2> log/3/stderr344 344: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/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 http_server.log 19:28:47.334580 ====> Client connect 19:28:47.334813 accept_connection 3 returned 4 19:28:47.334927 accept_connection 3 returned 0 19:28:47.335429 Read 93 bytes 19:28:47.335562 Process 93 bytes request 19:28:47.335638 Got request: GET /verifiedserver HTTP/1.1 19:28:47.335699 Are-we-friendly question received 19:28:47.335863 Wrote request (93 bytes) input to log/3/server.input 19:28:47.336017 Identifying ourselves as friends 19:28:47.336453 Response sent (57 bytes) and written to log/3/server.response 19:28:47.336555 special request received, no persistency 19:28:47.336621 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 344 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind344 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind344 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/4/valgrind345 ../src/curl -q --output log/4/curl345.out --include --trace-ascii log/4/trace345 --trace-config all --trace-time http://127.0.0.1:43669/345 --etag-compare log/4/etag345 --etag-save log/4/etag345 > log/4/stdout345 2> log/4/stderr345 345: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind345 ../src/curl -q --output log/4/curl345.out --include --trace-ascii log/4/trace345 --trace-config all --trace-time http://127.0.0.1:43669/345 --etag-compare log/4/etag345 --etag-save log/4/etag345 > log/4/stdout345 2> log/4/stderr345 === End of file commands.log === Start of file etag345 "21025-dc7-39462498" === End of file etag345 === Start of file http_server.log 19:28:48.296806 ====> Client connect 19:28:48.297023 accept_connection 3 returned 4 19:28:48.297151 accept_connection 3 returned 0 19:28:48.297272 Read 93 bytes 19:28:48.297358 Process 93 bytes request 19:28:48.297435 Got request: GET /verifiedserver HTTP/1.1 19:28:48.297511 Are-we-friendly question received 19:28:48.297674 Wrote request (93 bytes) input to log/4/server.input 19:28:48.297828 Identifying ourselves as friends 19:28:48.298441 Response sent (57 bytes) and written to log/4/server.response 19:28:48.298538 special request received, no persistency 19:28:48.298595 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 345 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind345 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: CMD (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/2/valgrind346 ../src/curl -q --output log/2/curl346.out --include --trace-ascii log/2/trace346 --trace-config all --trace-time -x http://127.0.0.1:39599/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346 CMD (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/1/valgrind347 ../src/curl -q --output log/1/curl347.out --include --trace-ascii log/1/trace347 --trace-config all --trace-time http://127.0.0.1:41477/347 --etag-save log/1/etag347 > log/1/stdout347 2> log/1/stderr347 valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind346 ../src/curl -q --output log/2/curl346.out --include --trace-ascii log/2/trace346 --trace-config all --trace-time -x http://127.0.0.1:39599/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346 346: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind346 ../src/curl -q --output log/2/curl346.out --include --trace-ascii log/2/trace346 --trace-config all --trace-time -x http://127.0.0.1:39599/346 -U puser: -u suser: http://remote.example/346 > log/2/stdout346 2> log/2/stderr346 === End of file commands.log === Start of file http_server.log 19:28:48.821281 ====> Client connect 19:28:48.821548 accept_connection 3 returned 4 19:28:48.821664 accept_connection 3 returned 0 19:28:48.821762 Read 93 bytes 19:28:48.821903 Process 93 bytes request 19:28:48.822083 Got request: GET /verifiedserver HTTP/1.1 19:28:48.822248 Are-we-friendly question received 19:28:48.822625 Wrote request (93 bytes) input to log/2/server.input 19:28:48.822905 Identifying ourselves as friends 19:28:48.823553 Response sent (57 bytes) and written to log/2/server.response 19:28:48.823639 special request received, no persistency 19:28:48.823691 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 346 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind346 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind346 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/1/valgrind347 ../src/curl -q --output log/1/curl347.out --include --trace-ascii log/1/trace347 --trace-config all --trace-time http://127.0.0.1:41477/347 --etag-save log/1/etag347 > log/1/stdout347 2> log/1/stderr347 347: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind347 ../src/curl -q --output log/1/curl347.out --include --trace-ascii log/1/trace347 --trace-config all --trace-time http://127.0.0.1:41477/347 --etag-save log/1/etag347 > log/1/stdout347 2> log/1/stderr347 === End of file commands.log === Start of file http_server.log 19:28:48.836921 ====> Client connect 19:28:48.837174 accept_connection 3 returned 4 19:28:48.837313 accept_connection 3 returned 0 19:28:48.837886 Read 93 bytes 19:28:48.838030 Process 93 bytes request 19:28:48.838112 Got request: GET /verifiedserver HTTP/1.1 19:28:48.838182 Are-we-friendly question received 19:28:48.838462 Wrote request (93 bytes) input to log/1/server.input 19:28:48.838716 Identifying ourselves as friends 19:28:48.839211 Response sent (57 bytes) and written to log/1/server.response 19:28:48.839346 special request received, no persistency 19:28:48.839408 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 347 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind347 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuCMD (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/4/valgrind349 ../src/curl -q --output log/4/curl349.out --include --trace-ascii log/4/trace349 --trace-config all --trace-time http://127.0.0.1:43669/349 --fail-with-body > log/4/stdout349 2> log/4/stderr349 CMD (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/valgrind348 ../src/curl -q --output log/3/curl348.out --include --trace-ascii log/3/trace348 --trace-config all --trace-time ftp://127.0.0.1:43789/348 -T log/3/test348.txt > log/3/stdout348 2> log/3/stderr348 ginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind347 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/4/valgrind349 ../src/curl -q --output log/4/curl349.out --include --trace-ascii log/4/trace349 --trace-config all --trace-time http://127.0.0.1:43669/349 --fail-with-body > log/4/stdout349 2> log/4/stderr349 349: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind349 ../src/curl -q --output log/4/curl349.out --include --trace-ascii log/4/trace349 --trace-config all --trace-time http://127.0.0.1:43669/349 --fail-with-body > log/4/stdout349 2> log/4/stderr349 === End of file commands.log === Start of file http_server.log 19:28:48.978483 ====> Client connect 19:28:48.978710 accept_connection 3 returned 4 19:28:48.978849 accept_connection 3 returned 0 19:28:48.978967 Read 93 bytes 19:28:48.979041 Process 93 bytes request 19:28:48.979110 Got request: GET /verifiedserver HTTP/1.1 19:28:48.979168 Are-we-friendly question received 19:28:48.979323 Wrote request (93 bytes) input to log/4/server.input 19:28:48.979468 Identifying ourselves as friends 19:28:48.979971 Response sent (57 bytes) and written to log/4/server.response 19:28:48.980066 special request received, no persistency 19:28:48.980122 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 349 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind349 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind348 ../src/curl -q --output log/3/curl348.out --include --trace-ascii log/3/trace348 --trace-config all --trace-time ftp://127.0.0.1:43789/348 -T log/3/test348.txt > log/3/stdout348 2> log/3/stderr348 348: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind348 ../src/curl -q --output log/3/curl348.out --include --trace-ascii log/3/trace348 --trace-config all --trace-time ftp://127.0.0.1:43789/348 -T log/3/test348.txt > log/3/stdout348 2> log/3/stderr348 === End of file commands.log === Start of file ftp_server.log 19:28:48.525874 ====> Client connect 19:28:48.526638 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:48.530218 < "USER anonymous" 19:28:48.530524 > "331 We are happy you popped in![CR][LF]" 19:28:48.531531 < "PASS ftp@example.com" 19:28:48.531830 > "230 Welcome you silly person[CR][LF]" 19:28:48.532973 < "PWD" 19:28:48.533258 > "257 "/" is current directory[CR][LF]" 19:28:48.534633 < "EPSV" 19:28:48.534856 ====> Passive DATA channel requested by client 19:28:48.535021 DATA sockfilt for passive data channel starting... 19:28:48.543071 DATA sockfilt for passive data channel started (pid 124044) 19:28:48.543920 DATA sockfilt for passive data channel listens on port 46843 19:28:48.544288 > "229 Entering Passive Mode (|||46843|)[LF]" 19:28:48.544473 Client has been notified that DATA conn will be accepted on port 46843 19:28:48.545924 Client connects to port 46843 19:28:48.546346 ====> Client established passive DATA connection on port 46843 19:28:48.546904 < "TYPE I" 19:28:48.547373 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:48.548336 < "SIZE verifiedserver" 19:28:48.548631 > "213 18[CR][LF]" 19:28:48.549879 < "RETR verifiedserver" 19:28:48.550193 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:48.550693 =====> Closing passive DATA connection... 19:28:48.550911 Server disconnects passive DATA connection 19:28:48.551678 Server disconnected passive DATA connection 19:28:48.551902 DATA sockfilt for passive data channel quits (pid 124044) 19:28:48.553512 DATA sockfilt for passive data channel quit (pid 124044) 19:28:48.553749 =====> Closed passive DATA connection 19:28:48.553982 > "226 File transfer complete[CR][LF]" 19:28:48.594638 < "QUIT" 19:28:48.594992 > "221 bye bye baby[CR][LF]" 19:28:48.599836 MAIN sockfilt said DISC 19:28:48.600749 ====> Client disconnected 19:28:48.601809 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:48.990225 ====> Client connect 19:28:48.991498 Received DATA (on stdin) 19:28:48.991627 > 160 bytes data, server => client 19:28:48.991708 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:48.991784 ' \r\n220- / __| | | | |_) | | \r\n220- | (__|CMD (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/2/valgrind350 ../src/curl -q --output log/2/curl350.out --include --trace-ascii log/2/trace350 --trace-config all --trace-time ftp://127.0.0.1:36773// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 |_| | ' 19:28:48.991850 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:48.992254 < 16 bytes data, client => server 19:28:48.992374 'USER anonymous\r\n' 19:28:48.995406 Received DATA (on stdin) 19:28:48.995520 > 33 bytes data, server => client 19:28:48.995594 '331 We are happy you popped in!\r\n' 19:28:48.995980 < 22 bytes data, client => server 19:28:48.996127 'PASS ftp@example.com\r\n' 19:28:48.996704 Received DATA (on stdin) 19:28:48.996813 > 30 bytes data, server => client 19:28:48.996883 '230 Welcome you silly person\r\n' 19:28:48.997433 < 5 bytes data, client => server 19:28:48.997573 'PWD\r\n' 19:28:48.998211 Received DATA (on stdin) 19:28:48.998415 > 30 bytes data, server => client 19:28:48.998533 '257 "/" is current directory\r\n' 19:28:48.999091 < 6 bytes data, client => server 19:28:48.999237 'EPSV\r\n' 19:28:49.009170 Received DATA (on stdin) 19:28:49.009312 > 38 bytes data, server => client 19:28:49.009398 '229 Entering Passive Mode (|||46843|)\n' 19:28:49.010480 < 8 bytes data, client => server 19:28:49.010650 'TYPE I\r\n' 19:28:49.012252 Received DATA (on stdin) 19:28:49.012369 > 33 bytes data, server => client 19:28:49.012441 '200 I modify TYPE as you wanted\r\n' 19:28:49.012844 < 21 bytes data, client => server 19:28:49.012958 'SIZE verifiedserver\r\n' 19:28:49.013509 Received DATA (on stdin) 19:28:49.013629 > 8 bytes data, server => client 19:28:49.013707 '213 18\r\n' 19:28:49.014136 < 21 bytes data, client => server 19:28:49.014443 'RETR verifiedserver\r\n' 19:28:49.015074 Received DATA (on stdin) 19:28:49.015182 > 29 bytes data, server => client 19:28:49.015252 '150 Binary junk (18 bytes).\r\n' 19:28:49.018872 Received DATA (on stdin) 19:28:49.019008 > 28 bytes data, server => client 19:28:49.019090 '226 File transfer complete\r\n' 19:28:49.059034 < 6 bytes data, client => server 19:28:49.059205 'QUIT\r\n' 19:28:49.059877 Received DATA (on stdin) 19:28:49.060011 > 18 bytes data, server => client 19:28:49.060096 '221 bye bye baby\r\n' 19:28:49.064347 ====> Client disconnect 19:28:49.065106 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:48.007051 Running IPv4 version 19:28:48.007412 Listening on port 46843 19:28:48.007635 Wrote pid 124044 to log/3/server/ftp_sockdata.pid 19:28:48.007742 Received PING (on stdin) 19:28:48.008370 Received PORT (on stdin) 19:28:48.010605 ====> Client connect 19:28:48.015972 Received DATA (on stdin) 19:28:48.016072 > 18 bytes data, server => client 19:28:48.016142 'WE ROOLZ: 109394\r\n' 19:28:48.016365 Received DISC (on stdin) 19:28:48.016965 ====> Client forcibly disconnected 19:28:48.017267 Received QUIT (on stdin) 19:28:48.017363 quits 19:28:48.017629 ============> 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 test348.txt data to see that FTP works so does it? === End of file test348.txt === Start of file valgrind348 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind348 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-config all --trace-time ftp://127.0.0.1:36773// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 350: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:36773// --ftp-method multicwd > log/2/stdout350 2> log/2/stderr350 === End of file commands.log === Start of file ftp_server.log 19:28:49.020721 ====> Client connect 19:28:49.021680 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:49.023069 < "USER anonymous" 19:28:49.023421 > "331 We are happy you popped in![CR][LF]" 19:28:49.024517 < "PASS ftp@example.com" 19:28:49.024827 > "230 Welcome you silly person[CR][LF]" 19:28:49.025968 < "PWD" 19:28:49.026281 > "257 "/" is current directory[CR][LF]" 19:28:49.027528 < "EPSV" 19:28:49.027809 ====> Passive DATA channel requested by client 19:28:49.027972 DATA sockfilt for passive data channel starting... 19:28:49.036464 DATA sockfilt for passive data channel started (pid 124246) 19:28:49.037109 DATA sockfilt for passive data channel listens on port 33793 19:28:49.037373 > "229 Entering Passive Mode (|||33793|)[LF]" 19:28:49.037636 Client has been notified that DATA conn will be accepted on port 33793 19:28:49.038755 Client connects to port 33793 19:28:49.038978 ====> Client established passive DATA connection on port 33793 19:28:49.039518 < "TYPE I" 19:28:49.039796 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:49.040795 < "SIZE verifiedserver" 19:28:49.041089 > "213 18[CR][LF]" 19:28:49.042181 < "RETR verifiedserver" 19:28:49.042526 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:49.043239 =====> Closing passive DATA connection... 19:28:49.043466 Server disconnects passive DATA connection 19:28:49.044548 Server disconnected passive DATA connection 19:28:49.044721 DATA sockfilt for passive data channel quits (pid 124246) 19:28:49.046255 DATA sockfilt for passive data channel quit (pid 124246) 19:28:49.046472 =====> Closed passive DATA connection 19:28:49.046708 > "226 File transfer complete[CR][LF]" 19:28:49.086444 < "QUIT" 19:28:49.086741 > "221 bye bye baby[CR][LF]" 19:28:49.089077 MAIN sockfilt said DISC 19:28:49.089370 ====> Client disconnected 19:28:49.089726 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:48.485185 ====> Client connect 19:28:48.486505 Received DATA (on stdin) 19:28:48.486666 > 160 bytes data, server => client 19:28:48.486745 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:48.486824 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:48.486891 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:48.487347 < 16 bytes data, client => server 19:28:48.487484 'USER anonymous\r\n' 19:28:48.488288 Received DATA (on stdin) 19:28:48.488417 > 33 bytes data, server => clientCMD (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/1/valgrind351 ../src/curl -q --output log/1/curl351.out --include --trace-ascii log/1/trace351 --trace-config all --trace-time ftp://127.0.0.1:39333// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 CMD (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/4/valgrind352 ../src/curl -q --output log/4/curl352.out --include --trace-ascii log/4/trace352 --trace-config all --trace-time ftp://127.0.0.1:40809// --ftp-method singlecwd > log/4/stdout352 2> log/4/stderr352 19:28:48.488493 '331 We are happy you popped in!\r\n' 19:28:48.488912 < 22 bytes data, client => server 19:28:48.489063 'PASS ftp@example.com\r\n' 19:28:48.489696 Received DATA (on stdin) 19:28:48.489816 > 30 bytes data, server => client 19:28:48.489890 '230 Welcome you silly person\r\n' 19:28:48.490350 < 5 bytes data, client => server 19:28:48.490485 'PWD\r\n' 19:28:48.491157 Received DATA (on stdin) 19:28:48.491293 > 30 bytes data, server => client 19:28:48.491385 '257 "/" is current directory\r\n' 19:28:48.491893 < 6 bytes data, client => server 19:28:48.492051 'EPSV\r\n' 19:28:48.502242 Received DATA (on stdin) 19:28:48.502469 > 38 bytes data, server => client 19:28:48.502559 '229 Entering Passive Mode (|||33793|)\n' 19:28:48.503385 < 8 bytes data, client => server 19:28:48.503513 'TYPE I\r\n' 19:28:48.504666 Received DATA (on stdin) 19:28:48.504781 > 33 bytes data, server => client 19:28:48.504859 '200 I modify TYPE as you wanted\r\n' 19:28:48.505278 < 21 bytes data, client => server 19:28:48.505385 'SIZE verifiedserver\r\n' 19:28:48.505967 Received DATA (on stdin) 19:28:48.506074 > 8 bytes data, server => client 19:28:48.506152 '213 18\r\n' 19:28:48.506647 < 21 bytes data, client => server 19:28:48.506763 'RETR verifiedserver\r\n' 19:28:48.507395 Received DATA (on stdin) 19:28:48.507509 > 29 bytes data, server => client 19:28:48.507586 '150 Binary junk (18 bytes).\r\n' 19:28:48.512719 Received DATA (on stdin) 19:28:48.512861 > 28 bytes data, server => client 19:28:48.512935 '226 File transfer complete\r\n' 19:28:48.550873 < 6 bytes data, client => server 19:28:48.551032 'QUIT\r\n' 19:28:48.551609 Received DATA (on stdin) 19:28:48.551717 > 18 bytes data, server => client 19:28:48.551789 '221 bye bye baby\r\n' 19:28:48.552128 ====> Client disconnect 19:28:48.554257 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:49.500498 Running IPv4 version 19:28:49.500832 Listening on port 33793 19:28:49.501041 Wrote pid 124246 to log/2/server/ftp_sockdata.pid 19:28:49.501144 Received PING (on stdin) 19:28:49.501621 Received PORT (on stdin) 19:28:49.503437 ====> Client connect 19:28:49.508527 Received DATA (on stdin) 19:28:49.508641 > 18 bytes data, server => client 19:28:49.508719 'WE ROOLZ: 116354\r\n' 19:28:49.509227 Received DISC (on stdin) 19:28:49.509773 ====> Client forcibly disconnected 19:28:49.510065 Received QUIT (on stdin) 19:28:49.510186 quits 19:28:49.510519 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 350 === End of file server.cmd === Start of file valgrind350 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind350 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-config all --trace-time ftp://127.0.0.1:39333// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 351: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://127.0.0.1:39333// --ftp-method nocwd > log/1/stdout351 2> log/1/stderr351 === End of file commands.log === Start of file ftp_server.log 19:28:49.043682 ====> Client connect 19:28:49.044489 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:49.046036 < "USER anonymous" 19:28:49.046380 > "331 We are happy you popped in![CR][LF]" 19:28:49.048857 < "PASS ftp@example.com" 19:28:49.049121 > "230 Welcome you silly person[CR][LF]" 19:28:49.050379 < "PWD" 19:28:49.050659 > "257 "/" is current directory[CR][LF]" 19:28:49.051606 < "EPSV" 19:28:49.051811 ====> Passive DATA channel requested by client 19:28:49.051940 DATA sockfilt for passive data channel starting... 19:28:49.059185 DATA sockfilt for passive data channel started (pid 124248) 19:28:49.059817 DATA sockfilt for passive data channel listens on port 33545 19:28:49.060117 > "229 Entering Passive Mode (|||33545|)[LF]" 19:28:49.060276 Client has been notified that DATA conn will be accepted on port 33545 19:28:49.061768 Client connects to port 33545 19:28:49.062034 ====> Client established passive DATA connection on port 33545 19:28:49.062505 < "TYPE I" 19:28:49.062750 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:49.063748 < "SIZE verifiedserver" 19:28:49.064026 > "213 18[CR][LF]" 19:28:49.064986 < "RETR verifiedserver" 19:28:49.065258 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:49.065794 =====> Closing passive DATA connection... 19:28:49.065992 Server disconnects passive DATA connection 19:28:49.066776 Server disconnected passive DATA connection 19:28:49.066984 DATA sockfilt for passive data channel quits (pid 124248) 19:28:49.068089 DATA sockfilt for passive data channel quit (pid 124248) 19:28:49.068317 =====> Closed passive DATA connection 19:28:49.068538 > "226 File transfer complete[CR][LF]" 19:28:49.111774 < "QUIT" 19:28:49.112295 > "221 bye bye baby[CR][LF]" 19:28:49.119708 MAIN sockfilt said DISC 19:28:49.119986 ====> Client disconnected 19:28:49.120339 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:49.508184 ====> Client connect 19:28:49.509343 Received DATA (on stdin) 19:28:49.509466 > 160 bytes data, server => client 19:28:49.509550 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:49.509630 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:49.509696 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:49.510106 < 16 bytes data, client => server 19:28:49.510208 'USER anonymous\r\n' 19:28:49.511245 Received DATA (on stdin) 19:28:49.511371 > 33 bytes data, server => client 19:28:49.511453 '331 We are happy you popped in!\r\n' 19:28:49.513316 < 22 bytes data, client => server 19:28:49.513442 'PASS ftp@example.com\r\n' 19:28:49.513987 Received DATA (on stdin) 19:28:49.514091 > 30 bytes data, server => client 19:28:49.514202 '230 Welcome you silly person\r\n' 19:28:49.514844 < 5 bytes data, client => server 19:28:49.514964 'PWD\r\n' 19:28:49.515522 Received DATA (on stdin) 19:28:49.515617 > 30 bytes data, server => client 19:28:49.515684 '257 "/" is current directory\r\n' 19:28:49.516076 < 6 bytes data, client => server 19:28:49.516195 'EPSV\r\n' 19:28:49.524968 Received DATA (on stdin) 19:28:49.525080 > 38 bytes data, server => client 19:28:49.525148 '229 Entering Passive Mode (|||33545|)\n' 19:28:49.526023 < 8 bytes data, client => server 19:28:49.526145 'TYPE I\r\n' 19:28:49.527617 Received DATA (on stdin) 19:28:49.527732 > 33 bytes data, server => client 19:28:49.527802 '200 I modify TYPE as you wanted\r\n' 19:28:49.528225 < 21 bytes data, client => server 19:28:49.528356 'SIZE verifiedserver\r\n' 19:28:49.528889 Received DATA (on stdin) 19:28:49.528984 > 8 bytes data, server => client 19:28:49.529051 '213 18\r\n' 19:28:49.529467 < 21 bytes data, client => server 19:28:49.529596 'RETR verifiedserver\r\n' 19:28:49.530116 Received DATA (on stdin) 19:28:49.530214 > 29 bytes data, server => client 19:28:49.530381 '150 Binary junk (18 bytes).\r\n' 19:28:49.533595 Received DATA (on stdin) 19:28:49.533697 > 28 bytes data, server => client 19:28:49.533769 '226 File transfer complete\r\n' 19:28:49.575586 < 6 bytes data, client => server 19:28:49.575888 'QUIT\r\n' 19:28:49.577625 Received DATA (on stdin) 19:28:49.577815 > 18 bytes data, server => client 19:28:49.577915 '221 bye bye baby\r\n' 19:28:49.582482 ====> Client disconnect 19:28:49.584892 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:49.523203 Running IPv4 version 19:28:49.523505 Listening on port 33545 19:28:49.523728 Wrote pid 124248 to log/1/server/ftp_sockdata.pid 19:28:49.523835 Received PING (on stdin) 19:28:49.524349 Received PORT (on stdin) 19:28:49.526419 ====> Client connect 19:28:49.530760 Received DATA (on stdin) 19:28:49.530865 > 18 bytes data, server => client 19:28:49.530932 'WE ROOLZ: 109414\r\n' 19:28:49.531412 Received DISC (on stdin) 19:28:49.531564 ====> Client forcibly disconnected 19:28:49.532011 Received QUIT (on stdin) 19:28:49.532114 quits 19:28:49.532382 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 351 === End of file server.cmd === Start of file valgrind351 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind351 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/4/valgrind352 ../src/curl -q --output log/4/curl352.out --include --trace-ascii log/4/trace352 --trace-config all --trace-time ftp://127.0.0.1:40809// --ftp-method singlecwd > log/4/stdout352 2> log/4/stderr352 352: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind352 ../src/curl -q --output log/4/curl352.out --include --trace-ascii log/4/trace352 --trace-config all --trace-time ftp://127.0.0.1:40809// --ftp-method singlecwd > log/4/stdout352 2> log/4/stderr352 === End of file commands.log === Start of file ftp_server.log 19:28:49.138490 ====> Client connect 19:28:49.139264 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:49.141028 < "USER anonymous" 19:28:49.141321 > "331 We are happy you popped in![CR][LF]" 19:28:49.142729 < "PASS ftp@example.com" 19:28:49.142989 > "230 Welcome you silly person[CR][LF]" 19:28:49.144017 < "PWD" 19:28:49.144296 > "257 "/" is current directory[CR][LF]" 19:28:49.145280 < "EPSV" 19:28:49.145601 ====> Passive DATA channel requested by client 19:28:49.145769 DATA sockfilt for passive data channel starting... 19:28:49.152856 DATA sockfilt for passive data channel started (pid 124264) 19:28:49.153617 DATA sockfilt for passive data channel listens on port 35409 19:28:49.153921 > "229 Entering Passive Mode (|||35409|)[LF]" 19:28:49.154095 Client has been notified that DATA conn will be accepted on port 35409 19:28:49.154973 Client connects to port 35409 19:28:49.155187 ====> Client established passive DATA connection on port 35409 19:28:49.155655 < "TYPE I" 19:28:49.155903 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:49.156804 < "SIZE verifiedserver" 19:28:49.157067 > "213 18[CR][LF]" 19:28:49.158069 < "RETR verifiedserver" 19:28:49.158341 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:49.158793 =====> Closing passive DATA connection... 19:28:49.158976 Server disconnects passive DATA connection 19:28:49.159659 Server disconnected passive DATA connection 19:28:49.159866 DATA sockfilt for passive data channel quits (pid 124264) 19:28:49.160970 DATA sockfilt for passive data channel quit (pid 124264) 19:28:49.161170 =====> Closed passive DATA connection 19:28:49.161395 > "226 File transfer complete[CR][LF]" 19:28:49.162811 < "QUIT" 19:28:49.163574 > "221 bye bye baby[CR][LF]" 19:28:49.164044 MAIN sockfilt said DISC 19:28:49.164650 ====> Client disconnected 19:28:49.165032 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:48.602962 ====> Client connect 19:28:48.604372 Received DATA (on stdin) 19:28:48.604476 > 160 bytes data, server => client 19:28:48.604554 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:48.604617 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:48.604677 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:48.605189 < 16 bytes data, client => server 19:28:48.605311 'USER anonymous\r\n' 19:28:48.606533 Received DATA (on stdin) 19:28:48.606672 > 33 bytes data, server => client 19:28:48.606753 '331 We are happy you popped in!\r\n' 19:28:48.607153 < 22 bytes data, client => server 19:28:48.607286 'PASS ftp@example.com\r\n' 19:28:48.607848 Received DATA (on stdin) 19:28:48.607984 > 30 bytes data, server => client 19:28:48.608064 '230 Welcome you silly person\r\n' 19:28:48.608459 < 5 bytes data, client => server 19:28:48.608597 'PWD\r\n' 19:28:48.609158 Received DATA (on stdin) 19:28:48.609268 > 30 bytes data, server => client 19:28:48.609339 '257 "/" is current directory\r\n' 19:28:48.609767 < 6 bytes data, client => server 19:28:48.609934 'EPSV\r\n' 19:28:48.618829 Received DATA (on stdin) 19:28:48.618948 > 38 bytes data, server => client 19:28:48.619026 '229 Entering Passive Mode (|||35409|)\n' 19:28:48.619833 < 8 bytes data, client => serCMD (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/valgrind353 ../src/curl -q --output log/3/curl353.out --include --trace-ascii log/3/trace353 --trace-config all --trace-time ftp://127.0.0.1:43789/ --ftp-method singlecwd > log/3/stdout353 2> log/3/stderr353 ver 19:28:48.619936 'TYPE I\r\n' 19:28:48.620767 Received DATA (on stdin) 19:28:48.620869 > 33 bytes data, server => client 19:28:48.620941 '200 I modify TYPE as you wanted\r\n' 19:28:48.621342 < 21 bytes data, client => server 19:28:48.621455 'SIZE verifiedserver\r\n' 19:28:48.621942 Received DATA (on stdin) 19:28:48.622029 > 8 bytes data, server => client 19:28:48.622094 '213 18\r\n' 19:28:48.622588 < 21 bytes data, client => server 19:28:48.622717 'RETR verifiedserver\r\n' 19:28:48.623201 Received DATA (on stdin) 19:28:48.623288 > 29 bytes data, server => client 19:28:48.623357 '150 Binary junk (18 bytes).\r\n' 19:28:48.626257 Received DATA (on stdin) 19:28:48.626451 > 28 bytes data, server => client 19:28:48.626523 '226 File transfer complete\r\n' 19:28:48.627075 < 6 bytes data, client => server 19:28:48.627198 'QUIT\r\n' 19:28:48.627914 Received DATA (on stdin) 19:28:48.628026 > 18 bytes data, server => client 19:28:48.628169 '221 bye bye baby\r\n' 19:28:48.628524 ====> Client disconnect 19:28:48.629163 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:49.616860 Running IPv4 version 19:28:49.617231 Listening on port 35409 19:28:49.617435 Wrote pid 124264 to log/4/server/ftp_sockdata.pid 19:28:49.617530 Received PING (on stdin) 19:28:49.618040 Received PORT (on stdin) 19:28:49.619641 ====> Client connect 19:28:49.623424 Received DATA (on stdin) 19:28:49.623751 > 18 bytes data, server => client 19:28:49.623840 'WE ROOLZ: 109451\r\n' 19:28:49.624319 Received DISC (on stdin) 19:28:49.624460 ====> Client forcibly disconnected 19:28:49.624912 Received QUIT (on stdin) 19:28:49.625006 quits 19:28:49.625260 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 352 === End of file server.cmd === Start of file valgrind352 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind352 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/3/valgrind353 ../src/curl -q --output log/3/curl353.out --include --trace-ascii log/3/trace353 --trace-config all --trace-time ftp://127.0.0.1:43789/ --ftp-method singlecwd > log/3/stdout353 2> log/3/stderr353 353: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind353 ../src/curl -q --output log/3/curl353.out --include --trace-ascii log/3/trace353 --trace-config all --trace-time ftp://127.0.0.1:43789/ --ftp-method singlecwd > log/3/stdout353 2> log/3/stderr353 === End of file commands.log === Start of file ftp_server.log 19:28:49.277308 ====> Client connect 19:28:49.278273 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:49.279795 < "USER anonymous" 19:28:49.280049 > "331 We are happy you popped in![CR][LF]" 19:28:49.281045 < "PASS ftp@example.com" 19:28:49.281346 > "230 Welcome you silly person[CR][LF]" 19:28:49.282515 < "PWD" 19:28:49.282789 > "257 "/" is current directory[CR][LF]" 19:28:49.285038 < "EPSV" 19:28:49.285265 ====> Passive DATA channel requested by client 19:28:49.285494 DATA sockfilt for passive data channel starting... 19:28:49.296119 DATA sockfilt for passive data channel started (pid 124312) 19:28:49.296870 DATA sockfilt for passive data channel listens on port 46123 19:28:49.297208 > "229 Entering Passive Mode (|||46123|)[LF]" 19:28:49.297542 Client has been notified that DATA conn will be accepted on port 46123 19:28:49.299015 Client connects to port 46123 19:28:49.299277 ====> Client established passive DATA connection on port 46123 19:28:49.299942 < "TYPE I" 19:28:49.300277 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:49.301338 < "SIZE verifiedserver" 19:28:49.301935 > "213 18[CR][LF]" 19:28:49.304291 < "RETR verifiedserver" 19:28:49.304672 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:49.305219 =====> Closing passive DATA connection... 19:28:49.305769 Server disconnects passive DATA connection 19:28:49.306431 Server disconnected passive DATA connection 19:28:49.306832 DATA sockfilt for passive data channel quits (pid 124312) 19:28:49.308185 DATA sockfilt for passive data channel quit (pid 124312) 19:28:49.308551 =====> Closed passive DATA connection 19:28:49.308894 > "226 File transfer complete[CR][LF]" 19:28:49.346501 < "QUIT" 19:28:49.346823 > "221 bye bye baby[CR][LF]" 19:28:49.349119 MAIN sockfilt said DISC 19:28:49.349471 ====> Client disconnected 19:28:49.349880 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:49.741755 ====> Client connect 19:28:49.743110 Received DATA (on stdin) 19:28:49.743261 > 160 bytes data, server => client 19:28:49.743344 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:49.743425 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:49.743498 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:49.743992 < 16 bytes data, client => server 19:28:49.744135 'USER anonymous\r\n' 19:28:49.744915 Received DATA (on stdin) 19:28:49.745011 > 33 bytes data, server => client 19:28:49.745077 '331 We are happy you popped in!\r\n' 19:28:49.745478 < 22 bytes data, client => server 19:28:49.745609 'PASS ftp@example.com\r\n' 19:28:49.746208 Received DATA (on stdin) 19:28:49.746436 > 30 bytes data, server => client 19:28:49.746521 '230 Welcome you silly person\r\n' 19:28:49.746955 < 5 bytes data, client => server 19:28:49.747083 'PWD\r\n' 19:28:49.747646 Received DATA (on stdin) 19:28:49.747758 > 30 bytes data, server => client 19:28:49.747838 '257 "/" is current directory\r\n' 19:28:49.748265 < 6 bytes data, client => server 19:28:49.748390 'EPSV\r\n' 19:28:49.762492 Received DATA (on stdin) 19:28:49.762624 > 38 bytes data, server => client 19:28:49.762712 '229 Entering Passive Mode (|||46123|)\n' 19:28:49.763642 < 8 bytes data, client => server 19:28:49.763778 'TYPE I\r\n' 19:28:49.765134 Received DATA (on stdin) 19:28:49.765269 > 33 bytes data, server => client 19:28:49.765345 '200 I modify TYPE as you wanted\r\n' 19:28:49.765766 < 21 bytes data, client => server 19:28:49.765889 'SIZE verifiedserver\r\n' 19:28:49.768017 Received DATA (on stdin) 19:28:49.768206 > 8 bytes data, server => client 19:28:49.768284 '213 18\CMD (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/1/valgrind355 ../src/curl -q --output log/1/curl355.out --include --trace-ascii log/1/trace355 --trace-config all --trace-time http://127.0.0.1:41477/355 --alt-svc "" > log/1/stdout355 2> log/1/stderr355 CMD (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/2/valgrind354 ../src/curl -q --output log/2/curl354.out --include --trace-ascii log/2/trace354 --trace-config all --trace-time ftp://127.0.0.1:36773/354 > log/2/stdout354 2> log/2/stderr354 r\n' 19:28:49.768705 < 21 bytes data, client => server 19:28:49.768832 'RETR verifiedserver\r\n' 19:28:49.769515 Received DATA (on stdin) 19:28:49.769700 > 29 bytes data, server => client 19:28:49.769787 '150 Binary junk (18 bytes).\r\n' 19:28:49.773740 Received DATA (on stdin) 19:28:49.773893 > 28 bytes data, server => client 19:28:49.773980 '226 File transfer complete\r\n' 19:28:49.810888 < 6 bytes data, client => server 19:28:49.811042 'QUIT\r\n' 19:28:49.811683 Received DATA (on stdin) 19:28:49.811794 > 18 bytes data, server => client 19:28:49.811867 '221 bye bye baby\r\n' 19:28:49.813256 ====> Client disconnect 19:28:49.814999 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:49.759967 Running IPv4 version 19:28:49.760356 Listening on port 46123 19:28:49.760609 Wrote pid 124312 to log/3/server/ftp_sockdata.pid 19:28:49.760719 Received PING (on stdin) 19:28:49.761325 Received PORT (on stdin) 19:28:49.763680 ====> Client connect 19:28:49.770383 Received DATA (on stdin) 19:28:49.770565 > 18 bytes data, server => client 19:28:49.770662 'WE ROOLZ: 109394\r\n' 19:28:49.770919 Received DISC (on stdin) 19:28:49.771076 ====> Client forcibly disconnected 19:28:49.772006 Received QUIT (on stdin) 19:28:49.772131 quits 19:28:49.772410 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 353 === End of file server.cmd === Start of file valgrind353 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind353 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/1/valgrind355 ../src/curl -q --output log/1/curl355.out --include --trace-ascii log/1/trace355 --trace-config all --trace-time http://127.0.0.1:41477/355 --alt-svc "" > log/1/stdout355 2> log/1/stderr355 355: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 355 === Start of file altsvc-355 h1 example.com 80 h1 127.0.0.1 41477 "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/1/valgrind355 ../src/curl -q --output log/1/curl355.out --include --trace-ascii log/1/trace355 --trace-config all --trace-time http://127.0.0.1:41477/355 --alt-svc "" > log/1/stdout355 2> log/1/stderr355 === End of file commands.log === Start of file http_server.log 19:28:50.267415 ====> Client connect 19:28:50.267638 accept_connection 3 returned 4 19:28:50.267774 accept_connection 3 returned 0 19:28:50.268892 Read 93 bytes 19:28:50.269019 Process 93 bytes request 19:28:50.269096 Got request: GET /verifiedserver HTTP/1.1 19:28:50.269165 Are-we-friendly question received 19:28:50.269325 Wrote request (93 bytes) input to log/1/server.input 19:28:50.269482 Identifying ourselves as friends 19:28:50.269990 Response sent (57 bytes) and written to log/1/server.response 19:28:50.270096 special request received, no persistency 19:28:50.270152 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 355 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind355 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind355 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/2/valgrind354 ../src/curl -q --output log/2/curl354.out --include --trace-ascii log/2/trace354 --trace-config all --trace-time ftp://127.0.0.1:36773/354 > log/2/stdout354 2> log/2/stderr354 354: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind354 ../src/curl -q --output log/2/curl354.out --include --trace-ascii log/2/trace354 --trace-config all --trace-time ftp://127.0.0.1:36773/354 > log/2/stdout354 2> log/2/stderr354 === End of file commands.log === Start of file ftp_server.log 19:28:49.783884 ====> Client connect 19:28:49.784856 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:49.786988 < "USECMD (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/4/valgrind357 ../src/curl -q --output log/4/curl357.out --include --trace-ascii log/4/trace357 --trace-config all --trace-time http://127.0.0.1:43669/we/want/357 -T log/4/test357.txt --expect100-timeout 99 > log/4/stdout357 2> log/4/stderr357 CMD (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/valgrind360 ../src/curl -q --output log/3/curl360.out --include --trace-ascii log/3/trace360 --trace-config all --trace-time http://127.0.0.1:37525/360 --fail-with-body --fail > log/3/stdout360 2> log/3/stderr360 R anonymous" 19:28:49.787455 > "331 We are happy you popped in![CR][LF]" 19:28:49.788621 < "PASS ftp@example.com" 19:28:49.789132 > "230 Welcome you silly person[CR][LF]" 19:28:49.790296 < "PWD" 19:28:49.790613 > "257 "/" is current directory[CR][LF]" 19:28:49.791784 < "EPSV" 19:28:49.792016 ====> Passive DATA channel requested by client 19:28:49.792194 DATA sockfilt for passive data channel starting... 19:28:49.801184 DATA sockfilt for passive data channel started (pid 124521) 19:28:49.802018 DATA sockfilt for passive data channel listens on port 42937 19:28:49.802407 > "229 Entering Passive Mode (|||42937|)[LF]" 19:28:49.802596 Client has been notified that DATA conn will be accepted on port 42937 19:28:49.803486 Client connects to port 42937 19:28:49.803706 ====> Client established passive DATA connection on port 42937 19:28:49.804304 < "TYPE I" 19:28:49.804587 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:49.805646 < "SIZE verifiedserver" 19:28:49.805996 > "213 18[CR][LF]" 19:28:49.806987 < "RETR verifiedserver" 19:28:49.807339 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:49.807894 =====> Closing passive DATA connection... 19:28:49.810680 Server disconnects passive DATA connection 19:28:49.811609 Server disconnected passive DATA connection 19:28:49.811858 DATA sockfilt for passive data channel quits (pid 124521) 19:28:49.813233 DATA sockfilt for passive data channel quit (pid 124521) 19:28:49.813516 =====> Closed passive DATA connection 19:28:49.813771 > "226 File transfer complete[CR][LF]" 19:28:49.850462 < "QUIT" 19:28:49.850751 > "221 bye bye baby[CR][LF]" 19:28:49.854119 MAIN sockfilt said DISC 19:28:49.854431 ====> Client disconnected 19:28:49.854749 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:49.248319 ====> Client connect 19:28:49.250176 Received DATA (on stdin) 19:28:49.250495 > 160 bytes data, server => client 19:28:49.250585 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:49.250655 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:49.250715 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:49.251132 < 16 bytes data, client => server 19:28:49.251261 'USER anonymous\r\n' 19:28:49.252292 Received DATA (on stdin) 19:28:49.252420 > 33 bytes data, server => client 19:28:49.252500 '331 We are happy you popped in!\r\n' 19:28:49.252965 < 22 bytes data, client => server 19:28:49.253101 'PASS ftp@example.com\r\n' 19:28:49.253971 Received DATA (on stdin) 19:28:49.254114 > 30 bytes data, server => client 19:28:49.254191 '230 Welcome you silly person\r\n' 19:28:49.254673 < 5 bytes data, client => server 19:28:49.254802 'PWD\r\n' 19:28:49.255460 Received DATA (on stdin) 19:28:49.255570 > 30 bytes data, server => client 19:28:49.255646 '257 "/" is current directory\r\n' 19:28:49.256173 < 6 bytes data, client => server 19:28:49.256320 'EPSV\r\n' 19:28:49.267246 Received DATA (on stdin) 19:28:49.267382 > 38 bytes data, server => client 19:28:49.267471 '229 Entering Passive Mode (|||42937|)\n' 19:28:49.268329 < 8 bytes data, client => server 19:28:49.268441 'TYPE I\r\n' 19:28:49.269434 Received DATA (on stdin) 19:28:49.269542 > 33 bytes data, server => client 19:28:49.269615 '200 I modify TYPE as you wanted\r\n' 19:28:49.270014 < 21 bytes data, client => server 19:28:49.270107 'SIZE verifiedserver\r\n' 19:28:49.270846 Received DATA (on stdin) 19:28:49.270958 > 8 bytes data, server => client 19:28:49.271028 '213 18\r\n' 19:28:49.271441 < 21 bytes data, client => server 19:28:49.271550 'RETR verifiedserver\r\n' 19:28:49.272244 Received DATA (on stdin) 19:28:49.272372 > 29 bytes data, server => client 19:28:49.272447 '150 Binary junk (18 bytes).\r\n' 19:28:49.278615 Received DATA (on stdin) 19:28:49.278755 > 28 bytes data, server => client 19:28:49.278838 '226 File transfer complete\r\n' 19:28:49.314893 < 6 bytes data, client => server 19:28:49.315035 'QUIT\r\n' 19:28:49.315597 Received DATA (on stdin) 19:28:49.315705 > 18 bytes data, server => client 19:28:49.315778 '221 bye bye baby\r\n' 19:28:49.318492 ====> Client disconnect 19:28:49.319804 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:49.265137 Running IPv4 version 19:28:49.265500 Listening on port 42937 19:28:49.265721 Wrote pid 124521 to log/2/server/ftp_sockdata.pid 19:28:49.265827 Received PING (on stdin) 19:28:49.266406 Received PORT (on stdin) 19:28:49.268132 ====> Client connect 19:28:49.275826 Received DATA (on stdin) 19:28:49.275942 > 18 bytes data, server => client 19:28:49.276013 'WE ROOLZ: 116354\r\n' 19:28:49.276245 Received DISC (on stdin) 19:28:49.276926 ====> Client forcibly disconnected 19:28:49.277207 Received QUIT (on stdin) 19:28:49.277300 quits 19:28:49.277555 ============> 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 valgrind354 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind354 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/4/valgrind357 ../src/curl -q --output log/4/curl357.out --include --trace-ascii log/4/trace357 --trace-config all --trace-time http://127.0.0.1:43669/we/want/357 -T log/4/test357.txt --expect100-timeout 99 > log/4/stdout357 2> log/4/stderr357 357: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind357 ../src/curl -q --output log/4/curl357.out --include --trace-ascii log/4/trace357 --trace-config all --trace-time http://127.0.0.1:43669/we/want/357 -T log/4/test357.txt --expect100-timeout 99 > log/4/stdout357 2> log/4/stderr357 === End of file commands.log === Start of file http_server.log 19:28:50.273099 ====> Client connect 19:28:50.273350 accept_connection 3 returned 4 19:28:50.273469 accept_connection 3 returned 0 19:28:50.273570 Read 93 bytes 19:28:50.273643 Process 93 bytes request 19:28:50.273713 Got request: GET /verifiedserver HTTP/1.1 19:28:50.273774 Are-we-friendly question received 19:28:50.273932 Wrote request (93 bytes) input to log/4/server.input 19:28:50.274084 Identifying ourselves as friends 19:28:50.274756 Response sent (57 bytes) and written to log/4/server.response 19:28:50.274873 special request received, no persistency 19:28:50.275032 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd no-expect Testnum 357 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file test357.txt xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx === End of file test357.txt === Start of file valgrind357 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind357 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/3/valgrind360 ../src/curl -q --output log/3/curl360.out --include --trace-ascii log/3/trace360 --trace-config all --trace-time http://127.0.0.1:37525/360 --fail-with-body --fail > log/3/stdout360 2> log/3/stderr360 curl returned 1, when expecting 2 360: exit FAILED == Contents of files in the log/3/ 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-fiCMD (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/1/valgrind361 ../src/curl -q --output log/1/curl361.out --include --trace-ascii log/1/trace361 --trace-config all --trace-time http://127.0.0.1:41477/361 http://127.0.0.1:41477/361 --fail-with-body > log/1/stdout361 2> log/1/stderr361 CMD (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/2/valgrind362 ../src/curl -q --output log/2/curl362.out --include --trace-ascii log/2/trace362 --trace-config all --trace-time ftp://127.0.0.1:36773/362 -T log/2/test362.txt --continue-at - > log/2/stdout362 2> log/2/stderr362 le=log/3/valgrind360 ../src/curl -q --output log/3/curl360.out --include --trace-ascii log/3/trace360 --trace-config all --trace-time http://127.0.0.1:37525/360 --fail-with-body --fail > log/3/stdout360 2> log/3/stderr360 === End of file commands.log === Start of file http_server.log 19:28:49.473818 ====> Client connect 19:28:49.474074 accept_connection 3 returned 4 19:28:49.474237 accept_connection 3 returned 0 19:28:49.474735 Read 93 bytes 19:28:49.475086 Process 93 bytes request 19:28:49.475244 Got request: GET /verifiedserver HTTP/1.1 19:28:49.475327 Are-we-friendly question received 19:28:49.475501 Wrote request (93 bytes) input to log/3/server.input 19:28:49.475770 Identifying ourselves as friends 19:28:49.476691 Response sent (57 bytes) and written to log/3/server.response 19:28:49.476795 special request received, no persistency 19:28:49.476920 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 360 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind360 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind360 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/1/valgrind361 ../src/curl -q --output log/1/curl361.out --include --trace-ascii log/1/trace361 --trace-config all --trace-time http://127.0.0.1:41477/361 http://127.0.0.1:41477/361 --fail-with-body > log/1/stdout361 2> log/1/stderr361 361: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind361 ../src/curl -q --output log/1/curl361.out --include --trace-ascii log/1/trace361 --trace-config all --trace-time http://127.0.0.1:41477/361 http://127.0.0.1:41477/361 --fail-with-body > log/1/stdout361 2> log/1/stderr361 === End of file commands.log === Start of file http_server.log 19:28:50.918227 ====> Client connect 19:28:50.918574 accept_connection 3 returned 4 19:28:50.918690 accept_connection 3 returned 0 19:28:50.919178 Read 93 bytes 19:28:50.919315 Process 93 bytes request 19:28:50.919394 Got request: GET /verifiedserver HTTP/1.1 19:28:50.919457 Are-we-friendly question received 19:28:50.919636 Wrote request (93 bytes) input to log/1/server.input 19:28:50.919930 Identifying ourselves as friends 19:28:50.920517 Response sent (57 bytes) and written to log/1/server.response 19:28:50.920699 special request received, no persistency 19:28:50.920867 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 361 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind361 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind361 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/2/valgrind362 ../src/curl -q --output log/2/curl362.out --include --trace-ascii log/2/trace362 --trace-config all --trace-time ftp://127.0.0.1:36773/362 -T log/2/test362.txt --continue-at - > log/2/stdout362 2> log/2/stderr362 362: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind362 ../src/curl -q --output log/2/curl362.out --include --trace-ascii log/2/trace362 --trace-config all --trace-time ftp://127.0.0.1:36773/362 -T log/2/test362.txt --continue-at - > log/2/stdout362 2> log/2/stderr362 === End of file commands.log === Start of file ftp_server.log 19:28:50.534516 ====> Client connect 19:28:50.536234 > "220- _CMD (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/valgrind366 ../src/curl -q --output log/3/curl366.out --include --trace-ascii log/3/trace366 --trace-config all --trace-time http://127.0.0.1:37525/366 --retry 2 --retry-max-time 10 > log/3/stdout366 2> log/3/stderr366 _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:50.537690 < "USER anonymous" 19:28:50.538289 > "331 We are happy you popped in![CR][LF]" 19:28:50.540146 < "PASS ftp@example.com" 19:28:50.541482 > "230 Welcome you silly person[CR][LF]" 19:28:50.544146 < "PWD" 19:28:50.548206 > "257 "/" is current directory[CR][LF]" 19:28:50.550701 < "EPSV" 19:28:50.550951 ====> Passive DATA channel requested by client 19:28:50.551074 DATA sockfilt for passive data channel starting... 19:28:50.567830 DATA sockfilt for passive data channel started (pid 124766) 19:28:50.569351 DATA sockfilt for passive data channel listens on port 44195 19:28:50.570540 > "229 Entering Passive Mode (|||44195|)[LF]" 19:28:50.571611 Client has been notified that DATA conn will be accepted on port 44195 19:28:50.577016 Client connects to port 44195 19:28:50.580880 ====> Client established passive DATA connection on port 44195 19:28:50.584825 < "TYPE I" 19:28:50.587622 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:50.589182 < "SIZE verifiedserver" 19:28:50.595442 > "213 18[CR][LF]" 19:28:50.599588 < "RETR verifiedserver" 19:28:50.600011 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:50.601927 =====> Closing passive DATA connection... 19:28:50.602267 Server disconnects passive DATA connection 19:28:50.602503 Fancy that; client wants to DISC, too 19:28:50.602857 Server disconnected passive DATA connection 19:28:50.603431 DATA sockfilt for passive data channel quits (pid 124766) 19:28:50.607725 DATA sockfilt for passive data channel quit (pid 124766) 19:28:50.607929 =====> Closed passive DATA connection 19:28:50.608241 > "226 File transfer complete[CR][LF]" 19:28:50.642487 < "QUIT" 19:28:50.642783 > "221 bye bye baby[CR][LF]" 19:28:50.648104 MAIN sockfilt said DISC 19:28:50.655193 ====> Client disconnected 19:28:50.656681 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:49.998681 ====> Client connect 19:28:50.000676 Received DATA (on stdin) 19:28:50.000829 > 160 bytes data, server => client 19:28:50.001024 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:50.001131 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:50.001207 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:50.001695 < 16 bytes data, client => server 19:28:50.001845 'USER anonymous\r\n' 19:28:50.003112 Received DATA (on stdin) 19:28:50.003247 > 33 bytes data, server => client 19:28:50.003323 '331 We are happy you popped in!\r\n' 19:28:50.003796 < 22 bytes data, client => server 19:28:50.003928 'PASS ftp@example.com\r\n' 19:28:50.006185 Received DATA (on stdin) 19:28:50.006392 > 30 bytes data, server => client 19:28:50.006477 '230 Welcome you silly person\r\n' 19:28:50.006907 < 5 bytes data, client => server 19:28:50.007028 'PWD\r\n' 19:28:50.011284 Received DATA (on stdin) 19:28:50.011418 > 30 bytes data, server => client 19:28:50.013010 '257 "/" is current directory\r\n' 19:28:50.014207 < 6 bytes data, client => server 19:28:50.014459 'EPSV\r\n' 19:28:50.035623 Received DATA (on stdin) 19:28:50.035761 > 38 bytes data, server => client 19:28:50.039642 '229 Entering Passive Mode (|||44195|)\n' 19:28:50.041691 < 8 bytes data, client => server 19:28:50.041785 'TYPE I\r\n' 19:28:50.052404 Received DATA (on stdin) 19:28:50.052557 > 33 bytes data, server => client 19:28:50.052634 '200 I modify TYPE as you wanted\r\n' 19:28:50.053323 < 21 bytes data, client => server 19:28:50.053470 'SIZE verifiedserver\r\n' 19:28:50.060244 Received DATA (on stdin) 19:28:50.060374 > 8 bytes data, server => client 19:28:50.060441 '213 18\r\n' 19:28:50.060920 < 21 bytes data, client => server 19:28:50.061085 'RETR verifiedserver\r\n' 19:28:50.064778 Received DATA (on stdin) 19:28:50.064892 > 29 bytes data, server => client 19:28:50.064962 '150 Binary junk (18 bytes).\r\n' 19:28:50.073058 Received DATA (on stdin) 19:28:50.073203 > 28 bytes data, server => client 19:28:50.073284 '226 File transfer complete\r\n' 19:28:50.106825 < 6 bytes data, client => server 19:28:50.107199 'QUIT\r\n' 19:28:50.108329 Received DATA (on stdin) 19:28:50.109101 > 18 bytes data, server => client 19:28:50.109922 '221 bye bye baby\r\n' 19:28:50.112682 ====> Client disconnect 19:28:50.118579 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:50.029216 Running IPv4 version 19:28:50.030831 Listening on port 44195 19:28:50.031399 Wrote pid 124766 to log/2/server/ftp_sockdata.pid 19:28:50.031639 Received PING (on stdin) 19:28:50.033154 Received PORT (on stdin) 19:28:50.041499 ====> Client connect 19:28:50.065066 Received DATA (on stdin) 19:28:50.065247 > 18 bytes data, server => client 19:28:50.065527 'WE ROOLZ: 116354\r\n' 19:28:50.066653 ====> Client disconnect 19:28:50.067355 Received DISC (on stdin) 19:28:50.067461 Crikey! Client also wants to disconnect 19:28:50.068222 Received ACKD (on stdin) 19:28:50.069351 Received QUIT (on stdin) 19:28:50.069447 quits 19:28:50.072028 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 362 === End of file server.cmd === Start of file test362.txt data to see that FTP works so does it? === End of file test362.txt === Start of file valgrind362 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind362 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/3/valgrind366 ../src/curl -q --output log/3/curl366.out --include --trace-ascii log/3/trace366 --trace-config all --trace-time http://127.0.0.1:37525/366 --retry 2 --retry-max-time 10 > log/3/stdout366 2> log/3/stderr366 366: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind366 ../src/curl -q --output log/3/curl366.out --include --trace-ascii log/3/trace366 --trace-config all --trace-time http://127.0.0.1:37525/366 --retry 2 --retry-max-time 10 > log/3/stdout366 2> log/3/stderr366 === End of file commands.log === Start of file http_server.log 19:28:50.259190 ====> Client connect 19:28:50.259417 accept_connection 3 returned 4 19:28:50.259538 accept_connection 3 returned 0 19:28:50.259644 Read 93 byteCMD (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/4/valgrind365 ../src/curl -q --output log/4/curl365.out --include --trace-ascii log/4/trace365 --trace-config all --trace-time http://127.0.0.1:43669/365 > log/4/stdout365 2> log/4/stderr365 CMD (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/1/valgrind367 ../src/curl -q --output log/1/curl367.out --include --trace-ascii log/1/trace367 --trace-config all --trace-time http://:example@127.0.0.1:41477/367 > log/1/stdout367 2> log/1/stderr367 s 19:28:50.259711 Process 93 bytes request 19:28:50.259777 Got request: GET /verifiedserver HTTP/1.1 19:28:50.259834 Are-we-friendly question received 19:28:50.259977 Wrote request (93 bytes) input to log/3/server.input 19:28:50.260123 Identifying ourselves as friends 19:28:50.260619 Response sent (57 bytes) and written to log/3/server.response 19:28:50.260709 special request received, no persistency 19:28:50.260766 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 366 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind366 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind366 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/4/valgrind365 ../src/curl -q --output log/4/curl365.out --include --trace-ascii log/4/trace365 --trace-config all --trace-time http://127.0.0.1:43669/365 > log/4/stdout365 2> log/4/stderr365 365: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 365 === Start of file commands.log ../libtool --mode=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/valgrind365 ../src/curl -q --output log/4/curl365.out --include --trace-ascii log/4/trace365 --trace-config all --trace-time http://127.0.0.1:43669/365 > log/4/stdout365 2> log/4/stderr365 === End of file commands.log === Start of file http_server.log 19:28:51.229272 ====> Client connect 19:28:51.229497 accept_connection 3 returned 4 19:28:51.229616 accept_connection 3 returned 0 19:28:51.230116 Read 93 bytes 19:28:51.230350 Process 93 bytes request 19:28:51.230467 Got request: GET /verifiedserver HTTP/1.1 19:28:51.230557 Are-we-friendly question received 19:28:51.230750 Wrote request (93 bytes) input to log/4/server.input 19:28:51.230922 Identifying ourselves as friends 19:28:51.231311 Response sent (57 bytes) and written to log/4/server.response 19:28:51.231400 special request received, no persistency 19:28:51.231470 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 365 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind365 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind365 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/1/valgrind367 ../src/curl -q --output log/1/curl367.out --include --trace-ascii log/1/trace367 --trace-config all --trace-time http://:example@127.0.0.1:41477/367 > log/1/stdout367 2> log/1/stderr367 367: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind367 ../src/curl -q --output log/1/curl367.out --include --trace-ascii log/1/trace367 --trace-config all --trace-time http://:example@127.0.0.1:41477/367 > log/1/stdout367 2> log/1/stderr367 === End of file commands.log === Start of file http_server.log 19:28:51.657360 ====> Client connect 19:28:51.657583 accept_connection 3 returned 4 19:28:51.657696 accept_connection 3 returned 0 19:28:51.657793 Read 93 bytes 19:28:51.657856 Process 93 bytes request 19:28:51.657921 Got request: GET /verifiedserver HTTP/1.1 19:28:51.657978 Are-we-friendly question received 19:28:51.658120 Wrote request (93 bytes) input to log/1/server.input 19:28:51.658318 Identifying ourselves as friends 19:28:51.658830 Response sent (57 bytes) and written to log/1/server.response 19:28:51.658917 special request received, no persistency 19:28:51.658977 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log *CMD (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/4/valgrind370 ../src/curl -q --output log/4/curl370.out --include --trace-ascii log/4/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/4/nowhere/etag370 > log/4/stdout370 2> log/4/stderr370 CMD (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/2/valgrind368 ../src/curl -q --output log/2/curl368.out --include --trace-ascii log/2/trace368 --trace-config all --trace-time http://127.0.0.1:39599/368 -r 4 > log/2/stdout368 2> log/2/stderr368 Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 367 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind367 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind367 * starts no server 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/4/valgrind370 ../src/curl -q --output log/4/curl370.out --include --trace-ascii log/4/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/4/nowhere/etag370 > log/4/stdout370 2> log/4/stderr370 curl returned 1, when expecting 26 370: exit FAILED == Contents of files in the log/4/ 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/4/valgrind370 ../src/curl -q --output log/4/curl370.out --include --trace-ascii log/4/trace370 --trace-config all --trace-time http://127.0.0.1:47/370 --etag-save log/4/nowhere/etag370 > log/4/stdout370 2> log/4/stderr370 === End of file commands.log === Start of file server.cmd Testnum 370 === End of file server.cmd === Start of file valgrind370 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind370 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/2/valgrind368 ../src/curl -q --output log/2/curl368.out --include --trace-ascii log/2/trace368 --trace-config all --trace-time http://127.0.0.1:39599/368 -r 4 > log/2/stdout368 2> log/2/stderr368 368: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind368 ../src/curl -q --output log/2/curl368.out --include --trace-ascii log/2/trace368 --trace-config all --trace-time http://127.0.0.1:39599/368 -r 4 > log/2/stdout368 2> log/2/stderr368 === End of file commands.log === Start of file http_server.log 19:28:51.811002 ====> Client connect 19:28:51.811236 accept_connection 3 returned 4 19:28:51.811370 accept_connection 3 returned 0 19:28:51.811870 Read 93 bytes 19:28:51.811989 Process 93 bytes request 19:28:51.812070 Got request: GET /verifiedserver HTTP/1.1 19:28:51.812137 Are-we-friendly question received 19:28:51.812332 Wrote request (93 bytes) input to log/2/server.input 19:28:51.812518 Identifying ourselves as friends 19:28:51.812949 Response sent (57 bytes) and written to log/2/server.response 19:28:51.813046 special request received, no persistency 19:28:51.813102 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 368 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind368 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrCMD (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/valgrind369 ../src/curl -q --output log/3/curl369.out --include --trace-ascii log/3/trace369 --trace-config all --trace-time http://127.0.0.1:37525/369 --etag-save log/3/nowhere/etag369 --next http://127.0.0.1:37525/369 --include --output log/3/curl369.out > log/3/stdout369 2> log/3/stderr369 CMD (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/1/valgrind371 ../src/curl -q --output log/1/curl371.out --include --trace-ascii log/1/trace371 --trace-config all --trace-time http://127.0.0.1:41477/371 -o log/1/dump -o log/1/dump2 --no-progress-meter > log/1/stdout371 2> log/1/stderr371 ind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind369 ../src/curl -q --output log/3/curl369.out --include --trace-ascii log/3/trace369 --trace-config all --trace-time http://127.0.0.1:37525/369 --etag-save log/3/nowhere/etag369 --next http://127.0.0.1:37525/369 --include --output log/3/curl369.out > log/3/stdout369 2> log/3/stderr369 369: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind369 ../src/curl -q --output log/3/curl369.out --include --trace-ascii log/3/trace369 --trace-config all --trace-time http://127.0.0.1:37525/369 --etag-save log/3/nowhere/etag369 --next http://127.0.0.1:37525/369 --include --output log/3/curl369.out > log/3/stdout369 2> log/3/stderr369 === End of file commands.log === Start of file http_server.log 19:28:50.897809 ====> Client connect 19:28:50.898019 accept_connection 3 returned 4 19:28:50.898132 accept_connection 3 returned 0 19:28:50.898296 Read 93 bytes 19:28:50.898395 Process 93 bytes request 19:28:50.898474 Got request: GET /verifiedserver HTTP/1.1 19:28:50.898548 Are-we-friendly question received 19:28:50.898707 Wrote request (93 bytes) input to log/3/server.input 19:28:50.898879 Identifying ourselves as friends 19:28:50.899437 Response sent (57 bytes) and written to log/3/server.response 19:28:50.899528 special request received, no persistency 19:28:50.899590 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 369 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind369 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind369 CMD (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/4/valgrind372 ../src/curl -q --output log/4/curl372.out --include --trace-ascii log/4/trace372 --trace-config all --trace-time --raw http://127.0.0.1:43669/binary-zero-in-data-section/372 > log/4/stdout372 2> log/4/stderr372 CMD (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/2/valgrind373 ../src/curl -q --output log/2/curl373.out --include --trace-ascii log/2/trace373 --trace-config all --trace-time http://127.0.0.1:39599/chunked-transfer-encoding/373 > log/2/stdout373 2> log/2/stderr373 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/1/valgrind371 ../src/curl -q --output log/1/curl371.out --include --trace-ascii log/1/trace371 --trace-config all --trace-time http://127.0.0.1:41477/371 -o log/1/dump -o log/1/dump2 --no-progress-meter > log/1/stdout371 2> log/1/stderr371 371: stderr FAILED: --- log/1/check-expected 2025-05-23 19:28:52.417479186 +0000 +++ log/1/check-generated 2025-05-23 19:28:52.417479186 +0000 @@ -1 +0,0 @@ -Warning: Got more output options than URLs[CR][LF] == Contents of files in the log/1/ dir after test 371 === Start of file check-expected Warning: Got more output options than URLs[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind371 ../src/curl -q --output log/1/curl371.out --include --trace-ascii log/1/trace371 --trace-config all --trace-time http://127.0.0.1:41477/371 -o log/1/dump -o log/1/dump2 --no-progress-meter > log/1/stdout371 2> log/1/stderr371 === End of file commands.log === Start of file http_server.log 19:28:52.320705 ====> Client connect 19:28:52.320971 accept_connection 3 returned 4 19:28:52.321105 accept_connection 3 returned 0 19:28:52.321218 Read 93 bytes 19:28:52.321303 Process 93 bytes request 19:28:52.321385 Got request: GET /verifiedserver HTTP/1.1 19:28:52.321452 Are-we-friendly question received 19:28:52.321628 Wrote request (93 bytes) input to log/1/server.input 19:28:52.321788 Identifying ourselves as friends 19:28:52.322525 Response sent (57 bytes) and written to log/1/server.response 19:28:52.322638 special request received, no persistency 19:28:52.322703 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 371 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind371 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind372 ../src/curl -q --output log/4/curl372.out --include --trace-ascii log/4/trace372 --trace-config all --trace-time --raw http://127.0.0.1:43669/binary-zero-in-data-section/372 > log/4/stdout372 2> log/4/stderr372 372: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind372 ../src/curl -q --output log/4/curl372.out --include --trace-ascii log/4/trace372 --trace-config all --trace-time --raw http://127.0.0.1:43669/binary-zero-in-data-section/372 > log/4/stdout372 2> log/4/stderr372 === End of file commands.log === Start of file http_server.log 19:28:52.404204 ====> Client connect 19:28:52.404444 accept_connection 3 returned 4 19:28:52.404569 accept_connection 3 returned 0 19:28:52.404679 Read 93 bytes 19:28:52.404767 Process 93 bytes request 19:28:52.404857 Got request: GET /verifiedserver HTTP/1.1 19:28:52.404933 Are-we-friendly question received 19:28:52.405106 Wrote request (93 bytes) input to log/4/server.input 19:28:52.405255 Identifying ourselves as friends 19:28:52.405779 Response sent (57 bytes) and written to log/4/server.response 19:28:52.405871 special request received, no persistency 19:28:52.405927 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 372 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind372 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind372 test 0373...[Chunked transfer encoding - Multiple valid chunks with binary zeros.] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leakCMD (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/valgrind374 ../src/curl -q --output log/3/curl374.out --include --trace-ascii log/3/trace374 --trace-config all --trace-time http://127.0.0.1:37525/gif/374 > log/3/stdout374 2> log/3/stderr374 CMD (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/4/valgrind378 ../src/curl -q --output log/4/curl378.out --include --trace-ascii log/4/trace378 --trace-config all --trace-time -T log/4/378 -d input http://never-accessed > log/4/stdout378 2> log/4/stderr378 -check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind373 ../src/curl -q --output log/2/curl373.out --include --trace-ascii log/2/trace373 --trace-config all --trace-time http://127.0.0.1:39599/chunked-transfer-encoding/373 > log/2/stdout373 2> log/2/stderr373 373: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind373 ../src/curl -q --output log/2/curl373.out --include --trace-ascii log/2/trace373 --trace-config all --trace-time http://127.0.0.1:39599/chunked-transfer-encoding/373 > log/2/stdout373 2> log/2/stderr373 === End of file commands.log === Start of file http_server.log 19:28:52.423119 ====> Client connect 19:28:52.423325 accept_connection 3 returned 4 19:28:52.423428 accept_connection 3 returned 0 19:28:52.423857 Read 93 bytes 19:28:52.423968 Process 93 bytes request 19:28:52.424043 Got request: GET /verifiedserver HTTP/1.1 19:28:52.424101 Are-we-friendly question received 19:28:52.424256 Wrote request (93 bytes) input to log/2/server.input 19:28:52.424398 Identifying ourselves as friends 19:28:52.424778 Response sent (57 bytes) and written to log/2/server.response 19:28:52.424885 special request received, no persistency 19:28:52.424955 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 373 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind373 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind373 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/3/valgrind374 ../src/curl -q --output log/3/curl374.out --include --trace-ascii log/3/trace374 --trace-config all --trace-time http://127.0.0.1:37525/gif/374 > log/3/stdout374 2> log/3/stderr374 374: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind374 ../src/curl -q --output log/3/curl374.out --include --trace-ascii log/3/trace374 --trace-config all --trace-time http://127.0.0.1:37525/gif/374 > log/3/stdout374 2> log/3/stderr374 === End of file commands.log === Start of file http_server.log 19:28:51.590580 ====> Client connect 19:28:51.590810 accept_connection 3 returned 4 19:28:51.590931 accept_connection 3 returned 0 19:28:51.591033 Read 93 bytes 19:28:51.591111 Process 93 bytes request 19:28:51.591187 Got request: GET /verifiedserver HTTP/1.1 19:28:51.591253 Are-we-friendly question received 19:28:51.591415 Wrote request (93 bytes) input to log/3/server.input 19:28:51.591553 Identifying ourselves as friends 19:28:51.592068 Response sent (57 bytes) and written to log/3/server.response 19:28:51.592164 special request received, no persistency 19:28:51.592225 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 374 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind374 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind374 CMD (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/1/valgrind376 ../src/curl -q --include --trace-ascii log/1/trace376 --trace-config all --trace-time http://127.0.0.1:41477/376 -o log/1/save-376 --remove-on-error > log/1/stdout376 2> log/1/stderr376 CMD (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/2/valgrind379 ../src/curl -q --include --trace-ascii log/2/trace379 --trace-config all --trace-time http://127.0.0.1:39599/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 * starts no server 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/4/valgrind378 ../src/curl -q --output log/4/curl378.out --include --trace-ascii log/4/trace378 --trace-config all --trace-time -T log/4/378 -d input http://never-accessed > log/4/stdout378 2> log/4/stderr378 378: stderr FAILED: --- log/4/check-expected 2025-05-23 19:28:52.997493745 +0000 +++ log/4/check-generated 2025-05-23 19:28:52.997493745 +0000 @@ -1,2 +0,0 @@ -Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF] -Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF] == Contents of files in the log/4/ dir after test 378 === Start of file check-expected Warning: You can only select one HTTP request method! You asked for both PUT [CR][LF] Warning: (-T, --upload-file) and POST (-d, --data).[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind378 ../src/curl -q --output log/4/curl378.out --include --trace-ascii log/4/trace378 --trace-config all --trace-time -T log/4/378 -d input http://never-accessed > log/4/stdout378 2> log/4/stderr378 === End of file commands.log === Start of file server.cmd Testnum 378 === End of file server.cmd === Start of file valgrind378 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind378 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/1/valgrind376 ../src/curl -q --include --trace-ascii log/1/trace376 --trace-config all --trace-time http://127.0.0.1:41477/376 -o log/1/save-376 --remove-on-error > log/1/stdout376 2> log/1/stderr376 376: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind376 ../src/curl -q --include --trace-ascii log/1/trace376 --trace-config all --trace-time http://127.0.0.1:41477/376 -o log/1/save-376 --remove-on-error > log/1/stdout376 2> log/1/stderr376 === End of file commands.log === Start of file http_server.log 19:28:53.041699 ====> Client connect 19:28:53.042296 accept_connection 3 returned 4 19:28:53.042485 accept_connection 3 returned 0 19:28:53.043080 Read 93 bytes 19:28:53.043204 Process 93 bytes request 19:28:53.043280 Got request: GET /verifiedserver HTTP/1.1 19:28:53.043338 Are-we-friendly question received 19:28:53.043481 Wrote request (93 bytes) input to log/1/server.input 19:28:53.043618 Identifying ourselves as friends 19:28:53.044026 Response sent (57 bytes) and written to log/1/server.response 19:28:53.044126 special request received, no persistency 19:28:53.044185 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 376 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind376 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind376 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-config all --trace-time http://127.0.0.1:39599/379 -o log/2/save --remove-on-error --no-clobber > log/2/stdout379 2> log/2/stderr379 379: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:39599/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 19:28:53.065251 ====> Client connect 19:28:53.065462 accept_connection 3 returned 4 19:28:53.065568 accept_connection 3 returned 0 19:28:53.066049 Read 93 bytes 19:28:53.066231 Process 93 bytes request 19:28:53.066326 Got request: GET /verifiedserver HTTP/1.1 19:28:53.066391 Are-we-friendCMD (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/valgrind380 ../src/curl -q --output log/3/curl380.out --include --trace-ascii log/3/trace380 --trace-config all --trace-time --netrc --netrc-file log/3/netrc380 ftp://mary@127.0.0.1:43789/ > log/3/stdout380 2> log/3/stderr380 ly question received 19:28:53.066548 Wrote request (93 bytes) input to log/2/server.input 19:28:53.066698 Identifying ourselves as friends 19:28:53.067121 Response sent (57 bytes) and written to log/2/server.response 19:28:53.067209 special request received, no persistency 19:28:53.067264 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind379 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind379 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/3/valgrind380 ../src/curl -q --output log/3/curl380.out --include --trace-ascii log/3/trace380 --trace-config all --trace-time --netrc --netrc-file log/3/netrc380 ftp://mary@127.0.0.1:43789/ > log/3/stdout380 2> log/3/stderr380 380: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind380 ../src/curl -q --output log/3/curl380.out --include --trace-ascii log/3/trace380 --trace-config all --trace-time --netrc --netrc-file log/3/netrc380 ftp://mary@127.0.0.1:43789/ > log/3/stdout380 2> log/3/stderr380 === End of file commands.log === Start of file ftp_server.log 19:28:52.734777 ====> Client connect 19:28:52.735567 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:52.740465 < "USER anonymous" 19:28:52.740847 > "331 We are happy you popped in![CR][LF]" 19:28:52.742898 < "PASS ftp@example.com" 19:28:52.743241 > "230 Welcome you silly person[CR][LF]" 19:28:52.744916 < "PWD" 19:28:52.745226 > "257 "/" is current directory[CR][LF]" 19:28:52.746889 < "EPSV" 19:28:52.747137 ====> Passive DATA channel requested by client 19:28:52.747295 DATA sockfilt for passive data channel starting... 19:28:52.758241 DATA sockfilt for passive data channel started (pid 125590) 19:28:52.759026 DATA sockfilt for passive data channel listens on port 36083 19:28:52.759412 > "229 Entering Passive Mode (|||36083|)[LF]" 19:28:52.759603 Client has been notified that DATA conn will be accepted on port 36083 19:28:52.761717 Client connects to port 36083 19:28:52.762016 ====> Client established passive DATA connection on port 36083 19:28:52.762639 < "TYPE I" 19:28:52.762982 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:52.764511 < "SIZE verifiedserver" 19:28:52.764844 > "213 18[CR][LF]" 19:28:52.766582 < "RETR verifiedserver" 19:28:52.766963 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:52.767459 =====> Closing passive DATA connection... 19:28:52.767664 Server disconnects passive DATA connection 19:28:52.769641 Server disconnected passive DATA connection 19:28:52.769884 DATA sockfilt for passive data channel quits (pid 125590) 19:28:52.771455 DATA sockfilt for passive data channel quit (pid 125590) 19:28:52.771709 =====> Closed passive DATA connection 19:28:52.772384 > "226 File transfer complete[CR][LF]" 19:28:52.811713 < "QUIT" 19:28:52.812147 > "221 bye bye baby[CR][LF]" 19:28:52.818789 MAIN sockfilt said DISC 19:28:52.819082 ====> Client disconnected 19:28:52.819440 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:53.199172 ====> Client connect 19:28:53.200678 Received DATA (on stdin) 19:28:53.200817 > 160 bytes data, server => client 19:28:53.200905 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:53.200977 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:53.201036 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:53.204265 < 16 bytes data, client => server 19:28:53.204442 'USER anonymous\r\n' 19:28:53.205963 Received DATA (on stdin) 19:28:53.206102 > 33 bytes data, server => client 19:28:53.206241 '331 We are happy you popped in!\r\n' 19:28:53.206850 < 22 bytes data, client => server 19:28:53.206985 'PASS ftp@example.com\r\n' 19:28:53.208402 Received DATA (on stdin) 19:28:53.208528 > 30 bytes data, server => client 19:28:53.208607 '230 Welcome you silly person\r\n' 19:28:53.209065 < 5 bytes data, client => server 19:28:53.209188 'PWD\r\n' 19:28:53.210318 Received DATA (on stdin) 19:28:53.210447 > 30 bytes data, server => client 19:28:53.210522 '257 "/" is current directory\r\n' 19:28:53.211034 < 6 bytes data, client => server 19:28:53.211163 'EPSV\r\n' 19:28:53.224634 Received DATA (on stdin) 19:28:53.224767 > 38 bytes data, server => client 19:28:53.224850 '229 Entering Passive Mode (|||36083|)\n' 19:28:53.225857 < 8 bytes data, client => server 19:28:53.226001 'TYPE I\r\n' 19:28:53.228018 Received DATA (on stdin) 19:28:53.228135 > 33 bytes data, server => client 19:28:53.228208 '200 I modify TYPE as you wanted\r\n' 19:28:53.228652 < 21 bytes data, client => server 19:28:53.228781 'SIZE verifiedserver\r\n' 19:28:53.229888 Received DATA (on stdin) 19:28:53.230027 > 8 bytes data, server => client 19:28:53.230141 '213 18\r\n' 19:28:53.230688 < 21 bytes data, client => server 19:28:53.230825 'RETR verifiedserver\r\n' 19:28:53.232652 Received DATA (on stdin) 19:28:53.232768 > 29 bytes data, server => client 19:28:53.232848 '150 Binary junk (18 bytes).\r\n' 19:28:53.236708 Received DATA (on stdin) 19:28:53.236823 > 28 bytes data, server => client 19:28:53.236959 '226 File transfer complete\r\n' 19:28:53.275404 < 6 bytes data, client => server 19:28:53.275693 'QUIT\r\n' 19:28:53.276922 Received DATA (on stdin) 19:28:53.277081 > 18 bytes data, server => client 19:28:53.277186 '221 bye bye baby\r\n' 19:28:53.283186 ====> Client disconnect 19:28:53.283877 Received ACKD (on stdin) === End of file ftp_sockctrl.log === 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/1/valgrind383 ../src/curl -q --output log/1/curl383.out --include --trace-ascii log/1/trace383 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/383 > log/1/stdout383 2> log/1/stderr383 CMD (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/4/valgrind381 ../src/curl -q --output log/4/curl381.out --include --trace-ascii log/4/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc381 ftp://mary:drfrank@127.0.0.1:40809/ > log/4/stdout381 2> log/4/stderr381 tart of file ftp_sockdata.log 19:28:52.219786 Running IPv4 version 19:28:52.220244 Listening on port 36083 19:28:52.220494 Wrote pid 125590 to log/3/server/ftp_sockdata.pid 19:28:52.222777 Received PING (on stdin) 19:28:52.223370 Received PORT (on stdin) 19:28:52.226144 ====> Client connect 19:28:52.233313 Received DATA (on stdin) 19:28:52.233461 > 18 bytes data, server => client 19:28:52.233529 'WE ROOLZ: 109394\r\n' 19:28:52.234035 Received DISC (on stdin) 19:28:52.234842 ====> Client forcibly disconnected 19:28:52.235149 Received QUIT (on stdin) 19:28:52.235275 quits 19:28:52.235563 ============> 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 valgrind380 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind380 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-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/383 > log/1/stdout383 2> log/1/stderr383 383: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/383 > log/1/stdout383 2> log/1/stderr383 === End of file commands.log === Start of file http_server.log 19:28:53.666982 ====> Client connect 19:28:53.667223 accept_connection 3 returned 4 19:28:53.667345 accept_connection 3 returned 0 19:28:53.667795 Read 93 bytes 19:28:53.667917 Process 93 bytes request 19:28:53.667994 Got request: GET /verifiedserver HTTP/1.1 19:28:53.668094 Are-we-friendly question received 19:28:53.668264 Wrote request (93 bytes) input to log/1/server.input 19:28:53.668411 Identifying ourselves as friends 19:28:53.668784 Response sent (57 bytes) and written to log/1/server.response 19:28:53.668861 special request received, no persistency 19:28:53.668914 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 383 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind383 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind383 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/4/valgrind381 ../src/curl -q --output log/4/curl381.out --include --trace-ascii log/4/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc381 ftp://mary:drfrank@127.0.0.1:40809/ > log/4/stdout381 2> log/4/stderr381 381: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind381 ../src/curl -q --output log/4/curl381.out --include --trace-ascii log/4/trace381 --trace-config all --trace-time --netrc-optional --netrc-file log/4/netrc381 ftp://mary:drfrank@127.0.0.1:40809/ > log/4/stdout381 2> log/4/stderr381 === End of file commands.log === Start of file ftp_server.log 19:28:53.134164 ====> Client connect 19:28:53.134948 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:53.137138 < "USER anonymous" 19:28:53.137527 > "331 We are happy you popped in![CR][LF]" 19:28:53.139067 < "PASS ftp@example.com" 19:28:53.139356 > "230 Welcome you silly person[CR][LF]" 19:28:53.140839 < "PWD" 19:28:53.141162 > "257 "/" is current directory[CR][LF]" 19:28:53.142980 < "EPSV" 19:28:53.143209 ====> Passive DATA channel requested by client 19:28:53.143342 DATA sockfilt for passive data channel starting... 19:28:53.152499 DATA sockfilt for passive data channel started (pid 125737) 19:28:53.CMD (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/2/valgrind384 ../src/curl -q --output log/2/curl384.out --include --trace-ascii log/2/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:39599/384 -H "Accept: foobar/*" log/2/stdout384 2> log/2/stderr384 153280 DATA sockfilt for passive data channel listens on port 45391 19:28:53.153708 > "229 Entering Passive Mode (|||45391|)[LF]" 19:28:53.153897 Client has been notified that DATA conn will be accepted on port 45391 19:28:53.155657 Client connects to port 45391 19:28:53.155904 ====> Client established passive DATA connection on port 45391 19:28:53.156423 < "TYPE I" 19:28:53.156697 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:53.158160 < "SIZE verifiedserver" 19:28:53.158509 > "213 18[CR][LF]" 19:28:53.161326 < "RETR verifiedserver" 19:28:53.161778 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:53.162295 =====> Closing passive DATA connection... 19:28:53.162479 Server disconnects passive DATA connection 19:28:53.164520 Server disconnected passive DATA connection 19:28:53.164764 DATA sockfilt for passive data channel quits (pid 125737) 19:28:53.166082 DATA sockfilt for passive data channel quit (pid 125737) 19:28:53.166320 =====> Closed passive DATA connection 19:28:53.166570 > "226 File transfer complete[CR][LF]" 19:28:53.206729 < "QUIT" 19:28:53.207103 > "221 bye bye baby[CR][LF]" 19:28:53.208545 MAIN sockfilt said DISC 19:28:53.208931 ====> Client disconnected 19:28:53.209263 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:52.598528 ====> Client connect 19:28:52.600045 Received DATA (on stdin) 19:28:52.600187 > 160 bytes data, server => client 19:28:52.600294 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:52.600386 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:52.600481 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:52.601006 < 16 bytes data, client => server 19:28:52.601162 'USER anonymous\r\n' 19:28:52.602571 Received DATA (on stdin) 19:28:52.602705 > 33 bytes data, server => client 19:28:52.602793 '331 We are happy you popped in!\r\n' 19:28:52.603214 < 22 bytes data, client => server 19:28:52.603340 'PASS ftp@example.com\r\n' 19:28:52.604382 Received DATA (on stdin) 19:28:52.604496 > 30 bytes data, server => client 19:28:52.604567 '230 Welcome you silly person\r\n' 19:28:52.604955 < 5 bytes data, client => server 19:28:52.605084 'PWD\r\n' 19:28:52.606148 Received DATA (on stdin) 19:28:52.606397 > 30 bytes data, server => client 19:28:52.606497 '257 "/" is current directory\r\n' 19:28:52.606943 < 6 bytes data, client => server 19:28:52.607064 'EPSV\r\n' 19:28:52.618905 Received DATA (on stdin) 19:28:52.619042 > 38 bytes data, server => client 19:28:52.619157 '229 Entering Passive Mode (|||45391|)\n' 19:28:52.620145 < 8 bytes data, client => server 19:28:52.620271 'TYPE I\r\n' 19:28:52.621655 Received DATA (on stdin) 19:28:52.621760 > 33 bytes data, server => client 19:28:52.621826 '200 I modify TYPE as you wanted\r\n' 19:28:52.622302 < 21 bytes data, client => server 19:28:52.622432 'SIZE verifiedserver\r\n' 19:28:52.623516 Received DATA (on stdin) 19:28:52.623647 > 8 bytes data, server => client 19:28:52.623730 '213 18\r\n' 19:28:52.625036 < 21 bytes data, client => server 19:28:52.625168 'RETR verifiedserver\r\n' 19:28:52.627436 Received DATA (on stdin) 19:28:52.627545 > 29 bytes data, server => client 19:28:52.627628 '150 Binary junk (18 bytes).\r\n' 19:28:52.631346 Received DATA (on stdin) 19:28:52.631489 > 28 bytes data, server => client 19:28:52.631571 '226 File transfer complete\r\n' 19:28:52.670841 < 6 bytes data, client => server 19:28:52.671063 'QUIT\r\n' 19:28:52.671875 Received DATA (on stdin) 19:28:52.672014 > 18 bytes data, server => client 19:28:52.672108 '221 bye bye baby\r\n' 19:28:52.672483 ====> Client disconnect 19:28:52.674307 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:53.616185 Running IPv4 version 19:28:53.616593 Listening on port 45391 19:28:53.616902 Wrote pid 125737 to log/4/server/ftp_sockdata.pid 19:28:53.617028 Received PING (on stdin) 19:28:53.617625 Received PORT (on stdin) 19:28:53.620178 ====> Client connect 19:28:53.627883 Received DATA (on stdin) 19:28:53.628036 > 18 bytes data, server => client 19:28:53.628127 'WE ROOLZ: 109451\r\n' 19:28:53.628371 Received DISC (on stdin) 19:28:53.628520 ====> Client forcibly disconnected 19:28:53.629716 Received QUIT (on stdin) 19:28:53.629817 quits 19:28:53.630097 ============> 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 valgrind381 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind384 ../src/curl -q --output log/2/curl384.out --include --trace-ascii log/2/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:39599/384 -H "Accept: foobar/*" log/2/stdout384 2> log/2/stderr384 384: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind384 ../src/curl -q --output log/2/curl384.out --include --trace-ascii log/2/trace384 --trace-config all --trace-time --json @- http://127.0.0.1:39599/384 -H "Accept: foobar/*" log/2/stdout384 2> log/2/stderr384 === End of file commands.log === Start of file http_server.log 19:28:53.735669 ====> Client connect 19:28:53.735890 accept_connection 3 returned 4 19:28:53.735997 accept_connection 3 returned 0 19:28:53.736483 Read 93 bytes 19:28:53.736623 Process 93 bytes request 19:28:53.736705 Got request: GET /verifiedserver HTTP/1.1 19:28:53.736768 Are-we-friendly question received 19:28:53.736923 Wrote request (93 bytes) input to log/2/server.input 19:28:53.737073 Identifying ourselves as friends 19:28:53.737465 Response sent (57 bytes) and written to log/2/server.response 19:28:53.737559 special request received, no persistency 19:28:53.737618 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HCMD (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/valgrind385 ../src/curl -q --output log/3/curl385.out --include --trace-ascii log/3/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:37525/385 -H "Content-Type: drinks/hot" > log/3/stdout385 2> log/3/stderr385 CMD (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/1/valgrind386 ../src/curl -q --output log/1/curl386.out --include --trace-ascii log/1/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/386 --next http://127.0.0.1:41477/3860002 > log/1/stdout386 2> log/1/stderr386 TTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 384 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file stdin-for-384 { "drink": "coffe" } === End of file stdin-for-384 === Start of file valgrind384 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind384 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/3/valgrind385 ../src/curl -q --output log/3/curl385.out --include --trace-ascii log/3/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:37525/385 -H "Content-Type: drinks/hot" > log/3/stdout385 2> log/3/stderr385 385: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind385 ../src/curl -q --output log/3/curl385.out --include --trace-ascii log/3/trace385 --trace-config all --trace-time --json '{ "drink": "coffe",' --json ' "crunch": "cookie" }' http://127.0.0.1:37525/385 -H "Content-Type: drinks/hot" > log/3/stdout385 2> log/3/stderr385 === End of file commands.log === Start of file http_server.log 19:28:53.050500 ====> Client connect 19:28:53.050739 accept_connection 3 returned 4 19:28:53.050875 accept_connection 3 returned 0 19:28:53.050993 Read 93 bytes 19:28:53.051067 Process 93 bytes request 19:28:53.051144 Got request: GET /verifiedserver HTTP/1.1 19:28:53.051209 Are-we-friendly question received 19:28:53.051376 Wrote request (93 bytes) input to log/3/server.input 19:28:53.051519 Identifying ourselves as friends 19:28:53.052047 Response sent (57 bytes) and written to log/3/server.response 19:28:53.052152 special request received, no persistency 19:28:53.052207 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 385 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind385 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind386 ../src/curl -q --output log/1/curl386.out --include --trace-ascii log/1/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/386 --next http://127.0.0.1:41477/3860002 > log/1/stdout386 2> log/1/stderr386 386: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind386 ../src/curl -q --output log/1/curl386.out --include --trace-ascii log/1/trace386 --trace-config all --trace-time --json '{ "drink": "coffe" }' http://127.0.0.1:41477/386 --next http://127.0.0.1:41477/3860002 > log/1/stdout386 2> log/1/stderr386 === End of file commands.log === Start of file http_server.log 19:28:54.325389 ====> Client connect 19:28:54.325603 accept_connection 3 returned 4 19:28:54.325715 accept_connection 3 returned 0 19:28:54.325818 Read 93 bytes 19:28:54.325889 Process 93 bytes request 19:28:54.325970 Got request: GET /verifiedserver HTTP/1.1 19:28:54.326037 Are-we-friendly question received 19:28:54.326298 Wrote request (93 bytes) input to log/1/server.input 19:28:54.326513 Identifying ourselves as friends 19:28:54.327071 Response sent (57 bytes) and written to log/1/server.response 19:28:54.327165 special request received, no persistency 19:28:54.327223 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === CMD (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/4/valgrind387 ../src/curl -q --output log/4/curl387.out --include --trace-ascii log/4/trace387 --trace-config all --trace-time http://127.0.0.1:43669/387 -sS --tr-encoding > log/4/stdout387 2> log/4/stderr387 Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 386 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind386 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind386 CMD (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/2/valgrind388 ../src/curl -q --include --trace-ascii log/2/trace388 --trace-config all --trace-time http://127.0.0.1:39599/3880001 -u testuser:testpass --digest http://127.0.0.1:39599/3880002 > log/2/stdout388 2> log/2/stderr388 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/4/valgrind387 ../src/curl -q --output log/4/curl387.out --include --trace-ascii log/4/trace387 --trace-config all --trace-time http://127.0.0.1:43669/387 -sS --tr-encoding > log/4/stdout387 2> log/4/stderr387 387: stderr FAILED: --- log/4/check-expected 2025-05-23 19:28:54.457530396 +0000 +++ log/4/check-generated 2025-05-23 19:28:54.453530295 +0000 @@ -1 +0,0 @@ -curl: (61) Reject response due to more than 5 content encodings[CR][LF] == Contents of files in the log/4/ dir after test 387 === Start of file check-expected curl: (61) Reject response due to more than 5 content encodings[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind387 ../src/curl -q --output log/4/curl387.out --include --trace-ascii log/4/trace387 --trace-config all --trace-time http://127.0.0.1:43669/387 -sS --tr-encoding > log/4/stdout387 2> log/4/stderr387 === End of file commands.log === Start of file http_server.log 19:28:54.352846 ====> Client connect 19:28:54.353081 accept_connection 3 returned 4 19:28:54.353214 accept_connection 3 returned 0 19:28:54.353710 Read 93 bytes 19:28:54.353833 Process 93 bytes request 19:28:54.353908 Got request: GET /verifiedserver HTTP/1.1 19:28:54.353975 Are-we-friendly question received 19:28:54.354264 Wrote request (93 bytes) input to log/4/server.input 19:28:54.354465 Identifying ourselves as friends 19:28:54.354900 Response sent (57 bytes) and written to log/4/server.response 19:28:54.355005 special request received, no persistency 19:28:54.355061 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 387 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind387 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind387 CMD (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/valgrind389 ../src/curl -q --output log/3/curl389.out --include --trace-ascii log/3/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:37525/389 > log/3/stdout389 2> log/3/stderr389 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-config all --trace-time http://127.0.0.1:39599/3880001 -u testuser:testpass --digest http://127.0.0.1:39599/3880002 > log/2/stdout388 2> log/2/stderr388 388: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:54.597533910 +0000 +++ log/2/check-generated 2025-05-23 19:28:54.597533910 +0000 @@ -1,30 +0,0 @@ -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 23[CR][LF] -[CR][LF] -This IS the real page![LF] -HTTP/1.1 401 Authorization Required swsclose[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 26[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 30[CR][LF] -[CR][LF] -This IS the second real page![LF] == Contents of files in the log/2/ dir after test 388 === Start of file check-expected HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 23[CR][LF] [CR][LF] This IS the real page![LF] HTTP/1.1 401 Authorization Required swsclose[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604145"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 401 Authorization re-negotiation please swsbounce[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] WWW-Authenticate: Digest realm="testrealm", algorithm=MD5, nonce="999999", stale=true, qop="crazy, auth"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 26[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Server: Apache/1.3.27 (Darwin) PHP/4.1.2[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 30[CR][LF] [CR][LF] This IS the second real page![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time http://127.0.0.1:39599/3880001 -u testuser:testpass --digest http://127.0.0.1:39599/3880002 > log/2/stdout388 2> log/2/stderr388 === End of file commands.log === Start of file http_server.log 19:28:54.385722 ====> Client connect 19:28:54.385942 accept_connection 3 returned 4 19:28:54.386051 accept_connection 3 returned 0 19:28:54.386248 Read 93 bytes 19:28:54.386349 Process 93 bytes request 19:28:54.386425 Got request: GET /verifiedserver HTTP/1.1 19:28:54.386488 Are-we-friendly question received 19:28:54.386670 Wrote request (93 bytes) input to log/2/server.input 19:28:54.386848 Identifying ourselves as friends 19:28:54.387342 Response sent (57 bytes) and written to log/2/server.response 19:28:54.387429 special request received, no persistency 19:28:54.387480 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 388 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind388 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind388 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/3/valgrind389 ../src/curl -q --output log/3/curl389.out --include --trace-ascii log/3/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:37525/389 > log/3/stdout389 2> log/3/stderr389 389: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind389 ../src/curl -q --output log/3/curl389.out --include --trace-ascii log/3/trace389 --trace-config all --trace-time -4 http://curlmachine.localhost:37525/389 > log/3/stdout389 2> log/3/stderr389 === End of file commands.log === Start of file http_server.log 19:28:53.719702 ====> Client connect 19:28:53.719935 accept_connection 3 returned 4 19:28:53.720059 accept_connection 3 returned 0 19:28:53.720193 Read 93 bytes 19:28:53.720337 Process 93 bytes request 19:28:53.720489 Got request: GET /verifiedserver HTTP/1.1 19:28:53.720609 Are-we-friendly question received 19:28:53.720845 Wrote request (93 bytes) input to log/3/server.input 19:28:53.721027 Identifying ourselves as friends 19:28:53.721614 Response sent (57 bytes) and written to log/3/server.response 19:28:53.721714 special request received, no persistency 1CMD (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/4/valgrind391 ../src/curl -q --output log/4/curl391.out --include --trace-ascii log/4/trace391 --trace-config all --trace-time http://127.0.0.1:43669/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 CMD (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/2/valgrind392 ../src/curl -q --output log/2/curl392.out --include --trace-ascii log/2/trace392 --trace-config all --trace-time -4 http://localhost:39599/392 -b none http://localhost:39599/392 > log/2/stdout392 2> log/2/stderr392 9:28:53.721773 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 389 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind389 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:43669/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 391: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/../../391 --path-as-is -L > log/4/stdout391 2> log/4/stderr391 === End of file commands.log === Start of file http_server.log 19:28:55.063771 ====> Client connect 19:28:55.064007 accept_connection 3 returned 4 19:28:55.064140 accept_connection 3 returned 0 19:28:55.064255 Read 93 bytes 19:28:55.064336 Process 93 bytes request 19:28:55.064415 Got request: GET /verifiedserver HTTP/1.1 19:28:55.064477 Are-we-friendly question received 19:28:55.064642 Wrote request (93 bytes) input to log/4/server.input 19:28:55.064808 Identifying ourselves as friends 19:28:55.065373 Response sent (57 bytes) and written to log/4/server.response 19:28:55.065473 special request received, no persistency 19:28:55.065540 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 391 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind391 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind391 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/2/valgrind392 ../src/curl -q --output log/2/curl392.out --include --trace-ascii log/2/trace392 --trace-config all --trace-time -4 http://localhost:39599/392 -b none http://localhost:39599/392 > log/2/stdout392 2> log/2/stderr392 392: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind392 ../src/curl -q --output log/2/curl392.out --include --trace-ascii log/2/trace392 --trace-config all --trace-time -4 http://localhost:39599/392 -b none http://localhost:39599/392 > log/2/stdout392 2> log/2/stderr392 === End of file commands.log === Start of file http_server.log 19:28:55.182918 ====> Client connect 19:28:55.183134 accept_connection 3 returned 4 19:28:55.183240 accept_connection 3 returned 0 19:28:55.183326 Read 93 bytes 19:28:55.183386 Process 93 bytes request 19:28:55.183446 Got request: GET /verifiedserver HTTP/1.1 19:28:55.183501 Are-we-friendly question received 19:28:55.183631 Wrote request (93 bytes) input to log/2/server.input 19:28:55.183742 Identifying ourselves as friends 19:28:55.184181 Response sent (57 bytes) and written to log/2/server.response 19:28:55.184261 special request received, no persistency 19:28:55.184311 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-LengthCMD (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/1/valgrind390 ../src/curl -q --include --trace-ascii log/1/trace390 --trace-config all --trace-time http://127.0.0.1:41477/390 file://localhost/build/curl/src/build-curl/tests/log/1/test390.txt ftp://127.0.0.1:39333/3900002 --parallel -o log/1/390.a -o log/1/390.b -o log/1/390.c > log/1/stdout390 2> log/1/stderr390 CMD (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/valgrind393 ../src/curl -q --output log/3/curl393.out --include --trace-ascii log/3/trace393 --trace-config all --trace-time http://127.0.0.1:37525/393 --max-filesize 2000000 > log/3/stdout393 2> log/3/stderr393 : 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 392 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind392 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind392 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/1/valgrind390 ../src/curl -q --include --trace-ascii log/1/trace390 --trace-config all --trace-time http://127.0.0.1:41477/390 file://localhost/build/curl/src/build-curl/tests/log/1/test390.txt ftp://127.0.0.1:39333/3900002 --parallel -o log/1/390.a -o log/1/390.b -o log/1/390.c > log/1/stdout390 2> log/1/stderr390 curl returned 1, when expecting 0 390: exit FAILED == Contents of files in the log/1/ dir after test 390 === Start of file commands.log ../libtool --mode=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/valgrind390 ../src/curl -q --include --trace-ascii log/1/trace390 --trace-config all --trace-time http://127.0.0.1:41477/390 file://localhost/build/curl/src/build-curl/tests/log/1/test390.txt ftp://127.0.0.1:39333/3900002 --parallel -o log/1/390.a -o log/1/390.b -o log/1/390.c > log/1/stdout390 2> log/1/stderr390 === End of file commands.log === Start of file ftp_server.log 19:28:54.653585 ====> Client connect 19:28:54.654414 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:54.655576 < "USER anonymous" 19:28:54.655871 > "331 We are happy you popped in![CR][LF]" 19:28:54.656864 < "PASS ftp@example.com" 19:28:54.657142 > "230 Welcome you silly person[CR][LF]" 19:28:54.658273 < "PWD" 19:28:54.658559 > "257 "/" is current directory[CR][LF]" 19:28:54.659599 < "EPSV" 19:28:54.659807 ====> Passive DATA channel requested by client 19:28:54.659937 DATA sockfilt for passive data channel starting... 19:28:54.668513 DATA sockfilt for passive data channel started (pid 126312) 19:28:54.669246 DATA sockfilt for passive data channel listens on port 35263 19:28:54.669798 > "229 Entering Passive Mode (|||35263|)[LF]" 19:28:54.678064 Client has been notified that DATA conn will be accepted on port 35263 19:28:54.679253 Client connects to port 35263 19:28:54.679487 ====> Client established passive DATA connection on port 35263 19:28:54.680007 < "TYPE I" 19:28:54.680299 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:54.681340 < "SIZE verifiedserver" 19:28:54.681830 > "213 18[CR][LF]" 19:28:54.682923 < "RETR verifiedserver" 19:28:54.683272 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:54.683758 =====> Closing passive DATA connection... 19:28:54.683946 Server disconnects passive DATA connection 19:28:54.684392 Server disconnected passive DATA connection 19:28:54.684610 DATA sockfilt for passive data channel quits (pid 126312) 19:28:54.685881 DATA sockfilt for passive data channel quit (pid 126312) 19:28:54.686122 =====> Closed passive DATA connection 19:28:54.686351 > "226 File transfer complete[CR][LF]" 19:28:54.738402 < "QUIT" 19:28:54.738677 > "221 bye bye baby[CR][LF]" 19:28:54.744241 MAIN sockfilt said DISC 19:28:54.744516 ====> Client disconnected 19:28:54.744840 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:55.117878 ====> Client connect 19:28:55.119121 Received DATA (on stdin) 19:28:55.119261 > 160 bytes data, server => client 19:28:55.119346 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:55.119417 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:55.119478 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:55.119870 < 16 bytes data, client => server 19:28:55.119993 'USER anonymous\r\n' 19:28:55.120636 Received DATA (on stdin) 19:28:55.120738 > 33 bytes data, server => client 19:28:55.120816 '331 We are happy you popped in!\r\n' 19:28:55.121186 < 22 bytes data, client => server 19:28:55.121309 'PASS ftp@example.com\r\n' 19:28:55.121868 Received DATA (on stdin) 19:28:55.121972 > 30 bytes data, server => client 19:28:55.122041 '230 Welcome you silly person\r\n' 19:28:55.122581 < 5 bytes data, client => server 19:28:55.122703 'PWD\r\n' 19:28:55.123279 Received DATA (on stdin) 19:28:55.123376 > 30 bytes data, server => client 19:28:55.123443 '257 "/" is current directory\r\n' 19:28:55.123910 < 6 bytes data, client => server 19:28:55.124036 'EPSV\r\n' 19:28:55.134511 Received DATA (on stdin) 19:28:55.142783 > 38 bytes data, server => client 19:28:55.142931 '229 Entering Passive Mode (|||35263|)\n' 19:28:55.143945 < 8 bytes data, client => server 19:28:55.144056 'TYPE I\r\n' 19:28:55.145018 Received DATA (on stdin) 19:28:55.145137 > 33 bytes data, server => client 19:28:55.145213 '200 I modify TYPE as you wanted\r\n' 19:28:55.145666 < 21 bytes data, client => server 19:28:55.145801 'SIZE verifiedserver\r\n' 19:28:55.146558 Received DATA (on stdin) 19:28:55.146698 > 8 bytes data, server => client 19:28:55.146772 '213 18\r\n' 19:28:55.147219 < 21 bytes data, client => server 19:28:55.147349 'RETR verifiedserver\r\n' 19:28:55.147993 Received DATA (on stdin) 19:28:55.148112 > 29 bytes data, server => client 19:28:55.148184 '150 Binary junk (18 bytes).\r\n' 19:28:55.151086 Received DATA (on stdin) 19:28:55.151218 > 28 bytes data, server => client 19:28:55.151296 '226 File transfer complete\r\n' 19:28:55.202496 < 6 bytes data, client => server 19:28:55.202660 'QUIT\r\n' 19:28:55.203412 Received DATA (on stdin) 19:28:55.203524 > 18 bytes data, server => client 19:28:55.203600 '221 bye bye baby\r\n' 19:28:55.208369 ====> Client disconnect 19:28:55.209271 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:54.132293 Running IPv4 version 19:28:54.132661 Listening on port 35263 19:28:54.132908 Wrote pid 126312 to log/1/server/ftp_sockdata.pid 19:28:54.133021 Received PING (on stdin) 19:28:54.133562 Received PORT (on stdin) 19:28:54.143703 ====> Client connect 19:28:54.148265 Received DATA (on stdin) 19:28:54.148411 > 18 bytes data, server => client 19:28:54.148512 'WE ROOLZ: 109414\r\n' 19:28:54.148896 Received DISC (on stdin) 19:28:54.149050 ====> Client forcibly disconnected 19:28:54.149551 Received QUIT (on stdin) 19:28:54.149682 quits 19:28:54.149980 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http_server.log 19:28:55.032173 ====> Client connect 19:28:55.032412 accept_connection 3 returned 4 19:28:55.032533 accept_connection 3 returned 0 19:28:55.032666 Read 93 bytes 19:28:55.032776 Process 93 bytes request 19:28:55.032880 Got request: GET /verifiedserver HTTP/1.1 19:28:55.032976 Are-we-friendly question received 19:28:55.033207 Wrote request (93 bytes) input to log/1/server.input 19:28:55.033431 Identifying ourselves as friends 19:28:55.034099 Response sent (57 bytes) and written to log/1/server.response 19:28:55.034351 special request received, no persistency 19:28:55.034481 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 390 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === 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 valgrind390 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind390 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/3/valgrind393 ../src/curl -q --output log/3/curl393.out --include --trace-ascii log/3/trace393 --trace-config all --trace-time http://127.0.0.1:37525/393 --max-filesize 2000000 > log/3/stdout393 2> log/3/stderr393 393: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind393 ../src/curl -q --output log/3/curl393.out --include --trace-ascii log/3/trace393 --trace-config all --trace-time http://127.0.0.1:37525/393 --max-filesize 2000000 > log/3/stdout393 2> log/3/stderr393 === End of file commands.log === Start of file http_server.log 19:28:54.327765 ====> Client connect 19:28:54.327976 accept_connection 3 returned 4 19:28:54.328083 accept_connection 3 returned 0 19:28:54.328762 Read 93 bytes 19:28:54.328902 Process 93 bytes request 19:28:54.328989 Got request: GET /verifiedserver HTTP/1.1 19:28:54.329055 Are-we-friendly question received 19:28:54.329246 Wrote request (93 bytes) input to log/3/server.input 19:28:54.329430 Identifying ourselves as friends 19:28:54.329888 Response sent (57 bytes) and written to log/3/server.response 19:28:54.329988 special request received, no persistency 19:28:54.330049 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 393 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind393 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valCMD (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/4/valgrind394 ../src/curl -q --output log/4/curl394.out --include --trace-ascii log/4/trace394 --trace-config all --trace-time http://127.0.0.1:43669/394 > log/4/stdout394 2> log/4/stderr394 CMD (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/2/valgrind395 ../src/curl -q --output log/2/curl395.out --include --trace-ascii log/2/trace395 --trace-config all --trace-time http://127.0.0.1:39599/395 > log/2/stdout395 2> log/2/stderr395 CMD (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/1/valgrind396 ../src/curl -q --output log/1/curl396.out --include --trace-ascii log/1/trace396 --trace-config all --trace-time http://127.0.0.1:41477/396 --compressed > log/1/stdout396 2> log/1/stderr396 grind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind394 ../src/curl -q --output log/4/curl394.out --include --trace-ascii log/4/trace394 --trace-config all --trace-time http://127.0.0.1:43669/394 > log/4/stdout394 2> log/4/stderr394 394: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind394 ../src/curl -q --output log/4/curl394.out --include --trace-ascii log/4/trace394 --trace-config all --trace-time http://127.0.0.1:43669/394 > log/4/stdout394 2> log/4/stderr394 === End of file commands.log === Start of file http_server.log 19:28:55.740220 ====> Client connect 19:28:55.740860 accept_connection 3 returned 4 19:28:55.741040 accept_connection 3 returned 0 19:28:55.741714 Read 93 bytes 19:28:55.741845 Process 93 bytes request 19:28:55.741924 Got request: GET /verifiedserver HTTP/1.1 19:28:55.741985 Are-we-friendly question received 19:28:55.742206 Wrote request (93 bytes) input to log/4/server.input 19:28:55.742383 Identifying ourselves as friends 19:28:55.742791 Response sent (57 bytes) and written to log/4/server.response 19:28:55.742891 special request received, no persistency 19:28:55.742954 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 394 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind394 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind394 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/2/valgrind395 ../src/curl -q --output log/2/curl395.out --include --trace-ascii log/2/trace395 --trace-config all --trace-time http://127.0.0.1:39599/395 > log/2/stdout395 2> log/2/stderr395 395: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind395 ../src/curl -q --output log/2/curl395.out --include --trace-ascii log/2/trace395 --trace-config all --trace-time http://127.0.0.1:39599/395 > log/2/stdout395 2> log/2/stderr395 === End of file commands.log === Start of file http_server.log 19:28:55.870274 ====> Client connect 19:28:55.870516 accept_connection 3 returned 4 19:28:55.870623 accept_connection 3 returned 0 19:28:55.870725 Read 93 bytes 19:28:55.870799 Process 93 bytes request 19:28:55.870884 Got request: GET /verifiedserver HTTP/1.1 19:28:55.870951 Are-we-friendly question received 19:28:55.871114 Wrote request (93 bytes) input to log/2/server.input 19:28:55.871302 Identifying ourselves as friends 19:28:55.871938 Response sent (57 bytes) and written to log/2/server.response 19:28:55.872028 special request received, no persistency 19:28:55.872082 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 395 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind395 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind395 test 0396...[HTTP GET zstd compressed content] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppreCMD (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/valgrind397 ../src/curl -q --output log/3/curl397.out --include --trace-ascii log/3/trace397 --trace-config all --trace-time http://127.0.0.1:37525/397 --compressed > log/3/stdout397 2> log/3/stderr397 CMD (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/4/valgrind398 ../src/curl -q --output log/4/curl398.out --include --trace-ascii log/4/trace398 --trace-config all --trace-time http://127.0.0.1:43669/398 > log/4/stdout398 2> log/4/stderr398 ssions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind396 ../src/curl -q --output log/1/curl396.out --include --trace-ascii log/1/trace396 --trace-config all --trace-time http://127.0.0.1:41477/396 --compressed > log/1/stdout396 2> log/1/stderr396 396: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind396 ../src/curl -q --output log/1/curl396.out --include --trace-ascii log/1/trace396 --trace-config all --trace-time http://127.0.0.1:41477/396 --compressed > log/1/stdout396 2> log/1/stderr396 === End of file commands.log === Start of file http_server.log 19:28:55.966354 ====> Client connect 19:28:55.966593 accept_connection 3 returned 4 19:28:55.966725 accept_connection 3 returned 0 19:28:55.966842 Read 93 bytes 19:28:55.966941 Process 93 bytes request 19:28:55.967097 Got request: GET /verifiedserver HTTP/1.1 19:28:55.967243 Are-we-friendly question received 19:28:55.967429 Wrote request (93 bytes) input to log/1/server.input 19:28:55.967606 Identifying ourselves as friends 19:28:55.968133 Response sent (57 bytes) and written to log/1/server.response 19:28:55.968225 special request received, no persistency 19:28:55.968277 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 396 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind396 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind396 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/3/valgrind397 ../src/curl -q --output log/3/curl397.out --include --trace-ascii log/3/trace397 --trace-config all --trace-time http://127.0.0.1:37525/397 --compressed > log/3/stdout397 2> log/3/stderr397 397: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind397 ../src/curl -q --output log/3/curl397.out --include --trace-ascii log/3/trace397 --trace-config all --trace-time http://127.0.0.1:37525/397 --compressed > log/3/stdout397 2> log/3/stderr397 === End of file commands.log === Start of file http_server.log 19:28:54.974211 ====> Client connect 19:28:54.974468 accept_connection 3 returned 4 19:28:54.974591 accept_connection 3 returned 0 19:28:54.974702 Read 93 bytes 19:28:54.974782 Process 93 bytes request 19:28:54.974858 Got request: GET /verifiedserver HTTP/1.1 19:28:54.974924 Are-we-friendly question received 19:28:54.975100 Wrote request (93 bytes) input to log/3/server.input 19:28:54.975253 Identifying ourselves as friends 19:28:54.975879 Response sent (57 bytes) and written to log/3/server.response 19:28:54.975974 special request received, no persistency 19:28:54.976036 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 397 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind397 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind397 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-config all --trace-time http://127.0.0.1:43669/398 > log/4/stdout398 2> log/4/stderr398 398: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents ofCMD (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/2/valgrind399 ../src/curl -q --output log/2/curl399.out --include --trace-ascii log/2/trace399 --trace-config all --trace-time -K log/2/input%TESTNUM > log/2/stdout399 2> log/2/stderr399 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-config all --trace-time http://127.0.0.1:43669/398 > log/4/stdout398 2> log/4/stderr398 === End of file commands.log === Start of file http_server.log 19:28:56.413362 ====> Client connect 19:28:56.413578 accept_connection 3 returned 4 19:28:56.413687 accept_connection 3 returned 0 19:28:56.413796 Read 93 bytes 19:28:56.413923 Process 93 bytes request 19:28:56.414035 Got request: GET /verifiedserver HTTP/1.1 19:28:56.414163 Are-we-friendly question received 19:28:56.414361 Wrote request (93 bytes) input to log/4/server.input 19:28:56.414530 Identifying ourselves as friends 19:28:56.415090 Response sent (57 bytes) and written to log/4/server.response 19:28:56.415187 special request received, no persistency 19:28:56.415244 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 398 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind398 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind399 ../src/curl -q --output log/2/curl399.out --include --trace-ascii log/2/trace399 --trace-config all --trace-time -K log/2/input%TESTNUM > log/2/stdout399 2> log/2/stderr399 curl returned 1, when expecting 3 399: exit FAILED == Contents of files in the log/2/ 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/2/valgrind399 ../src/curl -q --output log/2/curl399.out --include --trace-ascii log/2/trace399 --trace-config all --trace-time -K log/2/input%TESTNUM > log/2/stdout399 2> log/2/stderr399 === End of file commands.log === Start of file http_server.log 19:28:56.563170 ====> Client connect 19:28:56.563384 accept_connection 3 returned 4 19:28:56.563492 accept_connection 3 returned 0 19:28:56.563969 Read 93 bytes 19:28:56.564104 Process 93 bytes request 19:28:56.564184 Got request: GET /verifiedserver HTTP/1.1 19:28:56.564250 Are-we-friendly question received 19:28:56.564434 Wrote request (93 bytes) input to log/2/server.input 19:28:56.564606 Identifying ourselves as friends 19:28:56.565503 Response sent (57 bytes) and written to log/2/server.response 19:28:56.565736 special request received, no persistency 19:28:56.565920 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file input%TESTNUM url = http://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (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/1/valgrind402 ../src/curl -q --output log/1/curl402.out --include --trace-ascii log/1/trace402 --trace-config all --trace-time -k --ftp-ssl-reqd ftp://127.0.0.1:39333/402 > log/1/stdout402 2> log/1/stderr402 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/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: 103116 === End of file server.response === Start of file valgrind399 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind399 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/1/valgrind402 ../src/curl -q --output log/1/curl402.out --include --trace-ascii log/1/trace402 --trace-config all --trace-time -k --ftp-ssl-reqd ftp://127.0.0.1:39333/402 > log/1/stdout402 2> log/1/stderr402 402: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind402 ../src/curl -q --output log/1/curl402.out --include --trace-ascii log/1/trace402 --trace-config all --trace-time -k --ftp-ssl-reqd ftp://127.0.0.1:39333/402 > log/1/stdout402 2> log/1/stderr402 === End of file commands.log === Start of file ftp_server.log 19:28:56.283451 ====> CliCMD (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/valgrind405 ../src/curl -q --output log/3/curl405.out --include --trace-ascii log/3/trace405 --trace-config all --trace-time -m 5 -k ftps://127.0.0.1:43789/path/to/file/405 > log/3/stdout405 2> log/3/stderr405 ent connect 19:28:56.284401 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:56.285866 < "USER anonymous" 19:28:56.286188 > "331 We are happy you popped in![CR][LF]" 19:28:56.287265 < "PASS ftp@example.com" 19:28:56.287678 > "230 Welcome you silly person[CR][LF]" 19:28:56.288680 < "PWD" 19:28:56.289013 > "257 "/" is current directory[CR][LF]" 19:28:56.290127 < "EPSV" 19:28:56.290417 ====> Passive DATA channel requested by client 19:28:56.290578 DATA sockfilt for passive data channel starting... 19:28:56.298807 DATA sockfilt for passive data channel started (pid 126895) 19:28:56.299753 DATA sockfilt for passive data channel listens on port 45653 19:28:56.300141 > "229 Entering Passive Mode (|||45653|)[LF]" 19:28:56.300352 Client has been notified that DATA conn will be accepted on port 45653 19:28:56.301731 Client connects to port 45653 19:28:56.302006 ====> Client established passive DATA connection on port 45653 19:28:56.302599 < "TYPE I" 19:28:56.302880 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:56.303905 < "SIZE verifiedserver" 19:28:56.304232 > "213 18[CR][LF]" 19:28:56.305216 < "RETR verifiedserver" 19:28:56.305639 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:56.306152 =====> Closing passive DATA connection... 19:28:56.306353 Server disconnects passive DATA connection 19:28:56.308011 Server disconnected passive DATA connection 19:28:56.308315 DATA sockfilt for passive data channel quits (pid 126895) 19:28:56.309536 DATA sockfilt for passive data channel quit (pid 126895) 19:28:56.309768 =====> Closed passive DATA connection 19:28:56.309995 > "226 File transfer complete[CR][LF]" 19:28:56.350625 < "QUIT" 19:28:56.350960 > "221 bye bye baby[CR][LF]" 19:28:56.352960 MAIN sockfilt said DISC 19:28:56.353237 ====> Client disconnected 19:28:56.353681 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:56.747695 ====> Client connect 19:28:56.749070 Received DATA (on stdin) 19:28:56.749200 > 160 bytes data, server => client 19:28:56.749276 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:56.749350 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:56.749411 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:56.749867 < 16 bytes data, client => server 19:28:56.749998 'USER anonymous\r\n' 19:28:56.750874 Received DATA (on stdin) 19:28:56.750995 > 33 bytes data, server => client 19:28:56.751071 '331 We are happy you popped in!\r\n' 19:28:56.751489 < 22 bytes data, client => server 19:28:56.751618 'PASS ftp@example.com\r\n' 19:28:56.752361 Received DATA (on stdin) 19:28:56.752478 > 30 bytes data, server => client 19:28:56.752558 '230 Welcome you silly person\r\n' 19:28:56.752968 < 5 bytes data, client => server 19:28:56.753089 'PWD\r\n' 19:28:56.753695 Received DATA (on stdin) 19:28:56.753807 > 30 bytes data, server => client 19:28:56.753883 '257 "/" is current directory\r\n' 19:28:56.754374 < 6 bytes data, client => server 19:28:56.754513 'EPSV\r\n' 19:28:56.764823 Received DATA (on stdin) 19:28:56.764989 > 38 bytes data, server => client 19:28:56.765080 '229 Entering Passive Mode (|||45653|)\n' 19:28:56.766073 < 8 bytes data, client => server 19:28:56.766307 'TYPE I\r\n' 19:28:56.767571 Received DATA (on stdin) 19:28:56.767679 > 33 bytes data, server => client 19:28:56.767754 '200 I modify TYPE as you wanted\r\n' 19:28:56.768184 < 21 bytes data, client => server 19:28:56.768305 'SIZE verifiedserver\r\n' 19:28:56.768922 Received DATA (on stdin) 19:28:56.769041 > 8 bytes data, server => client 19:28:56.769112 '213 18\r\n' 19:28:56.769506 < 21 bytes data, client => server 19:28:56.769636 'RETR verifiedserver\r\n' 19:28:56.770315 Received DATA (on stdin) 19:28:56.770457 > 29 bytes data, server => client 19:28:56.770532 '150 Binary junk (18 bytes).\r\n' 19:28:56.774691 Received DATA (on stdin) 19:28:56.774832 > 28 bytes data, server => client 19:28:56.774921 '226 File transfer complete\r\n' 19:28:56.814718 < 6 bytes data, client => server 19:28:56.814848 'QUIT\r\n' 19:28:56.815647 Received DATA (on stdin) 19:28:56.815756 > 18 bytes data, server => client 19:28:56.815829 '221 bye bye baby\r\n' 19:28:56.816180 ====> Client disconnect 19:28:56.817944 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:56.762265 Running IPv4 version 19:28:56.762747 Listening on port 45653 19:28:56.763067 Wrote pid 126895 to log/1/server/ftp_sockdata.pid 19:28:56.763204 Received PING (on stdin) 19:28:56.763854 Received PORT (on stdin) 19:28:56.766184 ====> Client connect 19:28:56.770607 Received DATA (on stdin) 19:28:56.770757 > 18 bytes data, server => client 19:28:56.770844 'WE ROOLZ: 109414\r\n' 19:28:56.771472 Received DISC (on stdin) 19:28:56.771634 ====> Client forcibly disconnected 19:28:56.773273 Received QUIT (on stdin) 19:28:56.773381 quits 19:28:56.773645 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 402 === End of file server.cmd === Start of file valgrind402 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind402 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/3/valgrind405 ../src/curl -q --output log/3/curl405.out --include --trace-ascii log/3/trace405 --trace-config all --trace-time -m 5 -k ftps://127.0.0.1:43789/path/to/file/405 > log/3/stdout405 2> log/3/stderr405 curl returned 1, when expecting 35,28 405: exit FAILED == Contents of files in the log/3/ 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/3/valgrind405 ../src/curl -q --output log/3/curl405.out --include --trace-ascii log/3/trace405 --trace-config all --trace-time -m 5 -k ftps://127.0.0.1:43789/path/to/file/405 > log/3/stdout405 2> log/3/stderr405 === End of file commands.log === Start of file ftp_server.log 19:28:56.329641 ====> Client connect 19:28:56.330392 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28:56.332106 < "USER anonymous" 19:28:56.332622 > "331 We are happy you popped in![CR][LF]" 19:28:56.333801 < "PASS ftp@example.com" 19:28:56.334087 > "230 Welcome you silly person[CR][LF]" 19:28:56.335124 < "PWD" 19:28:56.335417 > "CMD (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/4/valgrind411 ../src/curl -q --output log/4/curl411.out --include --trace-ascii log/4/trace411 --trace-config all --trace-time -K log/4/missing http://localhost > log/4/stdout411 2> log/4/stderr411 257 "/" is current directory[CR][LF]" 19:28:56.336454 < "EPSV" 19:28:56.336651 ====> Passive DATA channel requested by client 19:28:56.336769 DATA sockfilt for passive data channel starting... 19:28:56.344375 DATA sockfilt for passive data channel started (pid 126919) 19:28:56.345066 DATA sockfilt for passive data channel listens on port 36621 19:28:56.345398 > "229 Entering Passive Mode (|||36621|)[LF]" 19:28:56.345686 Client has been notified that DATA conn will be accepted on port 36621 19:28:56.347055 Client connects to port 36621 19:28:56.347343 ====> Client established passive DATA connection on port 36621 19:28:56.348078 < "TYPE I" 19:28:56.348410 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:56.349596 < "SIZE verifiedserver" 19:28:56.349995 > "213 18[CR][LF]" 19:28:56.351583 < "RETR verifiedserver" 19:28:56.351975 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:56.352472 =====> Closing passive DATA connection... 19:28:56.352673 Server disconnects passive DATA connection 19:28:56.354804 Server disconnected passive DATA connection 19:28:56.355088 DATA sockfilt for passive data channel quits (pid 126919) 19:28:56.358826 DATA sockfilt for passive data channel quit (pid 126919) 19:28:56.359088 =====> Closed passive DATA connection 19:28:56.359820 > "226 File transfer complete[CR][LF]" 19:28:56.399710 < "QUIT" 19:28:56.400022 > "221 bye bye baby[CR][LF]" 19:28:56.401264 MAIN sockfilt said DISC 19:28:56.401597 ====> Client disconnected 19:28:56.401943 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:56.793874 ====> Client connect 19:28:56.795057 Received DATA (on stdin) 19:28:56.795190 > 160 bytes data, server => client 19:28:56.795270 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:56.795346 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:56.795410 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:56.796034 < 16 bytes data, client => server 19:28:56.796186 'USER anonymous\r\n' 19:28:56.797296 Received DATA (on stdin) 19:28:56.797411 > 33 bytes data, server => client 19:28:56.797494 '331 We are happy you popped in!\r\n' 19:28:56.797919 < 22 bytes data, client => server 19:28:56.798037 'PASS ftp@example.com\r\n' 19:28:56.798764 Received DATA (on stdin) 19:28:56.798879 > 30 bytes data, server => client 19:28:56.798948 '230 Welcome you silly person\r\n' 19:28:56.799399 < 5 bytes data, client => server 19:28:56.799527 'PWD\r\n' 19:28:56.800096 Received DATA (on stdin) 19:28:56.800206 > 30 bytes data, server => client 19:28:56.800278 '257 "/" is current directory\r\n' 19:28:56.800740 < 6 bytes data, client => server 19:28:56.800862 'EPSV\r\n' 19:28:56.810074 Received DATA (on stdin) 19:28:56.810258 > 38 bytes data, server => client 19:28:56.810334 '229 Entering Passive Mode (|||36621|)\n' 19:28:56.811542 < 8 bytes data, client => server 19:28:56.811648 'TYPE I\r\n' 19:28:56.813084 Received DATA (on stdin) 19:28:56.813208 > 33 bytes data, server => client 19:28:56.813285 '200 I modify TYPE as you wanted\r\n' 19:28:56.813721 < 21 bytes data, client => server 19:28:56.813838 'SIZE verifiedserver\r\n' 19:28:56.814790 Received DATA (on stdin) 19:28:56.814895 > 8 bytes data, server => client 19:28:56.814965 '213 18\r\n' 19:28:56.815404 < 21 bytes data, client => server 19:28:56.815504 'RETR verifiedserver\r\n' 19:28:56.818742 Received DATA (on stdin) 19:28:56.818876 > 29 bytes data, server => client 19:28:56.818994 '150 Binary junk (18 bytes).\r\n' 19:28:56.824047 Received DATA (on stdin) 19:28:56.824181 > 28 bytes data, server => client 19:28:56.824316 '226 File transfer complete\r\n' 19:28:56.863728 < 6 bytes data, client => server 19:28:56.863891 'QUIT\r\n' 19:28:56.864959 Received DATA (on stdin) 19:28:56.865070 > 18 bytes data, server => client 19:28:56.865144 '221 bye bye baby\r\n' 19:28:56.865617 ====> Client disconnect 19:28:56.866859 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:56.808127 Running IPv4 version 19:28:56.808471 Listening on port 36621 19:28:56.808710 Wrote pid 126919 to log/3/server/ftp_sockdata.pid 19:28:56.808828 Received PING (on stdin) 19:28:56.809387 Received PORT (on stdin) 19:28:56.811459 ====> Client connect 19:28:56.816946 Received DATA (on stdin) 19:28:56.817101 > 18 bytes data, server => client 19:28:56.817192 'WE ROOLZ: 109394\r\n' 19:28:56.818891 Received DISC (on stdin) 19:28:56.819078 ====> Client forcibly disconnected 19:28:56.822253 Received QUIT (on stdin) 19:28:56.822412 quits 19:28:56.822764 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 405 === End of file server.cmd === Start of file valgrind405 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind405 CMD (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/2/valgrind415 ../src/curl -q --output log/2/curl415.out --include --trace-ascii log/2/trace415 --trace-config all --trace-time http://127.0.0.1:39599/415 > log/2/stdout415 2> log/2/stderr415 CMD (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/1/valgrind416 ../src/curl -q --output log/1/curl416.out --include --trace-ascii log/1/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:39333/416 > log/1/stdout416 2> log/1/stderr416 * starts no server 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/4/valgrind411 ../src/curl -q --output log/4/curl411.out --include --trace-ascii log/4/trace411 --trace-config all --trace-time -K log/4/missing http://localhost > log/4/stdout411 2> log/4/stderr411 411: stderr FAILED: --- log/4/check-expected 2025-05-23 19:28:57.061595764 +0000 +++ log/4/check-generated 2025-05-23 19:28:57.061595764 +0000 @@ -1,3 +0,0 @@ -curl: cannot read config from 'log/4/missing'[CR][LF] -curl: option -K: error encountered when reading a file[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/4/ dir after test 411 === Start of file check-expected curl: cannot read config from 'log/4/missing'[CR][LF] curl: option -K: error encountered when reading a file[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind411 ../src/curl -q --output log/4/curl411.out --include --trace-ascii log/4/trace411 --trace-config all --trace-time -K log/4/missing http://localhost > log/4/stdout411 2> log/4/stderr411 === End of file commands.log === Start of file server.cmd Testnum 411 === End of file server.cmd === Start of file valgrind411 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind411 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/2/valgrind415 ../src/curl -q --output log/2/curl415.out --include --trace-ascii log/2/trace415 --trace-config all --trace-time http://127.0.0.1:39599/415 > log/2/stdout415 2> log/2/stderr415 415: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind415 ../src/curl -q --output log/2/curl415.out --include --trace-ascii log/2/trace415 --trace-config all --trace-time http://127.0.0.1:39599/415 > log/2/stdout415 2> log/2/stderr415 === End of file commands.log === Start of file http_server.log 19:28:57.399928 ====> Client connect 19:28:57.400147 accept_connection 3 returned 4 19:28:57.400261 accept_connection 3 returned 0 19:28:57.400758 Read 93 bytes 19:28:57.400884 Process 93 bytes request 19:28:57.400963 Got request: GET /verifiedserver HTTP/1.1 19:28:57.401027 Are-we-friendly question received 19:28:57.401195 Wrote request (93 bytes) input to log/2/server.input 19:28:57.401344 Identifying ourselves as friends 19:28:57.401708 Response sent (57 bytes) and written to log/2/server.response 19:28:57.401798 special request received, no persistency 19:28:57.401863 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 415 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind415 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind415 test 0416...[FTP growing file 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/1/valgrind416 ../src/curl -q --output log/1/curl416.out --include --trace-ascii log/1/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:39333/416 > log/1/stdout416 2> log/1/stderr416 416: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind416 ../src/curl -q --output log/1/curl416.out --include --trace-ascii log/1/trace416 --trace-config all --trace-time --ignore-content-length ftp://127.0.0.1:39333/416 > log/1/stdout416 2> log/1/stderr416 === End of file commands.log === Start of file ftp_server.log 19:28:57.032446 ====> Client connect 19:28:57.033241 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:28CMD (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/valgrind418 ../src/curl -q --output log/3/curl418.out --include --trace-ascii log/3/trace418 --trace-config all --trace-time http://127.0.0.1:37525/418 -sS --tr-encoding > log/3/stdout418 2> log/3/stderr418 :57.034699 < "USER anonymous" 19:28:57.035003 > "331 We are happy you popped in![CR][LF]" 19:28:57.036181 < "PASS ftp@example.com" 19:28:57.036555 > "230 Welcome you silly person[CR][LF]" 19:28:57.037776 < "PWD" 19:28:57.038075 > "257 "/" is current directory[CR][LF]" 19:28:57.039122 < "EPSV" 19:28:57.039349 ====> Passive DATA channel requested by client 19:28:57.039495 DATA sockfilt for passive data channel starting... 19:28:57.047199 DATA sockfilt for passive data channel started (pid 127159) 19:28:57.047890 DATA sockfilt for passive data channel listens on port 34793 19:28:57.048213 > "229 Entering Passive Mode (|||34793|)[LF]" 19:28:57.048355 Client has been notified that DATA conn will be accepted on port 34793 19:28:57.049501 Client connects to port 34793 19:28:57.049760 ====> Client established passive DATA connection on port 34793 19:28:57.050208 < "TYPE I" 19:28:57.050434 > "200 I modify TYPE as you wanted[CR][LF]" 19:28:57.051369 < "SIZE verifiedserver" 19:28:57.051628 > "213 18[CR][LF]" 19:28:57.052551 < "RETR verifiedserver" 19:28:57.052827 > "150 Binary junk (18 bytes).[CR][LF]" 19:28:57.053261 =====> Closing passive DATA connection... 19:28:57.053581 Server disconnects passive DATA connection 19:28:57.054284 Server disconnected passive DATA connection 19:28:57.054488 DATA sockfilt for passive data channel quits (pid 127159) 19:28:57.055577 DATA sockfilt for passive data channel quit (pid 127159) 19:28:57.055792 =====> Closed passive DATA connection 19:28:57.055987 > "226 File transfer complete[CR][LF]" 19:28:57.098829 < "QUIT" 19:28:57.099237 > "221 bye bye baby[CR][LF]" 19:28:57.100149 MAIN sockfilt said DISC 19:28:57.100458 ====> Client disconnected 19:28:57.100827 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:28:57.496706 ====> Client connect 19:28:57.497898 Received DATA (on stdin) 19:28:57.498047 > 160 bytes data, server => client 19:28:57.498262 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:28:57.498344 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:28:57.498405 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:28:57.498813 < 16 bytes data, client => server 19:28:57.498946 'USER anonymous\r\n' 19:28:57.499676 Received DATA (on stdin) 19:28:57.499807 > 33 bytes data, server => client 19:28:57.499902 '331 We are happy you popped in!\r\n' 19:28:57.500392 < 22 bytes data, client => server 19:28:57.500541 'PASS ftp@example.com\r\n' 19:28:57.501239 Received DATA (on stdin) 19:28:57.501370 > 30 bytes data, server => client 19:28:57.501445 '230 Welcome you silly person\r\n' 19:28:57.501862 < 5 bytes data, client => server 19:28:57.501987 'PWD\r\n' 19:28:57.502753 Received DATA (on stdin) 19:28:57.502876 > 30 bytes data, server => client 19:28:57.502954 '257 "/" is current directory\r\n' 19:28:57.503370 < 6 bytes data, client => server 19:28:57.503500 'EPSV\r\n' 19:28:57.512876 Received DATA (on stdin) 19:28:57.512987 > 38 bytes data, server => client 19:28:57.513056 '229 Entering Passive Mode (|||34793|)\n' 19:28:57.513851 < 8 bytes data, client => server 19:28:57.513956 'TYPE I\r\n' 19:28:57.515094 Received DATA (on stdin) 19:28:57.515196 > 33 bytes data, server => client 19:28:57.515260 '200 I modify TYPE as you wanted\r\n' 19:28:57.515656 < 21 bytes data, client => server 19:28:57.515775 'SIZE verifiedserver\r\n' 19:28:57.516289 Received DATA (on stdin) 19:28:57.516370 > 8 bytes data, server => client 19:28:57.516440 '213 18\r\n' 19:28:57.516830 < 21 bytes data, client => server 19:28:57.516948 'RETR verifiedserver\r\n' 19:28:57.517490 Received DATA (on stdin) 19:28:57.517583 > 29 bytes data, server => client 19:28:57.517645 '150 Binary junk (18 bytes).\r\n' 19:28:57.520654 Received DATA (on stdin) 19:28:57.520753 > 28 bytes data, server => client 19:28:57.520820 '226 File transfer complete\r\n' 19:28:57.562825 < 6 bytes data, client => server 19:28:57.563059 'QUIT\r\n' 19:28:57.563886 Received DATA (on stdin) 19:28:57.564042 > 18 bytes data, server => client 19:28:57.564128 '221 bye bye baby\r\n' 19:28:57.564544 ====> Client disconnect 19:28:57.565141 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:28:57.510848 Running IPv4 version 19:28:57.511233 Listening on port 34793 19:28:57.511514 Wrote pid 127159 to log/1/server/ftp_sockdata.pid 19:28:57.511636 Received PING (on stdin) 19:28:57.512185 Received PORT (on stdin) 19:28:57.513901 ====> Client connect 19:28:57.517696 Received DATA (on stdin) 19:28:57.518015 > 18 bytes data, server => client 19:28:57.518247 'WE ROOLZ: 109414\r\n' 19:28:57.518733 Received DISC (on stdin) 19:28:57.518881 ====> Client forcibly disconnected 19:28:57.519316 Received QUIT (on stdin) 19:28:57.519410 quits 19:28:57.519667 ============> 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 valgrind416 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind416 CMD (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/4/valgrind419 ../src/curl -q --output log/4/curl419.out --include --trace-ascii log/4/trace419 --trace-config all --trace-time http://127.0.0.1:43669/419 -D loggg/save-here/fails > log/4/stdout419 2> log/4/stderr419 CMD (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/2/valgrind420 ../src/curl -q --output log/2/curl420.out --include --trace-ascii log/2/trace420 --trace-config all --trace-time http://127.0.0.1:39599/func_test/del_cookie -b log/2/cookie420 -c log/2/save420 > log/2/stdout420 2> log/2/stderr420 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/3/valgrind418 ../src/curl -q --output log/3/curl418.out --include --trace-ascii log/3/trace418 --trace-config all --trace-time http://127.0.0.1:37525/418 -sS --tr-encoding > log/3/stdout418 2> log/3/stderr418 418: stderr FAILED: --- log/3/check-expected 2025-05-23 19:28:57.673611127 +0000 +++ log/3/check-generated 2025-05-23 19:28:57.673611127 +0000 @@ -1 +0,0 @@ -curl: (61) Reject response due to more than 5 content encodings[CR][LF] == Contents of files in the log/3/ dir after test 418 === Start of file check-expected curl: (61) Reject response due to more than 5 content encodings[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind418 ../src/curl -q --output log/3/curl418.out --include --trace-ascii log/3/trace418 --trace-config all --trace-time http://127.0.0.1:37525/418 -sS --tr-encoding > log/3/stdout418 2> log/3/stderr418 === End of file commands.log === Start of file http_server.log 19:28:56.622022 ====> Client connect 19:28:56.622311 accept_connection 3 returned 4 19:28:56.622439 accept_connection 3 returned 0 19:28:56.622557 Read 93 bytes 19:28:56.622642 Process 93 bytes request 19:28:56.622736 Got request: GET /verifiedserver HTTP/1.1 19:28:56.622810 Are-we-friendly question received 19:28:56.622990 Wrote request (93 bytes) input to log/3/server.input 19:28:56.623164 Identifying ourselves as friends 19:28:56.623715 Response sent (57 bytes) and written to log/3/server.response 19:28:56.623818 special request received, no persistency 19:28:56.623892 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 418 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind418 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind418 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/4/valgrind419 ../src/curl -q --output log/4/curl419.out --include --trace-ascii log/4/trace419 --trace-config all --trace-time http://127.0.0.1:43669/419 -D loggg/save-here/fails > log/4/stdout419 2> log/4/stderr419 curl returned 1, when expecting 23 419: exit FAILED == Contents of files in the log/4/ 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/4/valgrind419 ../src/curl -q --output log/4/curl419.out --include --trace-ascii log/4/trace419 --trace-config all --trace-time http://127.0.0.1:43669/419 -D loggg/save-here/fails > log/4/stdout419 2> log/4/stderr419 === End of file commands.log === Start of file http_server.log 19:28:57.646418 ====> Client connect 19:28:57.646649 accept_connection 3 returned 4 19:28:57.646772 accept_connection 3 returned 0 19:28:57.646900 Read 93 bytes 19:28:57.646999 Process 93 bytes request 19:28:57.647077 Got request: GET /verifiedserver HTTP/1.1 19:28:57.647177 Are-we-friendly question received 19:28:57.647380 Wrote request (93 bytes) input to log/4/server.input 19:28:57.647602 Identifying ourselves as friends 19:28:57.648348 Response sent (57 bytes) and written to log/4/server.response 19:28:57.648446 special request received, no persistency 19:28:57.648500 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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: 103118 === End of file server.response === Start of file valgrind419 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind419 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/2CMD (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/valgrind422 ../src/curl -q --output log/3/curl422.out --include --trace-ascii log/3/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37525/422 > log/3/stdout422 2> log/3/stderr422 /valgrind420 ../src/curl -q --output log/2/curl420.out --include --trace-ascii log/2/trace420 --trace-config all --trace-time http://127.0.0.1:39599/func_test/del_cookie -b log/2/cookie420 -c log/2/save420 > log/2/stdout420 2> log/2/stderr420 420: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind420 ../src/curl -q --output log/2/curl420.out --include --trace-ascii log/2/trace420 --trace-config all --trace-time http://127.0.0.1:39599/func_test/del_cookie -b log/2/cookie420 -c log/2/save420 > log/2/stdout420 2> log/2/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 http_server.log 19:28:58.066223 ====> Client connect 19:28:58.066463 accept_connection 3 returned 4 19:28:58.066589 accept_connection 3 returned 0 19:28:58.066686 Read 93 bytes 19:28:58.066757 Process 93 bytes request 19:28:58.066829 Got request: GET /verifiedserver HTTP/1.1 19:28:58.066885 Are-we-friendly question received 19:28:58.067026 Wrote request (93 bytes) input to log/2/server.input 19:28:58.067159 Identifying ourselves as friends 19:28:58.067633 Response sent (57 bytes) and written to log/2/server.response 19:28:58.067725 special request received, no persistency 19:28:58.067783 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 420 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind420 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind420 CMD (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/1/valgrind421 ../src/curl -q --output log/1/curl421.out --include --trace-ascii log/1/trace421 --trace-config all --trace-time http://127.0.0.1:41477/421 -w '%{stderr}%{header_json}\n' -s > log/1/stdout421 2> log/1/stderr421 * starts no server 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/3/valgrind422 ../src/curl -q --output log/3/curl422.out --include --trace-ascii log/3/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37525/422 > log/3/stdout422 2> log/3/stderr422 422: stderr FAILED: --- log/3/check-expected 2025-05-23 19:28:58.249625586 +0000 +++ log/3/check-generated 2025-05-23 19:28:58.249625586 +0000 @@ -1,3 +0,0 @@ -curl: missing URL before --next[CR][LF] -curl: option --next: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/3/ dir after test 422 === Start of file check-expected curl: missing URL before --next[CR][LF] curl: option --next: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind422 ../src/curl -q --output log/3/curl422.out --include --trace-ascii log/3/trace422 --trace-config all --trace-time -O -I --next http://127.0.0.1:37525/422 > log/3/stdout422 2> log/3/stderr422 === End of file commands.log === Start of file server.cmd Testnum 422 === End of file server.cmd === Start of file valgrind422 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind422 CMD (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/4/valgrind423 ../src/curl -q --trace-ascii log/4/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:43669/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43669/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/4/stdout423 2> log/4/stderr423 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/1/valgrind421 ../src/curl -q --output log/1/curl421.out --include --trace-ascii log/1/trace421 --trace-config all --trace-time http://127.0.0.1:41477/421 -w '%{stderr}%{header_json}\n' -s > log/1/stdout421 2> log/1/stderr421 421: stderr FAILED: --- log/1/check-expected 2025-05-23 19:28:58.301626892 +0000 +++ log/1/check-generated 2025-05-23 19:28:58.301626892 +0000 @@ -1,19 +0,0 @@ -{"server":["nginx"],[CR][LF] -"date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF] -"content-type":["application/json"],[CR][LF] -"content-length":["6"],[CR][LF] -"vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF] -"access-control-allow-origin":["*"],[CR][LF] -"referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF] -"access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF] -"access-control-max-age":["1728000"],[CR][LF] -"access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF] -"access-control-expose-headers":[""],[CR][LF] -"etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF] -"cache-control":["max-age=0, private, must-revalidate"],[CR][LF] -"x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF] -"strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF] -"x-content-type-options":["nosniff"],[CR][LF] -"x-xss-protection":["1; mode=block"],[CR][LF] -"feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF] -}[CR][LF] == Contents of files in the log/1/ dir after test 421 === Start of file check-expected {"server":["nginx"],[CR][LF] "date":["Tue, 07 Mar 2023 15:14:41 GMT"],[CR][LF] "content-type":["application/json"],[CR][LF] "content-length":["6"],[CR][LF] "vary":["Accept-Encoding","Accept-Encoding","Accept"],[CR][LF] "access-control-allow-origin":["*"],[CR][LF] "referrer-policy":["strict-origin-when-cross-origin","strict-origin-when-cross-origin"],[CR][LF] "access-control-allow-methods":["GET, POST, PUT, DELETE, OPTIONS"],[CR][LF] "access-control-max-age":["1728000"],[CR][LF] "access-control-allow-headers":["Authorization, Content-Type, AuthorizationOauth, X-EARLY-ACCESS"],[CR][LF] "access-control-expose-headers":[""],[CR][LF] "etag":["W/\"2678f9ab2ba550d164e7cc014aefd31e\""],[CR][LF] "cache-control":["max-age=0, private, must-revalidate"],[CR][LF] "x-request-id":["375b343b3d2ecf9b442c0daf00fc4a9a"],[CR][LF] "strict-transport-security":["max-age=31536000; includeSubDomains"],[CR][LF] "x-content-type-options":["nosniff"],[CR][LF] "x-xss-protection":["1; mode=block"],[CR][LF] "feature-policy":["accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"][CR][LF] }[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind421 ../src/curl -q --output log/1/curl421.out --include --trace-ascii log/1/trace421 --trace-config all --trace-time http://127.0.0.1:41477/421 -w '%{stderr}%{header_json}\n' -s > log/1/stdout421 2> log/1/stderr421 === End of file commands.log === Start of file http_server.log 19:28:58.191454 ====> Client connect 19:28:58.191679 accept_connection 3 returned 4 19:28:58.191803 accept_connection 3 returned 0 19:28:58.191918 Read 93 bytes 19:28:58.191998 Process 93 bytes request 19:28:58.192074 Got request: GET /verifiedserver HTTP/1.1 19:28:58.192136 Are-we-friendly question received 19:28:58.192276 Wrote request (93 bytes) input to log/1/server.input 19:28:58.192411 Identifying ourselves as friends 19:28:58.192905 Response sent (57 bytes) and written to log/1/server.response 19:28:58.193001 special request received, no persistency 19:28:58.193057 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 421 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind421 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind421 CMD (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/1/valgrind426 ../src/curl -q --output log/1/curl426.out --include --trace-ascii log/1/trace426 --trace-config all --trace-time http://127.0.0.1:41477/426 -d foobar -C 3 > log/1/stdout426 2> log/1/stderr426 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/4/valgrind423 ../src/curl -q --trace-ascii log/4/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:43669/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43669/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/4/stdout423 2> log/4/stderr423 423: stdout FAILED: --- log/4/check-expected 2025-05-23 19:28:58.381628900 +0000 +++ log/4/check-generated 2025-05-23 19:28:58.381628900 +0000 @@ -1,4 +0,0 @@ -127.0.0.1+/423+http+uuuu+pppp+43669+qqqq+ffff[LF] -hello2000+/423+h55p+++1+qqqq+ffff[LF] -+++++++[LF] -127.0.0.1+/423+http+u22u+p22p+43669+qqqq+ffff[LF] == Contents of files in the log/4/ dir after test 423 === Start of file check-expected 127.0.0.1+/423+http+uuuu+pppp+43669+qqqq+ffff[LF] hello2000+/423+h55p+++1+qqqq+ffff[LF] +++++++[LF] 127.0.0.1+/423+http+u22u+p22p+43669+qqqq+ffff[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind423 ../src/curl -q --trace-ascii log/4/trace423 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:43669/423?qqqq#ffff" "h55p://hello2000:1/423?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:43669/423?qqqq#ffff" -w '%{url.host}+%{url.path}+%{url.scheme}+%{url.user}+%{url.password}+%{url.port}+%{url.query}+%{url.fragment}\n' > log/4/stdout423 2> log/4/stderr423 === End of file commands.log === Start of file http_server.log 19:28:58.278813 ====> Client connect 19:28:58.279090 accept_connection 3 returned 4 19:28:58.279229 accept_connection 3 returned 0 19:28:58.279741 Read 93 bytes 19:28:58.279875 Process 93 bytes request 19:28:58.279971 Got request: GET /verifiedserver HTTP/1.1 19:28:58.280045 Are-we-friendly question received 19:28:58.280211 Wrote request (93 bytes) input to log/4/server.input 19:28:58.280373 Identifying ourselves as friends 19:28:58.280822 Response sent (57 bytes) and written to log/4/server.response 19:28:58.280913 special request received, no persistency 19:28:58.280966 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 423 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind423 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind423 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/1/valgrind426 ../src/curl -q --output log/1/curl426.out --include --trace-ascii log/1/trace426 --trace-config all --trace-time http://127.0.0.1:41477/426 -d foobar -C 3 > log/1/stdout426 2> log/1/stderr426 curl returned 1, when expecting 2 426: exit FAILED == Contents of files in the log/1/ 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/1/valgrind426 ../src/curl -q --output log/1/curl426.out --include --trace-ascii log/1/trace426 --trace-config all --trace-time http://127.0.0.1:41477/426 -d foobar -C 3 > log/1/stdout426 2> log/1/stderr426 === End of file commands.log === Start of file http_server.log 19:28:58.887184 ====> Client connect 19:28:58.887417 accept_connection 3 returned 4 19:28:58.887545 accept_connection 3 returned 0 19:28:58.887657 Read 93 bytes 19:28:58.887730 Process 93 bytes request 19:28:58.887803 Got request: GET /verifiedserver HTTP/1.1 19:28:58.887864 Are-we-friendly question received 19:28:58.888029 Wrote request (93 bytes) input to log/1/server.input 19:28:58.888199 Identifying ourselves as friends 19:28:58.888709 Response sent (57 bytes) and written to log/1/server.response 19:28:58.888809 special request received, no persistency 19:28:58.888864 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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: 103115 === End of file server.response === Start of file valgrind426 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will nCMD (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/2/valgrind424 ../src/curl -q --trace-ascii log/2/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:39599/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:39599/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:39599/ -L > log/2/stdout424 2> log/2/stderr424 eed a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind426 CMD (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/valgrind425 ../src/curl -q --output log/3/curl425.out --include --trace-ascii log/3/trace425 --trace-config all --trace-time -T log/3/up425 http://127.0.0.1:37525/425/?fullpath > log/3/stdout425 2> log/3/stderr425 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/2/valgrind424 ../src/curl -q --trace-ascii log/2/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:39599/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:39599/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:39599/ -L > log/2/stdout424 2> log/2/stderr424 424: stdout FAILED: --- log/2/check-expected 2025-05-23 19:28:58.913642255 +0000 +++ log/2/check-generated 2025-05-23 19:28:58.913642255 +0000 @@ -1,4 +0,0 @@ -anotherhost.example+/4240002+http+++2023+moo.html+[LF] -hello2000+/424+h55p+++1+qqqq+ffff[LF] -+++++++[LF] -anotherhost.example+/4240002+http+++2023+moo.html+[LF] == Contents of files in the log/2/ dir after test 424 === Start of file check-expected anotherhost.example+/4240002+http+++2023+moo.html+[LF] hello2000+/424+h55p+++1+qqqq+ffff[LF] +++++++[LF] anotherhost.example+/4240002+http+++2023+moo.html+[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind424 ../src/curl -q --trace-ascii log/2/trace424 --trace-config all --trace-time "http://uuuu:pppp@127.0.0.1:39599/424?qqqq#ffff" "h55p://hello2000:1/424?qqqq#ffff" "local host" "http://u22u:p22p@127.0.0.1:39599/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:39599/ -L > log/2/stdout424 2> log/2/stderr424 === End of file commands.log === Start of file http_server.log 19:28:58.788828 ====> Client connect 19:28:58.789243 accept_connection 3 returned 4 19:28:58.789480 accept_connection 3 returned 0 19:28:58.790715 Read 93 bytes 19:28:58.791037 Process 93 bytes request 19:28:58.791280 Got request: GET /verifiedserver HTTP/1.1 19:28:58.791492 Are-we-friendly question received 19:28:58.791906 Wrote request (93 bytes) input to log/2/server.input 19:28:58.792356 Identifying ourselves as friends 19:28:58.793439 Response sent (57 bytes) and written to log/2/server.response 19:28:58.793660 special request received, no persistency 19:28:58.793834 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 424 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind424 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind425 ../src/curl -q --output log/3/curl425.out --include --trace-ascii log/3/trace425 --trace-config all --trace-time -T log/3/up425 http://127.0.0.1:37525/425/?fullpath > log/3/stdout425 2> log/3/stderr425 425: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind425 ../src/curl -q --output log/3/curl425.out --include --trace-ascii log/3/trace425 --trace-config all --trace-time -T log/3/up425 http://127.0.0.1:37525/425/?fullpath > log/3/stdout425 2> log/3/stderr425 === End of file commands.log === Start of file http_server.log 19:28:57.866542 ====> Client connect 19:28:57.866767 accept_connection 3 returned 4 19:28:57.866880 accept_connection 3 returned 0 19:28:57.866983 Read 93 bytes 19:28:57.867058 Process 93 bytes request 19:28:57.867134 Got request: GET /verifiedserver HTTP/1.1 19:28:57.867203 Are-we-friendly question received 19:28:57.867360 Wrote request (93 bytes) input to log/3/server.input 19:28:57.867514 Identifying ourselves as friends 19:28:57.868141 Response sent (57 bytes) and written to log/3/server.response 19:28:57.868241 special request received, no persistency 19:28:57.868301 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 425 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file up425 content === End of file up425 === Start of file valgrind425 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fixCMD (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/4/valgrind427 ../src/curl -q --output log/4/curl427.out --include --trace-ascii log/4/trace427 --trace-config all --trace-time http://127.0.0.1:43669/427 -c log/4/cookies427 -L > log/4/stdout427 2> log/4/stderr427 CMD (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/1/valgrind428 ../src/curl -q --output log/1/curl428.out --include --trace-ascii log/1/trace428 --trace-config all --trace-time http://127.0.0.1:41477/428 -K log/1/cmd > log/1/stdout428 2> log/1/stderr428 (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind425 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/4/valgrind427 ../src/curl -q --output log/4/curl427.out --include --trace-ascii log/4/trace427 --trace-config all --trace-time http://127.0.0.1:43669/427 -c log/4/cookies427 -L > log/4/stdout427 2> log/4/stderr427 427: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind427 ../src/curl -q --output log/4/curl427.out --include --trace-ascii log/4/trace427 --trace-config all --trace-time http://127.0.0.1:43669/427 -c log/4/cookies427 -L > log/4/stdout427 2> log/4/stderr427 === End of file commands.log === Start of file http_server.log 19:28:58.979398 ====> Client connect 19:28:58.979643 accept_connection 3 returned 4 19:28:58.979760 accept_connection 3 returned 0 19:28:58.979867 Read 93 bytes 19:28:58.979934 Process 93 bytes request 19:28:58.979997 Got request: GET /verifiedserver HTTP/1.1 19:28:58.980060 Are-we-friendly question received 19:28:58.980261 Wrote request (93 bytes) input to log/4/server.input 19:28:58.980501 Identifying ourselves as friends 19:28:58.981108 Response sent (57 bytes) and written to log/4/server.response 19:28:58.981216 special request received, no persistency 19:28:58.981352 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 427 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind427 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind427 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/1/valgrind428 ../src/curl -q --output log/1/curl428.out --include --trace-ascii log/1/trace428 --trace-config all --trace-time http://127.0.0.1:41477/428 -K log/1/cmd > log/1/stdout428 2> log/1/stderr428 428: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind428 ../src/curl -q --output log/1/curl428.out --include --trace-ascii log/1/trace428 --trace-config all --trace-time http://127.0.0.1:41477/428 -K log/1/cmd > log/1/stdout428 2> log/1/stderr428 === End of file commands.log === Start of file http_server.log 19:28:59.458428 ====> Client connect 19:28:59.458658 accept_connection 3 returned 4 19:28:59.458780 accept_connection 3 returned 0 19:28:59.459943 Read 93 bytes 19:28:59.460053 Process 93 bytes request 19:28:59.460127 Got request: GET /verifiedserver HTTP/1.1 19:28:59.460192 Are-we-friendly question received 19:28:59.460345 Wrote request (93 bytes) input to log/1/server.input 19:28:59.460484 Identifying ourselves as friends 19:28:59.460972 Response sent (57 bytes) and written to log/1/server.response 19:28:59.461069 special request received, no persistency 19:28:59.461131 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 428 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind428 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: CMD (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/2/valgrind429 ../src/curl -q --output log/2/curl429.out --include --trace-ascii log/2/trace429 --trace-config all --trace-time http://127.0.0.1:39599/429 -K log/2/cmd > log/2/stdout429 2> log/2/stderr429 CMD (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/valgrind430 ../src/curl -q --output log/3/curl430.out --include --trace-ascii log/3/trace430 --trace-config all --trace-time -K log/3/config430-a -K log/3/config430-b -K log/3/config430-c > log/3/stdout430 2> log/3/stderr430 glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind429 ../src/curl -q --output log/2/curl429.out --include --trace-ascii log/2/trace429 --trace-config all --trace-time http://127.0.0.1:39599/429 -K log/2/cmd > log/2/stdout429 2> log/2/stderr429 429: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind429 ../src/curl -q --output log/2/curl429.out --include --trace-ascii log/2/trace429 --trace-config all --trace-time http://127.0.0.1:39599/429 -K log/2/cmd > log/2/stdout429 2> log/2/stderr429 === End of file commands.log === Start of file http_server.log 19:28:59.492976 ====> Client connect 19:28:59.493185 accept_connection 3 returned 4 19:28:59.493296 accept_connection 3 returned 0 19:28:59.493391 Read 93 bytes 19:28:59.493456 Process 93 bytes request 19:28:59.493522 Got request: GET /verifiedserver HTTP/1.1 19:28:59.493586 Are-we-friendly question received 19:28:59.493739 Wrote request (93 bytes) input to log/2/server.input 19:28:59.493889 Identifying ourselves as friends 19:28:59.494462 Response sent (57 bytes) and written to log/2/server.response 19:28:59.494567 special request received, no persistency 19:28:59.494625 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 429 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind429 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind429 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-config all --trace-time -K log/3/config430-a -K log/3/config430-b -K log/3/config430-c > log/3/stdout430 2> log/3/stderr430 430: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --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:37525/4300001 header = "a: a" data = "a" === End of file config430-a === Start of file config430-b --next url = 127.0.0.1:37525/4300002 header = "b: b" data = "b" === End of file config430-b === Start of file config430-c --next url = 127.0.0.1:37525/4300003 header = "c: c" data = "c" === End of file config430-c === Start of file http_server.log 19:28:58.529307 ====> Client connect 19:28:58.529578 accept_connection 3 returned 4 19:28:58.529721 accept_connection 3 returned 0 19:28:58.529831 Read 93 bytes 19:28:58.529901 Process 93 bytes request 19:28:58.529975 Got request: GET /verifiedserver HTTP/1.1 19:28:58.530140 Are-we-friendly question received 19:28:58.530324 Wrote request (93 bytes) input to log/3/server.input 19:28:58.530505 Identifying ourselves as friends 19:28:58.531025 Response sent (57 bytes) and written to log/3/server.response 19:28:58.531113 special request received, no persistency 19:28:58.531168 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 430 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind430 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynCMD (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/4/valgrind431 ../src/curl -q --output log/4/curl431.out --include --trace-ascii log/4/trace431 --trace-config all --trace-time -K log/4/config431-a -K log/4/config431-b --next -d c 127.0.0.1:43669/4310003 -H "c: c" > log/4/stdout431 2> log/4/stderr431 CMD (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/2/valgrind434 ../src/curl -q --output log/2/curl434.out --include --trace-ascii log/2/trace434 --trace-config all --trace-time -K log/2/config434 > log/2/stdout434 2> log/2/stderr434 amic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind431 ../src/curl -q --output log/4/curl431.out --include --trace-ascii log/4/trace431 --trace-config all --trace-time -K log/4/config431-a -K log/4/config431-b --next -d c 127.0.0.1:43669/4310003 -H "c: c" > log/4/stdout431 2> log/4/stderr431 431: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind431 ../src/curl -q --output log/4/curl431.out --include --trace-ascii log/4/trace431 --trace-config all --trace-time -K log/4/config431-a -K log/4/config431-b --next -d c 127.0.0.1:43669/4310003 -H "c: c" > log/4/stdout431 2> log/4/stderr431 === End of file commands.log === Start of file config431-a --next url = 127.0.0.1:43669/4310001 header = "a: a" data = "a" === End of file config431-a === Start of file config431-b --next url = 127.0.0.1:43669/4310002 header = "b: b" data = "b" === End of file config431-b === Start of file http_server.log 19:28:59.672950 ====> Client connect 19:28:59.673196 accept_connection 3 returned 4 19:28:59.673348 accept_connection 3 returned 0 19:28:59.673485 Read 93 bytes 19:28:59.673581 Process 93 bytes request 19:28:59.673678 Got request: GET /verifiedserver HTTP/1.1 19:28:59.673755 Are-we-friendly question received 19:28:59.674004 Wrote request (93 bytes) input to log/4/server.input 19:28:59.674312 Identifying ourselves as friends 19:28:59.674921 Response sent (57 bytes) and written to log/4/server.response 19:28:59.675066 special request received, no persistency 19:28:59.675154 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 431 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind431 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind431 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-config all --trace-time -K log/2/config434 > log/2/stdout434 2> log/2/stderr434 434: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --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:39599/434 === End of file config434 === Start of file http_server.log 19:29:00.167962 ====> Client connect 19:29:00.168181 accept_connection 3 returned 4 19:29:00.168291 accept_connection 3 returned 0 19:29:00.168391 Read 93 bytes 19:29:00.168461 Process 93 bytes request 19:29:00.168529 Got request: GET /verifiedserver HTTP/1.1 19:29:00.168587 Are-we-friendly question received 19:29:00.168733 Wrote request (93 bytes) input to log/2/server.input 19:29:00.168885 Identifying ourselves as friends 19:29:00.169371 Response sent (57 bytes) and written to log/2/server.response 19:29:00.169466 special request received, no persistency 19:29:00.169535 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 434 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind434 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-nameCMD (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/1/valgrind432 ../src/curl -q --output log/1/curl432.out --include --trace-ascii log/1/trace432 --trace-config all --trace-time -K log/1/config432 > log/1/stdout432 2> log/1/stderr432 CMD (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/valgrind435 ../src/curl -q --include --trace-ascii log/3/trace435 --trace-config all --trace-time http://127.0.0.1:37525/435 http://127.0.0.1:37525/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/3/stdout435 2> log/3/stderr435 d function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind434 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-config all --trace-time -K log/1/config432 > log/1/stdout432 2> log/1/stderr432 432: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --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:41477/4320001 header = "a: a" data = "a" --next url = 127.0.0.1:41477/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:41477/4320003 header = "c: c" data = "c" === End of file config432-c === Start of file http_server.log 19:29:00.158944 ====> Client connect 19:29:00.159168 accept_connection 3 returned 4 19:29:00.159282 accept_connection 3 returned 0 19:29:00.159380 Read 93 bytes 19:29:00.159451 Process 93 bytes request 19:29:00.159526 Got request: GET /verifiedserver HTTP/1.1 19:29:00.159596 Are-we-friendly question received 19:29:00.159808 Wrote request (93 bytes) input to log/1/server.input 19:29:00.160015 Identifying ourselves as friends 19:29:00.160602 Response sent (57 bytes) and written to log/1/server.response 19:29:00.160700 special request received, no persistency 19:29:00.160788 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 432 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind432 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind432 CMD (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/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43669/436 > log/4/stdout436 2> log/4/stderr436 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/3/valgrind435 ../src/curl -q --include --trace-ascii log/3/trace435 --trace-config all --trace-time http://127.0.0.1:37525/435 http://127.0.0.1:37525/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/3/stdout435 2> log/3/stderr435 435: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:00.345678202 +0000 +++ log/3/check-generated 2025-05-23 19:29:00.345678202 +0000 @@ -1,14 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -local port == [digits][LF] -local ip == 127.0.0.1[LF] -remote_ip == 127.0.0.1[LF] -remote_port == 37525[LF] -HTTP/1.1 200 OK[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -local port == [digits][LF] -local ip == 127.0.0.1[LF] -remote_ip == 127.0.0.1[LF] -remote_port == 37525[LF] == Contents of files in the log/3/ dir after test 435 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Content-Length: 0[CR][LF] [CR][LF] local port == [digits][LF] local ip == 127.0.0.1[LF] remote_ip == 127.0.0.1[LF] remote_port == 37525[LF] HTTP/1.1 200 OK[CR][LF] Content-Length: 0[CR][LF] [CR][LF] local port == [digits][LF] local ip == 127.0.0.1[LF] remote_ip == 127.0.0.1[LF] remote_port == 37525[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind435 ../src/curl -q --include --trace-ascii log/3/trace435 --trace-config all --trace-time http://127.0.0.1:37525/435 http://127.0.0.1:37525/435 -w 'local port == %{local_port}\nlocal ip == %{local_ip}\nremote_ip == %{remote_ip}\nremote_port == %{remote_port}\n' > log/3/stdout435 2> log/3/stderr435 === End of file commands.log === Start of file http_server.log 19:28:59.269534 ====> Client connect 19:28:59.269751 accept_connection 3 returned 4 19:28:59.269861 accept_connection 3 returned 0 19:28:59.269955 Read 93 bytes 19:28:59.270126 Process 93 bytes request 19:28:59.270215 Got request: GET /verifiedserver HTTP/1.1 19:28:59.270287 Are-we-friendly question received 19:28:59.270452 Wrote request (93 bytes) input to log/3/server.input 19:28:59.270610 Identifying ourselves as friends 19:28:59.271090 Response sent (57 bytes) and written to log/3/server.response 19:28:59.271176 special request received, no persistency 19:28:59.271237 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 435 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind435 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind435 setenv CURL_HOME = /build/curl/src/build-curl/tests/log/4 setenv XDG_CONFIG_HOME = 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/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43669/436 > log/4/stdout436 2> log/4/stderr436 436: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind436 ../src/curl --output log/4/curl436.out --include --trace-ascii log/4/trace436 --trace-config all --trace-time 127.0.0.1:43669/436 > log/4/stdout436 2> log/4/stderr436 === End of file commands.log === Start of file http_server.log 19:29:00.419171 ====> Client connect 19:29:00.419393 accept_connection 3 returned 4 19:29:00.419499 accept_connection 3 returned 0 19:29:00.419619 Read 93 bytes 19:29:00.419706 Process 93 bytes request 19:29:00.419789 Got request: GET /verifiedserver HTTP/1.1 19:29:00.419851 Are-we-friendly question received 19:29:00.420015 Wrote request (93 bytes) input to log/4/server.input 19:29:00.420192 Identifying ourselves as friends 19:29:00.420719 Response sent (57 bytes) and written to log/4/server.response 19:29:00.420815 special request received, no persistency 19:29:00.420873 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 436 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind436 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports theCMD (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/2/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39599 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind436 CMD (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/1/valgrind441 ../src/curl -q --include --trace-ascii log/1/trace441 --trace-config all --trace-time -x http://127.0.0.1:41477 http://this.hsts.example/441 --hsts log/1/input441 -w '%{url_effective}\n' > log/1/stdout441 2> log/1/stderr441 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/2/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39599 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 440: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:00.945693264 +0000 +++ log/2/check-generated 2025-05-23 19:29:00.945693264 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example./440[LF] == Contents of files in the log/2/ dir after test 440 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example./440[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind440 ../src/curl -q --include --trace-ascii log/2/trace440 --trace-config all --trace-time -x http://127.0.0.1:39599 http://this.hsts.example./440 --hsts log/2/input440 -w '%{url_effective}\n' > log/2/stdout440 2> log/2/stderr440 === End of file commands.log === Start of file http_server.log 19:29:00.808350 ====> Client connect 19:29:00.809026 accept_connection 3 returned 4 19:29:00.809196 accept_connection 3 returned 0 19:29:00.809749 Read 93 bytes 19:29:00.809901 Process 93 bytes request 19:29:00.809976 Got request: GET /verifiedserver HTTP/1.1 19:29:00.810111 Are-we-friendly question received 19:29:00.810294 Wrote request (93 bytes) input to log/2/server.input 19:29:00.810483 Identifying ourselves as friends 19:29:00.810902 Response sent (57 bytes) and written to log/2/server.response 19:29:00.810991 special request received, no persistency 19:29:00.811050 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file input440 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind440 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind440 CMD (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/4/valgrind443 ../src/curl -q --output log/4/curl443.out --include --trace-ascii log/4/trace443 --trace-config all --trace-time http://attack.invalid:43669/a/b/443 -b log/4/cookie443 --resolve attack.invalid:43669:127.0.0.1 -L > log/4/stdout443 2> log/4/stderr443 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/1/valgrind441 ../src/curl -q --include --trace-ascii log/1/trace441 --trace-config all --trace-time -x http://127.0.0.1:41477 http://this.hsts.example/441 --hsts log/1/input441 -w '%{url_effective}\n' > log/1/stdout441 2> log/1/stderr441 441: stdout FAILED: --- log/1/check-expected 2025-05-23 19:29:00.985694268 +0000 +++ log/1/check-generated 2025-05-23 19:29:00.985694268 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example/441[LF] == Contents of files in the log/1/ dir after test 441 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example/441[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind441 ../src/curl -q --include --trace-ascii log/1/trace441 --trace-config all --trace-time -x http://127.0.0.1:41477 http://this.hsts.example/441 --hsts log/1/input441 -w '%{url_effective}\n' > log/1/stdout441 2> log/1/stderr441 === End of file commands.log === Start of file http_server.log 19:29:00.852431 ====> Client connect 19:29:00.852659 accept_connection 3 returned 4 19:29:00.852787 accept_connection 3 returned 0 19:29:00.852901 Read 93 bytes 19:29:00.852975 Process 93 bytes request 19:29:00.853046 Got request: GET /verifiedserver HTTP/1.1 19:29:00.853106 Are-we-friendly question received 19:29:00.853260 Wrote request (93 bytes) input to log/1/server.input 19:29:00.853418 Identifying ourselves as friends 19:29:00.853957 Response sent (57 bytes) and written to log/1/server.response 19:29:00.854189 special request received, no persistency 19:29:00.854257 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file input441 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind441 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind441 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/4/valgrind443 ../src/curl -q --output log/4/curl443.out --include --trace-ascii log/4/trace443 --trace-config all --trace-time http://attack.invalid:43669/a/b/443 -b log/4/cookie443 --resolve attack.invalid:43669:127.0.0.1 -L > log/4/stdout443 2> log/4/stderr443 443: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind443 ../src/curl -q --output log/4/curl443.out --include --trace-ascii log/4/trace443 --trace-config all --trace-time http://attack.invalid:43669/a/b/443 -b log/4/cookie443 --resolve attack.invalid:43669:127.0.0.1 -L > log/4/stdout443 2> log/4/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 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCMD (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/valgrind442 ../src/curl -q --output log/3/curl442.out --include --trace-ascii log/3/trace442 --trace-config all --trace-time http://attack.invalid:37525/a/b/442 -b log/3/cookie442 --resolve attack.invalid:37525:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa-20 === End of file cookie443 === Start of file http_server.log 19:29:01.083976 ====> Client connect 19:29:01.084181 accept_connection 3 returned 4 19:29:01.084279 accept_connection 3 returned 0 19:29:01.086454 Read 93 bytes 19:29:01.086596 Process 93 bytes request 19:29:01.086680 Got request: GET /verifiedserver HTTP/1.1 19:29:01.086754 Are-we-friendly question received 19:29:01.086932 Wrote request (93 bytes) input to log/4/server.input 19:29:01.087111 Identifying ourselves as friends 19:29:01.087579 Response sent (57 bytes) and written to log/4/server.response 19:29:01.087665 special request received, no persistency 19:29:01.087722 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 443 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind443 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind443 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-config all --trace-time http://attack.invalid:37525/a/b/442 -b log/3/cookie442 --resolve attack.invalid:37525:127.0.0.1 -L > log/3/stdout442 2> log/3/stderr442 442: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://attack.invalid:37525/a/b/442 -b log/3/cookie442 --resolve attack.invalid:37525: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-7CMD (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/1/valgrind448 ../src/curl -q --output log/1/curl448.out --include --trace-ascii log/1/trace448 --trace-config all --trace-time http://127.0.0.1:41477/448 -K log/1/cmd > log/1/stdout448 2> log/1/stderr448 0 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 http_server.log 19:28:59.943063 ====> Client connect 19:28:59.943270 accept_connection 3 returned 4 19:28:59.943381 accept_connection 3 returned 0 19:28:59.943482 Read 93 bytes 19:28:59.943557 Process 93 bytes request 19:28:59.943632 Got request: GET /verifiedserver HTTP/1.1 19:28:59.943701 Are-we-friendly question received 19:28:59.943857 Wrote request (93 bytes) input to log/3/server.input 19:28:59.944000 Identifying ourselves as friends 19:28:59.944464 Response sent (57 bytes) and written to log/3/server.response 19:28:59.944555 special request received, no persistency 19:28:59.944613 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 442 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind442 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind442 setenv FUNVALUE = contents setenv VALUE2 = curl setenv BLANK = 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/1/valgrind448 ../src/curl -q --output log/1/curl448.out --include --trace-ascii log/1/trace448 --trace-config all --trace-time http://127.0.0.1:41477/448 -K log/1/cmd > log/1/stdout448 2> log/1/stderr448 448: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 448 === Start ofCMD (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/2/valgrind444 ../src/curl -q --output log/2/curl444.out --include --trace-ascii log/2/trace444 --trace-config all --trace-time http://attack.invalid:39599/a/b/444 -c log/2/cookie444 --resolve attack.invalid:39599:127.0.0.1 > log/2/stdout444 2> log/2/stderr444 CMD (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/4/valgrind449 ../src/curl -q --output log/4/curl449.out --include --trace-ascii log/4/trace449 --trace-config all --trace-time http://127.0.0.1:43669/449 -K log/4/cmd > log/4/stdout449 2> log/4/stderr449 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/1/valgrind448 ../src/curl -q --output log/1/curl448.out --include --trace-ascii log/1/trace448 --trace-config all --trace-time http://127.0.0.1:41477/448 -K log/1/cmd > log/1/stdout448 2> log/1/stderr448 === End of file commands.log === Start of file http_server.log 19:29:01.576129 ====> Client connect 19:29:01.576343 accept_connection 3 returned 4 19:29:01.576461 accept_connection 3 returned 0 19:29:01.576557 Read 93 bytes 19:29:01.576619 Process 93 bytes request 19:29:01.576681 Got request: GET /verifiedserver HTTP/1.1 19:29:01.576736 Are-we-friendly question received 19:29:01.576882 Wrote request (93 bytes) input to log/1/server.input 19:29:01.577019 Identifying ourselves as friends 19:29:01.577493 Response sent (57 bytes) and written to log/1/server.response 19:29:01.577584 special request received, no persistency 19:29:01.577637 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 448 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind448 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind444 ../src/curl -q --output log/2/curl444.out --include --trace-ascii log/2/trace444 --trace-config all --trace-time http://attack.invalid:39599/a/b/444 -c log/2/cookie444 --resolve attack.invalid:39599:127.0.0.1 > log/2/stdout444 2> log/2/stderr444 444: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind444 ../src/curl -q --output log/2/curl444.out --include --trace-ascii log/2/trace444 --trace-config all --trace-time http://attack.invalid:39599/a/b/444 -c log/2/cookie444 --resolve attack.invalid:39599:127.0.0.1 > log/2/stdout444 2> log/2/stderr444 === End of file commands.log === Start of file http_server.log 19:29:01.546390 ====> Client connect 19:29:01.546628 accept_connection 3 returned 4 19:29:01.546757 accept_connection 3 returned 0 19:29:01.546865 Read 93 bytes 19:29:01.546937 Process 93 bytes request 19:29:01.547014 Got request: GET /verifiedserver HTTP/1.1 19:29:01.547077 Are-we-friendly question received 19:29:01.547232 Wrote request (93 bytes) input to log/2/server.input 19:29:01.547418 Identifying ourselves as friends 19:29:01.547926 Response sent (57 bytes) and written to log/2/server.response 19:29:01.548013 special request received, no persistency 19:29:01.548065 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 444 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind444 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind449 ../src/curl -q --output log/4/curl449.out --include --trace-ascii log/4/trace449 --trace-config all --trace-time http://127.0.0.1:43669/449 -K log/4/cmd > log/4/stdout449 2> log/4/stderr449 449: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 449 === StartCMD (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/valgrind450 ../src/curl -q --output log/3/curl450.out --include --trace-ascii log/3/trace450 --trace-config all --trace-time http://127.0.0.1:37525/450 --variable what@log/3/junk --expand-data "{{what:trim:url}}" > log/3/stdout450 2> log/3/stderr450 CMD (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/1/valgrind451 ../src/curl -q --output log/1/curl451.out --include --trace-ascii log/1/trace451 --trace-config all --trace-time http://127.0.0.1:41477/451 --variable what@log/1/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/1/stdout451 2> log/1/stderr451 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/4/valgrind449 ../src/curl -q --output log/4/curl449.out --include --trace-ascii log/4/trace449 --trace-config all --trace-time http://127.0.0.1:43669/449 -K log/4/cmd > log/4/stdout449 2> log/4/stderr449 === End of file commands.log === Start of file http_server.log 19:29:01.791727 ====> Client connect 19:29:01.791982 accept_connection 3 returned 4 19:29:01.792124 accept_connection 3 returned 0 19:29:01.792237 Read 93 bytes 19:29:01.792320 Process 93 bytes request 19:29:01.792407 Got request: GET /verifiedserver HTTP/1.1 19:29:01.792478 Are-we-friendly question received 19:29:01.792642 Wrote request (93 bytes) input to log/4/server.input 19:29:01.792792 Identifying ourselves as friends 19:29:01.793338 Response sent (57 bytes) and written to log/4/server.response 19:29:01.793424 special request received, no persistency 19:29:01.793478 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 449 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind449 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind449 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/3/valgrind450 ../src/curl -q --output log/3/curl450.out --include --trace-ascii log/3/trace450 --trace-config all --trace-time http://127.0.0.1:37525/450 --variable what@log/3/junk --expand-data "{{what:trim:url}}" > log/3/stdout450 2> log/3/stderr450 450: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind450 ../src/curl -q --output log/3/curl450.out --include --trace-ascii log/3/trace450 --trace-config all --trace-time http://127.0.0.1:37525/450 --variable what@log/3/junk --expand-data "{{what:trim:url}}" > log/3/stdout450 2> log/3/stderr450 === End of file commands.log === Start of file http_server.log 19:29:00.829342 ====> Client connect 19:29:00.829602 accept_connection 3 returned 4 19:29:00.829736 accept_connection 3 returned 0 19:29:00.829846 Read 93 bytes 19:29:00.829921 Process 93 bytes request 19:29:00.830120 Got request: GET /verifiedserver HTTP/1.1 19:29:00.830205 Are-we-friendly question received 19:29:00.830368 Wrote request (93 bytes) input to log/3/server.input 19:29:00.830549 Identifying ourselves as friends 19:29:00.831142 Response sent (57 bytes) and written to log/3/server.response 19:29:00.831246 special request received, no persistency 19:29:00.831306 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind450 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind450 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/1/valgrind451 ../src/curl -q --output log/1/curl451.out --include --trace-ascii log/1/trace451 --trace-config all --trace-time http://127.0.0.1:41477/451 --variable what@log/1/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/1/stdout451 2> log/1/stderr451 451: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 4CMD (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/2/valgrind452 ../src/curl -q --output log/2/curl452.out --include --trace-ascii log/2/trace452 --trace-config all --trace-time http://127.0.0.1:39599/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/2/stdout452 2> log/2/stderr452 CMD (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/valgrind454 ../src/curl -q --output log/3/curl454.out --include --trace-ascii log/3/trace454 --trace-config all --trace-time http://127.0.0.1:37525/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/3/stdout454 2> log/3/stderr454 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 --num-callers=16 --log-file=log/1/valgrind451 ../src/curl -q --output log/1/curl451.out --include --trace-ascii log/1/trace451 --trace-config all --trace-time http://127.0.0.1:41477/451 --variable what@log/1/junk --variable second=hello --variable second=again --expand-data "--{{what:trim:json}}22{{none}}--{{second}}{{what:trim:url}}" > log/1/stdout451 2> log/1/stderr451 === End of file commands.log === Start of file http_server.log 19:29:02.237762 ====> Client connect 19:29:02.238094 accept_connection 3 returned 4 19:29:02.238269 accept_connection 3 returned 0 19:29:02.238789 Read 93 bytes 19:29:02.238929 Process 93 bytes request 19:29:02.239001 Got request: GET /verifiedserver HTTP/1.1 19:29:02.239063 Are-we-friendly question received 19:29:02.239232 Wrote request (93 bytes) input to log/1/server.input 19:29:02.239388 Identifying ourselves as friends 19:29:02.239797 Response sent (57 bytes) and written to log/1/server.response 19:29:02.239898 special request received, no persistency 19:29:02.239957 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind451 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind451 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/2/valgrind452 ../src/curl -q --output log/2/curl452.out --include --trace-ascii log/2/trace452 --trace-config all --trace-time http://127.0.0.1:39599/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/2/stdout452 2> log/2/stderr452 curl returned 1, when expecting 2 452: exit FAILED == Contents of files in the log/2/ 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/2/valgrind452 ../src/curl -q --output log/2/curl452.out --include --trace-ascii log/2/trace452 --trace-config all --trace-time http://127.0.0.1:39599/452 --variable what=hello --expand-data "--{{what:trim:super}}" > log/2/stdout452 2> log/2/stderr452 === End of file commands.log === Start of file http_server.log 19:29:02.396518 ====> Client connect 19:29:02.396757 accept_connection 3 returned 4 19:29:02.396884 accept_connection 3 returned 0 19:29:02.396997 Read 93 bytes 19:29:02.397064 Process 93 bytes request 19:29:02.397144 Got request: GET /verifiedserver HTTP/1.1 19:29:02.397213 Are-we-friendly question received 19:29:02.397376 Wrote request (93 bytes) input to log/2/server.input 19:29:02.397519 Identifying ourselves as friends 19:29:02.398123 Response sent (57 bytes) and written to log/2/server.response 19:29:02.398228 special request received, no persistency 19:29:02.398288 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind452 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind452 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/3/valgrind454 ../src/curl -q --output log/3/curl454.out --include --trace-ascii log/3/trace454 --trace-config all --trace-time http://127.0.0.1:37525/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/3/stdout454 2> log/3/stderr454 curl returned 1, when expecting 2 454: exit FAILED == Contents of files in the log/3/ 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/3/valgrind454 ../src/curl -q --output log/3/curl454.out --include --trace-ascii log/3/trace454 --trace-CMD (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/4/valgrind453 ../src/curl -q --output log/4/curl453.out --include --trace-ascii log/4/trace453 --trace-config all --trace-time http://127.0.0.1:43669/453 --variable what@log/4/junk --expand-data "{{what}}" > log/4/stdout453 2> log/4/stderr453 CMD (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/1/valgrind455 ../src/curl -q --output log/1/curl455.out --include --trace-ascii log/1/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:41477/{{moby:b64}}/{{what:64dec}}/455" > log/1/stdout455 2> log/1/stderr455 config all --trace-time http://127.0.0.1:37525/454 --variable what=hello --expand-data "--{{what:trim,url}}" > log/3/stdout454 2> log/3/stderr454 === End of file commands.log === Start of file http_server.log 19:29:01.473115 ====> Client connect 19:29:01.473347 accept_connection 3 returned 4 19:29:01.473468 accept_connection 3 returned 0 19:29:01.473590 Read 93 bytes 19:29:01.473672 Process 93 bytes request 19:29:01.473746 Got request: GET /verifiedserver HTTP/1.1 19:29:01.473811 Are-we-friendly question received 19:29:01.474049 Wrote request (93 bytes) input to log/3/server.input 19:29:01.474230 Identifying ourselves as friends 19:29:01.474792 Response sent (57 bytes) and written to log/3/server.response 19:29:01.474883 special request received, no persistency 19:29:01.474948 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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: 105156 === End of file server.response === Start of file valgrind454 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind454 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/4/valgrind453 ../src/curl -q --output log/4/curl453.out --include --trace-ascii log/4/trace453 --trace-config all --trace-time http://127.0.0.1:43669/453 --variable what@log/4/junk --expand-data "{{what}}" > log/4/stdout453 2> log/4/stderr453 curl returned 1, when expecting 2 453: exit FAILED == Contents of files in the log/4/ 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/4/valgrind453 ../src/curl -q --output log/4/curl453.out --include --trace-ascii log/4/trace453 --trace-config all --trace-time http://127.0.0.1:43669/453 --variable what@log/4/junk --expand-data "{{what}}" > log/4/stdout453 2> log/4/stderr453 === End of file commands.log === Start of file http_server.log 19:29:02.470609 ====> Client connect 19:29:02.470864 accept_connection 3 returned 4 19:29:02.471000 accept_connection 3 returned 0 19:29:02.471107 Read 93 bytes 19:29:02.471186 Process 93 bytes request 19:29:02.471262 Got request: GET /verifiedserver HTTP/1.1 19:29:02.471326 Are-we-friendly question received 19:29:02.471479 Wrote request (93 bytes) input to log/4/server.input 19:29:02.471619 Identifying ourselves as friends 19:29:02.472134 Response sent (57 bytes) and written to log/4/server.response 19:29:02.472230 special request received, no persistency 19:29:02.472288 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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: 103118 === End of file server.response === Start of file valgrind453 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind453 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/1/valgrind455 ../src/curl -q --output log/1/curl455.out --include --trace-ascii log/1/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:41477/{{moby:b64}}/{{what:64dec}}/455" > log/1/stdout455 2> log/1/stderr455 455: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind455 ../src/curl -q --output log/1/curl455.out --include --trace-ascii log/1/trace455 --trace-config all --trace-time --variable moby="Call me Ishmael" --variable what=d2hpdGUtd2hhbGU= --expand-url "http://127.0.0.1:41477/{{moby:b64}}/{{what:64dec}}/455" > log/1/stdout455 2> log/1/stderr455 === End of file commands.log === Start of file http_server.log 19:29:02.889403 ====> ClCMD (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/2/valgrind456 ../src/curl -q --output log/2/curl456.out --include --trace-ascii log/2/trace456 --trace-config all --trace-time http://127.0.0.1:39599/456 --variable what@log/2/junk --expand-data "{{what}}" > log/2/stdout456 2> log/2/stderr456 CMD (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/valgrind457 ../src/curl -q --output log/3/curl457.out --include --trace-ascii log/3/trace457 --trace-config all --trace-time http://127.0.0.1:37525/457 --max-filesize 143 > log/3/stdout457 2> log/3/stderr457 ient connect 19:29:02.889632 accept_connection 3 returned 4 19:29:02.889759 accept_connection 3 returned 0 19:29:02.889865 Read 93 bytes 19:29:02.890012 Process 93 bytes request 19:29:02.890122 Got request: GET /verifiedserver HTTP/1.1 19:29:02.890205 Are-we-friendly question received 19:29:02.890378 Wrote request (93 bytes) input to log/1/server.input 19:29:02.890545 Identifying ourselves as friends 19:29:02.891195 Response sent (57 bytes) and written to log/1/server.response 19:29:02.891334 special request received, no persistency 19:29:02.891399 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 455 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind455 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind455 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/2/valgrind456 ../src/curl -q --output log/2/curl456.out --include --trace-ascii log/2/trace456 --trace-config all --trace-time http://127.0.0.1:39599/456 --variable what@log/2/junk --expand-data "{{what}}" > log/2/stdout456 2> log/2/stderr456 curl returned 1, when expecting 2 456: exit FAILED == Contents of files in the log/2/ 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/2/valgrind456 ../src/curl -q --output log/2/curl456.out --include --trace-ascii log/2/trace456 --trace-config all --trace-time http://127.0.0.1:39599/456 --variable what@log/2/junk --expand-data "{{what}}" > log/2/stdout456 2> log/2/stderr456 === End of file commands.log === Start of file http_server.log 19:29:03.016335 ====> Client connect 19:29:03.016596 accept_connection 3 returned 4 19:29:03.016739 accept_connection 3 returned 0 19:29:03.016853 Read 93 bytes 19:29:03.016927 Process 93 bytes request 19:29:03.017001 Got request: GET /verifiedserver HTTP/1.1 19:29:03.017063 Are-we-friendly question received 19:29:03.017217 Wrote request (93 bytes) input to log/2/server.input 19:29:03.017372 Identifying ourselves as friends 19:29:03.017913 Response sent (57 bytes) and written to log/2/server.response 19:29:03.018085 special request received, no persistency 19:29:03.018144 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind456 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind456 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/3/valgrind457 ../src/curl -q --output log/3/curl457.out --include --trace-ascii log/3/trace457 --trace-config all --trace-time http://127.0.0.1:37525/457 --max-filesize 143 > log/3/stdout457 2> log/3/stderr457 457: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind457 ../src/curl -q --output log/3/curl457.out --include --trace-ascii log/3/trace457 --trace-config all --trace-time http://127.0.0.1:37525/457 --max-filesize 143 > log/3/stdout457 2> log/3/stderr457 === End of file commands.log === Start of file http_server.log 19:29:02.107354 ====> Client connect 19:29:02.107583 accept_connection 3 returned 4 19:29:02.107730 accept_connection 3 returned 0 19:29:02.107862 Read 93 bytes 19:29:02.107947 Process 93 bytes request 19:29:02.108025 Got request: GET /verifiedserver HTTP/1.1 19:29:02.108089 Are-we-friendly question received 19:29:02.108255 Wrote request (93 bytes) input to log/3/server.input 19:29:02.108442 IdentifyingCMD (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/4/valgrind458 ../src/curl -q --include --trace-ascii log/4/trace458 --trace-config all --trace-time http://127.0.0.1:43669/458 -K log/4/cmd > log/4/stdout458 2> log/4/stderr458 CMD (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/2/valgrind460 ../src/curl -q --output log/2/curl460.out --include --trace-ascii log/2/trace460 --trace-config all --trace-time --expand-url > log/2/stdout460 2> log/2/stderr460 ourselves as friends 19:29:02.108991 Response sent (57 bytes) and written to log/3/server.response 19:29:02.109078 special request received, no persistency 19:29:02.109137 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 457 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind457 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind457 setenv FUNVALUE = contents458 setenv VALUE2 = curl setenv BLANK = 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/4/valgrind458 ../src/curl -q --include --trace-ascii log/4/trace458 --trace-config all --trace-time http://127.0.0.1:43669/458 -K log/4/cmd > log/4/stdout458 2> log/4/stderr458 458: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 458 === Start of file cmd --variable %FUNVALUE --expand-output log/4/{{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/4/valgrind458 ../src/curl -q --include --trace-ascii log/4/trace458 --trace-config all --trace-time http://127.0.0.1:43669/458 -K log/4/cmd > log/4/stdout458 2> log/4/stderr458 === End of file commands.log === Start of file http_server.log 19:29:03.105548 ====> Client connect 19:29:03.105784 accept_connection 3 returned 4 19:29:03.105994 accept_connection 3 returned 0 19:29:03.106584 Read 93 bytes 19:29:03.106724 Process 93 bytes request 19:29:03.106875 Got request: GET /verifiedserver HTTP/1.1 19:29:03.107000 Are-we-friendly question received 19:29:03.107243 Wrote request (93 bytes) input to log/4/server.input 19:29:03.107427 Identifying ourselves as friends 19:29:03.107898 Response sent (57 bytes) and written to log/4/server.response 19:29:03.107978 special request received, no persistency 19:29:03.108036 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 458 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind458 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind458 * starts no server 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/2/valgrind460 ../src/curl -q --output log/2/curl460.out --include --trace-ascii log/2/trace460 --trace-config all --trace-time --expand-url > log/2/stdout460 2> log/2/stderr460 curl returned 1, when expecting 2 460: exit FAILED == Contents of files in the log/2/ 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/2/valgrind460 ../src/curl -q --output log/2/curl460.out --include --trace-ascii log/2/trace460 --trace-config all --trace-time --expand-url > log/2/stdout460 2> log/2/stderr460 === End of file commands.log === Start of file server.cmd Testnum 460 === End of file server.cmd === Start of file valgrind460 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-namCMD (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/1/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:41477/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 ed function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind460 CMD (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/4/valgrind462 ../src/curl -q --output log/4/curl462.out --include --trace-ascii log/4/trace462 --trace-config all --trace-time http://127.0.0.1:43669/462 -K log/4/cmd > log/4/stdout462 2> log/4/stderr462 CMD (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/valgrind461 ../src/curl -q --output log/3/curl461.out --include --trace-ascii log/3/trace461 --trace-config all --trace-time http://127.0.0.1:37525/461 -H host: > log/3/stdout461 2> log/3/stderr461 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=log/1/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:41477/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 459: stderr FAILED: --- log/1/check-expected 2025-05-23 19:29:03.617760339 +0000 +++ log/1/check-generated 2025-05-23 19:29:03.617760339 +0000 @@ -1,2 +0,0 @@ -Warning: log/1/config:1: warning: 'data' uses unquoted whitespace[CR][LF] -Warning: This may cause side-effects. Consider using double quotes?[CR][LF] == Contents of files in the log/1/ dir after test 459 === Start of file check-expected Warning: log/1/config:1: warning: 'data' uses unquoted whitespace[CR][LF] Warning: This may cause side-effects. Consider using double quotes?[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind459 ../src/curl -q --output log/1/curl459.out --include --trace-ascii log/1/trace459 --trace-config all --trace-time http://127.0.0.1:41477/459 --config log/1/config --silent > log/1/stdout459 2> log/1/stderr459 === End of file commands.log === Start of file config data = arg with space === End of file config === Start of file http_server.log 19:29:03.530920 ====> Client connect 19:29:03.531148 accept_connection 3 returned 4 19:29:03.531268 accept_connection 3 returned 0 19:29:03.531385 Read 93 bytes 19:29:03.531465 Process 93 bytes request 19:29:03.531532 Got request: GET /verifiedserver HTTP/1.1 19:29:03.531605 Are-we-friendly question received 19:29:03.531760 Wrote request (93 bytes) input to log/1/server.input 19:29:03.531899 Identifying ourselves as friends 19:29:03.532404 Response sent (57 bytes) and written to log/1/server.response 19:29:03.532492 special request received, no persistency 19:29:03.532547 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 459 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind459 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind459 * starts no server 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-config all --trace-time http://127.0.0.1:43669/462 -K log/4/cmd > log/4/stdout462 2> log/4/stderr462 curl returned 1, when expecting 26 462: exit FAILED == 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-config all --trace-time http://127.0.0.1:43669/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 valgrind462 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind462 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/3/valgrind461 ../src/curl -q --output log/3/curl461.out --include --trace-ascii log/3/trace461 --trace-config all --trace-time http://127.0.0.1:37525/461 -H host: > log/3/stdout461 2> log/3/stderr461 461: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind461 ../src/curl -q --output log/3/curl461.out --include --trace-ascii log/3/trace461 --trace-config all --trace-time http://127.0.0.1:37525/461 -H host: > log/3/stdout461 2> log/3/stderr461 === End of file commands.log === Start of file http_server.log 19:29:02.763593 ====> Client connect 19:29:02.763832 accept_connection 3 returned 4 19:29:02.763959 accept_connecCMD (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/1/valgrind467 ../src/curl -q --output log/1/curl467.out --include --trace-ascii log/1/trace467 --trace-config all --trace-time curl -v http://example.com > log/1/stdout467 2> log/1/stderr467 CMD (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/2/valgrind463 ../src/curl -q --output log/2/curl463.out --include --trace-ascii log/2/trace463 --trace-config all --trace-time -d @log/2/input463 http://127.0.0.1:39599/463 > log/2/stdout463 2> log/2/stderr463 tion 3 returned 0 19:29:02.764084 Read 93 bytes 19:29:02.764169 Process 93 bytes request 19:29:02.764249 Got request: GET /verifiedserver HTTP/1.1 19:29:02.764316 Are-we-friendly question received 19:29:02.764475 Wrote request (93 bytes) input to log/3/server.input 19:29:02.764632 Identifying ourselves as friends 19:29:02.765120 Response sent (57 bytes) and written to log/3/server.response 19:29:02.765217 special request received, no persistency 19:29:02.765271 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 461 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind461 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind461 * starts no server 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/1/valgrind467 ../src/curl -q --output log/1/curl467.out --include --trace-ascii log/1/trace467 --trace-config all --trace-time curl -v http://example.com > log/1/stdout467 2> log/1/stderr467 curl returned 1, when expecting 2 467: exit FAILED == Contents of files in the log/1/ 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/1/valgrind467 ../src/curl -q --output log/1/curl467.out --include --trace-ascii log/1/trace467 --trace-config all --trace-time curl -v http://example.com > log/1/stdout467 2> log/1/stderr467 === End of file commands.log === Start of file server.cmd Testnum 467 === End of file server.cmd === Start of file valgrind467 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind463 ../src/curl -q --output log/2/curl463.out --include --trace-ascii log/2/trace463 --trace-config all --trace-time -d @log/2/input463 http://127.0.0.1:39599/463 > log/2/stdout463 2> log/2/stderr463 463: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind463 ../src/curl -q --output log/2/curl463.out --include --trace-ascii log/2/trace463 --trace-config all --trace-time -d @log/2/input463 http://127.0.0.1:39599/463 > log/2/stdout463 2> log/2/stderr463 === End of file commands.log === Start of file http_server.log 19:29:04.166205 ====> Client connect 19:29:04.166443 accept_connection 3 returned 4 19:29:04.166580 accept_connection 3 returned 0 19:29:04.166705 Read 93 bytes 19:29:04.166789 Process 93 bytes request 19:29:04.166863 Got request: GET /verifiedserver HTTP/1.1 19:29:04.166933 Are-we-friendly question received 19:29:04.167105 Wrote request (93 bytes) input to log/2/server.input 19:29:04.167290 Identifying ourselves as friends 19:29:04.167933 Response sent (57 bytes) and written to log/2/server.response 19:29:04.168031 special request received, no persistency 19:29:04.168087 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind463 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the CMD (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/valgrind469 ../src/curl -q --output log/3/curl469.out --include --trace-ascii log/3/trace469 --trace-config all --trace-time -H “host: 127.0.0.1:37525/” -s > log/3/stdout469 2> log/3/stderr469 object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind463 CMD (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/4/valgrind468 ../src/curl -q --trace-ascii log/4/trace468 --trace-config all --trace-time http://127.0.0.1:43669/468 -K log/4/cmd468 -w "" > log/4/stdout468 2> log/4/stderr468 test 0469...[warn about Unicode 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-config all --trace-time -H “host: 127.0.0.1:37525/” -s > log/3/stdout469 2> log/3/stderr469 469: stderr FAILED: --- log/3/check-expected 2025-05-23 19:29:04.421780522 +0000 +++ log/3/check-generated 2025-05-23 19:29:04.421780522 +0000 @@ -1,2 +0,0 @@ -Warning: The argument '%e2%80%9chost:' starts with a Unicode quote where maybe an [LF] -Warning: ASCII " was intended?[LF] == Contents of files in the log/3/ dir after test 469 === Start of file check-expected Warning: The argument '%e2%80%9chost:' starts with a Unicode quote where maybe an [LF] Warning: ASCII " was intended?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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-config all --trace-time -H “host: 127.0.0.1:37525/” -s > log/3/stdout469 2> log/3/stderr469 === End of file commands.log === Start of file http_server.log 19:29:03.390686 ====> Client connect 19:29:03.390925 accept_connection 3 returned 4 19:29:03.391056 accept_connection 3 returned 0 19:29:03.391185 Read 93 bytes 19:29:03.391271 Process 93 bytes request 19:29:03.391352 Got request: GET /verifiedserver HTTP/1.1 19:29:03.391418 Are-we-friendly question received 19:29:03.391578 Wrote request (93 bytes) input to log/3/server.input 19:29:03.391719 Identifying ourselves as friends 19:29:03.392235 Response sent (57 bytes) and written to log/3/server.response 19:29:03.392331 special request received, no persistency 19:29:03.392393 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 469 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind469 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind469 CMD (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/1/valgrind470 ../src/curl -q --output log/1/curl470.out --include --trace-ascii log/1/trace470 --trace-config all --trace-time 127.0.0.1:41477 --no-progress-meter -K "log/1/input470" > log/1/stdout470 2> log/1/stderr470 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/4/valgrind468 ../src/curl -q --trace-ascii log/4/trace468 --trace-config all --trace-time http://127.0.0.1:43669/468 -K log/4/cmd468 -w "" > log/4/stdout468 2> log/4/stderr468 468: stdout FAILED: --- log/4/check-expected 2025-05-23 19:29:04.453781325 +0000 +++ log/4/check-generated 2025-05-23 19:29:04.453781325 +0000 @@ -1 +0,0 @@ --foo-[LF] == Contents of files in the log/4/ dir after test 468 === Start of file check-expected -foo-[LF] === End of file check-expected === 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/4/valgrind468 ../src/curl -q --trace-ascii log/4/trace468 --trace-config all --trace-time http://127.0.0.1:43669/468 -K log/4/cmd468 -w "" > log/4/stdout468 2> log/4/stderr468 === End of file commands.log === Start of file http_server.log 19:29:04.359940 ====> Client connect 19:29:04.360195 accept_connection 3 returned 4 19:29:04.360332 accept_connection 3 returned 0 19:29:04.360460 Read 93 bytes 19:29:04.360542 Process 93 bytes request 19:29:04.360622 Got request: GET /verifiedserver HTTP/1.1 19:29:04.360686 Are-we-friendly question received 19:29:04.360845 Wrote request (93 bytes) input to log/4/server.input 19:29:04.360997 Identifying ourselves as friends 19:29:04.361528 Response sent (57 bytes) and written to log/4/server.response 19:29:04.361616 special request received, no persistency 19:29:04.361673 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 468 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind468 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind468 CMD (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/2/valgrind471 ../src/curl -q --include --trace-ascii log/2/trace471 --trace-config all --trace-time "http://127.0.0.1:39599/{471,4710001}" -o "log/2/dumpit#1.dump" > log/2/stdout471 2> log/2/stderr471 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/1/valgrind470 ../src/curl -q --output log/1/curl470.out --include --trace-ascii log/1/trace470 --trace-config all --trace-time 127.0.0.1:41477 --no-progress-meter -K "log/1/input470" > log/1/stdout470 2> log/1/stderr470 470: stderr FAILED: --- log/1/check-expected 2025-05-23 19:29:04.801790061 +0000 +++ log/1/check-generated 2025-05-23 19:29:04.801790061 +0000 @@ -1,2 +0,0 @@ -Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode quote where [CR][LF] -Warning: maybe an ASCII " was intended?[CR][LF] == Contents of files in the log/1/ dir after test 470 === Start of file check-expected Warning: The argument '%e2%80%9chost:fake%e2%80%9d' starts with a Unicode quote where [CR][LF] Warning: maybe an ASCII " was intended?[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind470 ../src/curl -q --output log/1/curl470.out --include --trace-ascii log/1/trace470 --trace-config all --trace-time 127.0.0.1:41477 --no-progress-meter -K "log/1/input470" > log/1/stdout470 2> log/1/stderr470 === End of file commands.log === Start of file http_server.log 19:29:04.741640 ====> Client connect 19:29:04.741857 accept_connection 3 returned 4 19:29:04.742054 accept_connection 3 returned 0 19:29:04.742165 Read 93 bytes 19:29:04.742263 Process 93 bytes request 19:29:04.742364 Got request: GET /verifiedserver HTTP/1.1 19:29:04.742433 Are-we-friendly question received 19:29:04.742593 Wrote request (93 bytes) input to log/1/server.input 19:29:04.742821 Identifying ourselves as friends 19:29:04.743400 Response sent (57 bytes) and written to log/1/server.response 19:29:04.743509 special request received, no persistency 19:29:04.743568 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind470 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind471 ../src/curl -q --include --trace-ascii log/2/trace471 --trace-config all --trace-time "http://127.0.0.1:39599/{471,4710001}" -o "log/2/dumpit#1.dump" > log/2/stdout471 2> log/2/stderr471 471: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind471 ../src/curl -q --include --trace-ascii log/2/trace471 --trace-config all --trace-time "http://127.0.0.1:39599/{471,4710001}" -o "log/2/dumpit#1.dump" > log/2/stdout471 2> log/2/stderr471 === End of file commands.log === Start of file http_server.log 19:29:04.822775 ====> Client connect 19:29:04.823352 accept_connection 3 returned 4 19:29:04.823680 accept_connection 3 returned 0 19:29:04.824840 Read 93 bytes 19:29:04.825077 Process 93 bytes request 19:29:04.825259 Got request: GET /verifiedserver HTTP/1.1 19:29:04.825380 Are-we-friendly question received 19:29:04.825658 Wrote request (93 bytes) input to log/2/server.input 19:29:04.826273 Identifying ourselves as friends 19:29:04.827481 Response sent (57 bytes) and written to log/2/server.response 19:29:04.827802 special request received, no persistency 19:29:04.828090 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 471 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind471 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === EnCMD (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/valgrind473 ../src/curl -q --output log/3/curl473.out --include --trace-ascii log/3/trace473 --trace-config all --trace-time http://127.0.0.1:37525/473 --etag-save log/3/etag473 > log/3/stdout473 2> log/3/stderr473 CMD (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/4/valgrind475 ../src/curl -q --output log/4/curl475.out --include --trace-ascii log/4/trace475 --trace-config all --trace-time "ftp://127.0.0.1:40809/475;type=a" -T log/4/test475.txt > log/4/stdout475 2> log/4/stderr475 CMD (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/2/valgrind477 ../src/curl -q --output log/2/curl477.out --include --trace-ascii log/2/trace477 --trace-config all --trace-time http://127.0.0.1:39599/477 --max-filesize 5 -L > log/2/stdout477 2> log/2/stderr477 d 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/3/valgrind473 ../src/curl -q --output log/3/curl473.out --include --trace-ascii log/3/trace473 --trace-config all --trace-time http://127.0.0.1:37525/473 --etag-save log/3/etag473 > log/3/stdout473 2> log/3/stderr473 473: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind473 ../src/curl -q --output log/3/curl473.out --include --trace-ascii log/3/trace473 --trace-config all --trace-time http://127.0.0.1:37525/473 --etag-save log/3/etag473 > log/3/stdout473 2> log/3/stderr473 === End of file commands.log === Start of file http_server.log 19:29:04.001761 ====> Client connect 19:29:04.002182 accept_connection 3 returned 4 19:29:04.002313 accept_connection 3 returned 0 19:29:04.002450 Read 93 bytes 19:29:04.002604 Process 93 bytes request 19:29:04.002764 Got request: GET /verifiedserver HTTP/1.1 19:29:04.002855 Are-we-friendly question received 19:29:04.003043 Wrote request (93 bytes) input to log/3/server.input 19:29:04.003222 Identifying ourselves as friends 19:29:04.003763 Response sent (57 bytes) and written to log/3/server.response 19:29:04.003850 special request received, no persistency 19:29:04.003910 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 473 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind473 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind473 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/4/valgrind475 ../src/curl -q --output log/4/curl475.out --include --trace-ascii log/4/trace475 --trace-config all --trace-time "ftp://127.0.0.1:40809/475;type=a" -T log/4/test475.txt > log/4/stdout475 2> log/4/stderr475 475: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind475 ../src/curl -q --output log/4/curl475.out --include --trace-ascii log/4/trace475 --trace-config all --trace-time "ftp://127.0.0.1:40809/475;type=a" -T log/4/test475.txt > log/4/stdout475 2> log/4/stderr475 === End of file commands.log === Start of file ftp_server.log 19:29:04.682525 ====> Client connect 19:29:04.691604 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:04.693172 < "USER anonymous" 19:29:04.693562 > "331 We are happy you popped in![CR][LF]" 19:29:04.694766 < "PASS ftp@example.com" 19:29:04.695072 > "230 Welcome you silly person[CR][LF]" 19:29:04.696562 < "PWD" 19:29:04.696873 > "257 "/" is current directory[CR][LF]" 19:29:04.699214 < "EPSV" 19:29:04.699503 ====> Passive DATA channel requested by client 19:29:04.699672 DATA sockfilt for passive data channel starting... 19:29:04.708492 DATA sockfilt for passive data channel started (pid 130156) 19:29:04.709358 DATA sockfilt for passive data channel listens on port 37277 19:29:04.709849 > "229 Entering Passive Mode (|||37277|)[LF]" 19:29:04.710093 Client has been notified that DATA conn will be accepted on port 37277 19:29:04.712005 Client connects to port 37277 19:29:04.712391 ====> Client established passive DATA connection on port 37277 19:29:04.713002 < "TYPE I" 19:29:04.713315 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:04.714979 < "SIZE verifiedserver" 19:29:04.715335 > "213 18[CR][LF]" 19:29:04.716865 < "RETR verifiedserver" 19:29:04.717266 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:04.717866 =====> Closing passive DATA connection... 19:29:04.718066 Server disconnects passive DATA connection 19:29:04.720223 Server disconnected passive DATA connection 19:29:04.720487 DATA sockfilt for passive data channel quits (pid 130156) 19:29:04.721833 DATA sockfilt for passive data channel quit (pid 130156) 19:29:04.722079 =====> Closed passive DATA connection 19:29:04.722741 > "226 File transfer complete[CR][LF]" 19:29:04.762831 < "QUIT" 19:29:04.763271 > "221 bye bye baby[CR][LF]" 19:29:04.767184 MAIN sockfilt said DISC 19:29:04.767481 ====> Client disconnected 19:29:04.767925 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:04.146520 ====> Client connect 19:29:04.156077 Received DATA (on stdin) 19:29:04.156228 > 160 bytes data, server => client 19:29:04.156315 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:04.156397 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:04.156466 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:04.157045 < 16 bytes data, client => server 19:29:04.157175 'USER anonymous\r\n' 19:29:04.158128 Received DATA (on stdin) 19:29:04.158234 > 33 bytes data, server => client 19:29:04.158316 '331 We are happy you popped in!\r\n' 19:29:04.158815 < 22 bytes data, client => server 19:29:04.158954 'PASS ftp@example.com\r\n' 19:29:04.159533 Received DATA (on stdin) 19:29:04.159663 > 30 bytes data, server => client 19:29:04.159760 '230 Welcome you silly person\r\n' 19:29:04.160337 < 5 bytes data, client => server 19:29:04.160474 'PWD\r\n' 19:29:04.162001 Received DATA (on stdin) 19:29:04.162170 > 30 bytes data, server => client 19:29:04.162261 '257 "/" is current directory\r\n' 19:29:04.162912 < 6 bytes data, client => server 19:29:04.163058 'EPSV\r\n' 19:29:04.174813 Received DATA (on stdin) 19:29:04.174974 > 38 bytes data, server => client 19:29:04.175081 '229 Entering Passive Mode (|||37277|)\n' 19:29:04.176034 < 8 bytes data, client => server 19:29:04.176168 'TYPE I\r\n' 19:29:04.178146 Received DATA (on stdin) 19:29:04.178274 > 33 bytes data, server => client 19:29:04.178349 '200 I modify TYPE as you wanted\r\n' 19:29:04.178809 < 21 bytes data, client => server 19:29:04.178935 'SIZE verifiedserver\r\n' 19:29:04.180060 Received DATA (on stdin) 19:29:04.180177 > 8 bytes data, server => client 19:29:04.180244 '213 18\r\n' 19:29:04.180692 < 21 bytes data, client => server 19:29:04.180821 'RETR verifiedserver\r\n' 19:29:04.182765 Received DATA (on stdin) 19:29:04.182886 > 29 bytes data, server => client 19:29:04.182963 '150 Binary junk (18 bytes).\r\n' 19:29:04.186754 Received DATA (on stdin) 19:29:04.186886 > 28 bytes data, server => client 19:29:04.187019 '226 File transfer complete\r\n' 19:29:04.226538 < 6 bytes data, client => server 19:29:04.226686 'QUIT\r\n' 19:29:04.227985 Received DATA (on stdin) 19:29:04.228097 > 18 bytes data, server => client 19:29:04.228169 '221 bye bye baby\r\n' 19:29:04.231399 ====> Client disconnect 19:29:04.241957 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:04.171996 Running IPv4 version 19:29:04.172332 Listening on port 37277 19:29:04.172603 Wrote pid 130156 to log/4/server/ftp_sockdata.pid 19:29:04.172719 Received PING (on stdin) 19:29:04.173301 Received PORT (on stdin) 19:29:04.176312 ====> Client connect 19:29:04.183458 Received DATA (on stdin) 19:29:04.183606 > 18 bytes data, server => client 19:29:04.183676 'WE ROOLZ: 109451\r\n' 19:29:04.184211 Received DISC (on stdin) 19:29:04.184365 ====> Client forcibly disconnected 19:29:04.185178 Received QUIT (on stdin) 19:29:04.185282 quits 19:29:04.185597 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 475 === End of file server.cmd === 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 lineCMD (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/valgrind478 ../src/curl -q --output log/3/curl478.out --include --trace-ascii log/3/trace478 --trace-config all --trace-time --netrc --netrc-file log/3/netrc478 -x http://127.0.0.1:37525/ http://debbie@github.com/ > log/3/stdout478 2> log/3/stderr478 of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying thisCMD (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/1/valgrind476 ../src/curl -q --output log/1/curl476.out --include --trace-ascii log/1/trace476 --trace-config all --trace-time "ftp://127.0.0.1:39333/476;type=a" -T log/1/test476.txt > log/1/stdout476 2> log/1/stderr476 a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this a line of text used for verifying this 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 valgrind475 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind477 ../src/curl -q --output log/2/curl477.out --include --trace-ascii log/2/trace477 --trace-config all --trace-time http://127.0.0.1:39599/477 --max-filesize 5 -L > log/2/stdout477 2> log/2/stderr477 477: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind477 ../src/curl -q --output log/2/curl477.out --include --trace-ascii log/2/trace477 --trace-config all --trace-time http://127.0.0.1:39599/477 --max-filesize 5 -L > log/2/stdout477 2> log/2/stderr477 === End of file commands.log === Start of file http_server.log 19:29:05.474270 ====> Client connect 19:29:05.474485 accept_connection 3 returned 4 19:29:05.474591 accept_connection 3 returned 0 19:29:05.474684 Read 93 bytes 19:29:05.474751 Process 93 bytes request 19:29:05.474818 Got request: GET /verifiedserver HTTP/1.1 19:29:05.474872 Are-we-friendly question received 19:29:05.475016 Wrote request (93 bytes) input to log/2/server.input 19:29:05.475146 Identifying ourselves as friends 19:29:05.475601 Response sent (57 bytes) and written to log/2/server.response 19:29:05.475689 special request received, no persistency 19:29:05.475741 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 477 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind477 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind477 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/3/valgrind478 ../src/curl -q --output log/3/curl478.out --include --trace-ascii log/3/trace478 --trace-config all --trace-time --netrc --netrc-file log/3/netrc478 -x http://127.0.0.1:37525/ http://debbie@github.com/ > log/3/stdout478 2> log/3/stderr478 478: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind478 ../src/curl -q --output log/3/curl478.out --include --trace-ascii log/3/trace478 --trace-config all --trace-time --netrc --netrc-file log/3/netrc478 -x http://127.0.0.1:37525/ http://debbie@github.com/ > log/3/stdout478 2> log/3/stderr478 === End of file commands.log === Start of file http_server.log 19:29:04.651687 ====> Client connect 19:29:04.651904 accept_connection 3 returned 4 19:29:04.652014 accept_connection 3 returned 0 19:29:04.652113 Read 93 bytes 19:29:04.652186 Process 93 bytes request 19:29:04.652267 Got request: GET /verifiedserver HTTP/1.1 19:29:04.652339 Are-we-friendly question received 19:29:04.652501 Wrote request (93 bytes) input to log/3/server.input 19:29:04.652683 Identifying ourselves as friends 19:29:04.653217 Response sent (57 bytes) and written to log/3/server.response 19:29:04.653311 special request received, no persistency 19:29:04.653369 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind478 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind478 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/1/valgrind476 ../src/curl -q --output log/1/curl476.out --include --trace-ascii log/1/trace476 --trace-config all --trace-time "ftp://127.0.0.1:39333/476;type=a" -T log/1/test476.txt > log/1/stdout476 2> log/1/stderr476 476: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind476 ../src/curl -q --output log/1/curl476.out --include --trace-ascii log/1/trace476 --trace-config all --trace-time "ftp://127.0.0.1:39333/476;type=a" -T log/1/test476.txt > log/1/stdout476 2> log/1/stderr476 === End of file commands.log === Start of file ftp_server.log 19:29:04.919766 ====> Client connect 19:29:04.920606 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:04.922685 < "USER anonymous" 19:29:04.922995 > "331 We are happy you popped in![CR][LF]" 19:29:04.924323 < "PASS ftp@example.com" 19:29:04.924680 > "230 Welcome you silly person[CR][LF]" 19:29:04.925817 < "PWD" 19:29:04.926137 > "257 "/" is current directory[CR][LF]" 19:29:04.927177 < "EPSV" 19:29:04.927399 ====> Passive DATA channel requested by client 19:29:04.927534 DATA sockfilt for passive data channel starting... 19:29:04.936460 DATA sockfilt for passive data channel started (pid 130225) 19:29:04.937159 DATA sockfilt for passive data channel listens on port 37891 19:29:04.937553 > "229 Entering Passive Mode (|||37891|)[LF]" 19:29:04.937761 Client has been notified that DATA conn will be accepted on port 37891 19:29:04.939121 Client connects to port 37891 19:29:04.939353 ====> Client established passive DATA connection on port 37891 19:29:04.939850 < "TYPE I" 19:29:04.940127 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:04.941176 < "SIZE verifiedserver" 19:29:04.941741 > "213 18[CR][LF]" 19:29:04.942756 < "RETR verifiedserver" 19:29:04.943085 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:04.943546 =====> Closing passive DATA connection... 19:29:04.943752 Server disconnects passive DATA connection 19:29:04.944189 Server disconnected passive DATA connection 19:29:04.944365 DATA sockfilt for passive data channel quits (pid 130225) 19:29:04.945574 DATA sockfilt for passive data channel quit (pid 130225) 19:29:04.945800 =====> Closed passive DATA connection 19:29:04.946005 > "226 File transfer complete[CR][LF]" 19:29:04.986587 < "QUIT" 19:29:04.986906 > "221 bye bye baby[CR][LF]" 19:29:04.990541 MAIN sockfilt said DISC 19:29:04.990812 ====> Client disconnected 19:29:04.991134 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:05.383785 ====> Client connect 19:29:05.385057 Received DATA (on stdin) 19:29:05.385196 > 160 bytes data, server => client 19:29:05.385286 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:05.385359 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:05.385722 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:05.386573 < 16 bytes data, client => server 19:29:05.386722 'USER anonymous\r\n' 19:29:05.387467 Received DATA (on stdin) 19:29:05.387593 > 33 bytes data, server => client 19:29:05.387671 '331 We are happy you popped in!\r\n' 19:29:05.388218 < 22 bytes data, client => server 19:29:05.388463 'PASS ftp@example.com\r\n' 19:29:05.389143 Received DATA (on stdin) 19:29:05.389265 > 30 bytes data, server => client 19:29:05.389338 '230 Welcome you silly person\r\n' 19:29:05.389747 < 5 bytes data, client => server 19:29:05.389949 'PWD\r\n' 19:29:05.390608 Received DATA (on stdin) 19:29:05.390720 > 30 bytes data, server => client 19:29:05.390795 '257 "/" is current directory\r\n' 19:29:05.391242 < 6 bytes data, client => server 19:29:05.391368 'EPSV\r\n' 19:29:05.402030 Received DATA (on stdin) 19:29:05.402159 > 38 bytes data, server => client 19:29:05.402233 '229 Entering Passive Mode (|||37891|)\n' 19:29:05.403152 < 8 bytes data, client => server 19:29:05.403281 'TYPE I\r\n' 19:29:05.404636 Received DATA (on stdin) 19:29:05.404748 > 33 bytes data, server => client 19:29:05.404825 '200 I modify TYPE as you wanted\r\n' 19:29:05.405242 < 21 bytes data, client => server 19:29:05.405364 'SIZE verifiedserver\r\n' 19:29:05.406209 Received DATA (on stdin) 19:29:05.406347 > 8 bytes data, server => client 19:29:05.406419 '213 18\r\n' 19:29:05.406830 < 21 bytes data, client => server 19:29:05.406945 'RETR verifiedserver\r\n' 19:29:05.407550 Received DATA (on stdin) 19:29:05.407666 > 29 bytes data, server => client 19:29:05.407736 '150 Binary junk (18 bytes).\r\n' 19:29:05.410487 Received DATA (on stdin) 19:29:05.410599 > 28 bytes data, server => client 19:29:05.410676 '226 File transfer complete\r\n' 19:29:05.450604 < 6 bytes data, client => server 19:29:05.450766 'QUIT\r\n' 19:29:05.451381 Received DATA (on stdin) 19:29:05.451501 > 18 bytes data, server => client 19:29:05.451573 '221 bye bye baby\r\n' 19:29:05.454759 ====> Client disconnect 19:29:05.455297 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:04.400011 Running IPv4 version 19:29:04.400343 Listening on port 37891 19:29:04.400576 Wrote pid 130225 to log/1/server/ftp_sockdata.pid 19:29:04.400699 Received PING (on stdin) 19:29:04.401229 Received PORT (on stdin) 19:29:04.403412 ====> Client connect 19:29:04.408111 Received DATA (on stdin) 19:29:04.408222 > 18 bytes data, server => client 19:29:04.408290 'WE ROOLZ: 109414\r\n' 19:29:04.408494 Received DISC (on stdin) 19:29:04.408602 ====> Client forcibly disconnected 19:29:04.409123 Received QUIT (on stdin) 19:29:04.409229 quits 19:29:04.409465 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 476 === End of file server.cmd === 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 valgrind476 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution CMD (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/4/valgrind479 ../src/curl -q --output log/4/curl479.out --include --trace-ascii log/4/trace479 --trace-config all --trace-time --netrc --netrc-file log/4/netrc479 -L -x http://127.0.0.1:43669/ http://a.com/ > log/4/stdout479 2> log/4/stderr479 CMD (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/2/valgrind482 ../src/curl -q --trace-ascii log/2/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/2/482" > log/2/stdout482 2> log/2/stderr482 to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind476 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/4/valgrind479 ../src/curl -q --output log/4/curl479.out --include --trace-ascii log/4/trace479 --trace-config all --trace-time --netrc --netrc-file log/4/netrc479 -L -x http://127.0.0.1:43669/ http://a.com/ > log/4/stdout479 2> log/4/stderr479 479: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind479 ../src/curl -q --output log/4/curl479.out --include --trace-ascii log/4/trace479 --trace-config all --trace-time --netrc --netrc-file log/4/netrc479 -L -x http://127.0.0.1:43669/ http://a.com/ > log/4/stdout479 2> log/4/stderr479 === End of file commands.log === Start of file http_server.log 19:29:06.288344 ====> Client connect 19:29:06.288553 accept_connection 3 returned 4 19:29:06.288652 accept_connection 3 returned 0 19:29:06.289080 Read 93 bytes 19:29:06.289194 Process 93 bytes request 19:29:06.289271 Got request: GET /verifiedserver HTTP/1.1 19:29:06.289332 Are-we-friendly question received 19:29:06.289482 Wrote request (93 bytes) input to log/4/server.input 19:29:06.289622 Identifying ourselves as friends 19:29:06.290083 Response sent (57 bytes) and written to log/4/server.response 19:29:06.290179 special request received, no persistency 19:29:06.290239 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind479 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind479 CMD (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/1/valgrind481 ../src/curl -q --trace-ascii log/1/trace481 --trace-config all --trace-time http://127.0.0.1:41477/481 --no-clobber -C 1 -o "log/1/481" > log/1/stdout481 2> log/1/stderr481 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/2/valgrind482 ../src/curl -q --trace-ascii log/2/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/2/482" > log/2/stdout482 2> log/2/stderr482 482: stderr FAILED: --- log/2/check-expected 2025-05-23 19:29:06.497832636 +0000 +++ log/2/check-generated 2025-05-23 19:29:06.497832636 +0000 @@ -1,3 +0,0 @@ -curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF] -curl: option -C: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/2/ dir after test 482 === Start of file check-expected curl: --continue-at is mutually exclusive with --remove-on-error[CR][LF] curl: option -C: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind482 ../src/curl -q --trace-ascii log/2/trace482 --trace-config all --trace-time http://non-existing-host.haxx.se. --remove-on-error -C 1 -o "log/2/482" > log/2/stdout482 2> log/2/stderr482 === End of file commands.log === Start of file http_server.log 19:29:06.514128 ====> Client connect 19:29:06.514339 accept_connection 3 returned 4 19:29:06.514442 accept_connection 3 returned 0 19:29:06.514541 Read 93 bytes 19:29:06.514614 Process 93 bytes request 19:29:06.514688 Got request: GET /verifiedserver HTTP/1.1 19:29:06.514748 Are-we-friendly question received 19:29:06.514888 Wrote request (93 bytes) input to log/2/server.input 19:29:06.515019 Identifying ourselves as friends 19:29:06.515515 Response sent (57 bytes) and written to log/2/server.response 19:29:06.515616 special request received, no persistency 19:29:06.515673 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind482 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind482 CMD (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/2/valgrind484 ../src/curl -q --output log/2/curl484.out --include --trace-ascii log/2/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/2/etag484 --etag-save log/2/etag484 --url http://example.net/fooo > log/2/stdout484 2> log/2/stderr484 CMD (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/4/valgrind483 ../src/curl -q --output log/4/curl483.out --include --trace-ascii log/4/trace483 --trace-config all --trace-time http://127.0.0.1:43669/483 -c log/4/c483 > log/4/stdout483 2> log/4/stderr483 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/1/valgrind481 ../src/curl -q --trace-ascii log/1/trace481 --trace-config all --trace-time http://127.0.0.1:41477/481 --no-clobber -C 1 -o "log/1/481" > log/1/stdout481 2> log/1/stderr481 481: stderr FAILED: --- log/1/check-expected 2025-05-23 19:29:06.569834443 +0000 +++ log/1/check-generated 2025-05-23 19:29:06.569834443 +0000 @@ -1,3 +0,0 @@ -curl: --continue-at is mutually exclusive with --no-clobber[CR][LF] -curl: option -C: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/1/ dir after test 481 === Start of file 481 initial content === End of file 481 === Start of file check-expected curl: --continue-at is mutually exclusive with --no-clobber[CR][LF] curl: option -C: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind481 ../src/curl -q --trace-ascii log/1/trace481 --trace-config all --trace-time http://127.0.0.1:41477/481 --no-clobber -C 1 -o "log/1/481" > log/1/stdout481 2> log/1/stderr481 === End of file commands.log === Start of file http_server.log 19:29:06.524623 ====> Client connect 19:29:06.524827 accept_connection 3 returned 4 19:29:06.524924 accept_connection 3 returned 0 19:29:06.525381 Read 93 bytes 19:29:06.525525 Process 93 bytes request 19:29:06.525607 Got request: GET /verifiedserver HTTP/1.1 19:29:06.525670 Are-we-friendly question received 19:29:06.525825 Wrote request (93 bytes) input to log/1/server.input 19:29:06.526191 Identifying ourselves as friends 19:29:06.526614 Response sent (57 bytes) and written to log/1/server.response 19:29:06.526707 special request received, no persistency 19:29:06.526762 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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: 103115 === End of file server.response === Start of file valgrind481 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind481 CMD (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/1/valgrind485 ../src/curl -q --output log/1/curl485.out --include --trace-ascii log/1/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/1/etag485 > log/1/stdout485 2> log/1/stderr485 * starts no server 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/2/valgrind484 ../src/curl -q --output log/2/curl484.out --include --trace-ascii log/2/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/2/etag484 --etag-save log/2/etag484 --url http://example.net/fooo > log/2/stdout484 2> log/2/stderr484 484: stderr FAILED: --- log/2/check-expected 2025-05-23 19:29:07.029845991 +0000 +++ log/2/check-generated 2025-05-23 19:29:07.025845890 +0000 @@ -1,3 +0,0 @@ -curl: The etag options only work on a single URL[CR][LF] -curl: option --url: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/2/ dir after test 484 === Start of file check-expected curl: The etag options only work on a single URL[CR][LF] curl: option --url: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind484 ../src/curl -q --output log/2/curl484.out --include --trace-ascii log/2/trace484 --trace-config all --trace-time http://example.com/484 --etag-compare log/2/etag484 --etag-save log/2/etag484 --url http://example.net/fooo > log/2/stdout484 2> log/2/stderr484 === End of file commands.log === Start of file server.cmd Testnum 484 === End of file server.cmd === Start of file valgrind484 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind484 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/4/valgrind483 ../src/curl -q --output log/4/curl483.out --include --trace-ascii log/4/trace483 --trace-config all --trace-time http://127.0.0.1:43669/483 -c log/4/c483 > log/4/stdout483 2> log/4/stderr483 483: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 483 === Start of file commands.log ../libtool --mode=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/valgrind483 ../src/curl -q --output log/4/curl483.out --include --trace-ascii log/4/trace483 --trace-config all --trace-time http://127.0.0.1:43669/483 -c log/4/c483 > log/4/stdout483 2> log/4/stderr483 === End of file commands.log === Start of file http_server.log 19:29:06.965873 ====> Client connect 19:29:06.966185 accept_connection 3 returned 4 19:29:06.966314 accept_connection 3 returned 0 19:29:06.966422 Read 93 bytes 19:29:06.966492 Process 93 bytes request 19:29:06.966565 Got request: GET /verifiedserver HTTP/1.1 19:29:06.966629 Are-we-friendly question received 19:29:06.966763 Wrote request (93 bytes) input to log/4/server.input 19:29:06.966922 Identifying ourselves as friends 19:29:06.967428 Response sent (57 bytes) and written to log/4/server.response 19:29:06.967521 special request received, no persistency 19:29:06.967577 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 483 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind483 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind483 CMD (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/valgrind480 ../src/curl -q --output log/3/curl480.out --include --trace-ascii log/3/trace480 --trace-config all --trace-time --netrc --netrc-file log/3/netrc480 pop3://127.0.0.1:38407/480 > log/3/stdout480 2> log/3/stderr480 * starts no server 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/1/valgrind485 ../src/curl -q --output log/1/curl485.out --include --trace-ascii log/1/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/1/etag485 > log/1/stdout485 2> log/1/stderr485 485: stderr FAILED: --- log/1/check-expected 2025-05-23 19:29:07.081847296 +0000 +++ log/1/check-generated 2025-05-23 19:29:07.081847296 +0000 @@ -1,3 +0,0 @@ -curl: The etag options only work on a single URL[CR][LF] -curl: option --etag-save: is badly used here[CR][LF] -curl: try 'curl --help' for more information[CR][LF] == Contents of files in the log/1/ dir after test 485 === Start of file check-expected curl: The etag options only work on a single URL[CR][LF] curl: option --etag-save: is badly used here[CR][LF] curl: try 'curl --help' for more information[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind485 ../src/curl -q --output log/1/curl485.out --include --trace-ascii log/1/trace485 --trace-config all --trace-time http://example.com/485 http://example.net/fooo --etag-save log/1/etag485 > log/1/stdout485 2> log/1/stderr485 === End of file commands.log === Start of file server.cmd Testnum 485 === End of file server.cmd === Start of file valgrind485 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind485 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/pop3_server.pid" --logfile "log/3/pop3_server.log" --logdir "log/3" --portfile "log/3/server/pop3_server.port" --srcdir "/build/curl/src/curl/tests" --proto pop3 --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38407 (log/3/server/pop3_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "pop3://127.0.0.1:38407/verifiedserver" 2>log/3/pop3_verify.log RUN: Verifying our test pop3 server took 0 seconds RUN: POP3 server is PID 130466 port 38407 * pid pop3 => 130466 130466 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/3/valgrind480 ../src/curl -q --output log/3/curl480.out --include --trace-ascii log/3/trace480 --trace-config all --trace-time --netrc --netrc-file log/3/netrc480 pop3://127.0.0.1:38407/480 > log/3/stdout480 2> log/3/stderr480 curl returned 1, when expecting 26 480: exit FAILED == Contents of files in the log/3/ 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/3/valgrind480 ../src/curl -q --output log/3/curl480.out --include --trace-ascii log/3/trace480 --trace-config all --trace-time --netrc --netrc-file log/3/netrc480 pop3://127.0.0.1:38407/480 > log/3/stdout480 2> log/3/stderr480 === End of file commands.log === Start of file netrc480 machine 127.0.0.1 login alice password "password\r\ncommand" === End of file netrc480 === Start of file pop3_server.log 19:29:06.108892 POP3 server listens on port IPv4/38407 19:29:06.109666 logged pid 130466 in log/3/server/pop3_server.pid 19:29:06.109896 Awaiting input 19:29:06.876103 ====> Client connect 19:29:06.876819 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]+OK curl POP3 server ready to serve [CR][LF]" 19:29:06.878937 < "CAPA" 19:29:06.879248 > "-ERR Unrecognized command[CR][LF]" 19:29:06.880518 < "RETR verifiedserver" 19:29:06.880778 return proof we are we 19:29:06.881028 > "+OK Mail transfer starts[CR][LF]" 19:29:06.881250 > "WE ROOLZ: 130466[CR][LF]" 19:29:06.881633 > ".[CR][LF]" 19:29:06.886436 < "QUIT" 19:29:06.886757 > "+OK curl POP3 server signing off[CR][LF]" 19:29:06.887506 MAIN sockfilt said DISC 19:29:06.887815 ====> Client disconnected 19:29:06.888184 Awaiting input === End of file pop3_server.log === Start of file pop3_sockfilt.log 19:29:06.571939 Running IPv4 version 19:29:06.572305 Listening on port 38407 19:29:06.572577 Wrote pid 130534 to log/3/server/pop3_sockfilt.pid 19:29:06.572845 Wrote port 38407 to log/3/server/pop3_server.port 19:29:06.572962 Received PING (on stdin) 19:29:07.340268 ====> Client connect 19:29:07.341485 Received DATA (on stdin) 19:29:07.341590 > 178 bytes data, server => client 19:29:07.341672 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:29:07.341744 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:29:07.341809 ' \___|\___/|_| \_\_____|\r\n+OK curl POP3 server ready to ser' 19:29:07.341985 've \r\n' 19:29:07.342495 < 6 bytes data, client => server 19:29:07.342628 'CAPA\r\n' 19:29:07.343885 Received DATA (on stdin) 19:29:07.343986 > 27 bytes data, server => client 19:29:07.344058 '-ERR Unrecognized command\r\n' 19:29:07.344458 < 21 bytes data, client => server 19:29:07.344590 'RETR verifiedserver\r\n' 19:29:07.345488 Received DATA (on stdin) 19:29:07.345608 > 26 bytes data, server => client 19:29:07.345687 '+OK Mail transfer starts\r\n' 19:29:07.346014 Received DATA (on stdin) 19:29:07.346150 > 18 bytes data, server => client 19:29:07.346223 'WE ROOLZ: 130466\r\n' 19:29:07.346412 Received DATA (on stdin) 19:29:07.346534 > 3 bytes data, server => client 19:29:07.346622 '.\r\n' 19:29:07.350406 < 6 bytes data, client => server 19:29:07.350539 'QUIT\r\n' 19:29:07.351174 Received DATA (on stdin) 19:29:07.351291 > 34 bytes data, server => client 19:29:07.351362 '+OK curl POP3 server signing off\r\n' 19:29:07.351697 ====> Client disconnect 19:29:07.352270 Received ACKD (on stdin) === End of file pop3_sockfilt.log === Start of file server.cmd Testnum 480 === End of file server.cmd === Start of file valgrind480 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with sonamCMD (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/4/valgrind487 ../src/curl -q --output log/4/curl487.out --include --trace-ascii log/4/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:43669/{{what:64dec}}/487" -g > log/4/stdout487 2> log/4/stderr487 CMD (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/1/valgrind488 ../src/curl -q --output log/1/curl488.out --include --trace-ascii log/1/trace488 --trace-config all --trace-time --output-dir log/1 --url @- log/1/stdout488 2> log/1/stderr488 e: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind480 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/4/valgrind487 ../src/curl -q --output log/4/curl487.out --include --trace-ascii log/4/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:43669/{{what:64dec}}/487" -g > log/4/stdout487 2> log/4/stderr487 487: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind487 ../src/curl -q --output log/4/curl487.out --include --trace-ascii log/4/trace487 --trace-config all --trace-time --variable what=not-base64-data --expand-url "http://127.0.0.1:43669/{{what:64dec}}/487" -g > log/4/stdout487 2> log/4/stderr487 === End of file commands.log === Start of file http_server.log 19:29:07.638016 ====> Client connect 19:29:07.638255 accept_connection 3 returned 4 19:29:07.638372 accept_connection 3 returned 0 19:29:07.638472 Read 93 bytes 19:29:07.638545 Process 93 bytes request 19:29:07.638627 Got request: GET /verifiedserver HTTP/1.1 19:29:07.638699 Are-we-friendly question received 19:29:07.638869 Wrote request (93 bytes) input to log/4/server.input 19:29:07.639025 Identifying ourselves as friends 19:29:07.639547 Response sent (57 bytes) and written to log/4/server.response 19:29:07.639682 special request received, no persistency 19:29:07.639775 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 487 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind487 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind488 ../src/curl -q --output log/1/curl488.out --include --trace-ascii log/1/trace488 --trace-config all --trace-time --output-dir log/1 --url @- log/1/stdout488 2> log/1/stderr488 488: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 488 === Start of file commands.log ../libtool --mode=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/valgrind488 ../src/curl -q --output log/1/curl488.out --include --trace-ascii log/1/trace488 --trace-config all --trace-time --output-dir log/1 --url @- log/1/stdout488 2> log/1/stderr488 === End of file commands.log === Start of file http_server.log 19:29:07.684751 ====> Client connect 19:29:07.684968 accept_connection 3 returned 4 19:29:07.685068 accept_connection 3 returned 0 19:29:07.685523 Read 93 bytes 19:29:07.685664 Process 93 bytes request 19:29:07.685738 Got request: GET /verifiedserver HTTP/1.1 19:29:07.685795 Are-we-friendly question received 19:29:07.686039 Wrote request (93 bytes) input to log/1/server.input 19:29:07.686208 Identifying ourselves as friends 19:29:07.686612 Response sent (57 bytes) and written to log/1/server.response 19:29:07.686717 special request received, no persistency 19:29:07.686777 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 488 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file stdin-for-488 http://127.0.0.1:41477/a http://127.0.0.1:41477/b === End of file stdin-for-488 === Start of file valgrind488 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- CMD (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/2/valgrind486 ../src/curl -q --output log/2/curl486.out --include --trace-ascii log/2/trace486 --trace-config all --trace-time --netrc --netrc-file log/2/netrc486 -L -x http://127.0.0.1:39599/ http://a.com/ > log/2/stdout486 2> log/2/stderr486 CMD (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/valgrind489 ../src/curl -q --output log/3/curl489.out --include --trace-ascii log/3/trace489 --trace-config all --trace-time --output-dir log/3 --url @log/3/urls > log/3/stdout489 2> log/3/stderr489 valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind488 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/2/valgrind486 ../src/curl -q --output log/2/curl486.out --include --trace-ascii log/2/trace486 --trace-config all --trace-time --netrc --netrc-file log/2/netrc486 -L -x http://127.0.0.1:39599/ http://a.com/ > log/2/stdout486 2> log/2/stderr486 486: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind486 ../src/curl -q --output log/2/curl486.out --include --trace-ascii log/2/trace486 --trace-config all --trace-time --netrc --netrc-file log/2/netrc486 -L -x http://127.0.0.1:39599/ http://a.com/ > log/2/stdout486 2> log/2/stderr486 === End of file commands.log === Start of file http_server.log 19:29:07.614941 ====> Client connect 19:29:07.615192 accept_connection 3 returned 4 19:29:07.615334 accept_connection 3 returned 0 19:29:07.615828 Read 93 bytes 19:29:07.615964 Process 93 bytes request 19:29:07.616038 Got request: GET /verifiedserver HTTP/1.1 19:29:07.616096 Are-we-friendly question received 19:29:07.616241 Wrote request (93 bytes) input to log/2/server.input 19:29:07.616371 Identifying ourselves as friends 19:29:07.616764 Response sent (57 bytes) and written to log/2/server.response 19:29:07.616850 special request received, no persistency 19:29:07.616902 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind486 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind486 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-config all --trace-time --output-dir log/3 --url @log/3/urls > log/3/stdout489 2> log/3/stderr489 489: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 489 === Start of file commands.log ../libtool --mode=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-config all --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 19:29:06.970269 ====> Client connect 19:29:06.970496 accept_connection 3 returned 4 19:29:06.970616 accept_connection 3 returned 0 19:29:06.970765 Read 93 bytes 19:29:06.970854 Process 93 bytes request 19:29:06.970990 Got request: GET /verifiedserver HTTP/1.1 19:29:06.971090 Are-we-friendly question received 19:29:06.971276 Wrote request (93 bytes) input to log/3/server.input 19:29:06.971446 Identifying ourselves as friends 19:29:06.972009 Response sent (57 bytes) and written to log/3/server.response 19:29:06.972104 special request received, no persistency 19:29:06.972159 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 489 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file urls http://127.0.0.1:37525/a http://127.0.0.1:37525/b === End of file urls === Start of file valgrind489 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this CMD (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/4/valgrind490 ../src/curl -q --output log/4/curl490.out --include --trace-ascii log/4/trace490 --trace-config all --trace-time http://127.0.0.1:43669/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 CMD (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/1/valgrind491 ../src/curl -q --output log/1/curl491.out --include --trace-ascii log/1/trace491 --trace-config all --trace-time http://127.0.0.1:41477/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://127.0.0.1:43669/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 490: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:43669/490 -T '{log/4/in490,log/4/in490}' > log/4/stdout490 2> log/4/stderr490 === End of file commands.log === Start of file http_server.log 19:29:08.282192 ====> Client connect 19:29:08.282453 accept_connection 3 returned 4 19:29:08.282577 accept_connection 3 returned 0 19:29:08.282690 Read 93 bytes 19:29:08.282769 Process 93 bytes request 19:29:08.282839 Got request: GET /verifiedserver HTTP/1.1 19:29:08.282908 Are-we-friendly question received 19:29:08.283078 Wrote request (93 bytes) input to log/4/server.input 19:29:08.283254 Identifying ourselves as friends 19:29:08.283791 Response sent (57 bytes) and written to log/4/server.response 19:29:08.283881 special request received, no persistency 19:29:08.283938 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind490 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind490 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-config all --trace-time http://127.0.0.1:41477/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 491: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:41477/491 -T '{log/1/in491,log/1/bad491}' > log/1/stdout491 2> log/1/stderr491 === End of file commands.log === Start of file http_server.log 19:29:08.337027 ====> Client connect 19:29:08.337256 accept_connection 3 returned 4 19:29:08.337378 accept_connection 3 returned 0 19:29:08.337486 Read 93 bytes 19:29:08.337564 Process 93 bytes request 19:29:08.337643 Got request: GET /verifiedserver HTTP/1.1 19:29:08.337716 Are-we-friendly question received 19:29:08.338018 Wrote request (93 bytes) input to log/1/server.input 19:29:08.338215 Identifying ourselves as friends 19:29:08.338727 Response sent (57 bytes) and written to log/1/server.response 19:29:08.338813 special request received, no persistency 19:29:08.338866 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind491 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 3CMD (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/2/valgrind492 ../src/curl -q --output log/2/curl492.out --include --trace-ascii log/2/trace492 --trace-config all --trace-time 'http://127.0.0.1:39599/{one,two}/' -T '{log/2/first492,log/2/second492}' -H "Testno: 492" > log/2/stdout492 2> log/2/stderr492 CMD (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/valgrind493 ../src/curl -q --include --trace-ascii log/3/trace493 --trace-config all --trace-time -x http://127.0.0.1:37525 http://this.hsts.example/493 --hsts log/3/input493 -w '%{url_effective}\n' > log/3/stdout493 2> log/3/stderr493 2 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time 'http://127.0.0.1:39599/{one,two}/' -T '{log/2/first492,log/2/second492}' -H "Testno: 492" > log/2/stdout492 2> log/2/stderr492 492: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time 'http://127.0.0.1:39599/{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 first492 first 492 contents === End of file first492 === Start of file http_server.log 19:29:08.343326 ====> Client connect 19:29:08.343549 accept_connection 3 returned 4 19:29:08.343667 accept_connection 3 returned 0 19:29:08.343774 Read 93 bytes 19:29:08.343856 Process 93 bytes request 19:29:08.343954 Got request: GET /verifiedserver HTTP/1.1 19:29:08.344049 Are-we-friendly question received 19:29:08.344288 Wrote request (93 bytes) input to log/2/server.input 19:29:08.344488 Identifying ourselves as friends 19:29:08.345003 Response sent (57 bytes) and written to log/2/server.response 19:29:08.345085 special request received, no persistency 19:29:08.345137 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind492 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind492 CMD (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/2/valgrind496 ../src/curl -q --output log/2/curl496.out --include --trace-ascii log/2/trace496 --trace-config all --trace-time 0 -Z -Tz > log/2/stdout496 2> log/2/stderr496 CMD (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/1/valgrind495 ../src/curl -q --output log/1/curl495.out --include --trace-ascii log/1/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:41477/495 --netrc-optional > log/1/stdout495 2> log/1/stderr495 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/3/valgrind493 ../src/curl -q --include --trace-ascii log/3/trace493 --trace-config all --trace-time -x http://127.0.0.1:37525 http://this.hsts.example/493 --hsts log/3/input493 -w '%{url_effective}\n' > log/3/stdout493 2> log/3/stderr493 493: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:08.777889871 +0000 +++ log/3/check-generated 2025-05-23 19:29:08.773889770 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 403 not OK at all[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] -https://this.hsts.example/493[LF] == Contents of files in the log/3/ dir after test 493 === Start of file check-expected HTTP/1.1 403 not OK at all[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] https://this.hsts.example/493[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind493 ../src/curl -q --include --trace-ascii log/3/trace493 --trace-config all --trace-time -x http://127.0.0.1:37525 http://this.hsts.example/493 --hsts log/3/input493 -w '%{url_effective}\n' > log/3/stdout493 2> log/3/stderr493 === End of file commands.log === Start of file http_server.log 19:29:07.672617 ====> Client connect 19:29:07.672847 accept_connection 3 returned 4 19:29:07.672978 accept_connection 3 returned 0 19:29:07.673107 Read 93 bytes 19:29:07.673228 Process 93 bytes request 19:29:07.673334 Got request: GET /verifiedserver HTTP/1.1 19:29:07.673488 Are-we-friendly question received 19:29:07.673910 Wrote request (93 bytes) input to log/3/server.input 19:29:07.674191 Identifying ourselves as friends 19:29:07.674802 Response sent (57 bytes) and written to log/3/server.response 19:29:07.674915 special request received, no persistency 19:29:07.674986 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file input493 .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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind493 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind493 * starts no server 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/2/valgrind496 ../src/curl -q --output log/2/curl496.out --include --trace-ascii log/2/trace496 --trace-config all --trace-time 0 -Z -Tz > log/2/stdout496 2> log/2/stderr496 curl returned 1, when expecting 26 496: exit FAILED == Contents of files in the log/2/ 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/2/valgrind496 ../src/curl -q --output log/2/curl496.out --include --trace-ascii log/2/trace496 --trace-config all --trace-time 0 -Z -Tz > log/2/stdout496 2> log/2/stderr496 === End of file commands.log === Start of file server.cmd Testnum 496 === End of file server.cmd === Start of file valgrind496 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind496 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/1/valgrind495 ../src/curl -q --output log/1/curl495.out --include --trace-ascii log/1/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:41477/495 --netrc-optional > log/1/stdout495 2> log/1/stderr495 495: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind495 ../src/curl -q --output log/1/curl495.out --include --trace-ascii log/1/trace495 --trace-config all --trace-time http://foo%40bar:secret@127.0.0.1:41477/495 --netrc-optional > log/1/stdout495 2> log/1/stderr495 === End of file commands.log === Start of file http_server.log 19:29:08.969235 ====> CCMD (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/4/valgrind494 ../src/curl -q --output log/4/curl494.out --include --trace-ascii log/4/trace494 --trace-config all --trace-time --netrc --netrc-file log/4/netrc494 ftp://127.0.0.1:40809/494 > log/4/stdout494 2> log/4/stderr494 lient connect 19:29:08.969457 accept_connection 3 returned 4 19:29:08.969571 accept_connection 3 returned 0 19:29:08.969672 Read 93 bytes 19:29:08.969758 Process 93 bytes request 19:29:08.969995 Got request: GET /verifiedserver HTTP/1.1 19:29:08.970064 Are-we-friendly question received 19:29:08.970236 Wrote request (93 bytes) input to log/1/server.input 19:29:08.970438 Identifying ourselves as friends 19:29:08.971026 Response sent (57 bytes) and written to log/1/server.response 19:29:08.971106 special request received, no persistency 19:29:08.971160 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 495 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind495 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind495 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/4/valgrind494 ../src/curl -q --output log/4/curl494.out --include --trace-ascii log/4/trace494 --trace-config all --trace-time --netrc --netrc-file log/4/netrc494 ftp://127.0.0.1:40809/494 > log/4/stdout494 2> log/4/stderr494 494: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind494 ../src/curl -q --output log/4/curl494.out --include --trace-ascii log/4/trace494 --trace-config all --trace-time --netrc --netrc-file log/4/netrc494 ftp://127.0.0.1:40809/494 > log/4/stdout494 2> log/4/stderr494 === End of file commands.log === Start of file ftp_server.log 19:29:08.479234 ====> Client connect 19:29:08.480070 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:08.481861 < "USER anonymous" 19:29:08.482212 > "331 We are happy you popped in![CR][LF]" 19:29:08.483362 < "PASS ftp@example.com" 19:29:08.483664 > "230 Welcome you silly person[CR][LF]" 19:29:08.484712 < "PWD" 19:29:08.485010 > "257 "/" is current directory[CR][LF]" 19:29:08.486323 < "EPSV" 19:29:08.486567 ====> Passive DATA channel requested by client 19:29:08.486728 DATA sockfilt for passive data channel starting... 19:29:08.496202 DATA sockfilt for passive data channel started (pid 131428) 19:29:08.497000 DATA sockfilt for passive data channel listens on port 44793 19:29:08.498273 > "229 Entering Passive Mode (|||44793|)[LF]" 19:29:08.498564 Client has been notified that DATA conn will be accepted on port 44793 19:29:08.500067 Client connects to port 44793 19:29:08.500329 ====> Client established passive DATA connection on port 44793 19:29:08.501039 < "TYPE I" 19:29:08.502518 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:08.503097 < "SIZE verifiedserver" 19:29:08.504484 > "213 18[CR][LF]" 19:29:08.505063 < "RETR verifiedserver" 19:29:08.506169 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:08.507702 =====> Closing passive DATA connection... 19:29:08.507864 Server disconnects passive DATA connection 19:29:08.508275 Fancy that; client wants to DISC, too 19:29:08.508777 Server disconnected passive DATA connection 19:29:08.508986 DATA sockfilt for passive data channel quits (pid 131428) 19:29:08.510168 DATA sockfilt for passive data channel quit (pid 131428) 19:29:08.510387 =====> Closed passive DATA connection 19:29:08.511007 > "226 File transfer complete[CR][LF]" 19:29:08.550716 < "QUIT" 19:29:08.551028 > "221 bye bye baby[CR][LF]" 19:29:08.555295 MAIN sockfilt said DISC 19:29:08.555636 ====> Client disconnected 19:29:08.555951 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:07.943240 ====> Client connect 19:29:07.944721 Received DATA (on stdin) 19:29:07.944829 > 160 bytes data, server => client 19:29:07.944914 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:07.944988 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:07.945053 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:07.945452 < 16 bytes data, client => server 19:29:07.945589 'USER anonymous\r\n' 19:29:07.946584 Received DATA (on stdin) 19:29:07.946712 > 33 bytes data, server => client 19:29:07.946784 '331 We are happy you popped in!\r\n' 19:29:07.947263 < 22 bytes data, client => server 19:29:07.947484 'PASS ftp@example.com\r\n' 19:29:07.948058 Received DATA (on stdin) 19:29:07.948175 > 30 bytes data, server => client 19:29:07.948258 '230 Welcome you silly person\r\n' 19:29:07.948678 < 5 bytes data, client => server 19:29:07.948797 'PWD\r\n' 19:29:07.949399 Received DATA (on stdin) 19:29:07.949505 > 30 bytes data, server => client 19:29:07.949584 '257 "/" is current directory\r\n' 19:29:07.950255 < 6 bytes data, client => server 19:29:07.950386 'EPSV\r\n' 19:29:07.961994 Received DATA (on stdin) 19:29:07.962138 > 38 bytes data, server => client 19:29:07.962284 '229 Entering Passive Mode (|||44793|)\n' 19:29:07.963853 < 8 bytes data, client => server 19:29:07.963982 'TYPE I\r\n' 19:29:07.965722 Received DATA (on stdin) 19:29:07.965930 > 33 bytes data, server => client 19:29:07.966093 '200 I modify TYPE as you wanted\r\n' 19:29:07.966550 < 21 bytes data, client => server 19:29:07.966661 'SIZE verifiedserver\r\n' 19:29:07.967819 Received DATA (on stdin) 19:29:07.967947 > 8 bytes data, server => client 19:29:07.968086 '213 18\r\n' 19:29:07.968510 < 21 bytes data, client => server 19:29:07.968632 'RETR verifiedserver\r\n' 19:29:07.969741 Received DATA (on stdin) 19:29:07.969989 > 29 bytes data, server => client 19:29:07.970128 '150 Binary junk (18 bytes).\r\n' 19:29:07.975019 Received DATA (on stdin) 19:29:07.975134 > 28 bytes data, server => client 19:29:07.975237 '226 File transfer complete\r\n' 19:29:08.014438 < 6 bytes data, client => server 19:29:08.014CMD (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/valgrind497 ../src/curl -q --output log/3/curl497.out --include --trace-ascii log/3/trace497 --trace-config all --trace-time http://127.0.0.1:37525/497 > log/3/stdout497 2> log/3/stderr497 CMD (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/1/valgrind499 ../src/curl -q --output log/1/curl499.out --include --trace-ascii log/1/trace499 --trace-config all --trace-time http://127.0.0.1:41477/499 -I > log/1/stdout499 2> log/1/stderr499 CMD (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/4/valgrind500 ./libtest/lib500 http://127.0.0.1:43669/500 log/4/ip500 > log/4/stdout500 2> log/4/stderr500 600 'QUIT\r\n' 19:29:08.015664 Received DATA (on stdin) 19:29:08.015781 > 18 bytes data, server => client 19:29:08.015857 '221 bye bye baby\r\n' 19:29:08.019383 ====> Client disconnect 19:29:08.020565 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:08.958808 Running IPv4 version 19:29:08.959260 Listening on port 44793 19:29:08.959610 Wrote pid 131428 to log/4/server/ftp_sockdata.pid 19:29:08.960294 Received PING (on stdin) 19:29:08.960908 Received PORT (on stdin) 19:29:08.964228 ====> Client connect 19:29:08.970886 Received DATA (on stdin) 19:29:08.971016 > 18 bytes data, server => client 19:29:08.971140 'WE ROOLZ: 109451\r\n' 19:29:08.971654 ====> Client disconnect 19:29:08.972433 Received DISC (on stdin) 19:29:08.972539 Crikey! Client also wants to disconnect 19:29:08.972826 Received ACKD (on stdin) 19:29:08.973537 Received QUIT (on stdin) 19:29:08.973621 quits 19:29:08.973941 ============> 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 valgrind494 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind494 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-config all --trace-time http://127.0.0.1:37525/497 > log/3/stdout497 2> log/3/stderr497 497: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:37525/497 > log/3/stdout497 2> log/3/stderr497 === End of file commands.log === Start of file http_server.log 19:29:08.381829 ====> Client connect 19:29:08.382080 accept_connection 3 returned 4 19:29:08.382209 accept_connection 3 returned 0 19:29:08.382328 Read 93 bytes 19:29:08.382409 Process 93 bytes request 19:29:08.382488 Got request: GET /verifiedserver HTTP/1.1 19:29:08.382557 Are-we-friendly question received 19:29:08.382720 Wrote request (93 bytes) input to log/3/server.input 19:29:08.382874 Identifying ourselves as friends 19:29:08.383434 Response sent (57 bytes) and written to log/3/server.response 19:29:08.383536 special request received, no persistency 19:29:08.383605 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 497 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind497 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind497 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/4/valgrind500 ./libtest/lib500 http://127.0.0.1:43669/500 log/4/ip500 > log/4/stdout500 2> log/4/stderr500 500: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind500 ./libtest/lib500 http://127.0.0.1:43669/500 log/4/ip500 > log/4/stdout500 2> log/4/stderr500 === End of file commands.log === Start of file http_server.log 19:29:09.675663 ====> Client connect 19:29:09.675886 accept_connection 3 returned 4 19:29:09.676008 accept_connection 3 returned 0 19:29:09.676130 Read 93 bytes 19:29:09.676208 Process 93 bytes request 19:29:09.676282 Got request: GET /verifiedserver HTTP/1.1 19:29:09.676348 Are-we-friendly question received 19:29:09.676514 Wrote request (93 bytes) input to log/4/server.input 19:29:09.676676 Identifying ourselves as friends 19:29:09.677170 Response sent (57 bytes) and written to log/4/server.response 19:29:09.677257 special request received, no persistency 19:29:09.677329 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:CMD (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/2/valgrind498 ../src/curl -q --output log/2/curl498.out --include --trace-ascii log/2/trace498 --trace-config all --trace-time http://127.0.0.1:39599/498 --max-redirs 400 --location > log/2/stdout498 2> log/2/stderr498 43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 500 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind500 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind500 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-config all --trace-time http://127.0.0.1:41477/499 -I > log/1/stdout499 2> log/1/stderr499 499: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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-config all --trace-time http://127.0.0.1:41477/499 -I > log/1/stdout499 2> log/1/stderr499 === End of file commands.log === Start of file http_server.log 19:29:09.661389 ====> Client connect 19:29:09.661611 accept_connection 3 returned 4 19:29:09.661749 accept_connection 3 returned 0 19:29:09.662488 Read 93 bytes 19:29:09.662624 Process 93 bytes request 19:29:09.662699 Got request: GET /verifiedserver HTTP/1.1 19:29:09.662768 Are-we-friendly question received 19:29:09.662951 Wrote request (93 bytes) input to log/1/server.input 19:29:09.663141 Identifying ourselves as friends 19:29:09.663570 Response sent (57 bytes) and written to log/1/server.response 19:29:09.663657 special request received, no persistency 19:29:09.663709 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 499 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind499 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind499 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/2/valgrind498 ../src/curl -q --output log/2/curl498.out --include --trace-ascii log/2/trace498 --trace-config all --trace-time http://127.0.0.1:39599/498 --max-redirs 400 --location > log/2/stdout498 2> log/2/stderr498 curl returned 1, when expecting 56 498: exit FAILED == Contents of files in the log/2/ 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/2/valgrind498 ../src/curl -q --output log/2/curl498.out --include --trace-ascii log/2/trace498 --trace-config all --trace-time http://127.0.0.1:39599/498 --max-redirs 400 --location > log/2/stdout498 2> log/2/stderr498 === End of file commands.log === Start of file http_server.log 19:29:09.548146 ====> Client connect 19:29:09.548374 accept_connection 3 returned 4 19:29:09.548489 accept_connection 3 returned 0 19:29:09.548583 Read 93 bytes 19:29:09.548650 Process 93 bytes request 19:29:09.548716 Got request: GET /verifiedserver HTTP/1.1 19:29:09.548771 Are-we-friendly question received 19:29:09.548916 Wrote request (93 bytes) input to log/2/server.input 19:29:09.549047 Identifying ourselves as friends 19:29:09.549546 Response sent (57 bytes) and written to log/2/server.response 19:29:09.549643 special request received, no persistency 19:29:09.549702 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 498 === End of file server.cmd === Start of file server.responCMD (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/valgrind501 ./libtest/lib501 http://127.0.0.1:47/501 > log/3/stdout501 2> log/3/stderr501 CMD (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/4/valgrind502 ./libtest/lib502 file:///build/curl/src/build-curl/tests/log/4/test502.txt > log/4/stdout502 2> log/4/stderr502 se HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind498 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind498 * starts no server 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/3/valgrind501 ./libtest/lib501 http://127.0.0.1:47/501 > log/3/stdout501 2> log/3/stderr501 lib501 returned 1, when expecting 3 501: exit FAILED == Contents of files in the log/3/ 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/3/valgrind501 ./libtest/lib501 http://127.0.0.1:47/501 > log/3/stdout501 2> log/3/stderr501 === End of file commands.log === Start of file server.cmd Testnum 501 === End of file server.cmd === Start of file valgrind501 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind501 CMD (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/2/valgrind504 ./libtest/lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/2/stdout504 2> log/2/stderr504 CMD (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/valgrind505 ./libtest/lib505 ftp://127.0.0.1:43789/505 log/3/upload505 > log/3/stdout505 2> log/3/stderr505 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/4/valgrind502 ./libtest/lib502 file:///build/curl/src/build-curl/tests/log/4/test502.txt > log/4/stdout502 2> log/4/stderr502 502: data FAILED: --- log/4/check-expected 2025-05-23 19:29:10.281927626 +0000 +++ log/4/check-generated 2025-05-23 19:29:10.281927626 +0000 @@ -1,5 +0,0 @@ -foo[LF] - bar swsclose[LF] -bar[LF] - foo[LF] -moo[LF] == Contents of files in the log/4/ dir after test 502 === Start of file check-expected foo[LF] bar swsclose[LF] bar[LF] foo[LF] moo[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind502 ./libtest/lib502 file:///build/curl/src/build-curl/tests/log/4/test502.txt > log/4/stdout502 2> log/4/stderr502 === End of file commands.log === Start of file server.cmd Testnum 502 === End of file server.cmd === Start of file test502.txt foo bar swsclose bar foo moo === End of file test502.txt === Start of file valgrind502 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind502 * starts no server 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/2/valgrind504 ./libtest/lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/2/stdout504 2> log/2/stderr504 lib504 returned 1, when expecting 120 504: exit FAILED == Contents of files in the log/2/ 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/2/valgrind504 ./libtest/lib504 http://127.0.0.1:47/504 127.0.0.1:47 > log/2/stdout504 2> log/2/stderr504 === End of file commands.log === Start of file server.cmd Testnum 504 === End of file server.cmd === Start of file valgrind504 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind504 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/3/valgrind505 ./libtest/lib505 ftp://127.0.0.1:43789/505 log/3/upload505 > log/3/stdout505 2> log/3/stderr505 505: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind505 ./libtest/lib505 ftp://127.0.0.1:43789/505 log/3/upload505 > log/3/stdout505 2> log/3/stderr505 === End of file commands.log === Start of file ftp_server.log 19:29:10.206504 ====> Client connect 19:29:10.207179 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:10.208715 < "USER anonymous" 19:29:10.209005 > "331 We are happy you popped in![CR][LF]" 19:29:10.210034 < "PASS ftp@example.com" 19:29:10.210313 > "230 Welcome you silly person[CR][LF]" 19:29:10.211275 < "PWD" 19:29:10.211546 > "257 "/" is current directory[CR][LF]" 19:29:10.212517 < "EPSV" 19:29:10.212707 ====> Passive DATA channel requested by client 19:29:10.212819 DATA sockfilt for passive data channel starting... 19:29:10.219752 DATA sockfilt for passive data channel started (pid 132023) 19:29:10.220466 DATA sockfilt for passive data channel listens on port 36935 19:29:10.220738 > "229 Entering Passive Mode (|||36935|)[LF]" 19:29:10.220898 Client has been notified that DATA conn will be accepted on port 36935 19:29:10.221921 Client connects to port 36935 19:29:10.222167 ====> Client established passive DATA connection on port 36935 19:29:10.222645 < "TYPE I" 19:29:10.222895 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:10.223840 < "SIZE verifiedserver" 19:29:10.224112 > "213 18[CR][LF]" 19:29:10.225035 < "RETR verifiedserver" 19:29:10.225311 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:10.225968 =====> Closing passive DATA connection... 19:29:10.226165 Server disconnects passive DATA connection 19:29:10.226776 Server disconnected passive DATA connection 19:29:10.227015 DATA sockfilt for passive data channel quits (pid 132023) 19:29:10.228188 DATA sockfilt for passive data channel quit (pid 132023) 19:29:10.228402 =====> Closed passive DATA connection 19:29:10.228619 > "226 File transfer complete[CR][LF]" 19:29:10.230074 < "QUIT" 19:29:10.230513 > "221 bye bye baby[CR][LF]" 19:29:10.234650 MAIN sockfilt said DISC 19:29:10.234977 ====> Client disconnected 19:29:10.235309 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:10.670473 ====> Client connect 19:29:10.671707 Received DATA (on stdin) 19:29:10.671807 > 160 bytes data, server => client 19:29:10.671880 '220- _ _ ____ _ \r\n22CMD (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/4/valgrind507 ./libtest/lib507 http://non-existing-host.haxx.se/ > log/4/stdout507 2> log/4/stderr507 CMD (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/2/valgrind508 ./libtest/lib508 http://127.0.0.1:39599/508 > log/2/stdout508 2> log/2/stderr508 0- ___| | | | _ \| | ' 19:29:10.671944 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:10.672000 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:10.672442 < 16 bytes data, client => server 19:29:10.672566 'USER anonymous\r\n' 19:29:10.673345 Received DATA (on stdin) 19:29:10.673453 > 33 bytes data, server => client 19:29:10.673526 '331 We are happy you popped in!\r\n' 19:29:10.673962 < 22 bytes data, client => server 19:29:10.674094 'PASS ftp@example.com\r\n' 19:29:10.674651 Received DATA (on stdin) 19:29:10.674761 > 30 bytes data, server => client 19:29:10.674834 '230 Welcome you silly person\r\n' 19:29:10.675208 < 5 bytes data, client => server 19:29:10.675323 'PWD\r\n' 19:29:10.675887 Received DATA (on stdin) 19:29:10.675998 > 30 bytes data, server => client 19:29:10.676077 '257 "/" is current directory\r\n' 19:29:10.676474 < 6 bytes data, client => server 19:29:10.676593 'EPSV\r\n' 19:29:10.685076 Received DATA (on stdin) 19:29:10.685205 > 38 bytes data, server => client 19:29:10.685285 '229 Entering Passive Mode (|||36935|)\n' 19:29:10.686174 < 8 bytes data, client => server 19:29:10.686281 'TYPE I\r\n' 19:29:10.687229 Received DATA (on stdin) 19:29:10.687333 > 33 bytes data, server => client 19:29:10.687404 '200 I modify TYPE as you wanted\r\n' 19:29:10.687795 < 21 bytes data, client => server 19:29:10.687916 'SIZE verifiedserver\r\n' 19:29:10.688445 Received DATA (on stdin) 19:29:10.688545 > 8 bytes data, server => client 19:29:10.688611 '213 18\r\n' 19:29:10.688995 < 21 bytes data, client => server 19:29:10.689114 'RETR verifiedserver\r\n' 19:29:10.689643 Received DATA (on stdin) 19:29:10.689889 > 29 bytes data, server => client 19:29:10.689987 '150 Binary junk (18 bytes).\r\n' 19:29:10.692994 Received DATA (on stdin) 19:29:10.693113 > 28 bytes data, server => client 19:29:10.693197 '226 File transfer complete\r\n' 19:29:10.693857 < 6 bytes data, client => server 19:29:10.694045 'QUIT\r\n' 19:29:10.694842 Received DATA (on stdin) 19:29:10.695000 > 18 bytes data, server => client 19:29:10.695097 '221 bye bye baby\r\n' 19:29:10.695650 ====> Client disconnect 19:29:10.699334 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:10.683215 Running IPv4 version 19:29:10.683570 Listening on port 36935 19:29:10.683791 Wrote pid 132023 to log/3/server/ftp_sockdata.pid 19:29:10.683892 Received PING (on stdin) 19:29:10.684393 Received PORT (on stdin) 19:29:10.686002 ====> Client connect 19:29:10.690039 Received DATA (on stdin) 19:29:10.690141 > 18 bytes data, server => client 19:29:10.690232 'WE ROOLZ: 109394\r\n' 19:29:10.690681 Received DISC (on stdin) 19:29:10.690805 ====> Client forcibly disconnected 19:29:10.691552 Received QUIT (on stdin) 19:29:10.691663 quits 19:29:10.691939 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 505 === End of file server.cmd === Start of file upload505 Contents of a file to verify ftp upload works? === End of file upload505 === Start of file valgrind505 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind505 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/4/valgrind507 ./libtest/lib507 http://non-existing-host.haxx.se/ > log/4/stdout507 2> log/4/stderr507 lib507 returned 1, when expecting 6 507: exit FAILED == Contents of files in the log/4/ 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/4/valgrind507 ./libtest/lib507 http://non-existing-host.haxx.se/ > log/4/stdout507 2> log/4/stderr507 === End of file commands.log === Start of file http_server.log 19:29:10.857674 ====> Client connect 19:29:10.857966 accept_connection 3 returned 4 19:29:10.858077 accept_connection 3 returned 0 19:29:10.858525 Read 93 bytes 19:29:10.858661 Process 93 bytes request 19:29:10.858750 Got request: GET /verifiedserver HTTP/1.1 19:29:10.858811 Are-we-friendly question received 19:29:10.858969 Wrote request (93 bytes) input to log/4/server.input 19:29:10.859115 Identifying ourselves as friends 19:29:10.859533 Response sent (57 bytes) and written to log/4/server.response 19:29:10.859631 special request received, no persistency 19:29:10.859689 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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: 103118 === End of file server.response === Start of file valgrind507 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind507 test 0508...[send HTTP POST using read callback] ../libtool --mode=execute /usr/bCMD (0): ../src/curl --max-time 13 --output log/1/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:37849/verifiedserver" 2>log/1/http2_verify.log CMD (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/valgrind509 ./libtest/lib509 nothing > log/3/stdout509 2> log/3/stderr509 in/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind508 ./libtest/lib508 http://127.0.0.1:39599/508 > log/2/stdout508 2> log/2/stderr508 508: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind508 ./libtest/lib508 http://127.0.0.1:39599/508 > log/2/stdout508 2> log/2/stderr508 === End of file commands.log === Start of file http_server.log 19:29:10.911107 ====> Client connect 19:29:10.911332 accept_connection 3 returned 4 19:29:10.911450 accept_connection 3 returned 0 19:29:10.911557 Read 93 bytes 19:29:10.911633 Process 93 bytes request 19:29:10.911705 Got request: GET /verifiedserver HTTP/1.1 19:29:10.911775 Are-we-friendly question received 19:29:10.911948 Wrote request (93 bytes) input to log/2/server.input 19:29:10.912108 Identifying ourselves as friends 19:29:10.912584 Response sent (57 bytes) and written to log/2/server.response 19:29:10.912672 special request received, no persistency 19:29:10.912730 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 508 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind508 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind508 CMD (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/4/valgrind510 ./libtest/lib510 http://127.0.0.1:43669/510 > log/4/stdout510 2> log/4/stderr510 CMD (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/1/valgrind503 ./libtest/lib503 http://machine.503:41477/503 127.0.0.1:37849 > log/1/stdout503 2> log/1/stderr503 * starts no server 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/3/valgrind509 ./libtest/lib509 nothing > log/3/stdout509 2> log/3/stderr509 509: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:11.121948712 +0000 +++ log/3/check-generated 2025-05-23 19:29:11.121948712 +0000 @@ -1 +0,0 @@ -Callbacks were invoked![LF] == Contents of files in the log/3/ dir after test 509 === Start of file check-expected Callbacks were invoked![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind509 ./libtest/lib509 nothing > log/3/stdout509 2> log/3/stderr509 === End of file commands.log === Start of file server.cmd Testnum 509 === End of file server.cmd === Start of file valgrind509 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind509 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/4/valgrind510 ./libtest/lib510 http://127.0.0.1:43669/510 > log/4/stdout510 2> log/4/stderr510 510: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind510 ./libtest/lib510 http://127.0.0.1:43669/510 > log/4/stdout510 2> log/4/stderr510 === End of file commands.log === Start of file http_server.log 19:29:11.363933 ====> Client connect 19:29:11.364167 accept_connection 3 returned 4 19:29:11.364288 accept_connection 3 returned 0 19:29:11.364396 Read 93 bytes 19:29:11.364469 Process 93 bytes request 19:29:11.364544 Got request: GET /verifiedserver HTTP/1.1 19:29:11.364612 Are-we-friendly question received 19:29:11.364780 Wrote request (93 bytes) input to log/4/server.input 19:29:11.364941 Identifying ourselves as friends 19:29:11.365503 Response sent (57 bytes) and written to log/4/server.response 19:29:11.365591 special request received, no persistency 19:29:11.365819 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 510 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind510 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind510 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/1/server/http2_server.pid" --logfile "log/1/http2_server.log" --logdir "log/1" --portfile log/1/server/http2_server.port --config log/1/server.cmd --id 2 --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/1/http2_verify.out --silent --verbose --globoff "http://127.0.0.1:37849/verifiedserver" 2>log/1/http2_verify.log RUN: HTTP2 server is on PID 131892 port 37849 * pid http-proxy => 131892 131892 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/1/valgrind503 ./libtest/lib503 http://machine.503:41477/503 127.0.0.1:37849 > log/1/stdout503 2> log/1/stderr503 503: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind503 ./libtest/lib503 http://machine.503:41477/503 127.0.0.1:37849 > log/1/stdout503 2> log/1/stderr503 === End of file commands.log === Start of file http2_server.log 19:29:09.458582 Run as proxy, CONNECT to host 127.0.0.1 19:29:09.459138 Running HTTP IPv4 version on port 37849 19:29:09.459454 Wrote pid 131892 to log/1/server/http2_server.pid 19:29:09.459740 Wrote port 37849 to log/1/server/http2_server.port 19:29:10.406663 ====> Client connect 19:29:10.406789 accept_connection 3 returned 4 19:29:10.406903 accept_connection 3 returned 0 19:29:10.407012 Read 93 bytes 19:29:10.407110 Process 93 bytes request 19:29:10.407204 Got request: GET /verifCMD (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/2/valgrind511 ./libtest/lib511 ftp://127.0.0.1:36773/511 > log/2/stdout511 2> log/2/stderr511 iedserver HTTP/1.1 19:29:10.407274 Are-we-friendly question received 19:29:10.407445 Wrote request (93 bytes) input to log/1/proxy.input 19:29:10.407621 Identifying ourselves as friends 19:29:10.408163 Response sent (57 bytes) and written to log/1/proxy.response 19:29:10.408257 special request received, no persistency 19:29:10.408327 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:37849... * Connected to 127.0.0.1 (127.0.0.1) port 37849 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37849 > User-Agent: curl/8.13.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 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 131892 === End of file http2_verify.out === Start of file http_server.log 19:29:10.294366 ====> Client connect 19:29:10.294597 accept_connection 3 returned 4 19:29:10.294716 accept_connection 3 returned 0 19:29:10.294858 Read 93 bytes 19:29:10.294977 Process 93 bytes request 19:29:10.295076 Got request: GET /verifiedserver HTTP/1.1 19:29:10.295181 Are-we-friendly question received 19:29:10.295386 Wrote request (93 bytes) input to log/1/server.input 19:29:10.295584 Identifying ourselves as friends 19:29:10.296231 Response sent (57 bytes) and written to log/1/server.response 19:29:10.296337 special request received, no persistency 19:29:10.296399 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 131892 === End of file proxy.response === Start of file server.cmd connection-monitor Testnum 503 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file test503.txt foo bar bar foo moo === End of file test503.txt === Start of file valgrind503 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind503 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/2/valgrind511 ./libtest/lib511 ftp://127.0.0.1:36773/511 > log/2/stdout511 2> log/2/stderr511 511: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind511 ./libtest/lib511 ftp://127.0.0.1:36773/511 > log/2/stdout511 2> log/2/stderr511 === End of file commands.log === Start of file ftp_server.log 19:29:10.992778 ====> Client connect 19:29:10.993593 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:10.995552 < "USER anonymous" 19:29:10.995854 > "331 We are happy you popped in![CR][LF]" 19:29:10.997401 < "PASS ftp@example.com" 19:29:10.997834 > "230 Welcome you silly person[CR][LF]" 19:29:10.999353 < "PWD" 19:29:10.999659 > "257 "/" is current directory[CR][LF]" 19:29:11.001157 < "EPSV" 19:29:11.001395 ====> Passive DATA channel requested by client 19:29:11.001664 DATA sockfilt for passive data channel starting... 19:29:11.010024 DATA sockfilt for passive data channel started (pid 132287) 19:29:11.010830 DATA sockfilt for passive data channel listens on port 38365 19:29:11.011154 > "229 Entering Passive Mode (|||38365|)[LF]" 19:29:11.011339 Client has been notified that DATA conn will be accepted on port 38365 19:29:11.013098 Client connects to port 38365 19:29:11.013330 ====> Client established passive DATA connection on port 38365 19:29:11.014037 < "TYPE I" 19:29:11.014322 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:11.015776 < "SIZE verifiedserver" 19:29:11.016099 > "213 18[CR][LF]" 19:29:11.017694 < "RETR verifiedserver" 19:29:11.018070 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:11.018584 =====> Closing passive DATA connection... 19:29:11.018752 Server disconnects passive DATA connection 19:29:11.019813 Server disconnected passive DATA connection 19:29:11.020071 DATA sockfilt for passive data channel quits (pid 132287) 19:29:11.021234 DATA sockfilt for passive data channel quit (pid 132287) 19:29:11.021566 =====> Closed passive DATA connection 19:29:11.022263 > "226 File transfer complete[CR][LF]" 19:29:11.063104 < "QUIT" 19:29:11.063875 > "221 bye bye baby[CR][LF]" 19:29:11.065903 MAIN sockfilt said DISC 19:29:11.066160 ====> Client disconnected 19:29:11.066492 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:10.456704 ====> Client connect 19:29:10.458201 Received DATA (on stdin) 19:29:10.458317 > 160 bytes data, server => client 19:29:10.458406 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:10.458481 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:10.458554 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:10.459069 < 16 bytes data, client => server 19:29:10.459194 'USER anonymous\r\n' 19:29:10.460416 Received DATA (on stdin) 19:29:10.460592 > 33 bytes data, server => client 19:29:10.460671 '331 We are happy you popped in!\r\n' 19:29:10.461140 < 22 bytes data, client => server 19:29:10.461259 'PASS ftp@example.com\r\n' 19:29:10.462377 Received DATA (on stdin) 19:29:10.462493 > 30 bytes data, server => client 19:29:10.462565 '230 Welcome you silly person\r\n' 19:29:10.463037 < 5 bytes data, client => server 19:29:10.463163 'PWD\r\n' 19:29:10.464199 Received DATA (on stdin) 19:29:10.464325 > 30 bytes data, server => client 19:29:10.464406 '257 "/" is current directory\r\n' 19:29:10.464882 < 6 bytes data, client => server 19:29:10.464999 'EPSV\r\n' 19:29:10.475899 Received DATA (on stdin) 19:29:10.476020 > 38 bytes data, server => client 19:29:10.476095 '229 Entering Passive Mode (|||38365|)\n' 19:29:10.476CMD (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/valgrind512 ./libtest/lib512 http://127.0.0.1:37525/512 > log/3/stdout512 2> log/3/stderr512 CMD (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/4/valgrind513 ./libtest/lib513 http://127.0.0.1:43669/513 > log/4/stdout513 2> log/4/stderr513 CMD (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/1/valgrind514 ./libtest/lib514 http://127.0.0.1:41477/514 > log/1/stdout514 2> log/1/stderr514 CMD (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/2/valgrind515 ./libtest/lib515 http://127.0.0.1:39599/515 > log/2/stdout515 2> log/2/stderr515 995 < 8 bytes data, client => server 19:29:10.477131 'TYPE I\r\n' 19:29:10.478859 Received DATA (on stdin) 19:29:10.478990 > 33 bytes data, server => client 19:29:10.479065 '200 I modify TYPE as you wanted\r\n' 19:29:10.479490 < 21 bytes data, client => server 19:29:10.479612 'SIZE verifiedserver\r\n' 19:29:10.480629 Received DATA (on stdin) 19:29:10.480737 > 8 bytes data, server => client 19:29:10.480806 '213 18\r\n' 19:29:10.481242 < 21 bytes data, client => server 19:29:10.481375 'RETR verifiedserver\r\n' 19:29:10.483293 Received DATA (on stdin) 19:29:10.483396 > 29 bytes data, server => client 19:29:10.483487 '150 Binary junk (18 bytes).\r\n' 19:29:10.486152 Received DATA (on stdin) 19:29:10.486284 > 28 bytes data, server => client 19:29:10.486408 '226 File transfer complete\r\n' 19:29:10.526719 < 6 bytes data, client => server 19:29:10.526880 'QUIT\r\n' 19:29:10.527862 Received DATA (on stdin) 19:29:10.528008 > 18 bytes data, server => client 19:29:10.528472 '221 bye bye baby\r\n' 19:29:10.529948 ====> Client disconnect 19:29:10.531029 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:11.473261 Running IPv4 version 19:29:11.473631 Listening on port 38365 19:29:11.473982 Wrote pid 132287 to log/2/server/ftp_sockdata.pid 19:29:11.474124 Received PING (on stdin) 19:29:11.474741 Received PORT (on stdin) 19:29:11.477262 ====> Client connect 19:29:11.482694 Received DATA (on stdin) 19:29:11.482840 > 18 bytes data, server => client 19:29:11.482926 'WE ROOLZ: 116354\r\n' 19:29:11.483272 Received DISC (on stdin) 19:29:11.483406 ====> Client forcibly disconnected 19:29:11.484568 Received QUIT (on stdin) 19:29:11.484690 quits 19:29:11.484971 ============> 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 valgrind511 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind511 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/3/valgrind512 ./libtest/lib512 http://127.0.0.1:37525/512 > log/3/stdout512 2> log/3/stderr512 512: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind512 ./libtest/lib512 http://127.0.0.1:37525/512 > log/3/stdout512 2> log/3/stderr512 === End of file commands.log === Start of file http_server.log 19:29:10.721673 ====> Client connect 19:29:10.722074 accept_connection 3 returned 4 19:29:10.722204 accept_connection 3 returned 0 19:29:10.722312 Read 93 bytes 19:29:10.722387 Process 93 bytes request 19:29:10.722461 Got request: GET /verifiedserver HTTP/1.1 19:29:10.722535 Are-we-friendly question received 19:29:10.722707 Wrote request (93 bytes) input to log/3/server.input 19:29:10.722873 Identifying ourselves as friends 19:29:10.723407 Response sent (57 bytes) and written to log/3/server.response 19:29:10.723511 special request received, no persistency 19:29:10.723576 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 512 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind512 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind512 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/2/valgrind515 ./libtest/lib515 http://127.0.0.1:39599/515 > log/2/stdout515 2> log/2/stderr515 515: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind515 ./libtest/lib515 http://127.0.0.1:39599/515 > log/2/stdout515 2> log/2/stderr515 === End of file commands.log === Start of file http_server.log 19:29:12.188312 ====> Client connect 19:29:12.188548 accept_connection 3 returned 4 19:29:12.188678 accept_connection 3 returned 0 19:29:12.188828 Read 93 bytes 19:29:12.188916 Process 93 bytes request 19:29:12.188993 Got request: GET /verifiedserver HTTP/1.1 19:2CMD (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/valgrind516 ./libtest/lib516 http://127.0.0.1:37525/516 > log/3/stdout516 2> log/3/stderr516 CMD (0): ./libtest/lib518 http://127.0.0.1:37525/518 > log/3/stdout518 2> log/3/stderr518 CMD (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/2/valgrind517 ./libtest/lib517 nothing > log/2/stdout517 2> log/2/stderr517 9:12.189059 Are-we-friendly question received 19:29:12.189222 Wrote request (93 bytes) input to log/2/server.input 19:29:12.189385 Identifying ourselves as friends 19:29:12.190125 Response sent (57 bytes) and written to log/2/server.response 19:29:12.190326 special request received, no persistency 19:29:12.190466 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 515 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind515 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind516 ./libtest/lib516 http://127.0.0.1:37525/516 > log/3/stdout516 2> log/3/stderr516 516: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind516 ./libtest/lib516 http://127.0.0.1:37525/516 > log/3/stdout516 2> log/3/stderr516 === End of file commands.log === Start of file http_server.log 19:29:11.261168 ====> Client connect 19:29:11.261415 accept_connection 3 returned 4 19:29:11.261556 accept_connection 3 returned 0 19:29:11.261674 Read 93 bytes 19:29:11.261828 Process 93 bytes request 19:29:11.261925 Got request: GET /verifiedserver HTTP/1.1 19:29:11.262007 Are-we-friendly question received 19:29:11.262171 Wrote request (93 bytes) input to log/3/server.input 19:29:11.262336 Identifying ourselves as friends 19:29:11.262931 Response sent (57 bytes) and written to log/3/server.response 19:29:11.263031 special request received, no persistency 19:29:11.263111 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 516 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind516 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind516 prechecked ./libtest/lib518 check test 0518...[HTTP GET with more than FD_SETSIZE descriptors open] ./libtest/lib518 http://127.0.0.1:37525/518 > log/3/stdout518 2> log/3/stderr518 valgrind SKIPPED --pd---e--- OK (494 out of 1676, remaining: 03:26, took 0.333s, duration: 01:26) * starts no server 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/lib517 nothing > log/2/stdout517 2> log/2/stderr517 lib517 returned 1, when expecting 0 517: exit FAILED == 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/lib517 nothing > 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 valgrind517 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgriCMD (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/valgrind519 ./libtest/lib519 http://127.0.0.1:37525/519 > log/3/stdout519 2> log/3/stderr519 nd: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind517 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/4/valgrind513 ./libtest/lib513 http://127.0.0.1:43669/513 > log/4/stdout513 2> log/4/stderr513 lib513 returned 1, when expecting 42 513: exit FAILED == Contents of files in the log/4/ 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/4/valgrind513 ./libtest/lib513 http://127.0.0.1:43669/513 > log/4/stdout513 2> log/4/stderr513 === End of file commands.log === Start of file http_server.log 19:29:11.953420 ====> Client connect 19:29:11.953636 accept_connection 3 returned 4 19:29:11.953832 accept_connection 3 returned 0 19:29:11.953960 Read 93 bytes 19:29:11.954033 Process 93 bytes request 19:29:11.954110 Got request: GET /verifiedserver HTTP/1.1 19:29:11.954178 Are-we-friendly question received 19:29:11.954339 Wrote request (93 bytes) input to log/4/server.input 19:29:11.954484 Identifying ourselves as friends 19:29:11.954967 Response sent (57 bytes) and written to log/4/server.response 19:29:11.955059 special request received, no persistency 19:29:11.955111 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 513 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind513 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind513 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/lib514 http://127.0.0.1:41477/514 > log/1/stdout514 2> log/1/stderr514 514: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib514 http://127.0.0.1:41477/514 > log/1/stdout514 2> log/1/stderr514 === End of file commands.log === Start of file http_server.log 19:29:12.045080 ====> Client connect 19:29:12.045295 accept_connection 3 returned 4 19:29:12.045401 accept_connection 3 returned 0 19:29:12.045992 Read 93 bytes 19:29:12.046129 Process 93 bytes request 19:29:12.046203 Got request: GET /verifiedserver HTTP/1.1 19:29:12.046262 Are-we-friendly question received 19:29:12.046411 Wrote request (93 bytes) input to log/1/server.input 19:29:12.046535 Identifying ourselves as friends 19:29:12.046887 Response sent (57 bytes) and written to log/1/server.response 19:29:12.046967 special request received, no persistency 19:29:12.047021 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 514 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind514 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind514 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/lib519 http://127.0.0.1:37525/519 > log/3/stdout519 2> log/3/stderr519 519: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 51CMD (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/2/valgrind520 ./libtest/lib520 ftp://127.0.0.1:36773/520 > log/2/stdout520 2> log/2/stderr520 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/3/valgrind519 ./libtest/lib519 http://127.0.0.1:37525/519 > log/3/stdout519 2> log/3/stderr519 === End of file commands.log === Start of file http_server.log 19:29:12.139390 ====> Client connect 19:29:12.139627 accept_connection 3 returned 4 19:29:12.139744 accept_connection 3 returned 0 19:29:12.140243 Read 93 bytes 19:29:12.140379 Process 93 bytes request 19:29:12.140473 Got request: GET /verifiedserver HTTP/1.1 19:29:12.140548 Are-we-friendly question received 19:29:12.140731 Wrote request (93 bytes) input to log/3/server.input 19:29:12.140899 Identifying ourselves as friends 19:29:12.141348 Response sent (57 bytes) and written to log/3/server.response 19:29:12.141446 special request received, no persistency 19:29:12.141509 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 519 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind519 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind520 ./libtest/lib520 ftp://127.0.0.1:36773/520 > log/2/stdout520 2> log/2/stderr520 520: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind520 ./libtest/lib520 ftp://127.0.0.1:36773/520 > log/2/stdout520 2> log/2/stderr520 === End of file commands.log === Start of file ftp_server.log 19:29:12.688828 ====> Client connect 19:29:12.689576 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:12.690964 < "USER anonymous" 19:29:12.691237 > "331 We are happy you popped in![CR][LF]" 19:29:12.692157 < "PASS ftp@example.com" 19:29:12.692415 > "230 Welcome you silly person[CR][LF]" 19:29:12.693256 < "PWD" 19:29:12.693584 > "257 "/" is current directory[CR][LF]" 19:29:12.694488 < "EPSV" 19:29:12.694684 ====> Passive DATA channel requested by client 19:29:12.694787 DATA sockfilt for passive data channel starting... 19:29:12.701663 DATA sockfilt for passive data channel started (pid 132846) 19:29:12.702309 DATA sockfilt for passive data channel listens on port 36487 19:29:12.702583 > "229 Entering Passive Mode (|||36487|)[LF]" 19:29:12.702732 Client has been notified that DATA conn will be accepted on port 36487 19:29:12.703551 Client connects to port 36487 19:29:12.703759 ====> Client established passive DATA connection on port 36487 19:29:12.704227 < "TYPE I" 19:29:12.704459 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:12.705297 < "SIZE verifiedserver" 19:29:12.705641 > "213 18[CR][LF]" 19:29:12.706508 < "RETR verifiedserver" 19:29:12.706786 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:12.707218 =====> Closing passive DATA connection... 19:29:12.707416 Server disconnects passive DATA connection 19:29:12.707741 Server disconnected passive DATA connection 19:29:12.707915 DATA sockfilt for passive data channel quits (pid 132846) 19:29:12.708937 DATA sockfilt for passive data channel quit (pid 132846) 19:29:12.709115 =====> Closed passive DATA connection 19:29:12.709308 > "226 File transfer complete[CR][LF]" 19:29:12.754266 < "QUIT" 19:29:12.754513 > "221 bye bye baby[CR][LF]" 19:29:12.755156 MAIN sockfilt said DISC 19:29:12.755414 ====> Client disconnected 19:29:12.755738 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:12.152732 ====> Client connect 19:29:12.153964 Received DATA (on stdin) 19:29:12.154083 > 160 bytes data, server => client 19:29:12.154163 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:12.154233 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:12.154295 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:12.154717 < 16 bytes data, client => server 19:29:12.154834 'USER anonymous\r\n' 19:29:12.155509 Received DATA (on stdin) 19:29:12.155616 > 33 bytes data, server => client 19:29:12.155685 '331 We are happy you popped in!\r\n' 19:29:12.156079 < 22 bytes data, client => server 19:29:12.156184 'PASS ftp@example.com\r\n' 19:29:12.156684 Received DATA (on stdin) 19:29:12.156783 > 30 bytes data, server => client 19:29:12.156849 '230 Welcome you silly person\r\n' 19:29:12.157183 < 5 bytes data, client => server 19:29:12.157279 'PWD\r\n' 19:29:12.157852 Received DATA (on stdin) 19:29:12.157965 > 30 bytes data, server => client 19:29:12.158035 '257 "/" is current directory\r\n' 19:29:12.158403 < 6 bytes data, client => server 19:29:12.158503 'EPSV\r\n' 19:29:12.166847 Received DATA (on stdin) 19:29:12.166966 > 38 bytes data, server => client 19:29:12.167034 '229 Entering Passive Mode (|||36487|)\n' 19:29:12.167758 < 8 bytes data, client => server 19:29:12.167863 'TYPE I\r\n' 19:29:12.168728 Received DATA (on stdin) 19:29:12.168837 > 33 bytes data, server => client 19:29:12.168913 '200 I modify TYPE as you wanted\r\n' 19:29:12.169246 < 21 bytes data, client => server 19:29:12.169353 'SIZE verifiedserver\r\n' 19:29:12.169914 Received DATA (on stdin) 19:29:12.170033 > 8 bytes data, server => client 19:29:12.170103 '213 18\r\n' 19:29:12.170435 < 21 bytes data, client => server 19:29:12.170532 'RETR verifiedserver\r\n' 19:29:12.171061 Received DATA (on stdin) 19:29:12.171167 > 29 bytes data, server => client 19:29:12.171239 '150 Binary junk (18 bytes).\r\n' 19:29:12.173591 Received DATA (on stdin) 19:29:12.173760 > 28 bytes data, server => client 19:29:12.173857 '226 File transfer complete\r\n' 19:29:12.218169 < 6 bytes data, cliCMD (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/4/valgrind521 ./libtest/lib521 ftp://127.0.0.1/521/ 40809 > log/4/stdout521 2> log/4/stderr521 CMD (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/1/valgrind522 ./libtest/lib521 http://127.0.0.1/522 41477 > log/1/stdout522 2> log/1/stderr522 ent => server 19:29:12.218304 'QUIT\r\n' 19:29:12.218782 Received DATA (on stdin) 19:29:12.218878 > 18 bytes data, server => client 19:29:12.218947 '221 bye bye baby\r\n' 19:29:12.219262 ====> Client disconnect 19:29:12.219702 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:12.164950 Running IPv4 version 19:29:12.165285 Listening on port 36487 19:29:12.165484 Wrote pid 132846 to log/2/server/ftp_sockdata.pid 19:29:12.165583 Received PING (on stdin) 19:29:12.166235 Received PORT (on stdin) 19:29:12.167621 ====> Client connect 19:29:12.171280 Received DATA (on stdin) 19:29:12.171388 > 18 bytes data, server => client 19:29:12.171467 'WE ROOLZ: 116354\r\n' 19:29:12.171855 Received DISC (on stdin) 19:29:12.171968 ====> Client forcibly disconnected 19:29:12.172372 Received QUIT (on stdin) 19:29:12.172461 quits 19:29:12.172701 ============> 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 valgrind520 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind521 ./libtest/lib521 ftp://127.0.0.1/521/ 40809 > log/4/stdout521 2> log/4/stderr521 521: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind521 ./libtest/lib521 ftp://127.0.0.1/521/ 40809 > log/4/stdout521 2> log/4/stderr521 === End of file commands.log === Start of file ftp_server.log 19:29:13.091845 ====> Client connect 19:29:13.092500 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:13.094145 < "USER anonymous" 19:29:13.094413 > "331 We are happy you popped in![CR][LF]" 19:29:13.095666 < "PASS ftp@example.com" 19:29:13.096162 > "230 Welcome you silly person[CR][LF]" 19:29:13.097194 < "PWD" 19:29:13.097550 > "257 "/" is current directory[CR][LF]" 19:29:13.098867 < "EPSV" 19:29:13.099049 ====> Passive DATA channel requested by client 19:29:13.099146 DATA sockfilt for passive data channel starting... 19:29:13.109072 DATA sockfilt for passive data channel started (pid 132954) 19:29:13.111794 DATA sockfilt for passive data channel listens on port 36503 19:29:13.112575 > "229 Entering Passive Mode (|||36503|)[LF]" 19:29:13.112883 Client has been notified that DATA conn will be accepted on port 36503 19:29:13.118458 Client connects to port 36503 19:29:13.118701 ====> Client established passive DATA connection on port 36503 19:29:13.119236 < "TYPE I" 19:29:13.119654 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:13.122349 < "SIZE verifiedserver" 19:29:13.122919 > "213 18[CR][LF]" 19:29:13.124749 < "RETR verifiedserver" 19:29:13.125074 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:13.125711 =====> Closing passive DATA connection... 19:29:13.125909 Server disconnects passive DATA connection 19:29:13.128981 Server disconnected passive DATA connection 19:29:13.129232 DATA sockfilt for passive data channel quits (pid 132954) 19:29:13.130505 DATA sockfilt for passive data channel quit (pid 132954) 19:29:13.130731 =====> Closed passive DATA connection 19:29:13.130997 > "226 File transfer complete[CR][LF]" 19:29:13.171794 < "QUIT" 19:29:13.172117 > "221 bye bye baby[CR][LF]" 19:29:13.175944 MAIN sockfilt said DISC 19:29:13.176199 ====> Client disconnected 19:29:13.176532 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:12.555736 ====> Client connect 19:29:12.556947 Received DATA (on stdin) 19:29:12.557041 > 160 bytes data, server => client 19:29:12.557115 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:12.557181 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:12.557238 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:12.557626 < 16 bytes data, client => server 19:29:12.557807 'USER anonymous\r\n' 19:29:12.558850 Received DATA (on stdin) 19:29:12.558950 > 33 bytes data, server => client 19:29:12.559017 '331 We are happy you popped in!\r\n' 19:29:12.559381 < 22 bytes data, client => server 19:29:12.559495 'PASS ftp@example.com\r\n' 19:29:12.560207 Received DATA (on stdin) 19:29:12.560303 > 30 bytes data, server => client 19:29:12.560580 '230 Welcome you silly person\r\n' 19:29:12.560935 < 5 bytes data, client => server 19:29:12.561045 'PWD\r\n' 19:29:12.562016 Received DATA (on stdin) 19:29:12.562112 > 30 bytes data, server => client 19:29:12.562178 '257 "/" is current directory\r\n' 19:29:12.562571 < 6 bytes data, client => server 19:29:12.562687 'EPSV\r\n' 19:29:12.577730 Received DATA (on stdin) 19:29:12.577869 > 38 bytes data, server => client 19:29:12.577979 '229 Entering Passive Mode (|||36503|)\n' 19:29:12.582373 < 8 bytes data, client => server 19:29:12.582513 'TYPE I\r\n' 19:29:12.584255 Received DATA (on stdin) 19:29:12.584387 > 33 bytes data, server => client 19:29:12.584573 '200 I modify TYPE as you wanted\r\n' 19:29:12.585593 < 21 bytes data, client => server 19:29:12.585877 'SIZE verifiedserver\r\n' 19:29:12.587525 Received DATA (on stdin) 19:29:12.587679 > 8 bytes data, server => client 19:29:12.587839 '213 18\r\n' 19:29:12.588418 < 21 bytes data, client => server 19:29:12.588549 'RETR verifiedserver\r\n' 19:29:12.589792 Received DATA (on stdin) 19:29:12.589942 > 29 bytes data, server => client 19:29:12.590030 '150 Binary junk (18 bytes).\r\n' 19:29:12.595257 Received DATA (on stdin) 19:29:12.595405 > 28 bytes data, server => client 19:29:12.595503 '226 File transfer complete\r\n' 19:29:12.635614 < 6 bytes data, client => server 19:29:12.635772 'QUIT\r\n' 19:29:12.636375 Received DATA (on stdin) 19:29:12.636488 > 18 bytes data, server => client 19:29:12.636558 '221 bye bye baby\r\n' 19:29:12.639950 ====> Client disconnect 19:29:12.640482 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:13.571902 Running IPv4 version 19:29:13.572454 Listening on port 36503 19:29:13.572813 Wrote pid 132954 to log/4/server/ftp_sockdata.pid 19:29:13.573032 Received PING (on stdin) 19:29:13.573881 Received PORT (on stdin) 19:29:13.582528 ====> Client connect 19:29:13.592576 Received DATA (on stdin) 19:29:13.592725 > 18 bytes data, server => client 19:29:13.592801 'WE ROOLZ: 109451\r\n' 19:29:13.593036 Received DISC (on stdin) 19:29:13.593164 ====> Client forcibly disconnected 19:29:13.593820 Received QUIT (on stdin) 19:29:13.593952 quits 19:29:13.594219 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 521 === End of file server.cmd === Start of file valgrind521 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind521 CMD (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/valgrind523 ./libtest/lib523 http://www.example.com:999/523 http://127.0.0.1:37525 > log/3/stdout523 2> log/3/stderr523 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/1/valgrind522 ./libtest/lib521 http://127.0.0.1/522 41477 > log/1/stdout522 2> log/1/stderr522 522: stdout FAILED: --- log/1/check-expected 2025-05-23 19:29:13.658012373 +0000 +++ log/1/check-generated 2025-05-23 19:29:13.658012373 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/1/ dir after test 522 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind522 ./libtest/lib521 http://127.0.0.1/522 41477 > log/1/stdout522 2> log/1/stderr522 === End of file commands.log === Start of file http_server.log 19:29:13.642576 ====> Client connect 19:29:13.642805 accept_connection 3 returned 4 19:29:13.642916 accept_connection 3 returned 0 19:29:13.643015 Read 93 bytes 19:29:13.643098 Process 93 bytes request 19:29:13.643179 Got request: GET /verifiedserver HTTP/1.1 19:29:13.643250 Are-we-friendly question received 19:29:13.643406 Wrote request (93 bytes) input to log/1/server.input 19:29:13.643556 Identifying ourselves as friends 19:29:13.644070 Response sent (57 bytes) and written to log/1/server.response 19:29:13.644181 special request received, no persistency 19:29:13.644238 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 522 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind522 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind522 CMD (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/2/valgrind524 ./libtest/lib524 ftp://127.0.0.1:36773/path/to/ > log/2/stdout524 2> log/2/stderr524 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/3/valgrind523 ./libtest/lib523 http://www.example.com:999/523 http://127.0.0.1:37525 > log/3/stdout523 2> log/3/stderr523 523: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:13.714013779 +0000 +++ log/3/check-generated 2025-05-23 19:29:13.714013779 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/3/ dir after test 523 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind523 ./libtest/lib523 http://www.example.com:999/523 http://127.0.0.1:37525 > log/3/stdout523 2> log/3/stderr523 === End of file commands.log === Start of file http_server.log 19:29:12.688578 ====> Client connect 19:29:12.688829 accept_connection 3 returned 4 19:29:12.688956 accept_connection 3 returned 0 19:29:12.689407 Read 93 bytes 19:29:12.689527 Process 93 bytes request 19:29:12.689613 Got request: GET /verifiedserver HTTP/1.1 19:29:12.689814 Are-we-friendly question received 19:29:12.690026 Wrote request (93 bytes) input to log/3/server.input 19:29:12.690196 Identifying ourselves as friends 19:29:12.690606 Response sent (57 bytes) and written to log/3/server.response 19:29:12.690693 special request received, no persistency 19:29:12.690751 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 523 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind523 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind524 ./libtest/lib524 ftp://127.0.0.1:36773/path/to/ > log/2/stdout524 2> log/2/stderr524 524: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind524 ./libtest/lib524 ftp://127.0.0.1:36773/path/to/ > log/2/stdout524 2> log/2/stderr524 === End of file commands.log === Start of file ftp_server.log 19:29:13.267014 ====> Client connect 19:29:13.267809 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:13.269297 < "USER anonymous" 19:29:13.269681 > "331 We are happy you popped in![CR][LF]" 19:29:13.270671 < "PASS ftp@example.com" 19:29:13.271006 > "230 Welcome you silly person[CR][LF]" 19:29:13.272022 < "PWD" 19:29:13.272317 > "257 "/" is current directory[CR][LF]" 19:29:13.273499 < "EPSV" 19:29:13.273729 ====> Passive DATA channel requested by client 19:29:13.273853 DATA sockfilt for passive data channel starting... 19:29:13.281082 DATA sockfilt for passive data channel started (pid 133000) 19:29:13.281838 DATA sockfilt for passive data channel listens on port 43197 19:29:13.282170 > "229 Entering Passive Mode (|||43197|)[LF]" 19:29:13.282333 Client has been notified that DATA conn will be accepted on port 43197 19:29:13.283868 Client connects to port 43197 19:29:13.284118 ====> Client established passive DATA connection on port 43197 19:29:13.284608 < "TYPE I" 19:29:13.284866 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:13.286053 < "SIZE verifiedserver" 19:29:13.286403 > "213 18[CR][LF]" 19:29:13.287439 < "RETR verifiedserver" 19:29:13.287765 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:13.288243 =====> Closing passive DATA connection... 19:29:13.288465 Server disconnects passive DATA connection 19:29:13.289290 Server disconnected passive DATA connection 19:29:13.289688 DATA sockfilt for passive data channel quits (pid 133000) 19:29:13.290853 DATA sockfilt for passive data channel quit (pid 133000) 19:29:13.291071 =====> Closed passive DATA connection 19:29:13.291286 > "226 File transfer complete[CR][LF]" 19:29:13.334473 < "QUIT" 19:29:13.334779 > "221 bye bye baby[CR][LF]" 19:29:13.340273 MAIN sockfilt said DISC 19:29:13.340543 ====> Client disconnected 19:29:13.340853 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:12.730874 ====> Client connect 19:29:12.732085 Received DATA (on stdin) 19:29:12.732216 > 160 bytes data, server => client 19:29:12.732296 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:12.732369 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:12.732434 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:12.732990 < 16 bytes data, client => server 19:29:12.733132 'USER anonymous\r\n' 19:29:12.733927 Received DATA (on stdin) 19:29:12.734051 > 33 bytes data, server => client 19:29:12.734124 '331 We are happy you popped in!\r\n' 19:29:12.734524 < 22 bytes data, client => server 19:29:12.734649 'PASS ftp@example.com\r\n' 19:29:12.735267 Received DATA (on stdin) 19:29:12.735380 > 30 bytes data, server => client 19:29:12.735460 '230 Welcome you silly person\r\n' 19:29:12.735902 < 5 bytes data, client => server 19:29:12.736025 'PWD\r\n' 19:29:12.736577 Received DATA (on stdin) 19:29:12.736700 > 30 bytes data, server => client 19:29:12.736782 '257 "/" is current directory\r\n' 19:29:12.737202 < 6 bytes data, client => server 19:29:12.737382 'EPSV\r\n' 19:29:12.746428 Received DATA (on stdin) 19:29:12.746548 > 38 bytes data, server => client 19:29:12.746621 '229 Entering Passive Mode (|||43197|)\n' 19:29:12.747700 < 8 bytes data, client => server 19:29:12.747821 'TYPE I\r\n' 19:29:12.749127 Received DATA (on stdin) 19:29:12.749248 > 33 bytes data, serCMD (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/1/valgrind526 ./libtest/lib526 ftp://127.0.0.1:39333/path/526 > log/1/stdout526 2> log/1/stderr526 ver => client 19:29:12.749335 '200 I modify TYPE as you wanted\r\n' 19:29:12.749896 < 21 bytes data, client => server 19:29:12.750030 'SIZE verifiedserver\r\n' 19:29:12.750661 Received DATA (on stdin) 19:29:12.750777 > 8 bytes data, server => client 19:29:12.750844 '213 18\r\n' 19:29:12.751281 < 21 bytes data, client => server 19:29:12.751410 'RETR verifiedserver\r\n' 19:29:12.752020 Received DATA (on stdin) 19:29:12.752139 > 29 bytes data, server => client 19:29:12.752211 '150 Binary junk (18 bytes).\r\n' 19:29:12.755557 Received DATA (on stdin) 19:29:12.755685 > 28 bytes data, server => client 19:29:12.755772 '226 File transfer complete\r\n' 19:29:12.798278 < 6 bytes data, client => server 19:29:12.798430 'QUIT\r\n' 19:29:12.803617 Received DATA (on stdin) 19:29:12.803782 > 18 bytes data, server => client 19:29:12.803864 '221 bye bye baby\r\n' 19:29:12.804252 ====> Client disconnect 19:29:12.805389 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:13.744511 Running IPv4 version 19:29:13.744837 Listening on port 43197 19:29:13.745036 Wrote pid 133000 to log/2/server/ftp_sockdata.pid 19:29:13.745133 Received PING (on stdin) 19:29:13.745647 Received PORT (on stdin) 19:29:13.747948 ====> Client connect 19:29:13.752587 Received DATA (on stdin) 19:29:13.752708 > 18 bytes data, server => client 19:29:13.752785 'WE ROOLZ: 116354\r\n' 19:29:13.753308 Received DISC (on stdin) 19:29:13.753469 ====> Client forcibly disconnected 19:29:13.754141 Received QUIT (on stdin) 19:29:13.754255 quits 19:29:13.754538 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 524 === End of file server.cmd === Start of file valgrind524 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind524 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/1/valgrind526 ./libtest/lib526 ftp://127.0.0.1:39333/path/526 > log/1/stdout526 2> log/1/stderr526 526: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind526 ./libtest/lib526 ftp://127.0.0.1:39333/path/526 > log/1/stdout526 2> log/1/stderr526 === End of file commands.log === Start of file ftp_server.log 19:29:13.774805 ====> Client connect 19:29:13.775606 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:13.776924 < "USER anonymous" 19:29:13.777267 > "331 We are happy you popped in![CR][LF]" 19:29:13.778369 < "PASS ftp@example.com" 19:29:13.778895 > "230 Welcome you silly person[CR][LF]" 19:29:13.780108 < "PWD" 19:29:13.780497 > "257 "/" is current directory[CR][LF]" 19:29:13.781952 < "EPSV" 19:29:13.782584 ====> Passive DATA channel requested by client 19:29:13.783066 DATA sockfilt for passive data channel starting... 19:29:13.791961 DATA sockfilt for passive data channel started (pid 133218) 19:29:13.792694 DATA sockfilt for passive data channel listens on port 37241 19:29:13.793079 > "229 Entering Passive Mode (|||37241|)[LF]" 19:29:13.793272 Client has been notified that DATA conn will be accepted on port 37241 19:29:13.795127 Client connects to port 37241 19:29:13.795425 ====> Client established passive DATA connection on port 37241 19:29:13.796030 < "TYPE I" 19:29:13.796636 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:13.798586 < "SIZE verifiedserver" 19:29:13.799125 > "213 18[CR][LF]" 19:29:13.800490 < "RETR verifiedserver" 19:29:13.800769 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:13.801249 =====> Closing passive DATA connection... 19:29:13.801707 Server disconnects passive DATA connection 19:29:13.802510 Server disconnected passive DATA connection 19:29:13.802725 DATA sockfilt for passive data channel quits (pid 133218) 19:29:13.803863 DATA sockfilt for passive data channel quit (pid 133218) 19:29:13.804075 =====> Closed passive DATA connection 19:29:13.804277 > "226 File transfer complete[CR][LF]" 19:29:13.844954 < "QUIT" 19:29:13.845375 > "221 bye bye baby[CR][LF]" 19:29:13.850028 MAIN sockfilt said DISC 19:29:13.850444 ====> Client disconnected 19:29:13.850965 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:14.238714 ====> Client connect 19:29:14.239859 Received DATA (on stdin) 19:29:14.239949 > 160 bytes data, server => client 19:29:14.240020 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:14.240088 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:14.240150 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:14.240555 < 16 bytes data, client => server 19:29:14.240670 'USER anonymous\r\n' 19:29:14.241504 Received DATA (on stdin) 19:29:14.241631 > 33 bytes data, server => client 19:29:14.241787 '331 We are happy you popped in!\r\n' 19:29:14.242177 < 22 bytes data, client => server 19:29:14.242298 'PASS ftp@example.com\r\n' 19:29:14.243135 Received DATA (on stdin) 19:29:14.243343 > 30 bytes data, server => client 19:29:14.243437 '230 Welcome you silly person\r\n' 19:29:14.243883 < 5 bytes data, client => server 19:29:14.244011 'PWD\r\n' 19:29:14.244742 Received DATA (on stdin) 19:29:14.244884 > 30 bytes data, server => client 19:29:14.244962 '257 "/" is current directory\r\n' 19:29:14.245394 < 6 bytes data, client => server 19:29:14.245526 'EPSV\r\n' 19:29:14.257300 Received DATA (on stdin) 19:29:14.257424 > 38 bytes data, server => client 19:29:14.257504 '229 Entering Passive Mode (|||37241|)\n' 19:29:14.258580 < 8 bytes data, client => server 19:29:14.258863 'TYPE I\r\n' 19:29:14.260822 Received DATA (on stdin) 19:29:14.261011 > 33 bytes data, server => client 19:29:14.261145 '200 I modify TYPE as you wanted\r\n' 19:29:14.261714 < 21 bytes data, client => server 19:29:14.261993 'SIZE verifiedserver\r\n' 19:29:14.263376 Received DATA (on stdin) 19:29:14.263507 > 8 bytes data, server => client 19:29:14.263635 '213 18\r\n' 19:29:14.264147 < 21 bytes data, client => server 19:29:14.264259 'RETR verifiedserver\r\n' 19:29:14.265007 Received DATA (on stdin) 19:29:14.265096 > 29 bytes data, server => client 19:29:14.265170 '150 Binary junk (18 bytes).\r\n' 19:29:14.268518 Received DATA (on stdin) 19:29:14.268630 CMD (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/4/valgrind525 ./libtest/lib525 ftp://127.0.0.1:40809/path/525 log/4/upload525 > log/4/stdout525 2> log/4/stderr525 > 28 bytes data, server => client 19:29:14.268699 '226 File transfer complete\r\n' 19:29:14.308011 < 6 bytes data, client => server 19:29:14.308200 'QUIT\r\n' 19:29:14.309793 Received DATA (on stdin) 19:29:14.309939 > 18 bytes data, server => client 19:29:14.310038 '221 bye bye baby\r\n' 19:29:14.310557 ====> Client disconnect 19:29:14.314721 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:13.255121 Running IPv4 version 19:29:13.255559 Listening on port 37241 19:29:13.255879 Wrote pid 133218 to log/1/server/ftp_sockdata.pid 19:29:13.255991 Received PING (on stdin) 19:29:13.256511 Received PORT (on stdin) 19:29:13.258998 ====> Client connect 19:29:13.265220 Received DATA (on stdin) 19:29:13.265361 > 18 bytes data, server => client 19:29:13.265471 'WE ROOLZ: 109414\r\n' 19:29:13.266302 Received DISC (on stdin) 19:29:13.266432 ====> Client forcibly disconnected 19:29:13.267131 Received QUIT (on stdin) 19:29:13.267230 quits 19:29:13.267499 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 526 === End of file server.cmd === Start of file valgrind526 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind526 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/4/valgrind525 ./libtest/lib525 ftp://127.0.0.1:40809/path/525 log/4/upload525 > log/4/stdout525 2> log/4/stderr525 525: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind525 ./libtest/lib525 ftp://127.0.0.1:40809/path/525 log/4/upload525 > log/4/stdout525 2> log/4/stderr525 === End of file commands.log === Start of file ftp_server.log 19:29:13.768097 ====> Client connect 19:29:13.768989 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:13.771069 < "USER anonymous" 19:29:13.771399 > "331 We are happy you popped in![CR][LF]" 19:29:13.772730 < "PASS ftp@example.com" 19:29:13.772997 > "230 Welcome you silly person[CR][LF]" 19:29:13.774127 < "PWD" 19:29:13.774474 > "257 "/" is current directory[CR][LF]" 19:29:13.776211 < "EPSV" 19:29:13.776496 ====> Passive DATA channel requested by client 19:29:13.776640 DATA sockfilt for passive data channel starting... 19:29:13.785797 DATA sockfilt for passive data channel started (pid 133217) 19:29:13.786564 DATA sockfilt for passive data channel listens on port 34703 19:29:13.786893 > "229 Entering Passive Mode (|||34703|)[LF]" 19:29:13.787072 Client has been notified that DATA conn will be accepted on port 34703 19:29:13.788028 Client connects to port 34703 19:29:13.788260 ====> Client established passive DATA connection on port 34703 19:29:13.788797 < "TYPE I" 19:29:13.789100 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:13.790269 < "SIZE verifiedserver" 19:29:13.790613 > "213 18[CR][LF]" 19:29:13.791764 < "RETR verifiedserver" 19:29:13.792068 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:13.792518 =====> Closing passive DATA connection... 19:29:13.792730 Server disconnects passive DATA connection 19:29:13.793169 Server disconnected passive DATA connection 19:29:13.793355 DATA sockfilt for passive data channel quits (pid 133217) 19:29:13.795317 DATA sockfilt for passive data channel quit (pid 133217) 19:29:13.795503 =====> Closed passive DATA connection 19:29:13.795711 > "226 File transfer complete[CR][LF]" 19:29:13.834476 < "QUIT" 19:29:13.834752 > "221 bye bye baby[CR][LF]" 19:29:13.837844 MAIN sockfilt said DISC 19:29:13.838127 ====> Client disconnected 19:29:13.838508 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:13.231937 ====> Client connect 19:29:13.233217 Received DATA (on stdin) 19:29:13.233352 > 160 bytes data, server => client 19:29:13.233434 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:13.233511 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:13.233578 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:13.234719 < 16 bytes data, client => server 19:29:13.234864 'USER anonymous\r\n' 19:29:13.235649 Received DATA (on stdin) 19:29:13.235765 > 33 bytes data, server => client 19:29:13.235851 '331 We are happy you popped in!\r\n' 19:29:13.236547 < 22 bytes data, client => server 19:29:13.236681 'PASS ftp@example.com\r\n' 19:29:13.237248 Received DATA (on stdin) 19:29:13.237360 > 30 bytes data, server => client 19:29:13.237438 '230 Welcome you silly person\r\n' 19:29:13.237937 < 5 bytes data, client => server 19:29:13.238079 'PWD\r\n' 19:29:13.239042 Received DATA (on stdin) 19:29:13.239140 > 30 bytes data, server => client 19:29:13.239209 '257 "/" is current directory\r\n' 19:29:13.239633 < 6 bytes data, client => server 19:29:13.239734 'EPSV\r\n' 19:29:13.251148 Received DATA (on stdin) 19:29:13.251279 > 38 bytes data, server => client 19:29:13.251363 '229 Entering Passive Mode (|||34703|)\n' 19:29:13.252294 < 8 bytes data, client => server 19:29:13.252399 'TYPE I\r\n' 19:29:13.253351 Received DATA (on stdin) 19:29:13.253473 > 33 bytes data, server => client 19:29:13.253553 '200 I modify TYPE as you wanted\r\n' 19:29:13.254120 < 21 bytes data, client => server 19:29:13.254270 'SIZE verifiedserver\r\n' 19:29:13.254863 Received DATA (on stdin) 19:29:13.254986 > 8 bytes data, server => client 19:29:13.255056 '213 18\r\n' 19:29:13.255603 < 21 bytes data, client => server 19:29:13.255696 'RETR verifiedserver\r\n' 19:29:13.256315 Received DATA (on stdin) 19:29:13.256421 > 29 bytes data, server => client 19:29:13.256498 '150 Binary junk (18 bytes).\r\n' 19:29:13.259969 Received DATA (on stdin) 19:29:13.260100 > 28 bytes data, server => client 19:29:13.260187 '226 File transfer complete\r\n' 19:29:13.298269 < 6 bytes data, client => server 19:29:13.298421 'QUIT\r\n' 19:29:13.298995 Received DATA (on stdin) 19:29:13.299103 > 18 bytes data, server => client 19:29:13.299179 '221 bye bye baby\r\n' 19:29:13.301806 ====> Client disconnect 19:29:13.302390 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:13.248443 Running IPv4 version 19:29:13.248855 Listening on port 34703 19:29:13.249186 Wrote pid 133217 to log/4/server/CMD (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/2/valgrind528 ./libtest/lib526 http://127.0.0.1:39599/path/528 > log/2/stdout528 2> log/2/stderr528 CMD (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/valgrind527 ./libtest/lib527 ftp://127.0.0.1:43789/path/527 > log/3/stdout527 2> log/3/stderr527 ftp_sockdata.pid 19:29:13.249462 Received PING (on stdin) 19:29:13.250433 Received PORT (on stdin) 19:29:13.252063 ====> Client connect 19:29:13.256543 Received DATA (on stdin) 19:29:13.256647 > 18 bytes data, server => client 19:29:13.256730 'WE ROOLZ: 109451\r\n' 19:29:13.257166 Received DISC (on stdin) 19:29:13.257358 ====> Client forcibly disconnected 19:29:13.257889 Received QUIT (on stdin) 19:29:13.258017 quits 19:29:13.258422 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 525 === End of file server.cmd === Start of file upload525 Moooooooooooo upload this === End of file upload525 === Start of file valgrind525 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind525 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/2/valgrind528 ./libtest/lib526 http://127.0.0.1:39599/path/528 > log/2/stdout528 2> log/2/stderr528 528: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind528 ./libtest/lib526 http://127.0.0.1:39599/path/528 > log/2/stdout528 2> log/2/stderr528 === End of file commands.log === Start of file http_server.log 19:29:14.404527 ====> Client connect 19:29:14.404754 accept_connection 3 returned 4 19:29:14.404872 accept_connection 3 returned 0 19:29:14.404975 Read 93 bytes 19:29:14.405042 Process 93 bytes request 19:29:14.405113 Got request: GET /verifiedserver HTTP/1.1 19:29:14.405179 Are-we-friendly question received 19:29:14.405335 Wrote request (93 bytes) input to log/2/server.input 19:29:14.405480 Identifying ourselves as friends 19:29:14.406073 Response sent (57 bytes) and written to log/2/server.response 19:29:14.406174 special request received, no persistency 19:29:14.406231 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 528 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind528 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib527 ftp://127.0.0.1:43789/path/527 > log/3/stdout527 2> log/3/stderr527 527: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib527 ftp://127.0.0.1:43789/path/527 > log/3/stdout527 2> log/3/stderr527 === End of file commands.log === Start of file ftp_server.log 19:29:13.862355 ====> Client connect 19:29:13.863149 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:13.866743 < "USER anonymous" 19:29:13.867054 > "331 We are happy you popped in![CR][LF]" 19:29:13.868056 < "PASS ftp@example.com" 19:29:13.868359 > "230 Welcome you silly person[CR][LF]" 19:29:13.869471 < "PWD" 19:29:13.869816 > "257 "/" is current directory[CR][LF]" 19:29:13.870916 < "EPSV" 19:29:13.871130 ====> Passive DATA channel requested by client 19:29:13.871259 DATA sockfilt for passive data channel starting... 19:29:13.879647 DATA sockfilt for passive data channel started (pid 133234) 19:29:13.880326 DATA sockfilt for passive data channel listens on port 40351 19:29:13.880636 > "229 Entering Passive Mode (|||40351|)[LF]" 19:29:13.880817 Client has been notified that DATA conn will be accepted on port 40351 19:29:13.882011 Client connects to port 40351 19:29:13.882251 ====> Client established passive DATA connection on port 40351 19:29:13.882785 < "TYPE I" 19:29:13.883060 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:13.884030 < "SIZE verifiedserver" 19:29:13.884303 > "213 18[CR][LF]" 19:29:13.885330 < "RETR verifiedserver" 19:29:13.885751 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:13.886395 =====> Closing passive DATA connection... 19:29:13.886580 Server disconnects passive DATA connection CMD (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/4/valgrind530 ./libtest/lib530 http://127.0.0.1:43669/file530 > log/4/stdout530 2> log/4/stderr530 19:29:13.887637 Server disconnected passive DATA connection 19:29:13.887819 DATA sockfilt for passive data channel quits (pid 133234) 19:29:13.889127 DATA sockfilt for passive data channel quit (pid 133234) 19:29:13.889332 =====> Closed passive DATA connection 19:29:13.889626 > "226 File transfer complete[CR][LF]" 19:29:13.930637 < "QUIT" 19:29:13.931062 > "221 bye bye baby[CR][LF]" 19:29:13.935577 MAIN sockfilt said DISC 19:29:13.935854 ====> Client disconnected 19:29:13.936175 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:14.326206 ====> Client connect 19:29:14.327389 Received DATA (on stdin) 19:29:14.327533 > 160 bytes data, server => client 19:29:14.327621 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:14.327696 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:14.327758 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:14.330379 < 16 bytes data, client => server 19:29:14.330538 'USER anonymous\r\n' 19:29:14.331306 Received DATA (on stdin) 19:29:14.331426 > 33 bytes data, server => client 19:29:14.331503 '331 We are happy you popped in!\r\n' 19:29:14.331901 < 22 bytes data, client => server 19:29:14.332031 'PASS ftp@example.com\r\n' 19:29:14.332614 Received DATA (on stdin) 19:29:14.332734 > 30 bytes data, server => client 19:29:14.332813 '230 Welcome you silly person\r\n' 19:29:14.333226 < 5 bytes data, client => server 19:29:14.333365 'PWD\r\n' 19:29:14.334059 Received DATA (on stdin) 19:29:14.334188 > 30 bytes data, server => client 19:29:14.334263 '257 "/" is current directory\r\n' 19:29:14.334721 < 6 bytes data, client => server 19:29:14.334857 'EPSV\r\n' 19:29:14.344889 Received DATA (on stdin) 19:29:14.345029 > 38 bytes data, server => client 19:29:14.345119 '229 Entering Passive Mode (|||40351|)\n' 19:29:14.346028 < 8 bytes data, client => server 19:29:14.346175 'TYPE I\r\n' 19:29:14.347319 Received DATA (on stdin) 19:29:14.347433 > 33 bytes data, server => client 19:29:14.347509 '200 I modify TYPE as you wanted\r\n' 19:29:14.347906 < 21 bytes data, client => server 19:29:14.348030 'SIZE verifiedserver\r\n' 19:29:14.348558 Received DATA (on stdin) 19:29:14.348650 > 8 bytes data, server => client 19:29:14.348724 '213 18\r\n' 19:29:14.349107 < 21 bytes data, client => server 19:29:14.349230 'RETR verifiedserver\r\n' 19:29:14.349991 Received DATA (on stdin) 19:29:14.350116 > 29 bytes data, server => client 19:29:14.350189 '150 Binary junk (18 bytes).\r\n' 19:29:14.353870 Received DATA (on stdin) 19:29:14.354003 > 28 bytes data, server => client 19:29:14.354086 '226 File transfer complete\r\n' 19:29:14.394345 < 6 bytes data, client => server 19:29:14.394521 'QUIT\r\n' 19:29:14.395314 Received DATA (on stdin) 19:29:14.395488 > 18 bytes data, server => client 19:29:14.395576 '221 bye bye baby\r\n' 19:29:14.395955 ====> Client disconnect 19:29:14.400127 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:13.342943 Running IPv4 version 19:29:13.343326 Listening on port 40351 19:29:13.343569 Wrote pid 133234 to log/3/server/ftp_sockdata.pid 19:29:13.343683 Received PING (on stdin) 19:29:13.344188 Received PORT (on stdin) 19:29:13.346067 ====> Client connect 19:29:13.350990 Received DATA (on stdin) 19:29:13.351087 > 18 bytes data, server => client 19:29:13.351157 'WE ROOLZ: 109394\r\n' 19:29:13.351697 Received DISC (on stdin) 19:29:13.352225 ====> Client forcibly disconnected 19:29:13.352517 Received QUIT (on stdin) 19:29:13.352620 quits 19:29:13.352859 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 527 === End of file server.cmd === Start of file valgrind527 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind530 ./libtest/lib530 http://127.0.0.1:43669/file530 > log/4/stdout530 2> log/4/stderr530 lib530 returned 1, when expecting 0 530: exit FAILED == Contents of files in the log/4/ 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/4/valgrind530 ./libtest/lib530 http://127.0.0.1:43669/file530 > log/4/stdout530 2> log/4/stderr530 === End of file commands.log === Start of file http_server.log 19:29:14.888837 ====> Client connect 19:29:14.889060 accept_connection 3 returned 4 19:29:14.889182 accept_connection 3 returned 0 19:29:14.889288 Read 93 bytes 19:29:14.889359 Process 93 bytes request 19:29:14.889433 Got request: GET /verifiedserver HTTP/1.1 19:29:14.889506 Are-we-friendly question received 19:29:14.889717 Wrote request (93 bytes) input to log/4/server.input 19:29:14.889887 Identifying ourselves as friends 19:29:14.890399 Response sent (57 bytes) and written to log/4/server.response 19:29:14.890490 special request received, no persistency 19:29:14.890548 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 530 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind530 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) CMD (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/1/valgrind529 ./libtest/lib529 ftp://127.0.0.1:39333/path/529 log/1/upload529 > log/1/stdout529 2> log/1/stderr529 valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind530 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/1/valgrind529 ./libtest/lib529 ftp://127.0.0.1:39333/path/529 log/1/upload529 > log/1/stdout529 2> log/1/stderr529 529: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind529 ./libtest/lib529 ftp://127.0.0.1:39333/path/529 log/1/upload529 > log/1/stdout529 2> log/1/stderr529 === End of file commands.log === Start of file ftp_server.log 19:29:14.455818 ====> Client connect 19:29:14.456888 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:14.459033 < "USER anonymous" 19:29:14.459360 > "331 We are happy you popped in![CR][LF]" 19:29:14.460428 < "PASS ftp@example.com" 19:29:14.460741 > "230 Welcome you silly person[CR][LF]" 19:29:14.461867 < "PWD" 19:29:14.462185 > "257 "/" is current directory[CR][LF]" 19:29:14.463366 < "EPSV" 19:29:14.463569 ====> Passive DATA channel requested by client 19:29:14.463693 DATA sockfilt for passive data channel starting... 19:29:14.470889 DATA sockfilt for passive data channel started (pid 133465) 19:29:14.471588 DATA sockfilt for passive data channel listens on port 37039 19:29:14.471950 > "229 Entering Passive Mode (|||37039|)[LF]" 19:29:14.472144 Client has been notified that DATA conn will be accepted on port 37039 19:29:14.473645 Client connects to port 37039 19:29:14.473944 ====> Client established passive DATA connection on port 37039 19:29:14.474488 < "TYPE I" 19:29:14.474805 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:14.475958 < "SIZE verifiedserver" 19:29:14.476330 > "213 18[CR][LF]" 19:29:14.477362 < "RETR verifiedserver" 19:29:14.477812 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:14.478304 =====> Closing passive DATA connection... 19:29:14.478477 Server disconnects passive DATA connection 19:29:14.478844 Server disconnected passive DATA connection 19:29:14.479052 DATA sockfilt for passive data channel quits (pid 133465) 19:29:14.480388 DATA sockfilt for passive data channel quit (pid 133465) 19:29:14.480635 =====> Closed passive DATA connection 19:29:14.480904 > "226 File transfer complete[CR][LF]" 19:29:14.522666 < "QUIT" 19:29:14.522976 > "221 bye bye baby[CR][LF]" 19:29:14.525745 MAIN sockfilt said DISC 19:29:14.526028 ====> Client disconnected 19:29:14.526364 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:14.919276 ====> Client connect 19:29:14.921099 Received DATA (on stdin) 19:29:14.921362 > 160 bytes data, server => client 19:29:14.921540 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:14.921626 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:14.921826 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:14.922271 < 16 bytes data, client => server 19:29:14.922540 'USER anonymous\r\n' 19:29:14.923596 Received DATA (on stdin) 19:29:14.923710 > 33 bytes data, server => client 19:29:14.923785 '331 We are happy you popped in!\r\n' 19:29:14.924225 < 22 bytes data, client => server 19:29:14.924370 'PASS ftp@example.com\r\n' 19:29:14.924970 Received DATA (on stdin) 19:29:14.925083 > 30 bytes data, server => client 19:29:14.925161 '230 Welcome you silly person\r\n' 19:29:14.925577 < 5 bytes data, client => server 19:29:14.925826 'PWD\r\n' 19:29:14.926413 Received DATA (on stdin) 19:29:14.926526 > 30 bytes data, server => client 19:29:14.926600 '257 "/" is current directory\r\n' 19:29:14.927177 < 6 bytes data, client => server 19:29:14.927300 'EPSV\r\n' 19:29:14.936171 Received DATA (on stdin) 19:29:14.936299 > 38 bytes data, server => client 19:29:14.936380 '229 Entering Passive Mode (|||37039|)\n' 19:29:14.937312 < 8 bytes data, client => server 19:29:14.937450 'TYPE I\r\n' 19:29:14.939028 Received DATA (on stdin) 19:29:14.939156 > 33 bytes data, server => client 19:29:14.939231 '200 I modify TYPE as you wanted\r\n' 19:29:14.939750 < 21 bytes data, client => server 19:29:14.939879 'SIZE verifiedserver\r\n' 19:29:14.940566 Received DATA (on stdin) 19:29:14.940675 > 8 bytes data, server => client 19:29:14.940743 '213 18\r\n' 19:29:14.941179 < 21 bytes data, client => server 19:29:14.941298 'RETR verifiedserver\r\n' 19:29:14.942034 Received DATA (on stdin) 19:29:14.942161 > 29 bytes data, server => client 19:29:14.942238 '150 Binary junk (18 bytes).\r\n' 19:29:14.945135 Received DATA (on stdin) 19:29:14.945271 > 28 bytes data, server => client 19:29:14.945351 '226 File transfer complete\r\n' 19:29:14.986464 < 6 bytes data, client => server 19:29:14.986610 'QUIT\r\n' 19:29:14.987202 Received DATA (on stdin) 19:29:14.987313 > 18 bytes data, server => client 19:29:14.987390 '221 bye bye baby\r\n' 19:29:14.989750 ====> Client disconnect 19:29:14.997749 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:14.934187 Running IPv4 version 19:29:14.934550 Listening on port 37039 19:29:14.934777 Wrote pid 133465 to log/1/server/ftp_sockdata.pid 19:29:14.934899 Received PING (on stdin) 19:29:14.935432 Received PORT (on stdin) 19:29:14.937578 ====> Client connect 19:29:14.942480 Received DATA (on stdin) 19:29:14.942602 > 18 bytes data, server => client 19:29:14.942678 'WE ROOLZ: 109414\r\n' 19:29:14.942876 Received DISC (on stdin) 19:29:14.943011 ====> Client forcibly disconnected 19:29:14.943679 Received QUIT (on stdin) 19:29:14.943811 quits 19:29:14.944070 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 529 === End of file server.cmd === Start of file upload529 Moooooooooooo upload this === End of file upload529 === Start of file valgrind529 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding CMD (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/2/valgrind531 ./libtest/lib525 ftp://127.0.0.1:36773/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 CMD (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/valgrind532 ./libtest/lib532 ftp://127.0.0.1:43789/path/532 > log/3/stdout532 2> log/3/stderr532 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind529 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/lib525 ftp://127.0.0.1:36773/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 531: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib525 ftp://127.0.0.1:36773/path/531 log/2/upload531 > log/2/stdout531 2> log/2/stderr531 === End of file commands.log === Start of file ftp_server.log 19:29:14.524418 ====> Client connect 19:29:14.525957 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:14.527871 < "USER anonymous" 19:29:14.528202 > "331 We are happy you popped in![CR][LF]" 19:29:14.529894 < "PASS ftp@example.com" 19:29:14.530220 > "230 Welcome you silly person[CR][LF]" 19:29:14.531716 < "PWD" 19:29:14.532018 > "257 "/" is current directory[CR][LF]" 19:29:14.533745 < "EPSV" 19:29:14.534014 ====> Passive DATA channel requested by client 19:29:14.534176 DATA sockfilt for passive data channel starting... 19:29:14.542689 DATA sockfilt for passive data channel started (pid 133482) 19:29:14.543471 DATA sockfilt for passive data channel listens on port 46537 19:29:14.543795 > "229 Entering Passive Mode (|||46537|)[LF]" 19:29:14.543946 Client has been notified that DATA conn will be accepted on port 46537 19:29:14.545805 Client connects to port 46537 19:29:14.546059 ====> Client established passive DATA connection on port 46537 19:29:14.546585 < "TYPE I" 19:29:14.547213 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:14.548465 < "SIZE verifiedserver" 19:29:14.548755 > "213 18[CR][LF]" 19:29:14.550218 < "RETR verifiedserver" 19:29:14.550527 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:14.550919 =====> Closing passive DATA connection... 19:29:14.551055 Server disconnects passive DATA connection 19:29:14.552542 Server disconnected passive DATA connection 19:29:14.552743 DATA sockfilt for passive data channel quits (pid 133482) 19:29:14.554198 DATA sockfilt for passive data channel quit (pid 133482) 19:29:14.554420 =====> Closed passive DATA connection 19:29:14.554941 > "226 File transfer complete[CR][LF]" 19:29:14.594716 < "QUIT" 19:29:14.595022 > "221 bye bye baby[CR][LF]" 19:29:14.599898 MAIN sockfilt said DISC 19:29:14.600158 ====> Client disconnected 19:29:14.600563 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:13.988122 ====> Client connect 19:29:13.989548 Received DATA (on stdin) 19:29:13.989958 > 160 bytes data, server => client 19:29:13.990474 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:13.990592 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:13.990665 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:13.991269 < 16 bytes data, client => server 19:29:13.991406 'USER anonymous\r\n' 19:29:13.992670 Received DATA (on stdin) 19:29:13.992789 > 33 bytes data, server => client 19:29:13.992868 '331 We are happy you popped in!\r\n' 19:29:13.993327 < 22 bytes data, client => server 19:29:13.993459 'PASS ftp@example.com\r\n' 19:29:13.994682 Received DATA (on stdin) 19:29:13.994797 > 30 bytes data, server => client 19:29:13.994870 '230 Welcome you silly person\r\n' 19:29:13.995356 < 5 bytes data, client => server 19:29:13.995472 'PWD\r\n' 19:29:13.996469 Received DATA (on stdin) 19:29:13.996588 > 30 bytes data, server => client 19:29:13.996672 '257 "/" is current directory\r\n' 19:29:13.997144 < 6 bytes data, client => server 19:29:13.997293 'EPSV\r\n' 19:29:14.008388 Received DATA (on stdin) 19:29:14.008519 > 38 bytes data, server => client 19:29:14.008600 '229 Entering Passive Mode (|||46537|)\n' 19:29:14.009454 < 8 bytes data, client => server 19:29:14.009575 'TYPE I\r\n' 19:29:14.011155 Received DATA (on stdin) 19:29:14.011287 > 33 bytes data, server => client 19:29:14.011671 '200 I modify TYPE as you wanted\r\n' 19:29:14.012134 < 21 bytes data, client => server 19:29:14.012248 'SIZE verifiedserver\r\n' 19:29:14.013185 Received DATA (on stdin) 19:29:14.013296 > 8 bytes data, server => client 19:29:14.013363 '213 18\r\n' 19:29:14.013866 < 21 bytes data, client => server 19:29:14.014000 'RETR verifiedserver\r\n' 19:29:14.015446 Received DATA (on stdin) 19:29:14.015546 > 29 bytes data, server => client 19:29:14.015622 '150 Binary junk (18 bytes).\r\n' 19:29:14.018873 Received DATA (on stdin) 19:29:14.019009 > 28 bytes data, server => client 19:29:14.019412 '226 File transfer complete\r\n' 19:29:14.058315 < 6 bytes data, client => server 19:29:14.058444 'QUIT\r\n' 19:29:14.059465 Received DATA (on stdin) 19:29:14.059566 > 18 bytes data, server => client 19:29:14.059635 '221 bye bye baby\r\n' 19:29:14.063844 ====> Client disconnect 19:29:14.065120 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:14.006054 Running IPv4 version 19:29:14.006399 Listening on port 46537 19:29:14.006615 Wrote pid 133482 to log/2/server/ftp_sockdata.pid 19:29:14.006719 Received PING (on stdin) 19:29:14.007252 Received PORT (on stdin) 19:29:14.009835 ====> Client connect 19:29:14.015967 Received DATA (on stdin) 19:29:14.016089 > 18 bytes data, server => client 19:29:14.016153 'WE ROOLZ: 116354\r\n' 19:29:14.016585 Received DISC (on stdin) 19:29:14.017134 ====> Client forcibly disconnected 19:29:14.017416 Received QUIT (on stdin) 19:29:14.017517 quits 19:29:14.017855 ============> sockfilt quits === 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 upload531 Moooooooooooo don't upload this === End of file upload531 === Start of file valgrind531 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind531 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/3/valgrind532 ./lCMD (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/4/valgrind533 ./libtest/lib533 ftp://127.0.0.1:40809/path/533 ftp://127.0.0.1:40809/path/533 > log/4/stdout533 2> log/4/stderr533 ibtest/lib532 ftp://127.0.0.1:43789/path/532 > log/3/stdout532 2> log/3/stderr532 532: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind532 ./libtest/lib532 ftp://127.0.0.1:43789/path/532 > log/3/stdout532 2> log/3/stderr532 === End of file commands.log === Start of file ftp_server.log 19:29:14.610285 ====> Client connect 19:29:14.611059 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:14.612387 < "USER anonymous" 19:29:14.612715 > "331 We are happy you popped in![CR][LF]" 19:29:14.613829 < "PASS ftp@example.com" 19:29:14.614156 > "230 Welcome you silly person[CR][LF]" 19:29:14.615199 < "PWD" 19:29:14.615479 > "257 "/" is current directory[CR][LF]" 19:29:14.616569 < "EPSV" 19:29:14.616776 ====> Passive DATA channel requested by client 19:29:14.616898 DATA sockfilt for passive data channel starting... 19:29:14.624562 DATA sockfilt for passive data channel started (pid 133513) 19:29:14.625171 DATA sockfilt for passive data channel listens on port 43425 19:29:14.625519 > "229 Entering Passive Mode (|||43425|)[LF]" 19:29:14.625710 Client has been notified that DATA conn will be accepted on port 43425 19:29:14.626864 Client connects to port 43425 19:29:14.627121 ====> Client established passive DATA connection on port 43425 19:29:14.627613 < "TYPE I" 19:29:14.627875 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:14.628854 < "SIZE verifiedserver" 19:29:14.629159 > "213 18[CR][LF]" 19:29:14.630395 < "RETR verifiedserver" 19:29:14.631072 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:14.632414 =====> Closing passive DATA connection... 19:29:14.632653 Server disconnects passive DATA connection 19:29:14.632867 Fancy that; client wants to DISC, too 19:29:14.633112 Server disconnected passive DATA connection 19:29:14.633293 DATA sockfilt for passive data channel quits (pid 133513) 19:29:14.634628 DATA sockfilt for passive data channel quit (pid 133513) 19:29:14.634877 =====> Closed passive DATA connection 19:29:14.635143 > "226 File transfer complete[CR][LF]" 19:29:14.674599 < "QUIT" 19:29:14.674995 > "221 bye bye baby[CR][LF]" 19:29:14.677610 MAIN sockfilt said DISC 19:29:14.678050 ====> Client disconnected 19:29:14.678393 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:15.074127 ====> Client connect 19:29:15.075266 Received DATA (on stdin) 19:29:15.075396 > 160 bytes data, server => client 19:29:15.075475 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:15.075547 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:15.075609 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:15.076023 < 16 bytes data, client => server 19:29:15.076151 'USER anonymous\r\n' 19:29:15.076920 Received DATA (on stdin) 19:29:15.077048 > 33 bytes data, server => client 19:29:15.077156 '331 We are happy you popped in!\r\n' 19:29:15.077563 < 22 bytes data, client => server 19:29:15.077756 'PASS ftp@example.com\r\n' 19:29:15.078375 Received DATA (on stdin) 19:29:15.078491 > 30 bytes data, server => client 19:29:15.078559 '230 Welcome you silly person\r\n' 19:29:15.079029 < 5 bytes data, client => server 19:29:15.079145 'PWD\r\n' 19:29:15.079700 Received DATA (on stdin) 19:29:15.079806 > 30 bytes data, server => client 19:29:15.079874 '257 "/" is current directory\r\n' 19:29:15.080368 < 6 bytes data, client => server 19:29:15.080486 'EPSV\r\n' 19:29:15.089710 Received DATA (on stdin) 19:29:15.089829 > 38 bytes data, server => client 19:29:15.089903 '229 Entering Passive Mode (|||43425|)\n' 19:29:15.090750 < 8 bytes data, client => server 19:29:15.090858 'TYPE I\r\n' 19:29:15.092097 Received DATA (on stdin) 19:29:15.092202 > 33 bytes data, server => client 19:29:15.092274 '200 I modify TYPE as you wanted\r\n' 19:29:15.092665 < 21 bytes data, client => server 19:29:15.092782 'SIZE verifiedserver\r\n' 19:29:15.093383 Received DATA (on stdin) 19:29:15.093487 > 8 bytes data, server => client 19:29:15.093561 '213 18\r\n' 19:29:15.094124 < 21 bytes data, client => server 19:29:15.094273 'RETR verifiedserver\r\n' 19:29:15.095273 Received DATA (on stdin) 19:29:15.095471 > 29 bytes data, server => client 19:29:15.095551 '150 Binary junk (18 bytes).\r\n' 19:29:15.099377 Received DATA (on stdin) 19:29:15.099514 > 28 bytes data, server => client 19:29:15.099603 '226 File transfer complete\r\n' 19:29:15.138315 < 6 bytes data, client => server 19:29:15.138477 'QUIT\r\n' 19:29:15.139224 Received DATA (on stdin) 19:29:15.139345 > 18 bytes data, server => client 19:29:15.139415 '221 bye bye baby\r\n' 19:29:15.139799 ====> Client disconnect 19:29:15.142288 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:14.087830 Running IPv4 version 19:29:14.088195 Listening on port 43425 19:29:14.088433 Wrote pid 133513 to log/3/server/ftp_sockdata.pid 19:29:14.088551 Received PING (on stdin) 19:29:14.089080 Received PORT (on stdin) 19:29:14.090599 ====> Client connect 19:29:14.095823 Received DATA (on stdin) 19:29:14.095965 > 18 bytes data, server => client 19:29:14.096051 'WE ROOLZ: 109394\r\n' 19:29:14.096538 ====> Client disconnect 19:29:14.097096 Received DISC (on stdin) 19:29:14.097203 Crikey! Client also wants to disconnect 19:29:14.097298 Received ACKD (on stdin) 19:29:14.097835 Received QUIT (on stdin) 19:29:14.097959 quits 19:29:14.098242 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 532 === End of file server.cmd === Start of file valgrind532 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind533 ./libtest/lib533 ftp://127.0.0.1:40809/path/533 ftp://127.0.0.1:40809/path/533 > log/4/stdout533 2> log/4/stderr533 533: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 533 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/cuCMD (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/1/valgrind534 ./libtest/lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:39333/path/534 > log/1/stdout534 2> log/1/stderr534 rl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind533 ./libtest/lib533 ftp://127.0.0.1:40809/path/533 ftp://127.0.0.1:40809/path/533 > log/4/stdout533 2> log/4/stderr533 === End of file commands.log === Start of file ftp_server.log 19:29:15.025048 ====> Client connect 19:29:15.025900 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:15.027212 < "USER anonymous" 19:29:15.027517 > "331 We are happy you popped in![CR][LF]" 19:29:15.028523 < "PASS ftp@example.com" 19:29:15.028785 > "230 Welcome you silly person[CR][LF]" 19:29:15.029820 < "PWD" 19:29:15.030120 > "257 "/" is current directory[CR][LF]" 19:29:15.031117 < "EPSV" 19:29:15.031326 ====> Passive DATA channel requested by client 19:29:15.031465 DATA sockfilt for passive data channel starting... 19:29:15.042376 DATA sockfilt for passive data channel started (pid 133693) 19:29:15.043145 DATA sockfilt for passive data channel listens on port 44821 19:29:15.043478 > "229 Entering Passive Mode (|||44821|)[LF]" 19:29:15.043655 Client has been notified that DATA conn will be accepted on port 44821 19:29:15.045661 Client connects to port 44821 19:29:15.045930 ====> Client established passive DATA connection on port 44821 19:29:15.046487 < "TYPE I" 19:29:15.046800 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:15.048306 < "SIZE verifiedserver" 19:29:15.048636 > "213 18[CR][LF]" 19:29:15.050244 < "RETR verifiedserver" 19:29:15.050569 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:15.051052 =====> Closing passive DATA connection... 19:29:15.051218 Server disconnects passive DATA connection 19:29:15.053093 Server disconnected passive DATA connection 19:29:15.053329 DATA sockfilt for passive data channel quits (pid 133693) 19:29:15.054604 DATA sockfilt for passive data channel quit (pid 133693) 19:29:15.054824 =====> Closed passive DATA connection 19:29:15.055015 > "226 File transfer complete[CR][LF]" 19:29:15.094870 < "QUIT" 19:29:15.095201 > "221 bye bye baby[CR][LF]" 19:29:15.099177 MAIN sockfilt said DISC 19:29:15.099423 ====> Client disconnected 19:29:15.099775 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:14.488882 ====> Client connect 19:29:14.490104 Received DATA (on stdin) 19:29:14.490222 > 160 bytes data, server => client 19:29:14.490300 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:14.490379 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:14.490450 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:14.490873 < 16 bytes data, client => server 19:29:14.491007 'USER anonymous\r\n' 19:29:14.491739 Received DATA (on stdin) 19:29:14.491855 > 33 bytes data, server => client 19:29:14.491927 '331 We are happy you popped in!\r\n' 19:29:14.492313 < 22 bytes data, client => server 19:29:14.492446 'PASS ftp@example.com\r\n' 19:29:14.493009 Received DATA (on stdin) 19:29:14.493128 > 30 bytes data, server => client 19:29:14.493205 '230 Welcome you silly person\r\n' 19:29:14.493595 < 5 bytes data, client => server 19:29:14.493816 'PWD\r\n' 19:29:14.494340 Received DATA (on stdin) 19:29:14.494445 > 30 bytes data, server => client 19:29:14.494522 '257 "/" is current directory\r\n' 19:29:14.494949 < 6 bytes data, client => server 19:29:14.495074 'EPSV\r\n' 19:29:14.508111 Received DATA (on stdin) 19:29:14.508236 > 38 bytes data, server => client 19:29:14.508316 '229 Entering Passive Mode (|||44821|)\n' 19:29:14.509276 < 8 bytes data, client => server 19:29:14.509577 'TYPE I\r\n' 19:29:14.511277 Received DATA (on stdin) 19:29:14.511387 > 33 bytes data, server => client 19:29:14.511474 '200 I modify TYPE as you wanted\r\n' 19:29:14.511910 < 21 bytes data, client => server 19:29:14.512031 'SIZE verifiedserver\r\n' 19:29:14.513110 Received DATA (on stdin) 19:29:14.513221 > 8 bytes data, server => client 19:29:14.513295 '213 18\r\n' 19:29:14.513857 < 21 bytes data, client => server 19:29:14.513981 'RETR verifiedserver\r\n' 19:29:14.515629 Received DATA (on stdin) 19:29:14.515747 > 29 bytes data, server => client 19:29:14.515818 '150 Binary junk (18 bytes).\r\n' 19:29:14.519412 Received DATA (on stdin) 19:29:14.519521 > 28 bytes data, server => client 19:29:14.519594 '226 File transfer complete\r\n' 19:29:14.558341 < 6 bytes data, client => server 19:29:14.558500 'QUIT\r\n' 19:29:14.559666 Received DATA (on stdin) 19:29:14.559775 > 18 bytes data, server => client 19:29:14.559845 '221 bye bye baby\r\n' 19:29:14.563137 ====> Client disconnect 19:29:14.564238 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:15.505260 Running IPv4 version 19:29:15.505873 Listening on port 44821 19:29:15.506169 Wrote pid 133693 to log/4/server/ftp_sockdata.pid 19:29:15.506299 Received PING (on stdin) 19:29:15.506942 Received PORT (on stdin) 19:29:15.509600 ====> Client connect 19:29:15.516320 Received DATA (on stdin) 19:29:15.516482 > 18 bytes data, server => client 19:29:15.516561 'WE ROOLZ: 109451\r\n' 19:29:15.517081 Received DISC (on stdin) 19:29:15.517230 ====> Client forcibly disconnected 19:29:15.517841 Received QUIT (on stdin) 19:29:15.517957 quits 19:29:15.518230 ============> sockfilt quits === 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 valgrind533 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind533 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/1/valgrind534 ./libtest/lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:39333/path/534 > log/1/stdout534 2> log/1/stderr534 534: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind534 ./libtest/lib533 ftp://non-existing-host.haxx.se/path/534 ftp://127.0.0.1:39333/path/534 > log/1/stdout534 2> log/1/stderr534 === End of file commands.log === Start of file ftp_server.log 19:29:15.114494 ====> Client connect 19:29:15.116016 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | CMD (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/2/valgrind535 ./libtest/lib533 http://127.0.0.1:39599/535 http://127.0.0.1:39599/5350001 > log/2/stdout535 2> log/2/stderr535 |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:15.118453 < "USER anonymous" 19:29:15.118873 > "331 We are happy you popped in![CR][LF]" 19:29:15.120152 < "PASS ftp@example.com" 19:29:15.120443 > "230 Welcome you silly person[CR][LF]" 19:29:15.121899 < "PWD" 19:29:15.122221 > "257 "/" is current directory[CR][LF]" 19:29:15.123201 < "EPSV" 19:29:15.123414 ====> Passive DATA channel requested by client 19:29:15.123556 DATA sockfilt for passive data channel starting... 19:29:15.131390 DATA sockfilt for passive data channel started (pid 133714) 19:29:15.132111 DATA sockfilt for passive data channel listens on port 35953 19:29:15.132448 > "229 Entering Passive Mode (|||35953|)[LF]" 19:29:15.132623 Client has been notified that DATA conn will be accepted on port 35953 19:29:15.133575 Client connects to port 35953 19:29:15.133844 ====> Client established passive DATA connection on port 35953 19:29:15.134401 < "TYPE I" 19:29:15.134727 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:15.135702 < "SIZE verifiedserver" 19:29:15.136009 > "213 18[CR][LF]" 19:29:15.136962 < "RETR verifiedserver" 19:29:15.137274 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:15.137813 =====> Closing passive DATA connection... 19:29:15.138032 Server disconnects passive DATA connection 19:29:15.138353 Fancy that; client wants to DISC, too 19:29:15.138624 Server disconnected passive DATA connection 19:29:15.138820 DATA sockfilt for passive data channel quits (pid 133714) 19:29:15.140293 DATA sockfilt for passive data channel quit (pid 133714) 19:29:15.140541 =====> Closed passive DATA connection 19:29:15.140747 > "226 File transfer complete[CR][LF]" 19:29:15.182461 < "QUIT" 19:29:15.182872 > "221 bye bye baby[CR][LF]" 19:29:15.183646 MAIN sockfilt said DISC 19:29:15.183926 ====> Client disconnected 19:29:15.184235 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:15.578096 ====> Client connect 19:29:15.580232 Received DATA (on stdin) 19:29:15.580367 > 160 bytes data, server => client 19:29:15.580488 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:15.580590 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:15.580717 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:15.581839 < 16 bytes data, client => server 19:29:15.582075 'USER anonymous\r\n' 19:29:15.583110 Received DATA (on stdin) 19:29:15.583295 > 33 bytes data, server => client 19:29:15.583365 '331 We are happy you popped in!\r\n' 19:29:15.583922 < 22 bytes data, client => server 19:29:15.584087 'PASS ftp@example.com\r\n' 19:29:15.584658 Received DATA (on stdin) 19:29:15.584867 > 30 bytes data, server => client 19:29:15.585067 '230 Welcome you silly person\r\n' 19:29:15.585720 < 5 bytes data, client => server 19:29:15.585842 'PWD\r\n' 19:29:15.586437 Received DATA (on stdin) 19:29:15.586544 > 30 bytes data, server => client 19:29:15.586613 '257 "/" is current directory\r\n' 19:29:15.587012 < 6 bytes data, client => server 19:29:15.587138 'EPSV\r\n' 19:29:15.596649 Received DATA (on stdin) 19:29:15.596778 > 38 bytes data, server => client 19:29:15.596855 '229 Entering Passive Mode (|||35953|)\n' 19:29:15.597822 < 8 bytes data, client => server 19:29:15.597935 'TYPE I\r\n' 19:29:15.598939 Received DATA (on stdin) 19:29:15.599043 > 33 bytes data, server => client 19:29:15.599113 '200 I modify TYPE as you wanted\r\n' 19:29:15.599511 < 21 bytes data, client => server 19:29:15.599635 'SIZE verifiedserver\r\n' 19:29:15.600219 Received DATA (on stdin) 19:29:15.600330 > 8 bytes data, server => client 19:29:15.600393 '213 18\r\n' 19:29:15.600770 < 21 bytes data, client => server 19:29:15.600883 'RETR verifiedserver\r\n' 19:29:15.601486 Received DATA (on stdin) 19:29:15.601584 > 29 bytes data, server => client 19:29:15.601733 '150 Binary junk (18 bytes).\r\n' 19:29:15.604957 Received DATA (on stdin) 19:29:15.605056 > 28 bytes data, server => client 19:29:15.605122 '226 File transfer complete\r\n' 19:29:15.646232 < 6 bytes data, client => server 19:29:15.646390 'QUIT\r\n' 19:29:15.647077 Received DATA (on stdin) 19:29:15.647202 > 18 bytes data, server => client 19:29:15.647271 '221 bye bye baby\r\n' 19:29:15.647634 ====> Client disconnect 19:29:15.648151 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:15.594608 Running IPv4 version 19:29:15.594991 Listening on port 35953 19:29:15.595250 Wrote pid 133714 to log/1/server/ftp_sockdata.pid 19:29:15.595370 Received PING (on stdin) 19:29:15.595930 Received PORT (on stdin) 19:29:15.597512 ====> Client connect 19:29:15.601768 Received DATA (on stdin) 19:29:15.601873 > 18 bytes data, server => client 19:29:15.601961 'WE ROOLZ: 109414\r\n' 19:29:15.602366 ====> Client disconnect 19:29:15.602539 Received DISC (on stdin) 19:29:15.602655 Crikey! Client also wants to disconnect 19:29:15.602817 Received ACKD (on stdin) 19:29:15.603301 Received QUIT (on stdin) 19:29:15.603442 quits 19:29:15.603788 ============> sockfilt quits === 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 valgrind534 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind535 ./libtest/lib533 http://127.0.0.1:39599/535 http://127.0.0.1:39599/5350001 > log/2/stdout535 2> log/2/stderr535 535: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind535 ./libtest/lib533 http://127.0.0.1:39599/535 http://127.0.0.1:39599/5350001 > log/2/stdout535 2> log/2/stderr535 === End of file commands.log === Start of file http_server.log 19:29:15.743099 ====> Client connect 19:29:15.743334 accept_connection 3 returned 4 19:29:15.743477 accept_connection 3 returned 0 19:29:15.743586 Read 93 bytes 19:29:15.743659 Process 93 bytes request 19:29:15.743736 Got request: GET /verifiedserver HTTP/1.1 19:29:15.743803 Are-we-friendly question received 19:29:15.743972 Wrote request (93 bytes) input to log/2/server.input 19:29:15.744139 Identifying ourselves as friends 19:29:15.744762 Response sent (57 CMD (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/valgrind536 ./libtest/lib536 http://127.0.0.1:37525 goingdirect.com:37525 goingdirect.com:37525:127.0.0.1 > log/3/stdout536 2> log/3/stderr536 bytes) and written to log/2/server.response 19:29:15.744854 special request received, no persistency 19:29:15.744906 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 535 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind535 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind535 CMD (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/1/valgrind538 ./libtest/lib504 ftp://127.0.0.1:39333/538 > log/1/stdout538 2> log/1/stderr538 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/3/valgrind536 ./libtest/lib536 http://127.0.0.1:37525 goingdirect.com:37525 goingdirect.com:37525:127.0.0.1 > log/3/stdout536 2> log/3/stderr536 536: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:15.838067098 +0000 +++ log/3/check-generated 2025-05-23 19:29:15.838067098 +0000 @@ -1,4 +0,0 @@ -hello[CR][LF] -This used the proxy[CR][LF] -hello[CR][LF] -This DID NOT use the proxy[CR][LF] == Contents of files in the log/3/ dir after test 536 === Start of file check-expected hello[CR][LF] This used the proxy[CR][LF] hello[CR][LF] This DID NOT use the proxy[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind536 ./libtest/lib536 http://127.0.0.1:37525 goingdirect.com:37525 goingdirect.com:37525:127.0.0.1 > log/3/stdout536 2> log/3/stderr536 === End of file commands.log === Start of file http_server.log 19:29:14.773205 ====> Client connect 19:29:14.773419 accept_connection 3 returned 4 19:29:14.773541 accept_connection 3 returned 0 19:29:14.773702 Read 93 bytes 19:29:14.773798 Process 93 bytes request 19:29:14.773878 Got request: GET /verifiedserver HTTP/1.1 19:29:14.773946 Are-we-friendly question received 19:29:14.774106 Wrote request (93 bytes) input to log/3/server.input 19:29:14.774263 Identifying ourselves as friends 19:29:14.774770 Response sent (57 bytes) and written to log/3/server.response 19:29:14.774873 special request received, no persistency 19:29:14.774935 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 536 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind536 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind536 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/1/valgrind538 ./libtest/lib504 ftp://127.0.0.1:39333/538 > log/1/stdout538 2> log/1/stderr538 538: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind538 ./libtest/lib504 ftp://127.0.0.1:39333/538 > log/1/stdout538 2> log/1/stderr538 === End of file commands.log === Start of file ftp_server.log 19:29:15.768567 ====> Client connect 19:29:15.769302 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:15.770650 < "USER anonymous" 19:29:15.770927 > "331 We are happy you popped in![CR][LF]" 19:29:15.771900 < "PASS ftp@example.com" 19:29:15.772161 > "230 Welcome you silly person[CR][LF]" 19:29:15.773082 < "PWD" 19:29:15.773334 > "257 "/" is current directory[CR][LF]" 19:29:15.774418 < "EPSV" 19:29:15.774609 ====> Passive DATA channel requested by client 19:29:15.774711 DATA sockfilt for passive data channel starting... 19:29:15.799165 DATA sockfilt for passive data channel started (pid 133960) 19:29:15.799907 DATA sockfilt for passive data channel listens on port 37507 19:29:15.800382 > "229 Entering Passive Mode (|||37507|)[LF]" 19:29:15.800555 Client has been notified that DATA conn will be accepted on port 37507 19:29:15.801706 Client connects to port 37507 19:29:15.801947 ====> Client established passive DATA connection on port 37507 19:29:15.802596 < "TYPE I" 19:29:15.802940 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:15.803963 < "SIZE verifiedserver" 19:29:15.804294 > "213 18[CR][LF]" 19:29:15.805331 < "RETR verifiedserver" 19:29:15.805853 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:15.806385 =====> Closing passive DATA connection... 19:29:15.806580 Server disconnects passive DATA connection 19:29:15.807021 Server disconnected passive DATA connection 19:29:15.807242 DATA sockfilt for passive data channel quits (pid 133960) 19:29:15.808357 DATA sockfilt for passive data channel quit (pid 133960) 19:29:15.808587 =====> Closed passive DATA connection 19:29:15.808808 > "226 File transfer complete[CR][LF]" 19:29:15.850537 < "QUIT" 19:29:15.850838 > "221 bye bye baby[CR][LF]" 19:29:15.855201 MAIN sockfilt said DISC 19:29:15.855507 ====> Client disconnected 19:29:15.855879 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:16.232378 ====> Client connect 19:29:16.233496 Received DATA (on stdin) 19:29:16.233689 > 160 bytes data, server => client 19:29:16.233788 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:16.233857 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:16.233917 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:16.234312 < 16 bytes data, client => server 19:29:16.234437 'USER anonymous\r\n' 19:29:16.235165 Received DATA (on stdin) 19:29:16.235260 > 33 bytes data, server => client 19:29:16.235338 '331 We are happy you popped in!\r\n' 19:29:16.235725 < 22 bytes data, client => server 19:29:16.235852 'PASS ftp@example.com\r\n' 19:29:16.236363 Received DATA (on stdin) 19:29:16.236471 > 30 bytes data, server => client 19:29:16.236549 '230 Welcome you silly person\r\n' 19:29:16.236921 < 5 bytes data, client => server 19:29:16.237041 'PWD\r\n' 19:29:16.237536 Received DATA (on stdin) 19:29:16.237765 > 30 bytes data, server => client 19:29:16.237852 '257 "/" is current directory\r\n' 19:29:16.238244 < 6 bytes data, client => server 19:29:16.238368 'EPSV\r\n' 19:29:16.264573 Received DATA (on stdin) 19:29:16.264711 > 38 bytes data, 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/valgrind540 ./libtest/lib540 http://test.remote.example.com/path/540 http://127.0.0.1:37525 silly:person custom.set.host.name > log/3/stdout540 2> log/3/stderr540 CMD (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/2/valgrind539 ./libtest/lib539 ftp://127.0.0.1:36773/path/to/the/file/539 ftp://127.0.0.1:36773/path/to/the/file/5390001 > log/2/stdout539 2> log/2/stderr539 erver => client 19:29:16.264790 '229 Entering Passive Mode (|||37507|)\n' 19:29:16.265574 < 8 bytes data, client => server 19:29:16.265848 'TYPE I\r\n' 19:29:16.267131 Received DATA (on stdin) 19:29:16.267254 > 33 bytes data, server => client 19:29:16.267330 '200 I modify TYPE as you wanted\r\n' 19:29:16.267735 < 21 bytes data, client => server 19:29:16.267861 'SIZE verifiedserver\r\n' 19:29:16.268493 Received DATA (on stdin) 19:29:16.268606 > 8 bytes data, server => client 19:29:16.268674 '213 18\r\n' 19:29:16.269100 < 21 bytes data, client => server 19:29:16.269228 'RETR verifiedserver\r\n' 19:29:16.270035 Received DATA (on stdin) 19:29:16.270164 > 29 bytes data, server => client 19:29:16.270242 '150 Binary junk (18 bytes).\r\n' 19:29:16.273008 Received DATA (on stdin) 19:29:16.273128 > 28 bytes data, server => client 19:29:16.273204 '226 File transfer complete\r\n' 19:29:16.314303 < 6 bytes data, client => server 19:29:16.314460 'QUIT\r\n' 19:29:16.315043 Received DATA (on stdin) 19:29:16.315154 > 18 bytes data, server => client 19:29:16.315234 '221 bye bye baby\r\n' 19:29:16.319118 ====> Client disconnect 19:29:16.320344 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:15.262375 Running IPv4 version 19:29:15.262747 Listening on port 37507 19:29:15.263000 Wrote pid 133960 to log/1/server/ftp_sockdata.pid 19:29:15.263120 Received PING (on stdin) 19:29:15.263697 Received PORT (on stdin) 19:29:15.265669 ====> Client connect 19:29:15.270345 Received DATA (on stdin) 19:29:15.270507 > 18 bytes data, server => client 19:29:15.270598 'WE ROOLZ: 109414\r\n' 19:29:15.271007 Received DISC (on stdin) 19:29:15.271155 ====> Client forcibly disconnected 19:29:15.271623 Received QUIT (on stdin) 19:29:15.271736 quits 19:29:15.271997 ============> 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 valgrind538 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind538 test 0540...[HTTP proxy auth Digest multi API re-using 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/valgrind540 ./libtest/lib540 http://test.remote.example.com/path/540 http://127.0.0.1:37525 silly:person custom.set.host.name > log/3/stdout540 2> log/3/stderr540 540: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind540 ./libtest/lib540 http://test.remote.example.com/path/540 http://127.0.0.1:37525 silly:person custom.set.host.name > log/3/stdout540 2> log/3/stderr540 === End of file commands.log === Start of file http_server.log 19:29:15.424383 ====> Client connect 19:29:15.424603 accept_connection 3 returned 4 19:29:15.424726 accept_connection 3 returned 0 19:29:15.424825 Read 93 bytes 19:29:15.424895 Process 93 bytes request 19:29:15.424964 Got request: GET /verifiedserver HTTP/1.1 19:29:15.425025 Are-we-friendly question received 19:29:15.425176 Wrote request (93 bytes) input to log/3/server.input 19:29:15.425309 Identifying ourselves as friends 19:29:15.425902 Response sent (57 bytes) and written to log/3/server.response 19:29:15.425994 special request received, no persistency 19:29:15.426055 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd connection-monitor Testnum 540 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind540 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind540 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/lib539 ftp://127.0.0.1:36773/path/to/the/file/539 ftp://127.0.0.1:36773/path/to/the/file/5390001 > log/2/stdout539 2> log/2/stderr539 539: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib539 ftp://127.0.0.1:36773/path/to/the/file/539 ftp://127.0.0.1:36773/path/to/the/file/5390001 > log/2/stdout5CMD (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/1/valgrind541 ./libtest/lib541 ftp://127.0.0.1:39333/541 log/1/upload541 > log/1/stdout541 2> log/1/stderr541 39 2> log/2/stderr539 === End of file commands.log === Start of file ftp_server.log 19:29:15.900687 ====> Client connect 19:29:15.901709 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:15.906230 < "USER anonymous" 19:29:15.906606 > "331 We are happy you popped in![CR][LF]" 19:29:15.907642 < "PASS ftp@example.com" 19:29:15.907958 > "230 Welcome you silly person[CR][LF]" 19:29:15.909191 < "PWD" 19:29:15.909744 > "257 "/" is current directory[CR][LF]" 19:29:15.910881 < "EPSV" 19:29:15.911100 ====> Passive DATA channel requested by client 19:29:15.911239 DATA sockfilt for passive data channel starting... 19:29:15.921757 DATA sockfilt for passive data channel started (pid 134002) 19:29:15.922457 DATA sockfilt for passive data channel listens on port 36923 19:29:15.922792 > "229 Entering Passive Mode (|||36923|)[LF]" 19:29:15.922958 Client has been notified that DATA conn will be accepted on port 36923 19:29:15.924063 Client connects to port 36923 19:29:15.924301 ====> Client established passive DATA connection on port 36923 19:29:15.924850 < "TYPE I" 19:29:15.925155 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:15.926519 < "SIZE verifiedserver" 19:29:15.926843 > "213 18[CR][LF]" 19:29:15.927819 < "RETR verifiedserver" 19:29:15.928125 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:15.928840 =====> Closing passive DATA connection... 19:29:15.929010 Server disconnects passive DATA connection 19:29:15.930256 Server disconnected passive DATA connection 19:29:15.930480 DATA sockfilt for passive data channel quits (pid 134002) 19:29:15.931888 DATA sockfilt for passive data channel quit (pid 134002) 19:29:15.932146 =====> Closed passive DATA connection 19:29:15.932359 > "226 File transfer complete[CR][LF]" 19:29:15.970452 < "QUIT" 19:29:15.970759 > "221 bye bye baby[CR][LF]" 19:29:15.975769 MAIN sockfilt said DISC 19:29:15.976071 ====> Client disconnected 19:29:15.976417 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:15.363729 ====> Client connect 19:29:15.366270 Received DATA (on stdin) 19:29:15.366391 > 160 bytes data, server => client 19:29:15.366473 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:15.366542 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:15.366610 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:15.369731 < 16 bytes data, client => server 19:29:15.369880 'USER anonymous\r\n' 19:29:15.370791 Received DATA (on stdin) 19:29:15.370914 > 33 bytes data, server => client 19:29:15.370988 '331 We are happy you popped in!\r\n' 19:29:15.371409 < 22 bytes data, client => server 19:29:15.371544 'PASS ftp@example.com\r\n' 19:29:15.372179 Received DATA (on stdin) 19:29:15.372299 > 30 bytes data, server => client 19:29:15.372378 '230 Welcome you silly person\r\n' 19:29:15.372879 < 5 bytes data, client => server 19:29:15.373031 'PWD\r\n' 19:29:15.373919 Received DATA (on stdin) 19:29:15.374093 > 30 bytes data, server => client 19:29:15.374176 '257 "/" is current directory\r\n' 19:29:15.374647 < 6 bytes data, client => server 19:29:15.374780 'EPSV\r\n' 19:29:15.386989 Received DATA (on stdin) 19:29:15.387112 > 38 bytes data, server => client 19:29:15.387191 '229 Entering Passive Mode (|||36923|)\n' 19:29:15.388019 < 8 bytes data, client => server 19:29:15.388136 'TYPE I\r\n' 19:29:15.389354 Received DATA (on stdin) 19:29:15.389469 > 33 bytes data, server => client 19:29:15.389544 '200 I modify TYPE as you wanted\r\n' 19:29:15.390301 < 21 bytes data, client => server 19:29:15.390428 'SIZE verifiedserver\r\n' 19:29:15.391047 Received DATA (on stdin) 19:29:15.391158 > 8 bytes data, server => client 19:29:15.391230 '213 18\r\n' 19:29:15.391616 < 21 bytes data, client => server 19:29:15.391735 'RETR verifiedserver\r\n' 19:29:15.392316 Received DATA (on stdin) 19:29:15.392422 > 29 bytes data, server => client 19:29:15.392490 '150 Binary junk (18 bytes).\r\n' 19:29:15.396547 Received DATA (on stdin) 19:29:15.396663 > 28 bytes data, server => client 19:29:15.396744 '226 File transfer complete\r\n' 19:29:15.434188 < 6 bytes data, client => server 19:29:15.434339 'QUIT\r\n' 19:29:15.434949 Received DATA (on stdin) 19:29:15.435066 > 18 bytes data, server => client 19:29:15.435137 '221 bye bye baby\r\n' 19:29:15.435480 ====> Client disconnect 19:29:15.440278 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:15.384923 Running IPv4 version 19:29:15.385275 Listening on port 36923 19:29:15.385548 Wrote pid 134002 to log/2/server/ftp_sockdata.pid 19:29:15.385746 Received PING (on stdin) 19:29:15.386240 Received PORT (on stdin) 19:29:15.388076 ====> Client connect 19:29:15.393384 Received DATA (on stdin) 19:29:15.393501 > 18 bytes data, server => client 19:29:15.393572 'WE ROOLZ: 116354\r\n' 19:29:15.394245 Received DISC (on stdin) 19:29:15.394859 ====> Client forcibly disconnected 19:29:15.395155 Received QUIT (on stdin) 19:29:15.395247 quits 19:29:15.395505 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 539 === End of file server.cmd === Start of file valgrind539 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind539 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/1/valgrind541 ./libtest/lib541 ftp://127.0.0.1:39333/541 log/1/upload541 > log/1/stdout541 2> log/1/stderr541 541: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind541 ./libtest/lib541 ftp://127.0.0.1:39333/541 log/1/upload541 > log/1/stdout541 2> log/1/stderr541 === End of file commands.log === Start of file ftp_server.log 19:29:16.385025 ====> Client connect 19:29:16.385809 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:16.387497 < "USER anonymous" 19:29:16.387785 > "331 We are happy you popped in![CR][LF]" 19:29:16.389180 < "PASS ftp@example.com" 19:29:16.389508 > "230 Welcome you silly person[CR][LF]" 19:29:16.390815 < "PWD" 19:29:16.3910CMD (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/2/valgrind543 ./libtest/lib543 - > log/2/stdout543 2> log/2/stderr543 74 > "257 "/" is current directory[CR][LF]" 19:29:16.392288 < "EPSV" 19:29:16.392466 ====> Passive DATA channel requested by client 19:29:16.392564 DATA sockfilt for passive data channel starting... 19:29:16.399781 DATA sockfilt for passive data channel started (pid 134162) 19:29:16.400414 DATA sockfilt for passive data channel listens on port 33395 19:29:16.400675 > "229 Entering Passive Mode (|||33395|)[LF]" 19:29:16.400811 Client has been notified that DATA conn will be accepted on port 33395 19:29:16.402347 Client connects to port 33395 19:29:16.402586 ====> Client established passive DATA connection on port 33395 19:29:16.403027 < "TYPE I" 19:29:16.403681 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:16.404450 < "SIZE verifiedserver" 19:29:16.405159 > "213 18[CR][LF]" 19:29:16.405985 < "RETR verifiedserver" 19:29:16.406690 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:16.407178 =====> Closing passive DATA connection... 19:29:16.407319 Server disconnects passive DATA connection 19:29:16.407859 Server disconnected passive DATA connection 19:29:16.408060 DATA sockfilt for passive data channel quits (pid 134162) 19:29:16.409136 DATA sockfilt for passive data channel quit (pid 134162) 19:29:16.409345 =====> Closed passive DATA connection 19:29:16.409947 > "226 File transfer complete[CR][LF]" 19:29:16.450829 < "QUIT" 19:29:16.451090 > "221 bye bye baby[CR][LF]" 19:29:16.452009 MAIN sockfilt said DISC 19:29:16.452249 ====> Client disconnected 19:29:16.452524 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:16.848831 ====> Client connect 19:29:16.850220 Received DATA (on stdin) 19:29:16.850328 > 160 bytes data, server => client 19:29:16.850404 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:16.850469 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:16.850524 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:16.850926 < 16 bytes data, client => server 19:29:16.851041 'USER anonymous\r\n' 19:29:16.852162 Received DATA (on stdin) 19:29:16.852264 > 33 bytes data, server => client 19:29:16.852331 '331 We are happy you popped in!\r\n' 19:29:16.852698 < 22 bytes data, client => server 19:29:16.852812 'PASS ftp@example.com\r\n' 19:29:16.853894 Received DATA (on stdin) 19:29:16.854002 > 30 bytes data, server => client 19:29:16.854070 '230 Welcome you silly person\r\n' 19:29:16.854437 < 5 bytes data, client => server 19:29:16.854544 'PWD\r\n' 19:29:16.855412 Received DATA (on stdin) 19:29:16.855497 > 30 bytes data, server => client 19:29:16.855560 '257 "/" is current directory\r\n' 19:29:16.855934 < 6 bytes data, client => server 19:29:16.856049 'EPSV\r\n' 19:29:16.865156 Received DATA (on stdin) 19:29:16.865254 > 38 bytes data, server => client 19:29:16.865321 '229 Entering Passive Mode (|||33395|)\n' 19:29:16.866244 < 8 bytes data, client => server 19:29:16.866369 'TYPE I\r\n' 19:29:16.867416 Received DATA (on stdin) 19:29:16.867509 > 33 bytes data, server => client 19:29:16.867613 '200 I modify TYPE as you wanted\r\n' 19:29:16.868170 < 21 bytes data, client => server 19:29:16.868259 'SIZE verifiedserver\r\n' 19:29:16.868866 Received DATA (on stdin) 19:29:16.868956 > 8 bytes data, server => client 19:29:16.869106 '213 18\r\n' 19:29:16.869456 < 21 bytes data, client => server 19:29:16.869563 'RETR verifiedserver\r\n' 19:29:16.870420 Received DATA (on stdin) 19:29:16.870513 > 29 bytes data, server => client 19:29:16.870618 '150 Binary junk (18 bytes).\r\n' 19:29:16.873767 Received DATA (on stdin) 19:29:16.873878 > 28 bytes data, server => client 19:29:16.873979 '226 File transfer complete\r\n' 19:29:16.914398 < 6 bytes data, client => server 19:29:16.914542 'QUIT\r\n' 19:29:16.915445 Received DATA (on stdin) 19:29:16.915535 > 18 bytes data, server => client 19:29:16.915605 '221 bye bye baby\r\n' 19:29:16.915980 ====> Client disconnect 19:29:16.916866 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:16.863078 Running IPv4 version 19:29:16.863442 Listening on port 33395 19:29:16.863650 Wrote pid 134162 to log/1/server/ftp_sockdata.pid 19:29:16.863749 Received PING (on stdin) 19:29:16.864265 Received PORT (on stdin) 19:29:16.866280 ====> Client connect 19:29:16.871160 Received DATA (on stdin) 19:29:16.871284 > 18 bytes data, server => client 19:29:16.871358 'WE ROOLZ: 109414\r\n' 19:29:16.871835 Received DISC (on stdin) 19:29:16.871974 ====> Client forcibly disconnected 19:29:16.872406 Received QUIT (on stdin) 19:29:16.872510 quits 19:29:16.872779 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 541 === End of file server.cmd === Start of file upload541 Contents of a file to verify ftp upload works? === End of file upload541 === Start of file valgrind541 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind541 CMD (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/valgrind542 ./libtest/lib542 ftp://127.0.0.1:43789/542 > log/3/stdout542 2> log/3/stderr542 * starts no server 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/2/valgrind543 ./libtest/lib543 - > log/2/stdout543 2> log/2/stderr543 543: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:16.978095715 +0000 +++ log/2/check-generated 2025-05-23 19:29:16.978095715 +0000 @@ -1,3 +0,0 @@ -%9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF] -IN: '' OUT: ''[LF] -IN: ' 12' OUT: '%2012'[LF] == Contents of files in the log/2/ dir after test 543 === Start of file check-expected %9C%26K%3DI%04%A1%01%E0%D8%7C%20%B7%EFS%29%FA%1DW%E1[LF] IN: '' OUT: ''[LF] IN: ' 12' OUT: '%2012'[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind543 ./libtest/lib543 - > log/2/stdout543 2> log/2/stderr543 === End of file commands.log === Start of file server.cmd Testnum 543 === End of file server.cmd === Start of file valgrind543 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind542 ./libtest/lib542 ftp://127.0.0.1:43789/542 > log/3/stdout542 2> log/3/stderr542 542: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind542 ./libtest/lib542 ftp://127.0.0.1:43789/542 > log/3/stdout542 2> log/3/stderr542 === End of file commands.log === Start of file ftp_server.log 19:29:16.581183 ====> Client connect 19:29:16.582119 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:16.583435 < "USER anonymous" 19:29:16.583713 > "331 We are happy you popped in![CR][LF]" 19:29:16.584669 < "PASS ftp@example.com" 19:29:16.584941 > "230 Welcome you silly person[CR][LF]" 19:29:16.585997 < "PWD" 19:29:16.586276 > "257 "/" is current directory[CR][LF]" 19:29:16.587227 < "EPSV" 19:29:16.587408 ====> Passive DATA channel requested by client 19:29:16.587511 DATA sockfilt for passive data channel starting... 19:29:16.594566 DATA sockfilt for passive data channel started (pid 134185) 19:29:16.595292 DATA sockfilt for passive data channel listens on port 44663 19:29:16.595620 > "229 Entering Passive Mode (|||44663|)[LF]" 19:29:16.595796 Client has been notified that DATA conn will be accepted on port 44663 19:29:16.596700 Client connects to port 44663 19:29:16.596950 ====> Client established passive DATA connection on port 44663 19:29:16.597635 < "TYPE I" 19:29:16.597977 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:16.598943 < "SIZE verifiedserver" 19:29:16.599228 > "213 18[CR][LF]" 19:29:16.600128 < "RETR verifiedserver" 19:29:16.600403 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:16.601319 =====> Closing passive DATA connection... 19:29:16.601746 Server disconnects passive DATA connection 19:29:16.601951 Fancy that; client wants to DISC, too 19:29:16.602197 Server disconnected passive DATA connection 19:29:16.602370 DATA sockfilt for passive data channel quits (pid 134185) 19:29:16.603558 DATA sockfilt for passive data channel quit (pid 134185) 19:29:16.603784 =====> Closed passive DATA connection 19:29:16.604039 > "226 File transfer complete[CR][LF]" 19:29:16.646468 < "QUIT" 19:29:16.646779 > "221 bye bye baby[CR][LF]" 19:29:16.651206 MAIN sockfilt said DISC 19:29:16.651447 ====> Client disconnected 19:29:16.651721 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:17.044973 ====> Client connect 19:29:17.046269 Received DATA (on stdin) 19:29:17.046403 > 160 bytes data, server => client 19:29:17.046480 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:17.046552 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:17.046624 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:17.047053 < 16 bytes data, client => server 19:29:17.047162 'USER anonymous\r\n' 19:29:17.047880 Received DATA (on stdin) 19:29:17.047975 > 33 bytes data, server => client 19:29:17.048043 '331 We are happy you popped in!\r\n' 19:29:17.048435 < 22 bytes data, client => server 19:29:17.048546 'PASS ftp@example.com\r\n' 19:29:17.049108 Received DATA (on stdin) 19:29:17.049206 > 30 bytes data, server => client 19:29:17.049274 '230 Welcome you silly person\r\n' 19:29:17.049710 < 5 bytes data, client => server 19:29:17.049834 'PWD\r\n' 19:29:17.050450 Received DATA (on stdin) 19:29:17.050548 > 30 bytes data, server => client 19:29:17.050614 '257 "/" is current directory\r\n' 19:29:17.051011 < 6 bytes data, client => server 19:29:17.051114 'EPSV\r\n' 19:29:17.059782 Received DATA (on stdin) 19:29:17.059902 > 38 bytes data, server => client 19:29:17.059974 '229 Entering Passive Mode (|||44663|)\n' 19:29:17.060777 < 8 bytes data, client => server 19:29:17.060867 'TYPE I\r\n' 19:29:17.062139 Received DATA (on stdin) 19:29:17.062245 > 33 bytes data, server => client 19:29:17.062313 '200 I modify TYPE as you wanted\r\n' 19:29:17.062718 < 21 bytes data, client => server 19:29:17.062835 'SIZE verifiedserver\r\n' 19:29:17.063396 Received DATA (on stdin) 19:29:17.063498 > 8 bytes data, server => client 19:29:17.063566 '213 18\r\n' 19:29:17.063931 < 21 bytes data, client => server 19:29:17.064035 'RETR verifiedserver\r\n' 19:29:17.064566 Received DATA (on stdin) 19:29:17.064656 > 29 bytes data, server => client 19:29:17.064720 '150 Binary junk (18 bytes).\r\n' 19:29:17.068197 Received DATA (on stdin) 19:29:17.068320 > 28 bytes data, server => client 19:29:17.068394 '226 File transfer complete\r\n' 19:29:17.110141 < 6 bytes data, client => server 19:29:17.110286 'QUIT\r\n' 19:29:17.110946 Received DATA (on stdin) 19:29:17.111057 > 18 bytes data, server => client 19:29:17.111121 '221 bye bye baby\r\n' 19:29:17.111431 ====> Client disconnect 19:29:17.115636 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:16.057810 Running IPv4 version 19:29:16.058149 Listening on port 44663 19:29:16.058375 Wrote pid 1341CMD (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/4/valgrind537 ./libtest/lib537 http://127.0.0.1:43669/537 > log/4/stdout537 2> log/4/stderr537 CMD (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/1/valgrind544 ./libtest/lib544 http://127.0.0.1:41477/544 > log/1/stdout544 2> log/1/stderr544 85 to log/3/server/ftp_sockdata.pid 19:29:16.058477 Received PING (on stdin) 19:29:16.059083 Received PORT (on stdin) 19:29:16.060651 ====> Client connect 19:29:16.064799 Received DATA (on stdin) 19:29:16.064932 > 18 bytes data, server => client 19:29:16.065018 'WE ROOLZ: 109394\r\n' 19:29:16.065413 ====> Client disconnect 19:29:16.066130 Received DISC (on stdin) 19:29:16.066242 Crikey! Client also wants to disconnect 19:29:16.066335 Received ACKD (on stdin) 19:29:16.066766 Received QUIT (on stdin) 19:29:16.066881 quits 19:29:16.067217 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 542 === End of file server.cmd === Start of file valgrind542 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind542 prechecked ./libtest/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/4/valgrind537 ./libtest/lib537 http://127.0.0.1:43669/537 > log/4/stdout537 2> log/4/stderr537 537: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind537 ./libtest/lib537 http://127.0.0.1:43669/537 > log/4/stdout537 2> log/4/stderr537 === End of file commands.log === Start of file http_server.log 19:29:16.190672 ====> Client connect 19:29:16.190922 accept_connection 3 returned 4 19:29:16.191043 accept_connection 3 returned 0 19:29:16.191154 Read 93 bytes 19:29:16.191229 Process 93 bytes request 19:29:16.191319 Got request: GET /verifiedserver HTTP/1.1 19:29:16.191530 Are-we-friendly question received 19:29:16.191969 Wrote request (93 bytes) input to log/4/server.input 19:29:16.192197 Identifying ourselves as friends 19:29:16.192765 Response sent (57 bytes) and written to log/4/server.response 19:29:16.192869 special request received, no persistency 19:29:16.192929 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind537 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind537 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/1/valgrind544 ./libtest/lib544 http://127.0.0.1:41477/544 > log/1/stdout544 2> log/1/stderr544 544: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind544 ./libtest/lib544 http://127.0.0.1:41477/544 > log/1/stdout544 2> log/1/stderr544 === End of file commands.log === Start of file http_server.log 19:29:17.530777 ====> Client connect 19:29:17.531001 accept_connection 3 returned 4 19:29:17.531120 accept_connection 3 returned 0 19:29:17.531239 Read 93 bytes 19:29:17.531320 Process 93 bytes request 19:29:17.531397 Got request: GET /verifiedserver HTTP/1.1 19:29:17.531470 Are-we-friendly question received 19:29:17.531638 Wrote request (93 bytes) input to log/1/server.input 19:29:17.531844 Identifying ourselves as friends 19:29:17.532418 Response sent (57 bytes) and written to log/1/server.response 19:29:17.532520 special request received, no persistency 19:29:17.532586 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === ECMD (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/2/valgrind545 ./libtest/lib545 http://127.0.0.1:39599/545 > log/2/stdout545 2> log/2/stderr545 CMD (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/valgrind546 ./libtest/lib533 ftp://127.0.0.1:43789/path/546 ftp://127.0.0.1:43789/path/546 > log/3/stdout546 2> log/3/stderr546 nd of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 544 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind544 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind545 ./libtest/lib545 http://127.0.0.1:39599/545 > log/2/stdout545 2> log/2/stderr545 545: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind545 ./libtest/lib545 http://127.0.0.1:39599/545 > log/2/stdout545 2> log/2/stderr545 === End of file commands.log === Start of file http_server.log 19:29:17.559198 ====> Client connect 19:29:17.559408 accept_connection 3 returned 4 19:29:17.559518 accept_connection 3 returned 0 19:29:17.559612 Read 93 bytes 19:29:17.559674 Process 93 bytes request 19:29:17.559739 Got request: GET /verifiedserver HTTP/1.1 19:29:17.559795 Are-we-friendly question received 19:29:17.559927 Wrote request (93 bytes) input to log/2/server.input 19:29:17.560061 Identifying ourselves as friends 19:29:17.560535 Response sent (57 bytes) and written to log/2/server.response 19:29:17.560622 special request received, no persistency 19:29:17.560673 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 545 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind545 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind545 CMD (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/4/valgrind547 ./libtest/lib547 http://test.remote.example.com/path/547 http://127.0.0.1:43669 testuser:testpass > log/4/stdout547 2> log/4/stderr547 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/lib533 ftp://127.0.0.1:43789/path/546 ftp://127.0.0.1:43789/path/546 > log/3/stdout546 2> log/3/stderr546 546: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:17.894118710 +0000 +++ log/3/check-generated 2025-05-23 19:29:17.894118710 +0000 @@ -1,6 +0,0 @@ -data[LF] - to[LF] - see[LF] -that FTP[LF] -works[LF] - so does it?[LF] == Contents of files in the log/3/ dir after test 546 === Start of file check-expected data[LF] to[LF] see[LF] that FTP[LF] works[LF] so does it?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/lib533 ftp://127.0.0.1:43789/path/546 ftp://127.0.0.1:43789/path/546 > log/3/stdout546 2> log/3/stderr546 === End of file commands.log === Start of file ftp_server.log 19:29:17.283847 ====> Client connect 19:29:17.284805 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:17.286620 < "USER anonymous" 19:29:17.286909 > "331 We are happy you popped in![CR][LF]" 19:29:17.287841 < "PASS ftp@example.com" 19:29:17.288091 > "230 Welcome you silly person[CR][LF]" 19:29:17.289009 < "PWD" 19:29:17.289265 > "257 "/" is current directory[CR][LF]" 19:29:17.290343 < "EPSV" 19:29:17.290528 ====> Passive DATA channel requested by client 19:29:17.290631 DATA sockfilt for passive data channel starting... 19:29:17.298332 DATA sockfilt for passive data channel started (pid 134462) 19:29:17.299339 DATA sockfilt for passive data channel listens on port 35703 19:29:17.299741 > "229 Entering Passive Mode (|||35703|)[LF]" 19:29:17.299947 Client has been notified that DATA conn will be accepted on port 35703 19:29:17.301674 Client connects to port 35703 19:29:17.301968 ====> Client established passive DATA connection on port 35703 19:29:17.302734 < "TYPE I" 19:29:17.303135 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:17.304768 < "SIZE verifiedserver" 19:29:17.305130 > "213 18[CR][LF]" 19:29:17.306757 < "RETR verifiedserver" 19:29:17.307398 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:17.308095 =====> Closing passive DATA connection... 19:29:17.308370 Server disconnects passive DATA connection 19:29:17.309902 Server disconnected passive DATA connection 19:29:17.310209 DATA sockfilt for passive data channel quits (pid 134462) 19:29:17.312059 DATA sockfilt for passive data channel quit (pid 134462) 19:29:17.312303 =====> Closed passive DATA connection 19:29:17.313113 > "226 File transfer complete[CR][LF]" 19:29:17.351644 < "QUIT" 19:29:17.351940 > "221 bye bye baby[CR][LF]" 19:29:17.353888 MAIN sockfilt said DISC 19:29:17.354186 ====> Client disconnected 19:29:17.354568 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:17.747601 ====> Client connect 19:29:17.748942 Received DATA (on stdin) 19:29:17.749086 > 160 bytes data, server => client 19:29:17.749186 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:17.749296 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:17.749381 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:17.750209 < 16 bytes data, client => server 19:29:17.750348 'USER anonymous\r\n' 19:29:17.751063 Received DATA (on stdin) 19:29:17.751161 > 33 bytes data, server => client 19:29:17.751231 '331 We are happy you popped in!\r\n' 19:29:17.751604 < 22 bytes data, client => server 19:29:17.751730 'PASS ftp@example.com\r\n' 19:29:17.752249 Received DATA (on stdin) 19:29:17.752345 > 30 bytes data, server => client 19:29:17.752412 '230 Welcome you silly person\r\n' 19:29:17.752769 < 5 bytes data, client => server 19:29:17.752889 'PWD\r\n' 19:29:17.753414 Received DATA (on stdin) 19:29:17.753510 > 30 bytes data, server => client 19:29:17.753683 '257 "/" is current directory\r\n' 19:29:17.754097 < 6 bytes data, client => server 19:29:17.754217 'EPSV\r\n' 19:29:17.764351 Received DATA (on stdin) 19:29:17.764474 > 38 bytes data, server => client 19:29:17.764550 '229 Entering Passive Mode (|||35703|)\n' 19:29:17.765371 < 8 bytes data, client => server 19:29:17.765475 'TYPE I\r\n' 19:29:17.767614 Received DATA (on stdin) 19:29:17.767762 > 33 bytes data, server => client 19:29:17.767852 '200 I modify TYPE as you wanted\r\n' 19:29:17.768298 < 21 bytes data, client => server 19:29:17.768426 'SIZE verifiedserver\r\n' 19:29:17.769542 Received DATA (on stdin) 19:29:17.769745 > 8 bytes data, server => client 19:29:17.769826 '213 18\r\n' 19:29:17.770255 < 21 bytes data, client => server 19:29:17.770391 'RETR verifiedserver\r\n' 19:29:17.771234 Received DATA (on stdin) 19:29:17.771355 > 29 bytes data, server => client 19:29:17.772822 '150 Binary junk (18 bytes).\r\n' 19:29:17.776729 Received DATA (on stdin) 19:29:17.776911 > 28 bytes data, server => client 19:29:17.777058 '226 File transfer complete\r\n' 19:29:17.815370 < 6 bytes data, client => server 19:29:17.815522 'QUIT\r\n' 19:29:17.816099 Received DATA (on stdin) 19:29:17.816207 > 18 bytes data, server => client 19:29:17.816280 '221 bye bye baby\r\n' 19:29:17.817713 ====> Client disconnect 19:29:17.820026 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:17.761427 Running IPv4 version 19:29:17.761862 Listening on port 35703 19:29:17.762144 Wrote pid 134462 to log/3/server/ftp_sockdata.pid 19:29:17.762262 Received PING (on stdin) 19:29:17.763024 Received PORT (on stdin) 19:29:17.765204 ====> Client connect 19:29:17.773177 Received DATA (on stdin) 19:29:17.773314 > 18 bytes data, server => client 19:29:17.773402 'WE ROOLZ: 109394\r\n' 19:29:17.773815 Received DISC (on stdin) 19:29:17.774577 ====> Client forcibly disconnected 19:29:17.774905 Received QUIT (on stdin) 19:29:17.775019 quits 19:29:17.775351 ============> 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 valgrind546 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind546 test 0547...[HTTP proxy auth NTLM with POST data from read callback] ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leakCMD (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/2/valgrind549 ./libtest/lib549 ftp://www.example.com/moo/549 http://127.0.0.1:39599 > log/2/stdout549 2> log/2/stderr549 -check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind547 ./libtest/lib547 http://test.remote.example.com/path/547 http://127.0.0.1:43669 testuser:testpass > log/4/stdout547 2> log/4/stderr547 547: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind547 ./libtest/lib547 http://test.remote.example.com/path/547 http://127.0.0.1:43669 testuser:testpass > log/4/stdout547 2> log/4/stderr547 === End of file commands.log === Start of file http_server.log 19:29:17.782809 ====> Client connect 19:29:17.783030 accept_connection 3 returned 4 19:29:17.783146 accept_connection 3 returned 0 19:29:17.783600 Read 93 bytes 19:29:17.783717 Process 93 bytes request 19:29:17.783792 Got request: GET /verifiedserver HTTP/1.1 19:29:17.783866 Are-we-friendly question received 19:29:17.784032 Wrote request (93 bytes) input to log/4/server.input 19:29:17.784178 Identifying ourselves as friends 19:29:17.784572 Response sent (57 bytes) and written to log/4/server.response 19:29:17.784683 special request received, no persistency 19:29:17.784753 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 547 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind547 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind547 CMD (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/1/valgrind548 ./libtest/lib548 http://test.remote.example.com/path/548 http://127.0.0.1:41477 testuser:testpass > log/1/stdout548 2> log/1/stderr548 CMD (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/valgrind550 ./libtest/lib549 ftp://www.example.com/moo/550 http://127.0.0.1:37525 ascii > log/3/stdout550 2> log/3/stderr550 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/2/valgrind549 ./libtest/lib549 ftp://www.example.com/moo/549 http://127.0.0.1:39599 > log/2/stdout549 2> log/2/stderr549 549: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:18.206126542 +0000 +++ log/2/check-generated 2025-05-23 19:29:18.206126542 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/2/ dir after test 549 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind549 ./libtest/lib549 ftp://www.example.com/moo/549 http://127.0.0.1:39599 > log/2/stdout549 2> log/2/stderr549 === End of file commands.log === Start of file http_server.log 19:29:18.161397 ====> Client connect 19:29:18.161757 accept_connection 3 returned 4 19:29:18.161890 accept_connection 3 returned 0 19:29:18.162001 Read 93 bytes 19:29:18.162082 Process 93 bytes request 19:29:18.162156 Got request: GET /verifiedserver HTTP/1.1 19:29:18.162228 Are-we-friendly question received 19:29:18.162400 Wrote request (93 bytes) input to log/2/server.input 19:29:18.162586 Identifying ourselves as friends 19:29:18.163318 Response sent (57 bytes) and written to log/2/server.response 19:29:18.163424 special request received, no persistency 19:29:18.163482 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 549 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind549 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind548 ./libtest/lib548 http://test.remote.example.com/path/548 http://127.0.0.1:41477 testuser:testpass > log/1/stdout548 2> log/1/stderr548 548: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind548 ./libtest/lib548 http://test.remote.example.com/path/548 http://127.0.0.1:41477 testuser:testpass > log/1/stdout548 2> log/1/stderr548 === End of file commands.log === Start of file http_server.log 19:29:18.107017 ====> Client connect 19:29:18.107284 accept_connection 3 returned 4 19:29:18.107413 accept_connection 3 returned 0 19:29:18.107516 Read 93 bytes 19:29:18.107588 Process 93 bytes request 19:29:18.107657 Got request: GET /verifiedserver HTTP/1.1 19:29:18.107718 Are-we-friendly question received 19:29:18.107879 Wrote request (93 bytes) input to log/1/server.input 19:29:18.108036 Identifying ourselves as friends 19:29:18.108581 Response sent (57 bytes) and written to log/1/server.response 19:29:18.108750 special request received, no persistency 19:29:18.108976 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 548 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind548 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind548 CMD (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/4/valgrind551 ./libtest/lib547 http://test.remote.example.com/path/551 http://127.0.0.1:43669 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 CMD (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/1/valgrind553 ./libtest/lib553 http://127.0.0.1:41477/path/553 > log/1/stdout553 2> log/1/stderr553 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/3/valgrind550 ./libtest/lib549 ftp://www.example.com/moo/550 http://127.0.0.1:37525 ascii > log/3/stdout550 2> log/3/stderr550 550: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:18.510134173 +0000 +++ log/3/check-generated 2025-05-23 19:29:18.510134173 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/3/ dir after test 550 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind550 ./libtest/lib549 ftp://www.example.com/moo/550 http://127.0.0.1:37525 ascii > log/3/stdout550 2> log/3/stderr550 === End of file commands.log === Start of file http_server.log 19:29:17.472113 ====> Client connect 19:29:17.472346 accept_connection 3 returned 4 19:29:17.472459 accept_connection 3 returned 0 19:29:17.472916 Read 93 bytes 19:29:17.473020 Process 93 bytes request 19:29:17.473093 Got request: GET /verifiedserver HTTP/1.1 19:29:17.473154 Are-we-friendly question received 19:29:17.473317 Wrote request (93 bytes) input to log/3/server.input 19:29:17.473469 Identifying ourselves as friends 19:29:17.474050 Response sent (57 bytes) and written to log/3/server.response 19:29:17.474143 special request received, no persistency 19:29:17.474202 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 550 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind550 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind550 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/lib547 http://test.remote.example.com/path/551 http://127.0.0.1:43669 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 551: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib547 http://test.remote.example.com/path/551 http://127.0.0.1:43669 s1lly:pers0n > log/4/stdout551 2> log/4/stderr551 === End of file commands.log === Start of file http_server.log 19:29:18.516181 ====> Client connect 19:29:18.516406 accept_connection 3 returned 4 19:29:18.516529 accept_connection 3 returned 0 19:29:18.516633 Read 93 bytes 19:29:18.516712 Process 93 bytes request 19:29:18.516794 Got request: GET /verifiedserver HTTP/1.1 19:29:18.516866 Are-we-friendly question received 19:29:18.517026 Wrote request (93 bytes) input to log/4/server.input 19:29:18.517182 Identifying ourselves as friends 19:29:18.517958 Response sent (57 bytes) and written to log/4/server.response 19:29:18.518155 special request received, no persistency 19:29:18.518263 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 551 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind551 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind551 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/1/valgrind553 ./libtest/lib553 http://127.0.0.1:41477/path/553 > log/1/stdout553 2> log/1/stderr553 553: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 553 === Start of file commands.log ../libtool --mode=execute /usr/bin/vaCMD (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/2/valgrind552 ./libtest/lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:39599/ > log/2/stdout552 2> log/2/stderr552 CMD (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/valgrind554 ./libtest/lib554 http://127.0.0.1:37525/554 > log/3/stdout554 2> log/3/stderr554 lgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/1/valgrind553 ./libtest/lib553 http://127.0.0.1:41477/path/553 > log/1/stdout553 2> log/1/stderr553 === End of file commands.log === Start of file http_server.log 19:29:18.824753 ====> Client connect 19:29:18.824960 accept_connection 3 returned 4 19:29:18.825069 accept_connection 3 returned 0 19:29:18.825156 Read 93 bytes 19:29:18.825225 Process 93 bytes request 19:29:18.825291 Got request: GET /verifiedserver HTTP/1.1 19:29:18.825348 Are-we-friendly question received 19:29:18.825484 Wrote request (93 bytes) input to log/1/server.input 19:29:18.825663 Identifying ourselves as friends 19:29:18.826144 Response sent (57 bytes) and written to log/1/server.response 19:29:18.826225 special request received, no persistency 19:29:18.826277 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 553 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind553 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind553 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/2/valgrind552 ./libtest/lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:39599/ > log/2/stdout552 2> log/2/stderr552 552: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind552 ./libtest/lib552 http://test.remote.example.com/path/552 http://s1lly:pers0n@127.0.0.1:39599/ > log/2/stdout552 2> log/2/stderr552 === End of file commands.log === Start of file http_server.log 19:29:18.801383 ====> Client connect 19:29:18.801679 accept_connection 3 returned 4 19:29:18.801815 accept_connection 3 returned 0 19:29:18.802311 Read 93 bytes 19:29:18.802435 Process 93 bytes request 19:29:18.802525 Got request: GET /verifiedserver HTTP/1.1 19:29:18.802590 Are-we-friendly question received 19:29:18.802745 Wrote request (93 bytes) input to log/2/server.input 19:29:18.802891 Identifying ourselves as friends 19:29:18.803268 Response sent (57 bytes) and written to log/2/server.response 19:29:18.803353 special request received, no persistency 19:29:18.803409 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 552 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind552 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind552 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/lib554 http://127.0.0.1:37525/554 > log/3/stdout554 2> log/3/stderr554 554: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib554 http://127.0.0.1:37525/554 > log/3/stdout554 2> log/3/stderr554 === End of file commands.log === Start of file http_server.log 19:29:18.101282 ====> Client connect 19:29:18.101604 accept_connection 3 returned 4 19:29:18.101856 accept_connection 3 returned 0 19:29:18.102006 Read 93 bytes 19:29:18.102096 Process 93 bytes request 19:29:18.102179 Got request: GET /verifiedserver HTTP/1.1 19:29:18.102250 Are-we-friendly question received 19:29:18.102442 Wrote request (93 bytes) input to log/3/server.input 19:29:18.102661 Identifying ourselves as friends 19:29:18.103262 Response sent (57 bytes) and wriCMD (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/4/valgrind555 ./libtest/lib555 http://test.remote.example.com/path/555 http://127.0.0.1:43669 testuser:testpass > log/4/stdout555 2> log/4/stderr555 CMD (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/2/valgrind557 ./libtest/lib557 nothing > log/2/stdout557 2> log/2/stderr557 tten to log/3/server.response 19:29:18.103373 special request received, no persistency 19:29:18.103436 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 554 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind554 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind554 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/4/valgrind555 ./libtest/lib555 http://test.remote.example.com/path/555 http://127.0.0.1:43669 testuser:testpass > log/4/stdout555 2> log/4/stderr555 555: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind555 ./libtest/lib555 http://test.remote.example.com/path/555 http://127.0.0.1:43669 testuser:testpass > log/4/stdout555 2> log/4/stderr555 === End of file commands.log === Start of file http_server.log 19:29:19.162350 ====> Client connect 19:29:19.162580 accept_connection 3 returned 4 19:29:19.162696 accept_connection 3 returned 0 19:29:19.162824 Read 93 bytes 19:29:19.162905 Process 93 bytes request 19:29:19.162983 Got request: GET /verifiedserver HTTP/1.1 19:29:19.163054 Are-we-friendly question received 19:29:19.163208 Wrote request (93 bytes) input to log/4/server.input 19:29:19.163360 Identifying ourselves as friends 19:29:19.163946 Response sent (57 bytes) and written to log/4/server.response 19:29:19.164044 special request received, no persistency 19:29:19.164109 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 555 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind555 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind555 CMD (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/1/valgrind556 ./libtest/lib556 http://127.0.0.1:41477 > log/1/stdout556 2> log/1/stderr556 CMD (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/valgrind559 ./libtest/lib559 http://127.0.0.1:37525/559 > log/3/stdout559 2> log/3/stderr559 * starts no server 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/2/valgrind557 ./libtest/lib557 nothing > log/2/stdout557 2> log/2/stderr557 557: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:19.398156464 +0000 +++ log/2/check-generated 2025-05-23 19:29:19.398156464 +0000 @@ -1,10 +0,0 @@ -All curl_mprintf() unsigned short tests OK![LF] -All curl_mprintf() signed short tests OK![LF] -All curl_mprintf() unsigned int tests OK![LF] -All curl_mprintf() signed int tests OK![LF] -All curl_mprintf() unsigned long tests OK![LF] -All curl_mprintf() signed long tests OK![LF] -All curl_mprintf() curl_off_t tests OK![LF] -All curl_mprintf() strings tests OK![LF] -All float strings tests OK![LF] -All curl_mprintf() octal & hexadecimal tests OK![LF] == Contents of files in the log/2/ dir after test 557 === Start of file check-expected All curl_mprintf() unsigned short tests OK![LF] All curl_mprintf() signed short tests OK![LF] All curl_mprintf() unsigned int tests OK![LF] All curl_mprintf() signed int tests OK![LF] All curl_mprintf() unsigned long tests OK![LF] All curl_mprintf() signed long tests OK![LF] All curl_mprintf() curl_off_t tests OK![LF] All curl_mprintf() strings tests OK![LF] All float strings tests OK![LF] All curl_mprintf() octal & hexadecimal tests OK![LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind557 ./libtest/lib557 nothing > log/2/stdout557 2> log/2/stderr557 === End of file commands.log === Start of file server.cmd Testnum 557 === End of file server.cmd === Start of file valgrind557 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind557 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/lib556 http://127.0.0.1:41477 > log/1/stdout556 2> log/1/stderr556 556: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib556 http://127.0.0.1:41477 > log/1/stdout556 2> log/1/stderr556 === End of file commands.log === Start of file http_server.log 19:29:19.434966 ====> Client connect 19:29:19.435221 accept_connection 3 returned 4 19:29:19.435354 accept_connection 3 returned 0 19:29:19.435474 Read 93 bytes 19:29:19.435551 Process 93 bytes request 19:29:19.435625 Got request: GET /verifiedserver HTTP/1.1 19:29:19.435698 Are-we-friendly question received 19:29:19.435865 Wrote request (93 bytes) input to log/1/server.input 19:29:19.436033 Identifying ourselves as friends 19:29:19.436566 Response sent (57 bytes) and written to log/1/server.response 19:29:19.436661 special request received, no persistency 19:29:19.436716 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 556 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind556 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind556 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/3/valgrind559 ./libtest/lib559 http://127.0.0.1:37525/559 > log/3/stdout559 2> log/3/stderr559 559: data FAILED: --- log/3/check-expected 2025-05-23 19:29:19.854167911 +0000 +++ log/3/check-generated 2025-05-23 19:29:19.854167911 +0000 @@ -1,12 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] -Server: test-server/fake[LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF] -ETag: "21025-dc7-39462498"[LF] -Accept-Ranges: bytes[LF] -Content-Length: 2049[LF] -Connection: close[LF] -Content-Type: text/html[LF] -Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] -[LF] -ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] == Contents of files in the log/3/ dir after test 559 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[LF] Server: test-server/fake[LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[LF] ETag: "21025-dc7-39462498"[LF] Accept-Ranges: bytes[LF] Content-Length: 2049[LF] Connection: close[LF] Content-Type: text/html[LF] Silly-header: ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] [LF] ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind559 ./libtest/lib559 http://127.0.0.1:37525/559 > log/3/stdout559 2> log/3/stderr559 === End of file commands.log === Start of file http_server.log 19:29:18.799899 ====> Client connect 19:29:18.800120 accept_connection 3 returned 4 19:29:18.800240 accept_connection 3 returned 0 19:29:18.800783 Read 93 bytes 19:29:18.800914 Process 93 bytes request 19:29:18.800989 Got request: GET /verifiedserver HTTP/1.1 19:29:18.801054 Are-we-friendly question received 19:29:18.801223 Wrote request (93 bytes) input to log/3/server.input 19:29:18.801381 Identifying ourselves as friends 19:29:18.802396 Response sent (57 bytes) and written to log/3/server.response 19:29:18.802648 special request received, no persistency 19:29:18.802831 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 559 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind559 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the rCMD (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/4/valgrind561 ./libtest/lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:43669 ascii > log/4/stdout561 2> log/4/stderr561 edirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind559 CMD (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/2/valgrind562 ./libtest/lib562 'ftp://127.0.0.1:23456/562;type=A' 36773 > log/2/stdout562 2> log/2/stderr562 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/4/valgrind561 ./libtest/lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:43669 ascii > log/4/stdout561 2> log/4/stderr561 561: stdout FAILED: --- log/4/check-expected 2025-05-23 19:29:19.938170020 +0000 +++ log/4/check-generated 2025-05-23 19:29:19.938170020 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/4/ dir after test 561 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind561 ./libtest/lib549 "ftp://www.example.com/moo/561;type=i" http://127.0.0.1:43669 ascii > log/4/stdout561 2> log/4/stderr561 === End of file commands.log === Start of file http_server.log 19:29:19.895697 ====> Client connect 19:29:19.895918 accept_connection 3 returned 4 19:29:19.896057 accept_connection 3 returned 0 19:29:19.896163 Read 93 bytes 19:29:19.896236 Process 93 bytes request 19:29:19.896303 Got request: GET /verifiedserver HTTP/1.1 19:29:19.896362 Are-we-friendly question received 19:29:19.896521 Wrote request (93 bytes) input to log/4/server.input 19:29:19.896698 Identifying ourselves as friends 19:29:19.897383 Response sent (57 bytes) and written to log/4/server.response 19:29:19.897573 special request received, no persistency 19:29:19.897677 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 561 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind561 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind562 ./libtest/lib562 'ftp://127.0.0.1:23456/562;type=A' 36773 > log/2/stdout562 2> log/2/stderr562 562: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind562 ./libtest/lib562 'ftp://127.0.0.1:23456/562;type=A' 36773 > log/2/stdout562 2> log/2/stderr562 === End of file commands.log === Start of file ftp_server.log 19:29:19.510289 ====> Client connect 19:29:19.511389 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:19.512857 < "USER anonymous" 19:29:19.513159 > "331 We are happy you popped in![CR][LF]" 19:29:19.514338 < "PASS ftp@example.com" 19:29:19.514630 > "230 Welcome you silly person[CR][LF]" 19:29:19.515649 < "PWD" 19:29:19.515913 > "257 "/" is current directory[CR][LF]" 19:29:19.516904 < "EPSV" 19:29:19.517082 ====> Passive DATA channel requested by client 19:29:19.517180 DATA sockfilt for passive data channel starting... 19:29:19.536554 DATA sockfilt for passive data channel started (pid 135279) 19:29:19.537241 DATA sockfilt for passive data channel listens on port 37807 19:29:19.537651 > "229 Entering Passive Mode (|||37807|)[LF]" 19:29:19.537845 Client has been notified that DATA conn will be accepted on port 37807 19:29:19.542622 Client connects to port 37807 19:29:19.542899 ====> Client established passive DATA connection on port 37807 19:29:19.543705 < "TYPE I" 19:29:19.544036 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:19.546501 < "SIZE verifiedserver" 19:29:19.546912 > "213 18[CR][LF]" 19:29:19.548079 < "RETR verifiedserver" 19:29:19.548439 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:19.548971 =====> Closing passive DATA connection... 19:29:19.549185 Server disconnects passive DATA connection 19:29:19.550278 Server disconnected passive DATA connection 19:29:19.550505 DATA sockfilt for passive data channel quits (pid 135279) 19:29:19.551944 DATA sockfilt for passive data channel quit (pid 135279) 19:29:19.552165 =====> Closed passive DATA connection 19:29:19.552425 > "226 File transfer complete[CR][LF]" 19:29:19.590658 < "QUIT" 19:29:19.590977 > "221 bye bye baby[CR][LF]" 19:29:19.596625 MAIN sockfilt said DISC 19:29:19.596969 ====> Client disconnected 19:29:19.597343 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:18.973990 ====> Client connect 19:29:18.975439 Received DATA (on stdin) 19:29:18.975600 > 160 bytes data, server => client 19:29:18.975686 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:18.975757 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:18.975826 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:18.976345 < 16 bytes data, client => server 19:29:18.976481 'USER anonymous\r\n' 19:29:18.977265 Received DATA (on stdin) 19:29:18.977371 > 33 bytes data, server => client 19:29:18.977438 '331 We are happy you popped in!\r\n' 19:29:18.978054 < 22 bytes data, client => server 19:29:18.978184 'PASS ftp@example.com\r\n' 19:29:18.978729 Received DATA (on stdin) 19:29:18.978845 > 30 bytes data, server => client 19:29:18.978915 '230 Welcome you silly person\r\n' 19:29:18.979367 < 5 bytes data, client => server 19:29:18.979488 'PWD\r\n' 19:29:18.980011 Received DATA (on stdin) 19:29:18.980104 > 30 bytes data, server => client 19:29:18.980177 '257 "/" is current directory\r\n' 19:29:18.980627 < 6 bytes data, client => server 19:29:18.980753 'EPSV\r\n' 19:29:19.001743 Received DATA (on stdin) 19:29:19.001884 > 38 bytes data, server => client 19:29:19.001965 '229 Entering Passive Mode (|||37807|)\n' 19:29:19.002898 < 8 bytes data, client => server 19:2CMD (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/1/valgrind563 ./libtest/lib562 "ftp://127.0.0.1:23456/563;type=A" 39333 > log/1/stdout563 2> log/1/stderr563 9:19.003022 'TYPE I\r\n' 19:29:19.008157 Received DATA (on stdin) 19:29:19.008346 > 33 bytes data, server => client 19:29:19.008434 '200 I modify TYPE as you wanted\r\n' 19:29:19.008968 < 21 bytes data, client => server 19:29:19.009097 'SIZE verifiedserver\r\n' 19:29:19.011021 Received DATA (on stdin) 19:29:19.011152 > 8 bytes data, server => client 19:29:19.011229 '213 18\r\n' 19:29:19.011778 < 21 bytes data, client => server 19:29:19.011907 'RETR verifiedserver\r\n' 19:29:19.012541 Received DATA (on stdin) 19:29:19.012680 > 29 bytes data, server => client 19:29:19.012758 '150 Binary junk (18 bytes).\r\n' 19:29:19.016567 Received DATA (on stdin) 19:29:19.016701 > 28 bytes data, server => client 19:29:19.016792 '226 File transfer complete\r\n' 19:29:19.054257 < 6 bytes data, client => server 19:29:19.054415 'QUIT\r\n' 19:29:19.055073 Received DATA (on stdin) 19:29:19.055199 > 18 bytes data, server => client 19:29:19.055277 '221 bye bye baby\r\n' 19:29:19.060391 ====> Client disconnect 19:29:19.061619 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:19.999763 Running IPv4 version 19:29:20.000116 Listening on port 37807 19:29:20.000340 Wrote pid 135279 to log/2/server/ftp_sockdata.pid 19:29:20.000453 Received PING (on stdin) 19:29:20.000955 Received PORT (on stdin) 19:29:20.006475 ====> Client connect 19:29:20.013572 Received DATA (on stdin) 19:29:20.013729 > 18 bytes data, server => client 19:29:20.013823 'WE ROOLZ: 116354\r\n' 19:29:20.014166 Received DISC (on stdin) 19:29:20.014832 ====> Client forcibly disconnected 19:29:20.015168 Received QUIT (on stdin) 19:29:20.015275 quits 19:29:20.015534 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 562 === End of file server.cmd === Start of file valgrind562 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind562 setenv ftp_proxy = http://127.0.0.1:41477/ 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/1/valgrind563 ./libtest/lib562 "ftp://127.0.0.1:23456/563;type=A" 39333 > log/1/stdout563 2> log/1/stderr563 563: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind563 ./libtest/lib562 "ftp://127.0.0.1:23456/563;type=A" 39333 > log/1/stdout563 2> log/1/stderr563 === End of file commands.log === Start of file ftp_server.log 19:29:19.681478 ====> Client connect 19:29:19.682623 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:19.684234 < "USER anonymous" 19:29:19.684556 > "331 We are happy you popped in![CR][LF]" 19:29:19.686301 < "PASS ftp@example.com" 19:29:19.686637 > "230 Welcome you silly person[CR][LF]" 19:29:19.687653 < "PWD" 19:29:19.687980 > "257 "/" is current directory[CR][LF]" 19:29:19.689008 < "EPSV" 19:29:19.689221 ====> Passive DATA channel requested by client 19:29:19.689358 DATA sockfilt for passive data channel starting... 19:29:19.697764 DATA sockfilt for passive data channel started (pid 135360) 19:29:19.698469 DATA sockfilt for passive data channel listens on port 36275 19:29:19.698775 > "229 Entering Passive Mode (|||36275|)[LF]" 19:29:19.698936 Client has been notified that DATA conn will be accepted on port 36275 19:29:19.699856 Client connects to port 36275 19:29:19.700069 ====> Client established passive DATA connection on port 36275 19:29:19.700571 < "TYPE I" 19:29:19.700835 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:19.701886 < "SIZE verifiedserver" 19:29:19.702170 > "213 18[CR][LF]" 19:29:19.703167 < "RETR verifiedserver" 19:29:19.703468 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:19.703933 =====> Closing passive DATA connection... 19:29:19.704121 Server disconnects passive DATA connection 19:29:19.704899 Server disconnected passive DATA connection 19:29:19.705094 DATA sockfilt for passive data channel quits (pid 135360) 19:29:19.706590 DATA sockfilt for passive data channel quit (pid 135360) 19:29:19.706816 =====> Closed passive DATA connection 19:29:19.707047 > "226 File transfer complete[CR][LF]" 19:29:19.746877 < "QUIT" 19:29:19.747303 > "221 bye bye baby[CR][LF]" 19:29:19.749560 MAIN sockfilt said DISC 19:29:19.749880 ====> Client disconnected 19:29:19.750254 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:20.145102 ====> Client connect 19:29:20.146401 Received DATA (on stdin) 19:29:20.146549 > 160 bytes data, server => client 19:29:20.146974 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:20.147077 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:20.147145 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:20.147689 < 16 bytes data, client => server 19:29:20.147827 'USER anonymous\r\n' 19:29:20.148882 Received DATA (on stdin) 19:29:20.148993 > 33 bytes data, server => client 19:29:20.149076 '331 We are happy you popped in!\r\n' 19:29:20.149732 < 22 bytes data, client => server 19:29:20.149932 'PASS ftp@example.com\r\n' 19:29:20.150737 Received DATA (on stdin) 19:29:20.150859 > 30 bytes data, server => client 19:29:20.150934 '230 Welcome you silly person\r\n' 19:29:20.151380 < 5 bytes data, client => server 19:29:20.151505 'PWD\r\n' 19:29:20.152079 Received DATA (on stdin) 19:29:20.152203 > 30 bytes data, server => client 19:29:20.152277 '257 "/" is current directory\r\n' 19:29:20.152745 < 6 bytes data, client => server 19:29:20.152867 'EPSV\r\n' 19:29:20.162880 Received DATA (on stdin) 19:29:20.163012 > 38 bytes data, server => client 19:29:20.163100 '229 Entering Passive Mode (|||36275|)\n' 19:29:20.163957 < 8 bytes data, client => server 19:29:20.164059 'TYPE I\r\n' 19:29:20.164939 Received DATA (on stdin) 19:29:20.165051 > 33 bytes data, server => client 19:29:20.165132 '200 I modify TYPE as you wanted\r\n' 19:29:20.165623 < 21 bytes data, client => server 19:29:20.165756 'SIZE verifiedserver\r\n' 19:29:20.166270 Received DATA (on stdin) 19:29:20.166382 > 8 bytes data, server => client 19:29:20.166465 '213 18\r\n' 19:29:20.166894 < 21 bytes data, client => server 19:29:20.167018 'RETR verifiedserver\r\n' 19:29:20.167565 Received DATA (on stdin) 19:29:20.1CMD (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/4/valgrind565 ./libtest/lib565 http://127.0.0.1:43669/565 > log/4/stdout565 2> log/4/stderr565 CMD (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/2/valgrind566 ./libtest/lib566 http://127.0.0.1:39599/566 log/2/ip566 > log/2/stdout566 2> log/2/stderr566 67689 > 29 bytes data, server => client 19:29:20.167772 '150 Binary junk (18 bytes).\r\n' 19:29:20.171161 Received DATA (on stdin) 19:29:20.171299 > 28 bytes data, server => client 19:29:20.171385 '226 File transfer complete\r\n' 19:29:20.210232 < 6 bytes data, client => server 19:29:20.210409 'QUIT\r\n' 19:29:20.211405 Received DATA (on stdin) 19:29:20.211563 > 18 bytes data, server => client 19:29:20.211657 '221 bye bye baby\r\n' 19:29:20.213293 ====> Client disconnect 19:29:20.214587 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:19.160843 Running IPv4 version 19:29:19.161224 Listening on port 36275 19:29:19.161428 Wrote pid 135360 to log/1/server/ftp_sockdata.pid 19:29:19.161642 Received PING (on stdin) 19:29:19.162178 Received PORT (on stdin) 19:29:19.163754 ====> Client connect 19:29:19.168395 Received DATA (on stdin) 19:29:19.168501 > 18 bytes data, server => client 19:29:19.168573 'WE ROOLZ: 109414\r\n' 19:29:19.168805 Received DISC (on stdin) 19:29:19.169361 ====> Client forcibly disconnected 19:29:19.169758 Received QUIT (on stdin) 19:29:19.169882 quits 19:29:19.170152 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http_server.log 19:29:20.050081 ====> Client connect 19:29:20.050324 accept_connection 3 returned 4 19:29:20.050463 accept_connection 3 returned 0 19:29:20.050579 Read 93 bytes 19:29:20.050677 Process 93 bytes request 19:29:20.050806 Got request: GET /verifiedserver HTTP/1.1 19:29:20.050917 Are-we-friendly question received 19:29:20.051089 Wrote request (93 bytes) input to log/1/server.input 19:29:20.051244 Identifying ourselves as friends 19:29:20.051762 Response sent (57 bytes) and written to log/1/server.response 19:29:20.051844 special request received, no persistency 19:29:20.051896 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 563 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind563 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind563 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/4/valgrind565 ./libtest/lib565 http://127.0.0.1:43669/565 > log/4/stdout565 2> log/4/stderr565 565: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind565 ./libtest/lib565 http://127.0.0.1:43669/565 > log/4/stdout565 2> log/4/stderr565 === End of file commands.log === Start of file http_server.log 19:29:20.523995 ====> Client connect 19:29:20.524226 accept_connection 3 returned 4 19:29:20.524333 accept_connection 3 returned 0 19:29:20.524435 Read 93 bytes 19:29:20.524503 Process 93 bytes request 19:29:20.524571 Got request: GET /verifiedserver HTTP/1.1 19:29:20.524630 Are-we-friendly question received 19:29:20.524792 Wrote request (93 bytes) input to log/4/server.input 19:29:20.524969 Identifying ourselves as friends 19:29:20.525614 Response sent (57 bytes) and written to log/4/server.response 19:29:20.525728 special request received, no persistency 19:29:20.525791 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 565 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind565 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind565 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/2/valgrind566 ./libtest/lib566 http://127.0.0.1:39599/566 log/2/ip566 > log/2/stdout566 2> log/2/stderr566 566: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? TotalCMD (0): ../src/curl --max-time 13 --output log/1/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:46221/verifiedserver" 2>log/1/rtsp_verify.log CMD (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/valgrind564 ./libtest/lib564 ftp://127.0.0.1:43789/path/564 127.0.0.1:45421 > log/3/stdout564 2> log/3/stderr564 curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind566 ./libtest/lib566 http://127.0.0.1:39599/566 log/2/ip566 > log/2/stdout566 2> log/2/stderr566 === End of file commands.log === Start of file http_server.log 19:29:20.692835 ====> Client connect 19:29:20.693048 accept_connection 3 returned 4 19:29:20.693160 accept_connection 3 returned 0 19:29:20.693254 Read 93 bytes 19:29:20.693319 Process 93 bytes request 19:29:20.693386 Got request: GET /verifiedserver HTTP/1.1 19:29:20.693444 Are-we-friendly question received 19:29:20.693681 Wrote request (93 bytes) input to log/2/server.input 19:29:20.693836 Identifying ourselves as friends 19:29:20.694342 Response sent (57 bytes) and written to log/2/server.response 19:29:20.694434 special request received, no persistency 19:29:20.694490 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 566 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind566 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind566 startnew: ./server/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 135499 * pid socks => 135499 135499 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/3/valgrind564 ./libtest/lib564 ftp://127.0.0.1:43789/path/564 127.0.0.1:45421 > log/3/stdout564 2> log/3/stderr564 564: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:21.534210084 +0000 +++ log/3/check-generated 2025-05-23 19:29:21.534210084 +0000 @@ -1,6 +0,0 @@ -data[LF] - to[LF] - see[LF] -that FTP[LF] -works[LF] - so does it?[LF] == Contents of files in the log/3/ dir after test 564 === Start of file check-expected data[LF] to[LF] see[LF] that FTP[LF] works[LF] so does it?[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind564 ./libtest/lib564 ftp://127.0.0.1:43789/path/564 127.0.0.1:45421 > log/3/stdout564 2> log/3/stderr564 === End of file commands.log === Start of file ftp_server.log 19:29:19.997257 ====> Client connect 19:29:19.998177 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:19.999588 < "USER anonymous" 19:29:19.999907 > "331 We are happy you popped in![CR][LF]" 19:29:20.000995 < "PASS ftp@example.com" 19:29:20.001266 > "230 Welcome you silly person[CR][LF]" 19:29:20.003559 < "PWD" 19:29:20.004025 > "257 "/" is current directory[CR][LF]" 19:29:20.005132 < "EPSV" 19:29:20.005373 ====> Passive DATA channel requested by client 19:29:20.005642 DATA sockfilt for passive data channel starting... 19:29:20.014419 DATA sockfilt for passive data channel started (pid 135477) 19:29:20.015117 DATA sockfilt for passive data channel listens on port 46261 19:29:20.015438 > "229 Entering Passive Mode (|||46261|)[LF]" 19:29:20.015595 Client has been notified that DATA conn will be accepted on port 46261 19:29:20.016744 Client connects to port 46261 19:29:20.016982 ====> Client established passive DATA connection on port 46261 19:29:20.017549 < "TYPE I" 19:29:20.017864 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:20.018950 < "SIZE verifiedserver" 19:29:20.019302 > "213 18[CR][LF]" 19:29:20.020553 < "RETR verifiedserver" 19:29:20.020894 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:20.021493 =====> Closing passive DATA connection... 19:29:20.021711 Server disconnects passive DATA connection 19:29:20.022406 Server disconnected passive DATA connection 19:29:20.022632 DATA sockfilt for passive data channel quits (pid 135477) 19:29:20.023964 DATA sockfilt for passive data channel quit (pid 135477) 19:29:20.024201 =====> Closed passive DATA connection 19:29:20.024456 > "226 File transfer complete[CR][LF]" 19:29:20.065131 < "QUIT" 19:29:20.065454 > "221 bye bye baby[CR][LF]" 19:29:20.069819 MAIN sockfilt said DISC 19:29:20.070087 ====> Client disconnected 19:29:20.070470 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:20.460955 ====> Client connect 19:29:20.462248 Received DATA (on stdin) 19:29:20.462397 > 160 bytes data, server => client 19:29:20.462483 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:20.462561 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:20.462626 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:20.463069 < 16 bytes data, client => server 19:29:20.463216 'USER anonymous\r\n' 19:29:20.464046 Received DATA (on stdin) 19:29:20.464161 > 33 bytes data, server => client 19:29:20.464242 '331 We are happy you popped in!\r\n' 19:29:20.464682 < 22 bytes data, client => server 19:29:20.464817 'PASS ftp@example.com\r\n' 19:29:20.465364 Received DATA (on stdin) 19:29:20.465476 > 30 bytes data, server => client 19:29:20.465705 '230 Welcome you silly person\r\n' 19:29:20.467194 < 5 bytes data, client => server 19:29:20.467345 'PWD\r\n' 19:29:20.468102 Received DATA (on stdin) 19:29:20.468273 > 30 bytes data, server => client 19:29:20.468355 '257 "/" is current directory\r\n' 19:29:20.468783 < 6 bytes data, client => server 19:29:20.468905 'EPSV\r\n' 19:29:20.479531 Received DATA (on stdin) 19:29:20.479660 > 38 bytes data, server => client 19:29:20.479743 '229 Entering Passive Mode (|||46261|)\n' 19:29:20.480597 < 8 bytes data, client => server 19:29:20.480730 'TYPE I\r\n' 19:29:20.481946 Received DATA (on stdin) 19:29:20.482072 > 33 bytes data, server => client 19:29:20.482148 '200 I modify TYPE as you wanted\r\n' 19:29:20.482599 < 21 bytes data, client => server 19:29:20.482733 'SIZE verifiedserver\r\n' 19:29:20.483393 Received DATA (on stdin) 19:29:20.483516 > 8 bytes data, server => client 19:29:20.483586 '213 18\r\n' 19:29:20.484040 < 21 bytes data, client => server 19:29:20.484178 'RETR verifiedserver\r\n' 19:29:20.484985 Received DATA (on stdin) 19:29:20.485115 > 29 bytes data, server => client 19:29:20.485200 '150 Binary junk (18 bytes).\r\n' 19:29:20.488544 Received DATA (on stdin) 19:29:20.488691 > 28 bytes data, server => client 19:29:20.488782 '226 File transfer complete\r\n' 19:29:20.526086 < 6 bytes data, client => server 19:29:20.526230 'QUIT\r\n' 19:29:20.529606 Received DATA (on stdin) 19:29:20.529737 > 18 bytes data, server => client 19:29:20.529834 '221 bye bye baby\r\n' 19:29:20.533663 ====> Client disconnect 19:29:20.534805 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:20.476386 Running IPv4 version 19:29:20.477834 Listening on port 46261 19:29:20.478142 Wrote pid 135477 to log/3/server/ftp_sockdata.pid 19:29:20.478259 Received PING (on stdin) 19:29:20.478844 Received PORT (on stdin) 19:29:20.480642 ====> Client connect 19:29:20.485280 Received DATA (on stdin) 19:29:20.485447 > 18 bytes data, server => client 19:29:20.485638 'WE ROOLZ: 109394\r\n' 19:29:20.486269 Received DISC (on stdin) 19:29:20.486429 ====> Client forcibly disconnected 19:29:20.486932 Received QUIT (on stdin) 19:29:20.487055 quits 19:29:20.487344 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 564 === End of file server.cmd === Start of file socks_server.log 19:29:20.550005 Running IPv4 version 19:29:20.550855 Listening on port 45421 19:29:20.551644 Wrote pid 135499 to log/3/server/socks_server.pid 19:29:20.552411 Wrote port 45421 to log/3/server/socks_server.port === End of file socks_server.log === Start of file valgrind564 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo CMD (0): ../src/curl --max-time 13 --output log/4/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:34209/verifiedserver" 2>log/4/rtsp_verify.log CMD (0): ../src/curl --max-time 13 --output log/2/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:45951/verifiedserver" 2>log/2/rtsp_verify.log CMD (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/1/valgrind567 ./libtest/lib567 rtsp://127.0.0.1:46221/567 > log/1/stdout567 2> log/1/stderr567 CMD (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/4/valgrind568 ./libtest/lib568 rtsp://127.0.0.1:34209/568 log/4/file568.txt > log/4/stdout568 2> log/4/stderr568 valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind564 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/1/server/rtsp_server.pid" --portfile "log/1/server/rtsp_server.port" --logfile "log/1/rtsp_server.log" --logdir "log/1" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/1/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:46221/verifiedserver" 2>log/1/rtsp_verify.log RUN: RTSP server PID 135540 port 46221 * pid rtsp => 135540 135540 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/1/valgrind567 ./libtest/lib567 rtsp://127.0.0.1:46221/567 > log/1/stdout567 2> log/1/stderr567 567: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind567 ./libtest/lib567 rtsp://127.0.0.1:46221/567 > log/1/stdout567 2> log/1/stderr567 === End of file commands.log === Start of file rtsp_server.log 19:29:20.893836 Running IPv4 version on port 46221 19:29:20.894379 Wrote pid 135540 to log/1/server/rtsp_server.pid 19:29:20.894611 Wrote port 46221 to log/1/server/rtsp_server.port 19:29:21.835224 ====> Client connect 19:29:21.835676 Read 93 bytes 19:29:21.835783 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:46221 User-Agent: curl/8.13.0 Accept: */* ] 19:29:21.835882 Got request: GET /verifiedserver HTTP/1.1 19:29:21.835947 Are-we-friendly question received 19:29:21.836101 Wrote request (93 bytes) input to log/1/server.input 19:29:21.836243 Send response number -2 part 0 19:29:21.836299 Identifying ourselves as friends 19:29:21.836497 Sent off 69 bytes 19:29:21.836639 Response sent (69 bytes) and written to log/1/server.response 19:29:21.836697 special request received, no persistency 19:29:21.836742 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:46221... * Connected to 127.0.0.1 (127.0.0.1) port 46221 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46221 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135540 === End of file rtsp_verify.out === Start of file server.cmd Testnum 567 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135540 === End of file server.response === Start of file valgrind567 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind567 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: ../src/curl --max-time 13 --output log/4/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:34209/verifiedserver" 2>log/4/rtsp_verify.log RUN: RTSP server PID 135616 port 34209 * pid rtsp => 135616 135616 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/4/valgrind568 ./libtest/lib568 rtsp://127.0.0.1:34209/568 log/4/file568.txt > log/4/stdout568 2> log/4/stderr568 568: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind568 ./libtest/lib568 rtsp://127.0.0.1:34209/568 log/4/file568.txt > log/4/stdout568 2> log/4/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 19:29:20.156512 Running IPv4 version on port 34209 19:29:20.157033 Wrote pid 135616 to log/4/server/rtsp_server.pid 19:29:20.157239 Wrote port 34209 to log/4/server/rtsp_server.port 19:29:21.111155 ====> Client connect 19:29:21.111297 Read 93 bytes 19:29:21.111374 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:34209 User-Agent: curl/8.13.0 Accept: */* ] 19:29:21.111479 Got request: GET /verifiedserver HTTP/1.1 19:29:21.111550 Are-we-friendly question received 19:29:21.111704 Wrote request (93 bytes) input to log/4/server.input 19:29:21.111861 Send response number -2 part 0 19:29:21.111926 Identifying ourselves as friends 19:29:21.112198 Sent off 69 bytes 19:29:21.112359 Response sent (69 bytes) and written to log/4/server.response 19:29:21.112426 special request received, no persistency 19:29:21.112480 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:34209... * Connected to 127.0.0.1 (127.0.0.1) port 34209 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34209 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135616 === End of file rtsp_verify.out === Start of file server.cmd Testnum 568 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135616 === End of file server.response === Start of file valgrind568 vaCMD (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/2/valgrind569 ./libtest/lib569 rtsp://127.0.0.1:45951/569 log/2/idfile569.txt > log/2/stdout569 2> log/2/stderr569 CMD (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/1/valgrind571 ./libtest/lib571 rtsp://127.0.0.1:46221/571 log/1/protofile571.txt > log/1/stdout571 2> log/1/stderr571 lgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind568 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/rtspserver.pl --pidfile "log/2/server/rtsp_server.pid" --portfile "log/2/server/rtsp_server.port" --logfile "log/2/rtsp_server.log" --logdir "log/2" --ipv4 --port 0 --srcdir "/build/curl/src/curl/tests" RUN: ../src/curl --max-time 13 --output log/2/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:45951/verifiedserver" 2>log/2/rtsp_verify.log RUN: RTSP server PID 135618 port 45951 * pid rtsp => 135618 135618 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/2/valgrind569 ./libtest/lib569 rtsp://127.0.0.1:45951/569 log/2/idfile569.txt > log/2/stdout569 2> log/2/stderr569 569: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind569 ./libtest/lib569 rtsp://127.0.0.1:45951/569 log/2/idfile569.txt > log/2/stdout569 2> log/2/stderr569 === End of file commands.log === Start of file rtsp_server.log 19:29:20.236282 Running IPv4 version on port 45951 19:29:20.236793 Wrote pid 135618 to log/2/server/rtsp_server.pid 19:29:20.236989 Wrote port 45951 to log/2/server/rtsp_server.port 19:29:21.223185 ====> Client connect 19:29:21.223354 Read 93 bytes 19:29:21.223453 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:45951 User-Agent: curl/8.13.0 Accept: */* ] 19:29:21.223587 Got request: GET /verifiedserver HTTP/1.1 19:29:21.223696 Are-we-friendly question received 19:29:21.223902 Wrote request (93 bytes) input to log/2/server.input 19:29:21.224097 Send response number -2 part 0 19:29:21.224167 Identifying ourselves as friends 19:29:21.224473 Sent off 69 bytes 19:29:21.224650 Response sent (69 bytes) and written to log/2/server.response 19:29:21.224719 special request received, no persistency 19:29:21.224768 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:45951... * Connected to 127.0.0.1 (127.0.0.1) port 45951 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45951 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135618 === End of file rtsp_verify.out === Start of file server.cmd Testnum 569 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135618 === End of file server.response === Start of file valgrind569 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind569 CMD (0): ../src/curl --max-time 13 --output log/3/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:35461/verifiedserver" 2>log/3/rtsp_verify.log CMD (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/2/valgrind573 ./libtest/lib573 http://127.0.0.1:39599/573 > log/2/stdout573 2> log/2/stderr573 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/1/valgrind571 ./libtest/lib571 rtsp://127.0.0.1:46221/571 log/1/protofile571.txt > log/1/stdout571 2> log/1/stderr571 571: stdout FAILED: --- log/1/check-expected 2025-05-23 19:29:22.358230769 +0000 +++ log/1/check-generated 2025-05-23 19:29:22.358230769 +0000 @@ -1,20 +0,0 @@ -RTP: message size 10, channel 1[LF] -RTP: message size 500, channel 0[LF] -RTP: message size 196, channel 0[LF] -RTP: message size 124, channel 0[LF] -RTP: message size 824, channel 0[LF] -RTP: message size 12, channel 0[LF] -RTP: message size 10, channel 1[LF] -RTP: message size 50, channel 0[LF] -RTP: message size 798, channel 0[LF] -RTP: message size 42, channel 0[LF] -RTP: message size 30, channel 1[LF] -RTP: message size 2048, channel 0[LF] -RTP: message size 85, channel 0[LF] -RTP: message size 24, channel 1[LF] -RTP: message size 13, channel 0[LF] -RTP: message size 33, channel 0[LF] -RTP: message size 127, channel 0[LF] -RTP: message size 35, channel 1[LF] -RTP PAYLOAD END CORRUPTED (11), [$][LF] -RTP: message size 63, channel 0[LF] == Contents of files in the log/1/ dir after test 571 === Start of file check-expected RTP: message size 10, channel 1[LF] RTP: message size 500, channel 0[LF] RTP: message size 196, channel 0[LF] RTP: message size 124, channel 0[LF] RTP: message size 824, channel 0[LF] RTP: message size 12, channel 0[LF] RTP: message size 10, channel 1[LF] RTP: message size 50, channel 0[LF] RTP: message size 798, channel 0[LF] RTP: message size 42, channel 0[LF] RTP: message size 30, channel 1[LF] RTP: message size 2048, channel 0[LF] RTP: message size 85, channel 0[LF] RTP: message size 24, channel 1[LF] RTP: message size 13, channel 0[LF] RTP: message size 33, channel 0[LF] RTP: message size 127, channel 0[LF] RTP: message size 35, channel 1[LF] RTP PAYLOAD END CORRUPTED (11), [$][LF] RTP: message size 63, channel 0[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind571 ./libtest/lib571 rtsp://127.0.0.1:46221/571 log/1/protofile571.txt > log/1/stdout571 2> log/1/stderr571 === End of file commands.log === Start of file rtsp_server.log 19:29:22.324978 ====> Client connect 19:29:22.325215 Read 93 bytes 19:29:22.325297 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:46221 User-Agent: curl/8.13.0 Accept: */* ] 19:29:22.325385 Got request: GET /verifiedserver HTTP/1.1 19:29:22.325522 Are-we-friendly question received 19:29:22.325703 Wrote request (93 bytes) input to log/1/server.input 19:29:22.325827 Send response number -2 part 0 19:29:22.325883 Identifying ourselves as friends 19:29:22.326143 Sent off 69 bytes 19:29:22.326316 Response sent (69 bytes) and written to log/1/server.response 19:29:22.326382 special request received, no persistency 19:29:22.326431 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:46221... * Connected to 127.0.0.1 (127.0.0.1) port 46221 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46221 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135540 === End of file rtsp_verify.out === 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.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135540 === End of file server.response === Start of file valgrind571 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind571 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/lib573 http://127.0.0.1:39599/573 > log/2/stdout573 2> log/2/stderr573 573: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib573 http://127.0.0.1:39599/573 > log/2/stdout573 2> log/2/stderr573 === End of file commands.log === Start of file http_server.log 19:29:22.794078 ====> Client connect 19:29:22.794295 accept_connection 3 returned 4 19:29:22.794404 accept_connection 3 returned 0 19:29:22.794506 Read 93 bytes 19:29:22.794585 Process 93 bytes request 19:29:22.794665 Got request: GET /verifiedserver HTTP/1.1 19:29:22.794725 Are-we-friendly question received 19:29:22.794880 Wrote request (93 bytes) input to log/2/server.input 19:29:22.795020 Identifying ourselves as friends 19:29:22.795507 Response sent (57 bytes) and written to log/2/server.response 19:29:22.795599 special request received, no persistency 19:29:22.795657 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 573 === End of file server.cmd === Start of file server.response CMD (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/4/valgrind572 ./libtest/lib572 rtsp://127.0.0.1:34209/572 log/4/file572.txt > log/4/stdout572 2> log/4/stderr572 CMD (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/1/valgrind574 ./libtest/lib574 ftp://127.0.0.1:39333/fully_simulated/UNIX/*.txt > log/1/stdout574 2> log/1/stderr574 HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind573 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind573 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/4/valgrind572 ./libtest/lib572 rtsp://127.0.0.1:34209/572 log/4/file572.txt > log/4/stdout572 2> log/4/stderr572 572: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind572 ./libtest/lib572 rtsp://127.0.0.1:34209/572 log/4/file572.txt > log/4/stdout572 2> log/4/stderr572 === End of file commands.log === Start of file file572.txt scale speed === End of file file572.txt === Start of file rtsp_server.log 19:29:21.767303 ====> Client connect 19:29:21.767534 Read 93 bytes 19:29:21.767609 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:34209 User-Agent: curl/8.13.0 Accept: */* ] 19:29:21.767690 Got request: GET /verifiedserver HTTP/1.1 19:29:21.767753 Are-we-friendly question received 19:29:21.767881 Wrote request (93 bytes) input to log/4/server.input 19:29:21.767991 Send response number -2 part 0 19:29:21.768043 Identifying ourselves as friends 19:29:21.768294 Sent off 69 bytes 19:29:21.768466 Response sent (69 bytes) and written to log/4/server.response 19:29:21.768540 special request received, no persistency 19:29:21.768592 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:34209... * Connected to 127.0.0.1 (127.0.0.1) port 34209 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:34209 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135616 === End of file rtsp_verify.out === Start of file server.cmd Testnum 572 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135616 === End of file server.response === Start of file valgrind572 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind572 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/1/valgrind574 ./libtest/lib574 ftp://127.0.0.1:39333/fully_simulated/UNIX/*.txt > log/1/stdout574 2> log/1/stderr574 574: stdout FAILED: --- log/1/check-expected 2025-05-23 19:29:23.050248141 +0000 +++ log/1/check-generated 2025-05-23 19:29:23.050248141 +0000 @@ -1,10 +0,0 @@ -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] == Contents of files in the log/1/ dir after test 574 === Start of file check-expected This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind574 ./libtest/lib574 ftp://127.0.0.1:39333/fully_simulated/UNIX/*.txt > log/1/stdout574 2> log/1/stderr574 === End of file commands.log === Start of file ftp_server.log 19:29:22.461171 ====> Client connect 19:29:22.462114 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:22.463934 < "USER anonymous" 19:29:22.464196 > "331 We are happy you popped in![CR][LF]" 19:29:22.465507 < "PASS ftp@example.com" 19:29:22.465791 > "230 Welcome you silly person[CR][LF]" 19:29:22.467055 < "PWD" 19:29:22.467314 > "257 "/" is current directory[CR][LF]" 19:29:22.468808 < "EPSV" 19:29:22.469041 ====> Passive DATA channel requested by client 19:29:22.469172 DATA sockfilt for passive data channel starting... 19:29:22.476980 DATA sockfilt for passive data channel started (pid 135976) 19:29:22.477660 DATA sockfilt for passive data channel listens on port 42703 19:29:22.478473 > "229 Entering Passive Mode (|||42703|)[LF]" 19:29:22.478671 Client has been notified that DATA conn will be accepted on port 42703 19:29:22.479676 Client connects to port 42703 19:29:22.479895 ====> Client established passive DATA connection on port 42703 19:29:22.480341 < "TYPE I" 19:29:22.480985 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:22.482054 < "SIZE verifiedserver" 19:29:22.482773 > "213 18[CR][LF]" 19:29:22.483861 < "RETR verifiedserver" 19:29:22.484884 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:22.485471 =====> Closing passive DATA connection... 19:29:22.485666 Server disconnects passive DATA connection 19:29:22.486273 Server disconnected passive DATA connection 19:29:22.486500 DATA sockfilt for passive data channel quits (pid 135976) 19:29:22.487757 DATA sockfilt for passive data channel quit (pid 135976) 19:29:22.488004 =====> Closed passive DATA connection 19:29:22.488666 > "226 File transfer complete[CR][LF]" 19:29:22.526939 < "QUIT" 19:29:22.527303 > "221 bye bye baby[CR][LF]" 19:29:22.531854 MAIN sockfilt said DISC 19:29:22.532193 ====> Client disconnected 19:29:22.532582 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:22.924798 ====> Client connect 19:29:22.926397 Received DATA (on stdin) 19:29:22.926515 > 160 bytes data, server => client 19:29:22.926607 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:22.926677 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:22.926739 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:22.927232 < 16 bytes data, client => server 19:29:22.927348 'USER anonymous\r\n' 19:29:22.928404 Received DATA (on stdin) 19:29:22.928493 > 33 bytes data, server => client 19:29:22.928560 '331 We are happy you popped in!\r\n' 19:29:22.928929 < 22 bytes data, client => server 19:29:22.929033 'PASS ftp@example.com\r\n' 19:29:22.930004 Received DATA (on stdin) 19:29:22.930099 > 30 bytes data, server => client 19:29:22.930162 '230 Welcome you silly person\r\n' 19:29:22.930544 < 5 bytes data, client => server 19:29:22.930644 'PWD\r\n' 19:29:22.931498 Received DATA (on stdin) 19:29:22.931584 > 30 bytes data, server => client 19:29:22.931650 '257 "/" is current directory\r\n' 19:29:22.932130 < 6 bytes data, client => server 19:29:22.932333 'EPSV\r\n' 19:29:22.941958 Received DATA (on stdin) 19:29:22.942062 > 38 bytes data, server => client 19:29:22.942171 '229 Entering Passive Mode (|||42703|)\n' 19:29:22.943473 < 8 bytes data, client => server 19:29:22.943572 'TYPE I\r\n' 19:29:22.944576 Received DATA (on stdin) 19:29:22.944673 > 33 bytes data, server => client 19:29:22.944788 '200 I modify TYPE as you wanted\r\n' 19:29:22.945529 < 21 bytes data, client => server 19:29:22.945656 'SIZE verifiedserver\r\n' 19:29:22.946373 Received DATA (on stdin) 19:29:22.946480 > 8 bytes data, server => client 19:29:22.946587 '213 18\r\n' 19:29:22.947273 < 21 bytes data, client => server 19:29:22.947389 'RETR verifiedserver\r\n' 19:29:22.948230 Received DATA (on stdin) 19:29:22.948371 > 29 bytes data, server => client 19:29:22.948501 '150 Binary junk (18 bytes).\r\n' 19:29:22.952262 Received DATA (on stdin) 19:29:22.952386 > 28 bytes data, server => client 19:29:22.952507 '226 File transfer complete\r\n' 19:29:22.990207 < 6 bytes data, client => server 19:29:22.990370 'QUIT\r\n' 19:29:22.991607 Received DATA (on stdin) 19:29:22.991799 > 18 bytes data, server => client 19:29:22.991897 '221 bye bye baby\r\n' 19:29:22.995562 ====> Client disconnect 19:29:22.996239 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:22.940191 Running IPv4 version 19:29:22.940526 Listening on port 42703 19:29:22.940721 Wrote pid 135976 to log/1/server/ftp_sockdata.pid 19:29:22.940814 Received PING (on stdin) 19:29:22.941295 Received PORT (on stdin) 19:29:22.943313 ====> Client connect 19:29:22.949250 Received DATA (on stdin) 19:29:22.949364 > 18 bytes data, server => client 19:29:22.949549 'WE ROOLZ: 109414\r\n' 19:29:22.949944 Received DISC (on stdin) 19:29:22.950078 ====> Client forcibly disconnected 19:29:22.950742 Received QUIT (on stdin) 19:29:22.950896 quits 19:29:22.951239 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 574 === End of file server.cmd === Start of file valgrind574 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fiCMD (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/valgrind570 ./libtest/lib570 rtsp://127.0.0.1:35461/570 > log/3/stdout570 2> log/3/stderr570 CMD (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/2/valgrind575 ./libtest/lib575 ftp://127.0.0.1:36773/fully_simulated/UNIX/* > log/2/stdout575 2> log/2/stderr575 x (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind574 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: ../src/curl --max-time 13 --output log/3/rtsp_verify.out --silent --verbose --globoff "http://127.0.0.1:35461/verifiedserver" 2>log/3/rtsp_verify.log RUN: RTSP server PID 135710 port 35461 * pid rtsp => 135710 135710 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/3/valgrind570 ./libtest/lib570 rtsp://127.0.0.1:35461/570 > log/3/stdout570 2> log/3/stderr570 570: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind570 ./libtest/lib570 rtsp://127.0.0.1:35461/570 > log/3/stdout570 2> log/3/stderr570 === End of file commands.log === Start of file rtsp_server.log 19:29:21.186288 Running IPv4 version on port 35461 19:29:21.186873 Wrote pid 135710 to log/3/server/rtsp_server.pid 19:29:21.187125 Wrote port 35461 to log/3/server/rtsp_server.port 19:29:22.133534 ====> Client connect 19:29:22.134068 Read 93 bytes 19:29:22.134201 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:35461 User-Agent: curl/8.13.0 Accept: */* ] 19:29:22.134302 Got request: GET /verifiedserver HTTP/1.1 19:29:22.134368 Are-we-friendly question received 19:29:22.134548 Wrote request (93 bytes) input to log/3/server.input 19:29:22.134726 Send response number -2 part 0 19:29:22.134819 Identifying ourselves as friends 19:29:22.135079 Sent off 69 bytes 19:29:22.135273 Response sent (69 bytes) and written to log/3/server.response 19:29:22.135355 special request received, no persistency 19:29:22.135427 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:35461... * Connected to 127.0.0.1 (127.0.0.1) port 35461 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:35461 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135710 === End of file rtsp_verify.out === Start of file server.cmd Testnum 570 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135710 === End of file server.response === Start of file valgrind570 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind570 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/2/valgrind575 ./libtest/lib575 ftp://127.0.0.1:36773/fully_simulated/UNIX/* > log/2/stdout575 2> log/2/stderr575 575: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:23.586261596 +0000 +++ log/2/check-generated 2025-05-23 19:29:23.586261596 +0000 @@ -1,15 +0,0 @@ -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] -This file should have permissions 444[LF] -This file should have permissions 666[LF] -This file should have permissions 777[LF] -This is content of file "file.txt"[LF] -Some junk ;-) This file does not really exist.[LF] == Contents of files in the log/2/ dir after test 575 === Start of file check-expected This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] This file should have permissions 444[LF] This file should have permissions 666[LF] This file should have permissions 777[LF] This is content of file "file.txt"[LF] Some junk ;-) This file does not really exist.[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind575 ./libtest/lib575 ftp://127.0.0.1:36773/fully_simulated/UNIX/* > log/2/stdout575 2> log/2/stderr575 === End of file commands.log === Start of file ftp_server.log 19:29:22.882374 ====> Client connect 19:29:22.883338 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:22.885161 < "USER anonymous" 19:29:22.885611 > "331 We are happy you popped in![CR][LF]" 19:29:22.886708 < "PASS ftp@example.com" 19:29:22.887062 > "230 Welcome you silly person[CR][LF]" 19:29:22.889010 < "PWD" 19:29:22.889331 > "257 "/" is current directory[CR][LF]" 19:29:22.893147 < "EPSV" 19:29:22.893610 ====> Passive DATA channel requested by client 19:29:22.893832 DATA sockfilt for passive data channel starting... 19:29:22.902031 DATA sockfilt for passive data channel started (pid 136145) 19:29:22.902706 DATA sockfilt for passive data channel listens on port 39465 19:29:22.903023 > "229 Entering Passive Mode (|||39465|)[LF]" 19:29:22.903205 Client has been notified that DATA conn will be accepted on port 39465 19:29:22.904422 Client connects to port 39465 19:29:22.904677 ====> Client established passive DATA connection on port 39465 19:29:22.905239 < "TYPE I" 19:29:22.905675 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:22.906782 < "SIZE verifiedserver" 19:29:22.907134 > "213 18[CR][LF]" 19:29:22.908580 < "RETR verifiedserver" 19:29:22.909595 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:22.910122 =====> Closing passive DATA connection... 19:29:22.910268 Server disconnects passive DATA connection 19:29:22.911752 Server disconnected passive DATA connection 19:29:22.911984 DATA sockfilt for passive data channel quits (pid 136145) 19:29:22.913233 DATA sockfilt for passive data channel quit (pid 136145) 19:29:22.913580 =====> Closed passive DATA connection 19:29:22.914255 > "226 File transfer complete[CR][LF]" 19:29:22.950720 < "QUIT" 19:29:22.951203 > "221 bye bye baby[CR][LF]" 19:29:22.956925 MAIN sockfilt said DISC 19:29:22.957320 ====> Client disconnected 19:29:22.958017 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:22.345996 ====> Client connect 19:29:22.347680 Received DATA (on stdin) 19:29:22.347811 > 160 bytes data, server => client 19:29:22.347906 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:22.347983 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:22.348047 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:22.348475 < 16 bytes data, client => server 19:29:22.348604 'USER anonymous\r\n' 19:29:22.349636 Received DATA (on stdin) 19:29:22.349760 > 33 bytes data, server => client 19:29:22.349831 '331 We are happy you popped in!\r\n' 19:29:22.350249 < 22 bytes data, client => server 19:29:22.350375 'PASS ftp@example.com\r\n' 19:29:22.351082 Received DATA (on stdin) 19:29:22.351213 > 30 bytes data, server => client 19:29:22.351290 '230 Welcome you silly person\r\n' 19:29:22.352611 < 5 bytes data, client => server 19:29:22.352745 'PWD\r\n' 19:29:22.355690 Received DATA (on stdin) 19:29:22.356003 > 30 bytes data, server => client 19:29:22.356136 '257 "/" is current directory\r\n' 19:29:22.356604 < 6 bytes data, client => server 19:29:22.356739 'EPSV\r\n' 19:29:22.367034 Received DATA (on stdin) 19:29:22.367156 > 38 bytes data, server => client 19:29:22.367229 '229 Entering Passive Mode (|||39465|)\n' 19:29:22.368136 < 8 bytes data, client => server 19:29:22.368263 'TYPE I\r\n' 19:29:22.369750 Received DATA (on stdin) 19:29:22.369874 > 33 bytes data, server => client 19:29:22.369953 '200 I modify TYPE as you wanted\r\n' 19:29:22.370383 < 21 bytes data, client => server 19:29:22.370515 'SIZE verifiedserver\r\n' 19:29:22.371428 Received DATA (on stdin) 19:29:22.371543 > 8 bytes data, server => client 19:29:22.371609 '213 18\r\n' 19:29:22.372023 < 21 bytes data, client => server 19:29:22.372138 'RETR verifiedserver\r\n' 19:29:22.372880 Received DATA (on stdin) 19:29:22.372990 > 29 bytes data, server => client 19:29:22.373105 '150 Binary junk (18 bytes).\r\n' 19:29:22.377839 Received DATA (on stdin) 19:29:22.377953 > 28 bytes data, server => client 19:29:22.378078 '226 File transfer complete\r\n' 19:29:22.414066 < 6 bytes data, client => server 19:29:22.414211 'QUIT\r\n' 19:29:22.415314 Received DATA (on stdin) 19:29:22.415464 > 18 bytes data, server => client 19:29:22.415554 '221 bye bye baby\r\n' 19:29:22.419796 ====> Client disconnect 19:29:22.421375 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:22.364957 Running IPv4 version 19:29:22.365322 Listening on port 39465 19:29:22.365708 Wrote pid 136145 to log/2/server/ftp_sockdata.pid 19:29:22.365840 Received PING (on stdin) 19:29:22.366350 Received PORT (on stdin) 19:29:22.368271 ====> Client connect 19:29:22.374462 Received DATA (on stdin) 19:29:22.374575 > 18 bytes data, server => client 19:29:22.374646 'WE ROOLZ: 116354\r\n' 19:29:22.375206 Received DISC (on stdin) 19:29:22.375426 ====> Client forcibly disconnected 19:29:22.376208 Received QUIT (on stdin) 19:29:22.376317 quits 19:29:22.376618 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 575 === End of file server.cmd === Start of file valgrind575 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): iCMD (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/1/valgrind577 ./libtest/lib567 rtsp://127.0.0.1:46221/577 > log/1/stdout577 2> log/1/stderr577 CMD (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/4/valgrind576 ./libtest/lib576 ftp://127.0.0.1:40809/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 nstall glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind575 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/1/valgrind577 ./libtest/lib567 rtsp://127.0.0.1:46221/577 > log/1/stdout577 2> log/1/stderr577 577: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind577 ./libtest/lib567 rtsp://127.0.0.1:46221/577 > log/1/stdout577 2> log/1/stderr577 === End of file commands.log === Start of file rtsp_server.log 19:29:23.638536 ====> Client connect 19:29:23.638764 Read 93 bytes 19:29:23.638841 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:46221 User-Agent: curl/8.13.0 Accept: */* ] 19:29:23.638927 Got request: GET /verifiedserver HTTP/1.1 19:29:23.638993 Are-we-friendly question received 19:29:23.639139 Wrote request (93 bytes) input to log/1/server.input 19:29:23.639270 Send response number -2 part 0 19:29:23.639339 Identifying ourselves as friends 19:29:23.639617 Sent off 69 bytes 19:29:23.639795 Response sent (69 bytes) and written to log/1/server.response 19:29:23.639892 special request received, no persistency 19:29:23.639954 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:46221... * Connected to 127.0.0.1 (127.0.0.1) port 46221 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:46221 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135540 === End of file rtsp_verify.out === Start of file server.cmd Testnum 577 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135540 === End of file server.response === Start of file valgrind577 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind577 test 0576...[FTP wildcard download - 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/4/valgrind576 ./libtest/lib576 ftp://127.0.0.1:40809/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 576: stdout FAILED: --- log/4/check-expected 2025-05-23 19:29:23.694264307 +0000 +++ log/4/check-generated 2025-05-23 19:29:23.694264307 +0000 @@ -1,152 +0,0 @@ -=============================================================[LF] -Remains: 14[LF] -Filename: .[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 20480B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 5:12[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 13[LF] -Filename: ..[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 20480B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 23 3:12[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 12[LF] -Filename: chmod1[LF] -Permissions: r--r--r-- (parsed => 444)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 11 10:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 444[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 11[LF] -Filename: chmod2[LF] -Permissions: rw-rw-rw- (parsed => 666)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Feb 1 8:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 666[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 10[LF] -Filename: chmod3[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 38B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Feb 1 8:00[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This file should have permissions 777[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 9[LF] -Filename: chmod4[LF] -Permissions: --S--S--t (parsed => 7001)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: May 4 4:31[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 8[LF] -Filename: chmod5[LF] -Permissions: --s--s--T (parsed => 7110)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: May 4 4:31[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 7[LF] -Filename: empty_file.dat[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 6[LF] -Filename: file.txt[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 35B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -This is content of file "file.txt"[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 5[LF] -Filename: link[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 6 4:42[LF] -Filetype: symlink[LF] -Target: file.txt[LF] -=============================================================[LF] -Remains: 4[LF] -Filename: link_absolute[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 0B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 6 4:45[LF] -Filetype: symlink[LF] -Target: /data/ftp/file.txt[LF] -=============================================================[LF] -Remains: 3[LF] -Filename: .NeXT[LF] -Permissions: rwxrwxrwx (parsed => 777)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Jan 23 2:05[LF] -Filetype: directory[LF] -=============================================================[LF] -Remains: 2[LF] -Filename: someothertext.txt[LF] -Permissions: rw-r--r-- (parsed => 644)[LF] -Size: 47B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 27 11:01[LF] -Filetype: regular file[LF] -Content:[LF] --------------------------------------------------------------[LF] -# THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF] --------------------------------------------------------------[LF] -=============================================================[LF] -Remains: 1[LF] -Filename: weirddir.txt[LF] -Permissions: rwxr-xrwx (parsed => 757)[LF] -Size: 4096B[LF] -User: ftp-default[LF] -Group: ftp-default[LF] -Time: Apr 23 3:12[LF] -Filetype: directory[LF] -=============================================================[LF] == Contents of files in the log/4/ dir after test 576 === Start of file check-expected =============================================================[LF] Remains: 14[LF] Filename: .[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 20480B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 5:12[LF] Filetype: directory[LF] =============================================================[LF] Remains: 13[LF] Filename: ..[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 20480B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 23 3:12[LF] Filetype: directory[LF] =============================================================[LF] Remains: 12[LF] Filename: chmod1[LF] Permissions: r--r--r-- (parsed => 444)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 11 10:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 444[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 11[LF] Filename: chmod2[LF] Permissions: rw-rw-rw- (parsed => 666)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Feb 1 8:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 666[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 10[LF] Filename: chmod3[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 38B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Feb 1 8:00[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This file should have permissions 777[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 9[LF] Filename: chmod4[LF] Permissions: --S--S--t (parsed => 7001)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: May 4 4:31[LF] Filetype: directory[LF] =============================================================[LF] Remains: 8[LF] Filename: chmod5[LF] Permissions: --s--s--T (parsed => 7110)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: May 4 4:31[LF] Filetype: directory[LF] =============================================================[LF] Remains: 7[LF] Filename: empty_file.dat[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 6[LF] Filename: file.txt[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 35B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] This is content of file "file.txt"[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 5[LF] Filename: link[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 6 4:42[LF] Filetype: symlink[LF] Target: file.txt[LF] =============================================================[LF] Remains: 4[LF] Filename: link_absolute[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 0B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 6 4:45[LF] Filetype: symlink[LF] Target: /data/ftp/file.txt[LF] =============================================================[LF] Remains: 3[LF] Filename: .NeXT[LF] Permissions: rwxrwxrwx (parsed => 777)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Jan 23 2:05[LF] Filetype: directory[LF] =============================================================[LF] Remains: 2[LF] Filename: someothertext.txt[LF] Permissions: rw-r--r-- (parsed => 644)[LF] Size: 47B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 27 11:01[LF] Filetype: regular file[LF] Content:[LF] -------------------------------------------------------------[LF] # THIS CONTENT WAS SKIPPED IN CHUNK_BGN CALLBACK #[LF] -------------------------------------------------------------[LF] =============================================================[LF] Remains: 1[LF] Filename: weirddir.txt[LF] Permissions: rwxr-xrwx (parsed => 757)[LF] Size: 4096B[LF] User: ftp-default[LF] Group: ftp-default[LF] Time: Apr 23 3:12[LF] Filetype: directory[LF] =============================================================[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind576 ./libtest/lib576 ftp://127.0.0.1:40809/fully_simulated/UNIX/* > log/4/stdout576 2> log/4/stderr576 === End of file commands.log === Start of file ftp_server.log 19:29:22.993322 ====> Client connect 19:29:22.995123 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:22.999054 < "USER anonymous" 19:29:22.999790 > "331 We are happy you popped in![CR][LF]" 19:29:23.000888 < "PASS ftp@example.com" 19:29:23.001134 > "230 Welcome you silly person[CR][LF]" 19:29:23.002543 < "PWD" 19:29:23.002811 > "257 "/" is current directory[CR][LF]" 19:29:23.004362 < "EPSV" 19:29:23.004620 ====> Passive DATA channel requested by client 19:29:23.004789 DATA sockfilt for passive data channel starting... 19:29:23.013327 DATA sockfilt for passive data channel started (pid 136177) 19:29:23.014198 DATA sockfilt for passive data channel listens on port 33599 19:29:23.014703 > "229 Entering Passive Mode (|||33599|)[LF]" 19:29:23.014932 Client has been notified that DATA conn will be accepted on port 33599 19:29:23.016649 Client connects to port 33599 19:29:23.016866 ====> Client established passive DATA connection on port 33599 19:29:23.017329 < "TYPE I" 19:29:23.017744 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:23.019583 < "SIZE verifiedserver" 19:29:23.020002 > "213 18[CR][LF]" 19:29:23.021678 < "RETR verifiedserver" 19:29:23.022111 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:23.022707 =====> Closing passive DATA connection... 19:29:23.022887 Server disconnects passive DATA connection 19:29:23.023581 Server disconnected passive DATA connection 19:29:23.023884 DATA sockfilt for passive data channel quits (pid 136177) 19:29:23.025212 DATA sockfilt for passive data channel quit (pid 136177) 19:29:23.025699 =====> Closed passive DATA connection 19:29:23.026009 > "226 File transfer complete[CR][LF]" 19:29:23.066709 < "QUIT" 19:29:23.067016 > "221 bye bye baby[CR][LF]" 19:29:23.068140 MAIN sockfilt said DISC 19:29:23.068403 ====> Client disconnected 19:29:23.068732 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:22.456645 ====> Client connect 19:29:22.459687 Received DATA (on stdin) 19:29:22.459958 > 160 bytes data, server => client 19:29:22.460125 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:22.460264 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:22.460401 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:22.462132 < 16 bytes data, client => server 19:29:22.462265 'USER anonymous\r\n' 19:29:22.463575 Received DATA (on stdin) 19:29:22.463679 > 33 bytes data, server => client 19:29:22.463977 '331 We are happy you popped in!\r\n' 19:29:22.464368 < 22 bytes data, client => server 19:29:22.464475 'PASS ftp@example.com\r\n' 19:29:22.465323 Received DATA (on stdin) 19:29:22.465549 > 30 bytes data, server => client 19:29:22.465651 '230 Welcome you silly person\r\n' 19:29:22.466004 < 5 bytes data, client => server 19:29:22.466113 'PWD\r\n' 19:29:22.467012 Received DATA (on stdin) 19:29:22.467222 > 30 bytes data, server => client 19:29:22.467311 '257 "/" is current directory\r\n' 19:29:22.467728 < 6 bytes data, client => server 19:29:22.467858 'EPSV\r\n' 19:29:22.479215 Received DATA (on stdin) 19:29:22.479370 > 38 bytes data, server => client 19:29:22.479478 '229 Entering Passive Mode (|||33599|)\n' 19:29:22.480410 < 8 bytes data, client => server 19:29:22.480501 'TYPE I\r\n' 19:29:22.482103 Received DATA (on stdin) 19:29:22.482276 > 33 bytes data, server => client 19:29:22.482374 '200 I modify TYPE as you wanted\r\n' 19:29:22.482806 < 21 bytes data, client => server 19:29:22.482969 'SIZE verifiedserver\r\n' 19:29:22.484283 Received DATA (on stdin) 19:29:22.484391 > 8 bytes data, server => client 19:29:22.484464 '213 18\r\n' 19:29:22.484970 < 21 bytes data, client => server 19:29:22.485100 'RETR verifiedserver\r\n' 19:29:22.487162 Received DATA (on stdin) 19:29:22.487267 > 29 bytes data, server => client 19:29:22.487358 '150 Binary junk (18 bytes).\r\n' 19:29:22.490318 Received DATA (on stdin) 19:29:22.490444 > 28 bytes data, server => client 19:29:22.490518 '226 File transfer complete\r\n' 19:29:2CMD (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/valgrind578 ./libtest/lib578 http://127.0.0.1:37525/578 log/3/ip578 > log/3/stdout578 2> log/3/stderr578 2.530050 < 6 bytes data, client => server 19:29:22.530205 'QUIT\r\n' 19:29:22.531273 Received DATA (on stdin) 19:29:22.531397 > 18 bytes data, server => client 19:29:22.531475 '221 bye bye baby\r\n' 19:29:22.531921 ====> Client disconnect 19:29:22.533000 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:23.476334 Running IPv4 version 19:29:23.476723 Listening on port 33599 19:29:23.476996 Wrote pid 136177 to log/4/server/ftp_sockdata.pid 19:29:23.477130 Received PING (on stdin) 19:29:23.477797 Received PORT (on stdin) 19:29:23.480223 ====> Client connect 19:29:23.486511 Received DATA (on stdin) 19:29:23.486655 > 18 bytes data, server => client 19:29:23.486753 'WE ROOLZ: 109451\r\n' 19:29:23.487136 Received DISC (on stdin) 19:29:23.487276 ====> Client forcibly disconnected 19:29:23.488215 Received QUIT (on stdin) 19:29:23.488332 quits 19:29:23.488613 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 576 === End of file server.cmd === Start of file valgrind576 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind576 cannot find sshd CMD (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/2/valgrind579 ./libtest/lib579 http://127.0.0.1:39599/579 log/2/ip579 > log/2/stdout579 2> log/2/stderr579 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/3/valgrind578 ./libtest/lib578 http://127.0.0.1:37525/578 log/3/ip578 > log/3/stdout578 2> log/3/stderr578 578: data FAILED: --- log/3/check-expected 2025-05-23 19:29:23.866268625 +0000 +++ log/3/check-generated 2025-05-23 19:29:23.866268625 +0000 @@ -1,12 +0,0 @@ -HTTP/1.1 200 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -ETag: "21025-dc7-39462498"[CR][LF] -Accept-Ranges: bytes[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -Funny-head: yesyes[CR][LF] -[CR][LF] --foo-[LF] == Contents of files in the log/3/ dir after test 578 === Start of file check-expected HTTP/1.1 200 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] ETag: "21025-dc7-39462498"[CR][LF] Accept-Ranges: bytes[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] Funny-head: yesyes[CR][LF] [CR][LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind578 ./libtest/lib578 http://127.0.0.1:37525/578 log/3/ip578 > log/3/stdout578 2> log/3/stderr578 === End of file commands.log === Start of file http_server.log 19:29:22.802997 ====> Client connect 19:29:22.803220 accept_connection 3 returned 4 19:29:22.803331 accept_connection 3 returned 0 19:29:22.803447 Read 93 bytes 19:29:22.803532 Process 93 bytes request 19:29:22.803633 Got request: GET /verifiedserver HTTP/1.1 19:29:22.803721 Are-we-friendly question received 19:29:22.803919 Wrote request (93 bytes) input to log/3/server.input 19:29:22.804097 Identifying ourselves as friends 19:29:22.804682 Response sent (57 bytes) and written to log/3/server.response 19:29:22.804775 special request received, no persistency 19:29:22.804829 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 578 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind578 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind578 CMD (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/1/valgrind580 ./libtest/lib507 http://127.0.0.1:41477/580 > log/1/stdout580 2> log/1/stderr580 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/2/valgrind579 ./libtest/lib579 http://127.0.0.1:39599/579 log/2/ip579 > log/2/stdout579 2> log/2/stderr579 579: data FAILED: --- log/2/check-expected 2025-05-23 19:29:24.238277963 +0000 +++ log/2/check-generated 2025-05-23 19:29:24.234277863 +0000 @@ -1,17 +0,0 @@ -HTTP/1.1 100 Continue[CR][LF] -Server: Microsoft-IIS/5.0[CR][LF] -Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF] -X-Powered-By: ASP.NET[CR][LF] -[CR][LF] -HTTP/1.1 401 authentication please swsbounce[CR][LF] -Server: Microsoft-IIS/6.0[CR][LF] -WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 0[CR][LF] -[CR][LF] -HTTP/1.1 200 A OK[CR][LF] -Server: Microsoft-IIS/6.0[CR][LF] -Content-Type: text/html; charset=iso-8859-1[CR][LF] -Content-Length: 3[CR][LF] -[CR][LF] -ok[LF] == Contents of files in the log/2/ dir after test 579 === Start of file check-expected HTTP/1.1 100 Continue[CR][LF] Server: Microsoft-IIS/5.0[CR][LF] Date: Sun, 03 Apr 2005 14:57:45 GMT[CR][LF] X-Powered-By: ASP.NET[CR][LF] [CR][LF] HTTP/1.1 401 authentication please swsbounce[CR][LF] Server: Microsoft-IIS/6.0[CR][LF] WWW-Authenticate: Digest realm="testrealm", nonce="1053604144"[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 0[CR][LF] [CR][LF] HTTP/1.1 200 A OK[CR][LF] Server: Microsoft-IIS/6.0[CR][LF] Content-Type: text/html; charset=iso-8859-1[CR][LF] Content-Length: 3[CR][LF] [CR][LF] ok[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind579 ./libtest/lib579 http://127.0.0.1:39599/579 log/2/ip579 > log/2/stdout579 2> log/2/stderr579 === End of file commands.log === Start of file http_server.log 19:29:24.181735 ====> Client connect 19:29:24.181961 accept_connection 3 returned 4 19:29:24.182073 accept_connection 3 returned 0 19:29:24.182171 Read 93 bytes 19:29:24.182251 Process 93 bytes request 19:29:24.182337 Got request: GET /verifiedserver HTTP/1.1 19:29:24.182404 Are-we-friendly question received 19:29:24.182580 Wrote request (93 bytes) input to log/2/server.input 19:29:24.182754 Identifying ourselves as friends 19:29:24.183309 Response sent (57 bytes) and written to log/2/server.response 19:29:24.183393 special request received, no persistency 19:29:24.183447 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 579 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind579 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind580 ./libtest/lib507 http://127.0.0.1:41477/580 > log/1/stdout580 2> log/1/stderr580 580: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind580 ./libtest/lib507 http://127.0.0.1:41477/580 > log/1/stdout580 2> log/1/stderr580 === End of file commands.log === Start of file http_server.log 19:29:24.245091 ====> Client connect 19:29:24.245299 accept_connection 3 returned 4 19:29:24.245454 accept_connection 3 returned 0 19:29:24.246653 Read 93 bytes 19:29:24.246788 Process 93 bytes request 19:29:24.246875 Got request: GET /verifiedserver HTTP/1.1 19:29:24.246941 Are-we-friendly question received 19:29:24.247106 Wrote request (93 bytes) input to log/1/server.input 19:29:24.247282 Identifying ourselves as friends 19:29:24.247717 Response sent (57 bytes) and written to log/1/server.response 19:29:24.247815 special request received, no persistency 19:29:24.247869 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 580 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind580 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: CMD (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/4/valgrind581 ./libtest/lib507 http://127.0.0.1:43669/581 > log/4/stdout581 2> log/4/stderr581 cannot find sshd CMD (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/1/valgrind584 ./libtest/lib584 http://127.0.0.1:41477/584 > log/1/stdout584 2> log/1/stderr584 CMD (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/4/valgrind585 ./libtest/lib585 http://127.0.0.1:43669/585 > log/4/stdout585 2> log/4/stderr585 On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind581 ./libtest/lib507 http://127.0.0.1:43669/581 > log/4/stdout581 2> log/4/stderr581 581: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind581 ./libtest/lib507 http://127.0.0.1:43669/581 > log/4/stdout581 2> log/4/stderr581 === End of file commands.log === Start of file http_server.log 19:29:24.299547 ====> Client connect 19:29:24.299775 accept_connection 3 returned 4 19:29:24.299890 accept_connection 3 returned 0 19:29:24.300409 Read 93 bytes 19:29:24.300550 Process 93 bytes request 19:29:24.300633 Got request: GET /verifiedserver HTTP/1.1 19:29:24.300706 Are-we-friendly question received 19:29:24.300886 Wrote request (93 bytes) input to log/4/server.input 19:29:24.301050 Identifying ourselves as friends 19:29:24.301561 Response sent (57 bytes) and written to log/4/server.response 19:29:24.301665 special request received, no persistency 19:29:24.301727 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 581 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind581 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind581 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/1/valgrind584 ./libtest/lib584 http://127.0.0.1:41477/584 > log/1/stdout584 2> log/1/stderr584 584: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind584 ./libtest/lib584 http://127.0.0.1:41477/584 > log/1/stdout584 2> log/1/stderr584 === End of file commands.log === Start of file http_server.log 19:29:24.825021 ====> Client connect 19:29:24.825232 accept_connection 3 returned 4 19:29:24.825345 accept_connection 3 returned 0 19:29:24.825972 Read 93 bytes 19:29:24.826104 Process 93 bytes request 19:29:24.826180 Got request: GET /verifiedserver HTTP/1.1 19:29:24.826250 Are-we-friendly question received 19:29:24.826436 Wrote request (93 bytes) input to log/1/server.input 19:29:24.826601 Identifying ourselves as friends 19:29:24.827020 Response sent (57 bytes) and written to log/1/server.response 19:29:24.827117 special request received, no persistency 19:29:24.827175 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 584 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind584 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind584 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/4/valgrind585 ./libtest/lib585 http://127.0.0.1:43669/585 > log/4/stdout585 2> log/4/stderr585 585: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 585 === Start of file commands.log ../libtool --mode=execute /usr/bin/valgrind --tool=memcheck --quiet --leak-cheCMD (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/4/valgrind587 ./libtest/lib587 http://127.0.0.1:43669/587 > log/4/stdout587 2> log/4/stderr587 CMD (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/1/valgrind586 ./libtest/lib585 ftp://127.0.0.1:39333/586 > log/1/stdout586 2> log/1/stderr586 ck=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/4/valgrind585 ./libtest/lib585 http://127.0.0.1:43669/585 > log/4/stdout585 2> log/4/stderr585 === End of file commands.log === Start of file http_server.log 19:29:24.885641 ====> Client connect 19:29:24.885893 accept_connection 3 returned 4 19:29:24.886027 accept_connection 3 returned 0 19:29:24.886129 Read 93 bytes 19:29:24.886203 Process 93 bytes request 19:29:24.886273 Got request: GET /verifiedserver HTTP/1.1 19:29:24.886333 Are-we-friendly question received 19:29:24.886479 Wrote request (93 bytes) input to log/4/server.input 19:29:24.886624 Identifying ourselves as friends 19:29:24.887124 Response sent (57 bytes) and written to log/4/server.response 19:29:24.887221 special request received, no persistency 19:29:24.887277 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 585 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind585 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind585 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/1/valgrind586 ./libtest/lib585 ftp://127.0.0.1:39333/586 > log/1/stdout586 2> log/1/stderr586 586: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind586 ./libtest/lib585 ftp://127.0.0.1:39333/586 > log/1/stdout586 2> log/1/stderr586 === End of file commands.log === Start of file ftp_server.log 19:29:24.903222 ====> Client connect 19:29:24.903959 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:24.905208 < "USER anonymous" 19:29:24.905668 > "331 We are happy you popped in![CR][LF]" 19:29:24.906638 < "PASS ftp@example.com" 19:29:24.906905 > "230 Welcome you silly person[CR][LF]" 19:29:24.907959 < "PWD" 19:29:24.908234 > "257 "/" is current directory[CR][LF]" 19:29:24.909172 < "EPSV" 19:29:24.909388 ====> Passive DATA channel requested by client 19:29:24.909638 DATA sockfilt for passive data channel starting... 19:29:24.918080 DATA sockfilt for passive data channel started (pid 136746) 19:29:24.918860 DATA sockfilt for passive data channel listens on port 46381 19:29:24.919217 > "229 Entering Passive Mode (|||46381|)[LF]" 19:29:24.919424 Client has been notified that DATA conn will be accepted on port 46381 19:29:24.920917 Client connects to port 46381 19:29:24.921196 ====> Client established passive DATA connection on port 46381 19:29:24.921886 < "TYPE I" 19:29:24.922198 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:24.923225 < "SIZE verifiedserver" 19:29:24.923547 > "213 18[CR][LF]" 19:29:24.924582 < "RETR verifiedserver" 19:29:24.924918 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:24.925567 =====> Closing passive DATA connection... 19:29:24.925825 Server disconnects passive DATA connection 19:29:24.926346 Server disconnected passive DATA connection 19:29:24.926558 DATA sockfilt for passive data channel quits (pid 136746) 19:29:24.927856 DATA sockfilt for passive data channel quit (pid 136746) 19:29:24.928055 =====> Closed passive DATA connection 19:29:24.928250 > "226 File transfer complete[CR][LF]" 19:29:24.966362 < "QUIT" 19:29:24.966587 > "221 bye bye baby[CR][LF]" 19:29:24.967286 MAIN sockfilt said DISC 19:29:24.967548 ====> Client disconnected 19:29:24.967830 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:25.366805 ====> Client connect 19:29:25.367911 Received DATA (on stdin) 19:29:25.368020 > 160 bytes data, server => client 19:29:25.368097 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:25.368168 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:25.368233 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:25.368617 < 16 bytes data, client => server 19:29:25.368732 'USER anonymous\r\n' 19:29:25.369620 Received DATA (on stdin) 19:29:25.369757 > 33 bytes data, server => client 19:29:25.369831 '331 We are happy you popped in!\r\n' 19:29:25.370214 < 22 bytes data, client => server 19:29:25.370346 'PASS ftp@example.com\r\n' 19:29:25.370869 Received DATA (on stdin) 19:29:25.370987 > 30 bytes data, server => client 19:29:25.371137 '230 Welcome you silly person\r\n' 19:29:25.371550 < 5 bytes data, client => server 19:29:25.371669 'PWD\r\n' 19:29:25.372200 Received DATA (on stdin) 19:29:25.372321 > 30 bytes data, server => client 19:29:25.372390 '257 "/" is current directory\r\n' 19:29:25.372774 < 6 bytes data, client => server 19:29:25.372882 'EPSV\r\n' 19:29:25.383237 Received DATA (on stdin) 19:29:25.383386 > 38 bytes data, server => client 19:29:25.383479 '229 Entering Passive Mode (|||46381|)\n' 19:29:25.384440 < 8 bytes data, client => server 19:29:25.384567 'TYPE I\r\n' 19:29:25.386157 Received DATA (on stdin) 19:29:25.386287 > 33 bytes data, server => client 19:29:25.386369 '200 I modify TYPE as you wanted\r\n' 19:29:25.386784 < 21 bytes data, client => server 19:29:25.386908 'SIZE verifiedserver\r\n' 19:29:25.387511 Received DATA (on stdin) 19:29:25.387618 > 8 bytes data, server => client 19:29:25.387705 '213 18\r\n' 19:29:25.388126 < 21 bytes data, client => server 19:29:25.388255 'RETR verifiedserver\r\n' 19:29:25.388881 Received DATA (on stdin) 19:29:25.388993 > 29 bytes data, server => client 19:29:25.389078 '150 Binary junk (18 bytes).\r\n' 19:29:25.392224 Received DATA (on stdin) 19:29:25.392342 > 28 bytes data, server => client 19:29:25.392427 '226 File transfer complete\r\n' 19:29:25.429968 < 6 bytes data, client => server 19:29:25.430105 'QUIT\r\n' 19:29:25.430549 Received DCMD (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/1/valgrind588 ./libtest/lib525 ftp://127.0.0.1:39333/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 ATA (on stdin) 19:29:25.430634 > 18 bytes data, server => client 19:29:25.430702 '221 bye bye baby\r\n' 19:29:25.431056 ====> Client disconnect 19:29:25.431523 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:24.380827 Running IPv4 version 19:29:24.381224 Listening on port 46381 19:29:24.381633 Wrote pid 136746 to log/1/server/ftp_sockdata.pid 19:29:24.381771 Received PING (on stdin) 19:29:24.382419 Received PORT (on stdin) 19:29:24.384281 ====> Client connect 19:29:24.389676 Received DATA (on stdin) 19:29:24.389798 > 18 bytes data, server => client 19:29:24.389876 'WE ROOLZ: 109414\r\n' 19:29:24.390122 Received DISC (on stdin) 19:29:24.390252 ====> Client forcibly disconnected 19:29:24.390735 Received QUIT (on stdin) 19:29:24.390842 quits 19:29:24.391122 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 586 === End of file server.cmd === Start of file valgrind586 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib525 ftp://127.0.0.1:39333/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 588: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib525 ftp://127.0.0.1:39333/path/588 log/1/upload588 > log/1/stdout588 2> log/1/stderr588 === End of file commands.log === Start of file ftp_server.log 19:29:25.493589 ====> Client connect 19:29:25.494307 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:25.495517 < "USER anonymous" 19:29:25.495762 > "331 We are happy you popped in![CR][LF]" 19:29:25.496605 < "PASS ftp@example.com" 19:29:25.496827 > "230 Welcome you silly person[CR][LF]" 19:29:25.497722 < "PWD" 19:29:25.497962 > "257 "/" is current directory[CR][LF]" 19:29:25.498796 < "EPSV" 19:29:25.498967 ====> Passive DATA channel requested by client 19:29:25.499064 DATA sockfilt for passive data channel starting... 19:29:25.505622 DATA sockfilt for passive data channel started (pid 136853) 19:29:25.506188 DATA sockfilt for passive data channel listens on port 34907 19:29:25.506414 > "229 Entering Passive Mode (|||34907|)[LF]" 19:29:25.506556 Client has been notified that DATA conn will be accepted on port 34907 19:29:25.507529 Client connects to port 34907 19:29:25.507793 ====> Client established passive DATA connection on port 34907 19:29:25.508311 < "TYPE I" 19:29:25.508560 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:25.509684 < "SIZE verifiedserver" 19:29:25.509992 > "213 18[CR][LF]" 19:29:25.510934 < "RETR verifiedserver" 19:29:25.511222 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:25.511704 =====> Closing passive DATA connection... 19:29:25.511880 Server disconnects passive DATA connection 19:29:25.512504 Server disconnected passive DATA connection 19:29:25.512685 DATA sockfilt for passive data channel quits (pid 136853) 19:29:25.513892 DATA sockfilt for passive data channel quit (pid 136853) 19:29:25.514102 =====> Closed passive DATA connection 19:29:25.514331 > "226 File transfer complete[CR][LF]" 19:29:25.558048 < "QUIT" 19:29:25.559204 > "221 bye bye baby[CR][LF]" 19:29:25.562294 MAIN sockfilt said DISC 19:29:25.563384 ====> Client disconnected 19:29:25.564781 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:25.956969 ====> Client connect 19:29:25.958241 Received DATA (on stdin) 19:29:25.958359 > 160 bytes data, server => client 19:29:25.958437 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:25.958504 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:25.958565 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:25.958952 < 16 bytes data, client => server 19:29:25.959059 'USER anonymous\r\n' 19:29:25.959711 Received DATA (on stdin) 19:29:25.959798 > 33 bytes data, server => client 19:29:25.959864 '331 We are happy you popped in!\r\n' 19:29:25.960204 < 22 bytes data, client => server 19:29:25.960308 'PASS ftp@example.com\r\n' 19:29:25.960776 Received DATA (on stdin) 19:29:25.960849 > 30 bytes data, server => client 19:29:25.960912 '230 Welcome you silly person\r\n' 19:29:25.961247 < 5 bytes data, client => server 19:29:25.961345 'PWD\r\n' 19:29:25.961911 Received DATA (on stdin) 19:29:25.961993 > 30 bytes data, server => client 19:29:25.962057 '257 "/" is current directory\r\n' 19:29:25.962409 < 6 bytes data, client => server 19:29:25.962510 'EPSV\r\n' 19:29:25.970410 Received DATA (on stdin) 19:29:25.970507 > 38 bytes data, server => client 19:29:25.970573 '229 Entering Passive Mode (|||34907|)\n' 19:29:25.971383 < 8 bytes data, client => server 19:29:25.971484 'TYPE I\r\n' 19:29:25.972495 Received DATA (on stdin) 19:29:25.972596 > 33 bytes data, server => client 19:29:25.972725 '200 I modify TYPE as you wanted\r\n' 19:29:25.973137 < 21 bytes data, client => server 19:29:25.973256 'SIZE verifiedserver\r\n' 19:29:25.973940 Received DATA (on stdin) 19:29:25.974041 > 8 bytes data, server => client 19:29:25.974110 '213 18\r\n' 19:29:25.974502 < 21 bytes data, client => server 19:29:25.974617 'RETR verifiedserver\r\n' 19:29:25.975165 Received DATA (on stdin) 19:29:25.975251 > 29 bytes data, server => client 19:29:25.975322 '150 Binary junk (18 bytes).\r\n' 19:29:25.978270 Received DATA (on stdin) 19:29:25.978379 > 28 bytes data, server => client 19:29:25.978452 '226 File transfer complete\r\n' 19:29:26.020021 < 6 bytes data, client => server 19:29:26.020566 'QUIT\r\n' 19:29:26.023124 Received DATA (on stdin) 19:29:26.023542 > 18 bytes data, server => client 19:29:26.023872 '221 bye bye baby\r\n' 19:29:26.025137 ====> Client disconnect 19:29:26.027396 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:25.968708 Running IPv4 version 19:29:25.969039 Listening on port 34907 19:29:25.969238 Wrote pid 136853 to log/1/server/ftp_sockdata.pid 19:29:25.969333 Received PING (on stdin) 19:29:25.969844 Received PORT (on stdin) 19:29:25.971210 ====> Client connect 19:29:25.975392 Received DATA CMD (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/1/valgrind589 ./libtest/lib589 http://127.0.0.1:41477/589 > log/1/stdout589 2> log/1/stderr589 (on stdin) 19:29:25.975524 > 18 bytes data, server => client 19:29:25.975612 'WE ROOLZ: 109414\r\n' 19:29:25.976259 Received DISC (on stdin) 19:29:25.976400 ====> Client forcibly disconnected 19:29:25.976814 Received QUIT (on stdin) 19:29:25.976907 quits 19:29:25.977186 ============> 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 upload588 Moooooooooooo upload this === End of file upload588 === Start of file valgrind588 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib587 http://127.0.0.1:43669/587 > log/4/stdout587 2> log/4/stderr587 lib587 returned 1, when expecting 42 587: exit FAILED == 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/lib587 http://127.0.0.1:43669/587 > log/4/stdout587 2> log/4/stderr587 === End of file commands.log === Start of file http_server.log 19:29:25.401027 ====> Client connect 19:29:25.401228 accept_connection 3 returned 4 19:29:25.401330 accept_connection 3 returned 0 19:29:25.401482 Read 93 bytes 19:29:25.401548 Process 93 bytes request 19:29:25.401612 Got request: GET /verifiedserver HTTP/1.1 19:29:25.401668 Are-we-friendly question received 19:29:25.401801 Wrote request (93 bytes) input to log/4/server.input 19:29:25.401911 Identifying ourselves as friends 19:29:25.402350 Response sent (57 bytes) and written to log/4/server.response 19:29:25.402427 special request received, no persistency 19:29:25.402478 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 587 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind587 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind589 ./libtest/lib589 http://127.0.0.1:41477/589 > log/1/stdout589 2> log/1/stderr589 589: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind589 ./libtest/lib589 http://127.0.0.1:41477/589 > log/1/stdout589 2> log/1/stderr589 === End of file commands.log === Start of file http_server.log 19:29:26.568940 ====> Client connect 19:29:26.569168 accept_connection 3 returned 4 19:29:26.569289 accept_connection 3 returned 0 19:29:26.569463 Read 93 bytes 19:29:26.569549 Process 93 bytes request 19:29:26.569630 Got request: GET /verifiedserver HTTP/1.1 19:29:26.569705 Are-we-friendly question received 19:29:26.569852 Wrote request (93 bytes) input to log/1/server.input 19:29:26.569967 Identifying ourselves as friends 19:29:26.570376 Response sent (57 bytes) and written to log/1/server.response 19:29:26.570456 special request received, no persistency 19:29:26.570505 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 589 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind589 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst CMD (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/4/valgrind590 ./libtest/lib590 http://test.remote.example.com/path/590 http://127.0.0.1:43669 > log/4/stdout590 2> log/4/stderr590 CMD (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/1/valgrind591 ./libtest/lib591 ftp://127.0.0.1:39333/path/591 8 log/1/upload591 > log/1/stdout591 2> log/1/stderr591 processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind590 ./libtest/lib590 http://test.remote.example.com/path/590 http://127.0.0.1:43669 > log/4/stdout590 2> log/4/stderr590 590: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind590 ./libtest/lib590 http://test.remote.example.com/path/590 http://127.0.0.1:43669 > log/4/stdout590 2> log/4/stderr590 === End of file commands.log === Start of file http_server.log 19:29:26.887326 ====> Client connect 19:29:26.887529 accept_connection 3 returned 4 19:29:26.887625 accept_connection 3 returned 0 19:29:26.888034 Read 93 bytes 19:29:26.888141 Process 93 bytes request 19:29:26.888213 Got request: GET /verifiedserver HTTP/1.1 19:29:26.888273 Are-we-friendly question received 19:29:26.888419 Wrote request (93 bytes) input to log/4/server.input 19:29:26.888553 Identifying ourselves as friends 19:29:26.888910 Response sent (57 bytes) and written to log/4/server.response 19:29:26.888988 special request received, no persistency 19:29:26.889042 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 590 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind590 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind591 ./libtest/lib591 ftp://127.0.0.1:39333/path/591 8 log/1/upload591 > log/1/stdout591 2> log/1/stderr591 591: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind591 ./libtest/lib591 ftp://127.0.0.1:39333/path/591 8 log/1/upload591 > log/1/stdout591 2> log/1/stderr591 === End of file commands.log === Start of file ftp_server.log 19:29:26.582195 ====> Client connect 19:29:26.582864 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:26.584083 < "USER anonymous" 19:29:26.584348 > "331 We are happy you popped in![CR][LF]" 19:29:26.585212 < "PASS ftp@example.com" 19:29:26.585519 > "230 Welcome you silly person[CR][LF]" 19:29:26.586364 < "PWD" 19:29:26.586613 > "257 "/" is current directory[CR][LF]" 19:29:26.587432 < "EPSV" 19:29:26.587609 ====> Passive DATA channel requested by client 19:29:26.587713 DATA sockfilt for passive data channel starting... 19:29:26.595069 DATA sockfilt for passive data channel started (pid 136996) 19:29:26.595813 DATA sockfilt for passive data channel listens on port 46541 19:29:26.596190 > "229 Entering Passive Mode (|||46541|)[LF]" 19:29:26.596402 Client has been notified that DATA conn will be accepted on port 46541 19:29:26.597709 Client connects to port 46541 19:29:26.598002 ====> Client established passive DATA connection on port 46541 19:29:26.598514 < "TYPE I" 19:29:26.598829 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:26.599941 < "SIZE verifiedserver" 19:29:26.600236 > "213 18[CR][LF]" 19:29:26.601208 < "RETR verifiedserver" 19:29:26.601595 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:26.602372 =====> Closing passive DATA connection... 19:29:26.602636 Server disconnects passive DATA connection 19:29:26.603103 Server disconnected passive DATA connection 19:29:26.603327 DATA sockfilt for passive data channel quits (pid 136996) 19:29:26.604560 DATA sockfilt for passive data channel quit (pid 136996) 19:29:26.604779 =====> Closed passive DATA connection 19:29:26.605012 > "226 File transfer complete[CR][LF]" 19:29:26.650497 < "QUIT" 19:29:26.650803 > "221 bye bye baby[CR][LF]" 19:29:26.651609 MAIN sockfilt said DISC 19:29:26.651875 ====> Client disconnected 19:29:26.652211 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:27.045750 ====> Client connect 19:29:27.046769 Received DATA (on stdin) 19:29:27.046889 > 160 bytes data, server => client 19:29:27.046975 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:27.047045 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:27.047103 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:27.047483 < 16 bytes data, client => server 19:29:27.047603 'USER anonymous\r\n' 19:29:27.048267 Received DATA (on stdin) 19:29:27.04CMD (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/4/valgrind592 ./libtest/lib591 ftp://127.0.0.1:40809/path/592 8 log/4/upload592 > log/4/stdout592 2> log/4/stderr592 8365 > 33 bytes data, server => client 19:29:27.048431 '331 We are happy you popped in!\r\n' 19:29:27.048783 < 22 bytes data, client => server 19:29:27.048890 'PASS ftp@example.com\r\n' 19:29:27.049428 Received DATA (on stdin) 19:29:27.049531 > 30 bytes data, server => client 19:29:27.049594 '230 Welcome you silly person\r\n' 19:29:27.049932 < 5 bytes data, client => server 19:29:27.050035 'PWD\r\n' 19:29:27.050533 Received DATA (on stdin) 19:29:27.050620 > 30 bytes data, server => client 19:29:27.050686 '257 "/" is current directory\r\n' 19:29:27.051020 < 6 bytes data, client => server 19:29:27.051131 'EPSV\r\n' 19:29:27.060099 Received DATA (on stdin) 19:29:27.060240 > 38 bytes data, server => client 19:29:27.060329 '229 Entering Passive Mode (|||46541|)\n' 19:29:27.061175 < 8 bytes data, client => server 19:29:27.061281 'TYPE I\r\n' 19:29:27.062746 Received DATA (on stdin) 19:29:27.062883 > 33 bytes data, server => client 19:29:27.062972 '200 I modify TYPE as you wanted\r\n' 19:29:27.063454 < 21 bytes data, client => server 19:29:27.063598 'SIZE verifiedserver\r\n' 19:29:27.064155 Received DATA (on stdin) 19:29:27.064245 > 8 bytes data, server => client 19:29:27.064324 '213 18\r\n' 19:29:27.064738 < 21 bytes data, client => server 19:29:27.064866 'RETR verifiedserver\r\n' 19:29:27.065497 Received DATA (on stdin) 19:29:27.065650 > 29 bytes data, server => client 19:29:27.065750 '150 Binary junk (18 bytes).\r\n' 19:29:27.068943 Received DATA (on stdin) 19:29:27.069057 > 28 bytes data, server => client 19:29:27.069139 '226 File transfer complete\r\n' 19:29:27.113943 < 6 bytes data, client => server 19:29:27.114115 'QUIT\r\n' 19:29:27.114726 Received DATA (on stdin) 19:29:27.114832 > 18 bytes data, server => client 19:29:27.114907 '221 bye bye baby\r\n' 19:29:27.115306 ====> Client disconnect 19:29:27.115811 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:26.058013 Running IPv4 version 19:29:26.058428 Listening on port 46541 19:29:26.058658 Wrote pid 136996 to log/1/server/ftp_sockdata.pid 19:29:26.058768 Received PING (on stdin) 19:29:26.059339 Received PORT (on stdin) 19:29:26.061023 ====> Client connect 19:29:26.066086 Received DATA (on stdin) 19:29:26.066258 > 18 bytes data, server => client 19:29:26.066384 'WE ROOLZ: 109414\r\n' 19:29:26.066803 Received DISC (on stdin) 19:29:26.066950 ====> Client forcibly disconnected 19:29:26.067472 Received QUIT (on stdin) 19:29:26.067590 quits 19:29:26.067886 ============> 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 upload591 Moooooooooooo for 591 upload this === End of file upload591 === Start of file valgrind591 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind591 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/4/valgrind592 ./libtest/lib591 ftp://127.0.0.1:40809/path/592 8 log/4/upload592 > log/4/stdout592 2> log/4/stderr592 592: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind592 ./libtest/lib591 ftp://127.0.0.1:40809/path/592 8 log/4/upload592 > log/4/stdout592 2> log/4/stderr592 === End of file commands.log === Start of file ftp_server.log 19:29:27.000971 ====> Client connect 19:29:27.001686 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:27.003018 < "USER anonymous" 19:29:27.003274 > "331 We are happy you popped in![CR][LF]" 19:29:27.004147 < "PASS ftp@example.com" 19:29:27.004376 > "230 Welcome you silly person[CR][LF]" 19:29:27.005186 < "PWD" 19:29:27.005546 > "257 "/" is current directory[CR][LF]" 19:29:27.006403 < "EPSV" 19:29:27.006591 ====> Passive DATA channel requested by client 19:29:27.006693 DATA sockfilt for passive data channel starting... 19:29:27.013569 DATA sockfilt for passive data channel started (pid 137104) 19:29:27.014223 DATA sockfilt for passive data channel listens on port 37843 19:29:27.014497 > "229 Entering Passive Mode (|||37843|)[LF]" 19:29:27.014654 Client has been notified that DATA conn will be accepted on port 37843 19:29:27.015497 Client connects to port 37843 19:29:27.015723 ====> Client established passive DATA connection on port 37843 19:29:27.016196 < "TYPE I" 19:29:27.016445 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:27.017323 < "SIZE verifiedserver" 19:29:27.017735 > "213 18[CR][LF]" 19:29:27.018638 < "RETR verifiedserver" 19:29:27.018918 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:27.019363 =====> Closing passive DATA connection... 19:29:27.019563 Server disconnects passive DATA connection 19:29:27.019919 Server disconnected passive DATA connection 19:29:27.020103 DATA sockfilt for passive data channel quits (pid 137104) 19:29:27.021136 DATA sockfilt for passive data channel quit (pid 137104) 19:29:27.021337 =====> Closed passive DATA connection 19:29:27.021674 > "226 File transfer complete[CR][LF]" 19:29:27.062813 < "QUIT" 19:29:27.063055 > "221 bye bye baby[CR][LF]" 19:29:27.063907 MAIN sockfilt said DISC 19:29:27.064215 ====> Client disconnected 19:29:27.064866 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:26.464505 ====> Client connect 19:29:26.465631 Received DATA (on stdin) 19:29:26.465773 > 160 bytes data, server => client 19:29:26.465862 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:26.465931 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:26.465989 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:26.466404 < 16 bytes data, client => server 19:29:26.466516 'USER anonymous\r\n' 19:29:26.467194 Received DATA (on stdin) 19:29:26.467292 > 33 bytes data, server => client 19:29:26.467365 '331 We are happy you popped in!\r\n' 19:29:26.467716 < 22 bytes data, client => server 19:29:26.467821 'PASS ftp@example.com\r\n' 19:29:26.468289 Received DATA (on stdin) 19:29:26.468381 > 30 bytes data, server => client 19:29:26.468447 '230 Welcome you silly person\r\n' 19:29:26.468779 < 5 bytes data, client => server 19:29:26.468878 'PWD\r\n' 19:29:26.469405 RecCMD (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/1/valgrind593 ./libtest/lib591 ftp://127.0.0.1:39333/path/593 8 log/1/upload593 > log/1/stdout593 2> log/1/stderr593 eived DATA (on stdin) 19:29:26.469516 > 30 bytes data, server => client 19:29:26.469581 '257 "/" is current directory\r\n' 19:29:26.469961 < 6 bytes data, client => server 19:29:26.470067 'EPSV\r\n' 19:29:26.478404 Received DATA (on stdin) 19:29:26.478530 > 38 bytes data, server => client 19:29:26.478601 '229 Entering Passive Mode (|||37843|)\n' 19:29:26.479356 < 8 bytes data, client => server 19:29:26.479458 'TYPE I\r\n' 19:29:26.480356 Received DATA (on stdin) 19:29:26.480465 > 33 bytes data, server => client 19:29:26.480541 '200 I modify TYPE as you wanted\r\n' 19:29:26.480882 < 21 bytes data, client => server 19:29:26.480993 'SIZE verifiedserver\r\n' 19:29:26.481645 Received DATA (on stdin) 19:29:26.481767 > 8 bytes data, server => client 19:29:26.481833 '213 18\r\n' 19:29:26.482180 < 21 bytes data, client => server 19:29:26.482289 'RETR verifiedserver\r\n' 19:29:26.482830 Received DATA (on stdin) 19:29:26.482930 > 29 bytes data, server => client 19:29:26.483009 '150 Binary junk (18 bytes).\r\n' 19:29:26.485588 Received DATA (on stdin) 19:29:26.485707 > 28 bytes data, server => client 19:29:26.485780 '226 File transfer complete\r\n' 19:29:26.526132 < 6 bytes data, client => server 19:29:26.526322 'QUIT\r\n' 19:29:26.526973 Received DATA (on stdin) 19:29:26.527212 > 18 bytes data, server => client 19:29:26.527349 '221 bye bye baby\r\n' 19:29:26.527655 ====> Client disconnect 19:29:26.528179 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:27.476562 Running IPv4 version 19:29:27.476896 Listening on port 37843 19:29:27.477126 Wrote pid 137104 to log/4/server/ftp_sockdata.pid 19:29:27.477225 Received PING (on stdin) 19:29:27.477789 Received PORT (on stdin) 19:29:27.479214 ====> Client connect 19:29:27.483045 Received DATA (on stdin) 19:29:27.483150 > 18 bytes data, server => client 19:29:27.483237 'WE ROOLZ: 109451\r\n' 19:29:27.483656 Received DISC (on stdin) 19:29:27.483781 ====> Client forcibly disconnected 19:29:27.484193 Received QUIT (on stdin) 19:29:27.484286 quits 19:29:27.484528 ============> 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 upload592 Moooooooooooo for 592 upload this === End of file upload592 === Start of file valgrind592 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind592 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/1/valgrind593 ./libtest/lib591 ftp://127.0.0.1:39333/path/593 8 log/1/upload593 > log/1/stdout593 2> log/1/stderr593 593: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind593 ./libtest/lib591 ftp://127.0.0.1:39333/path/593 8 log/1/upload593 > log/1/stdout593 2> log/1/stderr593 === End of file commands.log === Start of file ftp_server.log 19:29:27.178455 ====> Client connect 19:29:27.179122 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:27.180334 < "USER anonymous" 19:29:27.180583 > "331 We are happy you popped in![CR][LF]" 19:29:27.181524 < "PASS ftp@example.com" 19:29:27.181815 > "230 Welcome you silly person[CR][LF]" 19:29:27.182743 < "PWD" 19:29:27.183021 > "257 "/" is current directory[CR][LF]" 19:29:27.183968 < "EPSV" 19:29:27.184142 ====> Passive DATA channel requested by client 19:29:27.184235 DATA sockfilt for passive data channel starting... 19:29:27.191202 DATA sockfilt for passive data channel started (pid 137125) 19:29:27.191863 DATA sockfilt for passive data channel listens on port 39075 19:29:27.192158 > "229 Entering Passive Mode (|||39075|)[LF]" 19:29:27.192346 Client has been notified that DATA conn will be accepted on port 39075 19:29:27.193912 Client connects to port 39075 19:29:27.194182 ====> Client established passive DATA connection on port 39075 19:29:27.194697 < "TYPE I" 19:29:27.194946 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:27.195962 < "SIZE verifiedserver" 19:29:27.196258 > "213 18[CR][LF]" 19:29:27.197186 < "RETR verifiedserver" 19:29:27.197557 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:27.198120 =====> Closing passive DATA connection... 19:29:27.198327 Server disconnects passive DATA connection 19:29:27.198792 Server disconnected passive DATA connection 19:29:27.199005 DATA sockfilt for passive data channel quits (pid 137125) 19:29:27.200174 DATA sockfilt for passive data channel quit (pid 137125) 19:29:27.200386 =====> Closed passive DATA connection 19:29:27.200633 > "226 File transfer complete[CR][LF]" 19:29:27.242544 < "QUIT" 19:29:27.242887 > "221 bye bye baby[CR][LF]" 19:29:27.243747 MAIN sockfilt said DISC 19:29:27.244039 ====> Client disconnected 19:29:27.244396 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:27.641974 ====> Client connect 19:29:27.643014 Received DATA (on stdin) 19:29:27.643127 > 160 bytes data, server => client 19:29:27.643209 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:27.643279 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:27.643337 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:27.643721 < 16 bytes data, client => server 19:29:27.643833 'USER anonymous\r\n' 19:29:27.644493 Received DATA (on stdin) 19:29:27.644582 > 33 bytes data, server => client 19:29:27.644649 '331 We are happy you popped in!\r\n' 19:29:27.644999 < 22 bytes data, client => server 19:29:27.645113 'PASS ftp@example.com\r\n' 19:29:27.645716 Received DATA (on stdin) 19:29:27.645830 > 30 bytes data, server => client 19:29:27.645897 '230 Welcome you silly person\r\n' 19:29:27.646272 < 5 bytes data, client => server 19:29:27.646384 'PWD\r\n' 19:29:27.646927 Received DATA (on stdin) 19:29:27.647029 > 30 bytes data, server => client 19:29:27.647094 '257 "/" is current directory\r\n' 19:29:27.647508 < 6 bytes data, client => server 19:29:27.647633 'EPSV\r\n' 19:29:27.656124 Received DATA (on stdin) 19:29:27.656236 > 38 bytes data, server => client 19:29:27.656317 '229 Entering Passive Mode (|||39075|)\n' 19:29:27.657294 < 8 bytes data, client => seCMD (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/4/valgrind595 ./libtest/lib585 ftp://127.0.0.1:40809/595 log/4/ip595 > log/4/stdout595 2> log/4/stderr595 rver 19:29:27.657589 'TYPE I\r\n' 19:29:27.658842 Received DATA (on stdin) 19:29:27.658948 > 33 bytes data, server => client 19:29:27.659024 '200 I modify TYPE as you wanted\r\n' 19:29:27.659457 < 21 bytes data, client => server 19:29:27.659586 'SIZE verifiedserver\r\n' 19:29:27.660164 Received DATA (on stdin) 19:29:27.660249 > 8 bytes data, server => client 19:29:27.660316 '213 18\r\n' 19:29:27.660706 < 21 bytes data, client => server 19:29:27.660831 'RETR verifiedserver\r\n' 19:29:27.661444 Received DATA (on stdin) 19:29:27.661561 > 29 bytes data, server => client 19:29:27.661641 '150 Binary junk (18 bytes).\r\n' 19:29:27.664544 Received DATA (on stdin) 19:29:27.664663 > 28 bytes data, server => client 19:29:27.664747 '226 File transfer complete\r\n' 19:29:27.705983 < 6 bytes data, client => server 19:29:27.706163 'QUIT\r\n' 19:29:27.706792 Received DATA (on stdin) 19:29:27.706923 > 18 bytes data, server => client 19:29:27.707012 '221 bye bye baby\r\n' 19:29:27.707410 ====> Client disconnect 19:29:27.707964 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:27.654217 Running IPv4 version 19:29:27.654565 Listening on port 39075 19:29:27.654802 Wrote pid 137125 to log/1/server/ftp_sockdata.pid 19:29:27.654907 Received PING (on stdin) 19:29:27.655424 Received PORT (on stdin) 19:29:27.657100 ====> Client connect 19:29:27.661911 Received DATA (on stdin) 19:29:27.662042 > 18 bytes data, server => client 19:29:27.662131 'WE ROOLZ: 109414\r\n' 19:29:27.662489 Received DISC (on stdin) 19:29:27.662644 ====> Client forcibly disconnected 19:29:27.663106 Received QUIT (on stdin) 19:29:27.663207 quits 19:29:27.663487 ============> 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 upload593 Moooooooooooo for 593 upload this === End of file upload593 === Start of file valgrind593 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind593 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/4/valgrind595 ./libtest/lib585 ftp://127.0.0.1:40809/595 log/4/ip595 > log/4/stdout595 2> log/4/stderr595 595: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind595 ./libtest/lib585 ftp://127.0.0.1:40809/595 log/4/ip595 > log/4/stdout595 2> log/4/stderr595 === End of file commands.log === Start of file ftp_server.log 19:29:27.599497 ====> Client connect 19:29:27.600203 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:27.601592 < "USER anonymous" 19:29:27.601896 > "331 We are happy you popped in![CR][LF]" 19:29:27.602823 < "PASS ftp@example.com" 19:29:27.603082 > "230 Welcome you silly person[CR][LF]" 19:29:27.603965 < "PWD" 19:29:27.604248 > "257 "/" is current directory[CR][LF]" 19:29:27.605173 < "EPSV" 19:29:27.605370 ====> Passive DATA channel requested by client 19:29:27.605569 DATA sockfilt for passive data channel starting... 19:29:27.612627 DATA sockfilt for passive data channel started (pid 137236) 19:29:27.613236 DATA sockfilt for passive data channel listens on port 34855 19:29:27.613560 > "229 Entering Passive Mode (|||34855|)[LF]" 19:29:27.613746 Client has been notified that DATA conn will be accepted on port 34855 19:29:27.614607 Client connects to port 34855 19:29:27.614835 ====> Client established passive DATA connection on port 34855 19:29:27.615328 < "TYPE I" 19:29:27.615588 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:27.616618 < "SIZE verifiedserver" 19:29:27.616909 > "213 18[CR][LF]" 19:29:27.617944 < "RETR verifiedserver" 19:29:27.618223 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:27.618643 =====> Closing passive DATA connection... 19:29:27.618843 Server disconnects passive DATA connection 19:29:27.619171 Fancy that; client wants to DISC, too 19:29:27.619351 Server disconnected passive DATA connection 19:29:27.619478 DATA sockfilt for passive data channel quits (pid 137236) 19:29:27.620487 DATA sockfilt for passive data channel quit (pid 137236) 19:29:27.620671 =====> Closed passive DATA connection 19:29:27.620860 > "226 File transfer complete[CR][LF]" 19:29:27.621977 < "QUIT" 19:29:27.622222 > "221 bye bye baby[CR][LF]" 19:29:27.622824 MAIN sockfilt said DISC 19:29:27.623056 ====> Client disconnected 19:29:27.623373 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:27.063023 ====> Client connect 19:29:27.064086 Received DATA (on stdin) 19:29:27.064209 > 160 bytes data, server => client 19:29:27.064290 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:27.064359 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:27.064418 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:27.064811 < 16 bytes data, client => server 19:29:27.064928 'USER anonymous\r\n' 19:29:27.065791 Received DATA (on stdin) 19:29:27.065900 > 33 bytes data, server => client 19:29:27.065970 '331 We are happy you popped in!\r\n' 19:29:27.066342 < 22 bytes data, client => server 19:29:27.066459 'PASS ftp@example.com\r\n' 19:29:27.066972 Received DATA (on stdin) 19:29:27.067076 > 30 bytes data, server => client 19:29:27.067147 '230 Welcome you silly person\r\n' 19:29:27.067504 < 5 bytes data, client => server 19:29:27.067610 'PWD\r\n' 19:29:27.068141 Received DATA (on stdin) 19:29:27.068256 > 30 bytes data, server => client 19:29:27.068328 '257 "/" is current directory\r\n' 19:29:27.068704 < 6 bytes data, client => server 19:29:27.068819 'EPSV\r\n' 19:29:27.077438 Received DATA (on stdin) 19:29:27.077566 > 38 bytes data, server => client 19:29:27.077643 '229 Entering Passive Mode (|||34855|)\n' 19:29:27.078450 < 8 bytes data, client => server 19:29:27.078555 'TYPE I\r\n' 19:29:27.079490 Received DATA (on stdin) 19:29:27.079597 > 33 bytes data, server => client 19:29:27.079668 '200 I modify TYPE as you wanted\r\n' 19:29:27.080143 < 21 bytes data, client => server 19:29:27.080253 'SIZE verifiedserver\r\n' 19:29:27.080806 Received DATA (on stdin) 19:29:27.080909 > 8 bytes data, server => client 19:29:27.080974 '213 CMD (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/1/valgrind596 ./libtest/lib585 ftp://127.0.0.1:39333/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 18\r\n' 19:29:27.081408 < 21 bytes data, client => server 19:29:27.081524 'RETR verifiedserver\r\n' 19:29:27.082117 Received DATA (on stdin) 19:29:27.082210 > 29 bytes data, server => client 19:29:27.082277 '150 Binary junk (18 bytes).\r\n' 19:29:27.084766 Received DATA (on stdin) 19:29:27.084871 > 28 bytes data, server => client 19:29:27.084942 '226 File transfer complete\r\n' 19:29:27.085507 < 6 bytes data, client => server 19:29:27.085639 'QUIT\r\n' 19:29:27.086118 Received DATA (on stdin) 19:29:27.086204 > 18 bytes data, server => client 19:29:27.086271 '221 bye bye baby\r\n' 19:29:27.086556 ====> Client disconnect 19:29:27.086972 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:27.075656 Running IPv4 version 19:29:27.075994 Listening on port 34855 19:29:27.076235 Wrote pid 137236 to log/4/server/ftp_sockdata.pid 19:29:27.076331 Received PING (on stdin) 19:29:27.076816 Received PORT (on stdin) 19:29:27.078292 ====> Client connect 19:29:27.082322 Received DATA (on stdin) 19:29:27.082433 > 18 bytes data, server => client 19:29:27.082511 'WE ROOLZ: 109451\r\n' 19:29:27.082897 ====> Client disconnect 19:29:27.083042 Received DISC (on stdin) 19:29:27.083114 Crikey! Client also wants to disconnect 19:29:27.083237 Received ACKD (on stdin) 19:29:27.083548 Received QUIT (on stdin) 19:29:27.083634 quits 19:29:27.083873 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 595 === End of file server.cmd === Start of file valgrind595 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib585 ftp://127.0.0.1:39333/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 596: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib585 ftp://127.0.0.1:39333/596 log/1/ip596 activeftp > log/1/stdout596 2> log/1/stderr596 === End of file commands.log === Start of file ftp_server.log 19:29:27.779233 ====> Client connect 19:29:27.780081 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:27.781613 < "USER anonymous" 19:29:27.781941 > "331 We are happy you popped in![CR][LF]" 19:29:27.782886 < "PASS ftp@example.com" 19:29:27.783137 > "230 Welcome you silly person[CR][LF]" 19:29:27.783980 < "PWD" 19:29:27.784249 > "257 "/" is current directory[CR][LF]" 19:29:27.785520 < "EPSV" 19:29:27.785778 ====> Passive DATA channel requested by client 19:29:27.785925 DATA sockfilt for passive data channel starting... 19:29:27.794185 DATA sockfilt for passive data channel started (pid 137268) 19:29:27.795013 DATA sockfilt for passive data channel listens on port 39031 19:29:27.795364 > "229 Entering Passive Mode (|||39031|)[LF]" 19:29:27.795583 Client has been notified that DATA conn will be accepted on port 39031 19:29:27.796729 Client connects to port 39031 19:29:27.796998 ====> Client established passive DATA connection on port 39031 19:29:27.797679 < "TYPE I" 19:29:27.798066 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:27.799283 < "SIZE verifiedserver" 19:29:27.799605 > "213 18[CR][LF]" 19:29:27.800610 < "RETR verifiedserver" 19:29:27.800960 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:27.801621 =====> Closing passive DATA connection... 19:29:27.801877 Server disconnects passive DATA connection 19:29:27.802310 Server disconnected passive DATA connection 19:29:27.802546 DATA sockfilt for passive data channel quits (pid 137268) 19:29:27.803668 DATA sockfilt for passive data channel quit (pid 137268) 19:29:27.803873 =====> Closed passive DATA connection 19:29:27.804076 > "226 File transfer complete[CR][LF]" 19:29:27.842493 < "QUIT" 19:29:27.842786 > "221 bye bye baby[CR][LF]" 19:29:27.845831 MAIN sockfilt said DISC 19:29:27.846127 ====> Client disconnected 19:29:27.846512 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:28.242693 ====> Client connect 19:29:28.243957 Received DATA (on stdin) 19:29:28.244100 > 160 bytes data, server => client 19:29:28.244200 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:28.244282 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:28.244353 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:28.244824 < 16 bytes data, client => server 19:29:28.244953 'USER anonymous\r\n' 19:29:28.245827 Received DATA (on stdin) 19:29:28.245948 > 33 bytes data, server => client 19:29:28.246021 '331 We are happy you popped in!\r\n' 19:29:28.246401 < 22 bytes data, client => server 19:29:28.246512 'PASS ftp@example.com\r\n' 19:29:28.247032 Received DATA (on stdin) 19:29:28.247132 > 30 bytes data, server => client 19:29:28.247201 '230 Welcome you silly person\r\n' 19:29:28.247538 < 5 bytes data, client => server 19:29:28.247634 'PWD\r\n' 19:29:28.248135 Received DATA (on stdin) 19:29:28.248246 > 30 bytes data, server => client 19:29:28.248431 '257 "/" is current directory\r\n' 19:29:28.248916 < 6 bytes data, client => server 19:29:28.249046 'EPSV\r\n' 19:29:28.259242 Received DATA (on stdin) 19:29:28.259402 > 38 bytes data, server => client 19:29:28.259502 '229 Entering Passive Mode (|||39031|)\n' 19:29:28.260504 < 8 bytes data, client => server 19:29:28.260615 'TYPE I\r\n' 19:29:28.261986 Received DATA (on stdin) 19:29:28.262170 > 33 bytes data, server => client 19:29:28.262309 '200 I modify TYPE as you wanted\r\n' 19:29:28.262748 < 21 bytes data, client => server 19:29:28.262872 'SIZE verifiedserver\r\n' 19:29:28.263496 Received DATA (on stdin) 19:29:28.263608 > 8 bytes data, server => client 19:29:28.263680 '213 18\r\n' 19:29:28.264097 < 21 bytes data, client => server 19:29:28.264222 'RETR verifiedserver\r\n' 19:29:28.264848 Received DATA (on stdin) 19:29:28.264976 > 29 bytes data, server => client 19:29:28.265060 '150 Binary junk (18 bytes).\r\n' 19:29:28.268030 Received DATA (on stdin) 19:29:28.268151 > 28 bytes data, server => client 19:29:28.268227 '226 File transfer complete\r\n' 19:29:28.305937 < 6 bytes data, client => server 19:29:28.306094 'QUIT\r\n' 19:29:28.306677 CMD (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/4/valgrind597 ./libtest/lib597 ftp://127.0.0.1:40809 > log/4/stdout597 2> log/4/stderr597 Received DATA (on stdin) 19:29:28.306790 > 18 bytes data, server => client 19:29:28.306868 '221 bye bye baby\r\n' 19:29:28.309436 ====> Client disconnect 19:29:28.310086 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:27.256841 Running IPv4 version 19:29:27.257263 Listening on port 39031 19:29:27.257628 Wrote pid 137268 to log/1/server/ftp_sockdata.pid 19:29:27.257759 Received PING (on stdin) 19:29:27.258479 Received PORT (on stdin) 19:29:27.260322 ====> Client connect 19:29:27.265124 Received DATA (on stdin) 19:29:27.265266 > 18 bytes data, server => client 19:29:27.265496 'WE ROOLZ: 109414\r\n' 19:29:27.266004 Received DISC (on stdin) 19:29:27.266147 ====> Client forcibly disconnected 19:29:27.266664 Received QUIT (on stdin) 19:29:27.266765 quits 19:29:27.267012 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 596 === End of file server.cmd === Start of file valgrind596 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib597 ftp://127.0.0.1:40809 > log/4/stdout597 2> log/4/stderr597 597: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib597 ftp://127.0.0.1:40809 > log/4/stdout597 2> log/4/stderr597 === End of file commands.log === Start of file ftp_server.log 19:29:28.159869 ====> Client connect 19:29:28.160537 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:28.161790 < "USER anonymous" 19:29:28.162055 > "331 We are happy you popped in![CR][LF]" 19:29:28.162932 < "PASS ftp@example.com" 19:29:28.163155 > "230 Welcome you silly person[CR][LF]" 19:29:28.163942 < "PWD" 19:29:28.164175 > "257 "/" is current directory[CR][LF]" 19:29:28.164987 < "EPSV" 19:29:28.165155 ====> Passive DATA channel requested by client 19:29:28.165251 DATA sockfilt for passive data channel starting... 19:29:28.172251 DATA sockfilt for passive data channel started (pid 137361) 19:29:28.173013 DATA sockfilt for passive data channel listens on port 41375 19:29:28.173314 > "229 Entering Passive Mode (|||41375|)[LF]" 19:29:28.173572 Client has been notified that DATA conn will be accepted on port 41375 19:29:28.174756 Client connects to port 41375 19:29:28.175000 ====> Client established passive DATA connection on port 41375 19:29:28.175516 < "TYPE I" 19:29:28.175784 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:28.176785 < "SIZE verifiedserver" 19:29:28.177093 > "213 18[CR][LF]" 19:29:28.178136 < "RETR verifiedserver" 19:29:28.178448 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:28.179063 =====> Closing passive DATA connection... 19:29:28.179253 Server disconnects passive DATA connection 19:29:28.179690 Server disconnected passive DATA connection 19:29:28.179904 DATA sockfilt for passive data channel quits (pid 137361) 19:29:28.181178 DATA sockfilt for passive data channel quit (pid 137361) 19:29:28.181402 =====> Closed passive DATA connection 19:29:28.181810 > "226 File transfer complete[CR][LF]" 19:29:28.222375 < "QUIT" 19:29:28.222660 > "221 bye bye baby[CR][LF]" 19:29:28.223405 MAIN sockfilt said DISC 19:29:28.223657 ====> Client disconnected 19:29:28.223987 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:27.623368 ====> Client connect 19:29:27.624406 Received DATA (on stdin) 19:29:27.624512 > 160 bytes data, server => client 19:29:27.624592 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:27.624666 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:27.624728 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:27.625099 < 16 bytes data, client => server 19:29:27.625213 'USER anonymous\r\n' 19:29:27.625939 Received DATA (on stdin) 19:29:27.626041 > 33 bytes data, server => client 19:29:27.626111 '331 We are happy you popped in!\r\n' 19:29:27.626455 < 22 bytes data, client => server 19:29:27.626566 'PASS ftp@example.com\r\n' 19:29:27.627038 Received DATA (on stdin) 19:29:27.627112 > 30 bytes data, server => client 19:29:27.627173 '230 Welcome you silly person\r\n' 19:29:27.627496 < 5 bytes data, client => server 19:29:27.627604 'PWD\r\n' 19:29:27.628054 Received DATA (on stdin) 19:29:27.628130 > 30 bytes data, server => client 19:29:27.628192 '257 "/" is current directory\r\n' 19:29:27.628532 < 6 bytes data, client => server 19:29:27.628638 'EPSV\r\n' 19:29:27.637189 Received DATA (on stdin) 19:29:27.637395 > 38 bytes data, server => client 19:29:27.637497 '229 Entering Passive Mode (|||41375|)\n' 19:29:27.638312 < 8 bytes data, client => server 19:29:27.638421 'TYPE I\r\n' 19:29:27.639664 Received DATA (on stdin) 19:29:27.639784 > 33 bytes data, server => client 19:29:27.639870 '200 I modify TYPE as you wanted\r\n' 19:29:27.640273 < 21 bytes data, client => server 19:29:27.640396 'SIZE verifiedserver\r\n' 19:29:27.640974 Received DATA (on stdin) 19:29:27.641076 > 8 bytes data, server => client 19:29:27.641152 '213 18\r\n' 19:29:27.641610 < 21 bytes data, client => server 19:29:27.641747 'RETR verifiedserver\r\n' 19:29:27.642323 Received DATA (on stdin) 19:29:27.642427 > 29 bytes data, server => client 19:29:27.642508 '150 Binary junk (18 bytes).\r\n' 19:29:27.645698 Received DATA (on stdin) 19:29:27.645832 > 28 bytes data, server => client 19:29:27.645926 '226 File transfer complete\r\n' 19:29:27.685841 < 6 bytes data, client => server 19:29:27.685981 'QUIT\r\n' 19:29:27.686543 Received DATA (on stdin) 19:29:27.686648 > 18 bytes data, server => client 19:29:27.686714 '221 bye bye baby\r\n' 19:29:27.687053 ====> Client disconnect 19:29:27.687556 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:28.635173 Running IPv4 version 19:29:28.635577 Listening on port 41375 19:29:28.635816 Wrote pid 137361 to log/4/server/ftp_sockdata.pid 19:29:28.635924 Received PING (on stdin) 19:29:28.636519 Received PORT (on stdin) 19:29:28.638157 ====> Client connect 19:29:28.642783 Received DATA (on stdin) 19:29:28.642920 > 18 bytes data, server => client 19:29:28.6CMD (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/1/valgrind598 ./libtest/lib598 http://127.0.0.1:41477/598 > log/1/stdout598 2> log/1/stderr598 cannot find sshd CMD (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/4/valgrind599 ./libtest/lib599 http://127.0.0.1:43669/599 log/4/ip599 > log/4/stdout599 2> log/4/stderr599 43009 'WE ROOLZ: 109451\r\n' 19:29:28.643376 Received DISC (on stdin) 19:29:28.643517 ====> Client forcibly disconnected 19:29:28.643984 Received QUIT (on stdin) 19:29:28.644089 quits 19:29:28.644369 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 597 === End of file server.cmd === Start of file valgrind597 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind597 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/1/valgrind598 ./libtest/lib598 http://127.0.0.1:41477/598 > log/1/stdout598 2> log/1/stderr598 598: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind598 ./libtest/lib598 http://127.0.0.1:41477/598 > log/1/stdout598 2> log/1/stderr598 === End of file commands.log === Start of file http_server.log 19:29:28.838107 ====> Client connect 19:29:28.838326 accept_connection 3 returned 4 19:29:28.838442 accept_connection 3 returned 0 19:29:28.838554 Read 93 bytes 19:29:28.838630 Process 93 bytes request 19:29:28.838702 Got request: GET /verifiedserver HTTP/1.1 19:29:28.838760 Are-we-friendly question received 19:29:28.838915 Wrote request (93 bytes) input to log/1/server.input 19:29:28.839054 Identifying ourselves as friends 19:29:28.839561 Response sent (57 bytes) and written to log/1/server.response 19:29:28.839648 special request received, no persistency 19:29:28.839702 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 598 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind598 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind598 cannot find sshd RUN: Process with pid 135499 signalled to die RUN: Process with pid 135499 gracefully died CMD (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/valgrind632 ../src/curl -q --output log/3/curl632.out --include --trace-ascii log/3/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/3/server/curl_client_key --pubkey log/3/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/3/irrelevant-file --insecure > log/3/stdout632 2> log/3/stderr632 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/4/valgrind599 ./libtest/lib599 http://127.0.0.1:43669/599 log/4/ip599 > log/4/stdout599 2> log/4/stderr599 599: data FAILED: --- log/4/check-expected 2025-05-23 19:29:29.138400968 +0000 +++ log/4/check-generated 2025-05-23 19:29:29.138400968 +0000 @@ -1,16 +0,0 @@ -HTTP/1.1 302 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Location: 5990001[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -[CR][LF] -HTTP/1.1 200 OK[CR][LF] -Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] -Server: test-server/fake[CR][LF] -Transfer-Encoding: chunked[CR][LF] -Connection: close[CR][LF] -Content-Type: text/html[CR][LF] -[CR][LF] -this data is slightly larger than the first piece[LF] == Contents of files in the log/4/ dir after test 599 === Start of file check-expected HTTP/1.1 302 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Location: 5990001[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] [CR][LF] HTTP/1.1 200 OK[CR][LF] Date: Tue, 09 Nov 2010 14:49:00 GMT[CR][LF] Server: test-server/fake[CR][LF] Transfer-Encoding: chunked[CR][LF] Connection: close[CR][LF] Content-Type: text/html[CR][LF] [CR][LF] this data is slightly larger than the first piece[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind599 ./libtest/lib599 http://127.0.0.1:43669/599 log/4/ip599 > log/4/stdout599 2> log/4/stderr599 === End of file commands.log === Start of file http_server.log 19:29:29.168190 ====> Client connect 19:29:29.168400 accept_connection 3 returned 4 19:29:29.168514 accept_connection 3 returned 0 19:29:29.168605 Read 93 bytes 19:29:29.168665 Process 93 bytes request 19:29:29.168733 Got request: GET /verifiedserver HTTP/1.1 19:29:29.168790 Are-we-friendly question received 19:29:29.168929 Wrote request (93 bytes) input to log/4/server.input 19:29:29.169055 Identifying ourselves as friends 19:29:29.169626 Response sent (57 bytes) and written to log/4/server.response 19:29:29.169726 special request received, no persistency 19:29:29.169847 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 599 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind599 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind599 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/3/server/ssh_server.pid" --logdir "log/3" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 35577 startnew: child process has died, server might start up RUN: failed to start the SSH server on 35577 test 0582 SKIPPED: failed starting SSH server test 0602 SKIPPED: failed starting SSH server test 0603 SKIPPED: failed starting SSH server 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 43659 startnew: child process has died, server might start up RUN: failed to start the SSH server on 43659 * starts no server 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/3/valgrind632 ../src/curl -q --output log/3/curl632.out --include --trace-ascii log/3/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/3/server/curl_client_key --pubkey log/3/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/3/irrelevant-file --insecure > log/3/stdout632 2> log/3/stderr632 curl returned 1, when expecting 2 632: exit FAILED == Contents of files in the log/3/ 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/3/valgrind632 ../src/curl -q --output log/3/curl632.out --include --trace-ascii log/3/trace632 --trace-config all --trace-time --hostpubmd5 00 --key log/3/server/curl_client_key --pubkey log/3/server/curl_client_key.pub -u builduser: sftp://127.0.0.1:47/build/curl/src/build-curl/tests/log/3/irrelevant-file --insecure > log/3/stdout632 2> log/3/stderr632 === End of file commands.log === Start of file server.cmd Testnum 632 === End of file server.cmd === Start of file valgrind632 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, CMD (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/2/valgrind643 ./libtest/lib643 http://127.0.0.1:39599/643 > log/2/stdout643 2> log/2/stderr643 CMD (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/valgrind645 ./libtest/lib645 http://127.0.0.1:37525/645 > log/3/stdout645 2> log/3/stderr645 CMD (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/2/valgrind646 ../src/curl -q --output log/2/curl646.out --include --trace-ascii log/2/trace646 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/headers646" -F "=)" -F "=@log/2/test646.txt;headers=" log/2/stdout646 2> log/2/stderr646 you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind632 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/2/valgrind643 ./libtest/lib643 http://127.0.0.1:39599/643 > log/2/stdout643 2> log/2/stderr643 643: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind643 ./libtest/lib643 http://127.0.0.1:39599/643 > log/2/stdout643 2> log/2/stderr643 === End of file commands.log === Start of file http_server.log 19:29:40.856488 ====> Client connect 19:29:40.856700 accept_connection 3 returned 4 19:29:40.856815 accept_connection 3 returned 0 19:29:40.856914 Read 93 bytes 19:29:40.857043 Process 93 bytes request 19:29:40.857134 Got request: GET /verifiedserver HTTP/1.1 19:29:40.857197 Are-we-friendly question received 19:29:40.857367 Wrote request (93 bytes) input to log/2/server.input 19:29:40.857510 Identifying ourselves as friends 19:29:40.857992 Response sent (57 bytes) and written to log/2/server.response 19:29:40.858080 special request received, no persistency 19:29:40.858133 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 643 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind643 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind645 ./libtest/lib645 http://127.0.0.1:37525/645 > log/3/stdout645 2> log/3/stderr645 645: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind645 ./libtest/lib645 http://127.0.0.1:37525/645 > log/3/stdout645 2> log/3/stderr645 === End of file commands.log === Start of file http_server.log 19:29:40.147651 ====> Client connect 19:29:40.147848 accept_connection 3 returned 4 19:29:40.147944 accept_connection 3 returned 0 19:29:40.148340 Read 93 bytes 19:29:40.148436 Process 93 bytes request 19:29:40.148507 Got request: GET /verifiedserver HTTP/1.1 19:29:40.148564 Are-we-friendly question received 19:29:40.148708 Wrote request (93 bytes) input to log/3/server.input 19:29:40.148834 Identifying ourselves as friends 19:29:40.149294 Response sent (57 bytes) and written to log/3/server.response 19:29:40.149385 special request received, no persistency 19:29:40.149439 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 645 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind645 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind645 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/2/server/smtp_server.pid" --logfile "log/2/smtp_server.log" --logdir "log/2" --portfile "log/2/server/smtp_server.port" --srcdir "/build/curl/src/curl/tests" --proto smtp --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 34199 (log/2/server/smtp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "smtp://127.0.0.1:34199/verifiedserver" 2>log/2/smtp_verify.log RUN: Verifying our test smtp server took 1 seconds RUN: SMTP server is PID 137660 port 34199 * pid smtp => 137660 137660 test 0646...[SMTP multipart using mime API] ../libtool --mode=executeCMD (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/valgrind647 ../src/curl -q --output log/3/curl647.out --include --trace-ascii log/3/trace647 --trace-config all --trace-time imap://127.0.0.1:41627/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/3/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/3/stdout647 2> log/3/stderr647 /usr/bin/valgrind --tool=memcheck --quiet --leak-check=yes --suppressions=/build/curl/src/curl/tests/valgrind.supp --num-callers=16 --log-file=log/2/valgrind646 ../src/curl -q --output log/2/curl646.out --include --trace-ascii log/2/trace646 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/headers646" -F "=)" -F "=@log/2/test646.txt;headers=" log/2/stdout646 2> log/2/stderr646 646: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind646 ../src/curl -q --output log/2/curl646.out --include --trace-ascii log/2/trace646 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/headers646" -F "=)" -F "=@log/2/test646.txt;headers=" log/2/stdout646 2> log/2/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 smtp_server.log 19:29:41.172982 SMTP server listens on port IPv4/34199 19:29:41.173936 logged pid 137660 in log/2/server/smtp_server.pid 19:29:41.174234 Awaiting input 19:29:41.988598 ====> Client connect 19:29:41.997402 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:41.998952 < "EHLO verifiedserver" 19:29:41.999272 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]" 19:29:42.000215 < "HELP" 19:29:42.000484 > "214 WE ROOLZ: 137660[CR][LF]" 19:29:42.000617 return proof we are we 19:29:42.001736 < "QUIT" 19:29:42.002037 > "221 curl ESMTP server signing off[CR][LF]" 19:29:42.002792 MAIN sockfilt said DISC 19:29:42.003045 ====> Client disconnected 19:29:42.003385 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 19:29:41.635173 Running IPv4 version 19:29:41.635537 Listening on port 34199 19:29:41.635753 Wrote pid 137706 to log/2/server/smtp_sockfilt.pid 19:29:41.635948 Wrote port 34199 to log/2/server/smtp_server.port 19:29:41.636066 Received PING (on stdin) 19:29:42.451839 ====> Client connect 19:29:42.460895 Received DATA (on stdin) 19:29:42.461155 > 160 bytes data, server => client 19:29:42.461253 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:42.461339 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:42.461413 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:42.461862 < 21 bytes data, client => server 19:29:42.461987 'EHLO verifiedserver\r\n' 19:29:42.462803 Received DATA (on stdin) 19:29:42.462907 > 53 bytes data, server => client 19:29:42.462989 '250 ESMTP pingpong test server Hello verifiedserver\r\n' 19:29:42.463389 < 6 bytes data, client => server 19:29:42.463506 'HELP\r\n' 19:29:42.464015 Received DATA (on stdin) 19:29:42.464103 > 22 bytes data, server => client 19:29:42.464176 '214 WE ROOLZ: 137660\r\n' 19:29:42.464761 < 6 bytes data, client => server 19:29:42.464881 'QUIT\r\n' 19:29:42.465559 Received DATA (on stdin) 19:29:42.465667 > 35 bytes data, server => client 19:29:42.465743 '221 curl ESMTP server signing off\r\n' 19:29:42.466077 ====> Client disconnect 19:29:42.466602 Received ACKD (on stdin) === End of file smtp_sockfilt.log === 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 valgrind646 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind646 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/3/server/imap_server.pid" --logfile "log/3/imap_server.log" --logdir "log/3" --portfile "log/3/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 41627 (log/3/server/imap_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "imap://127.0.0.1:41627/verifiedserver" 2>log/3/imap_verify.log RUN: Verifying our test imap server took 0 seconds RUN: IMAP server is PID 137707 port 41627 * pid imap => 137707 137707 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/3/valgrind647 ../src/curl -q --output log/3/curl647.out --include --trace-ascii log/3/trace647 --trace-config all --trace-time imap://127.0.0.1:41627/647 -F "=(;type=multipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/3/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/3/stdout647 2> log/3/stderr647 647: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind647 ../src/curl -q --output log/3/curl647.out --include --trace-ascii log/3/trace647 --trace-config all --trace-time imap://127.0.0.1:41627/647 -F "=(;type=multCMD (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/2/valgrind648 ../src/curl -q --output log/2/curl648.out --include --trace-ascii log/2/trace648 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/2/stdout648 2> log/2/stderr648 ipart/alternative" -F "= This is the html version;type=text/html" -F "=This is the plain text version" -F "=)" -F "=@log/3/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/3/stdout647 2> log/3/stderr647 === End of file commands.log === Start of file imap_server.log 19:29:41.489674 IMAP server listens on port IPv4/41627 19:29:41.490201 logged pid 137707 in log/3/server/imap_server.pid 19:29:41.490342 Awaiting input 19:29:42.307933 ====> Client connect 19:29:42.308621 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:29:42.310060 < "A001 CAPABILITY" 19:29:42.310375 > "A001 BAD Command[CR][LF]" 19:29:42.311367 < "A002 LIST "verifiedserver" *" 19:29:42.311602 LIST_imap got "verifiedserver" * 19:29:42.311844 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:29:42.312005 > "A002 OK LIST Completed[CR][LF]" 19:29:42.312123 return proof we are we 19:29:42.314216 < "A003 LOGOUT" 19:29:42.314507 > "* BYE curl IMAP server signing off[CR][LF]" 19:29:42.314674 > "A003 OK LOGOUT completed[CR][LF]" 19:29:42.315480 MAIN sockfilt said DISC 19:29:42.315755 ====> Client disconnected 19:29:42.316039 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:29:41.951920 Running IPv4 version 19:29:41.952263 Listening on port 41627 19:29:41.952480 Wrote pid 137708 to log/3/server/imap_sockfilt.pid 19:29:41.952666 Wrote port 41627 to log/3/server/imap_server.port 19:29:41.952758 Received PING (on stdin) 19:29:42.771218 ====> Client connect 19:29:42.772125 Received DATA (on stdin) 19:29:42.772248 > 178 bytes data, server => client 19:29:42.772324 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:29:42.772392 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:29:42.772454 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:29:42.772513 'rve\r\n' 19:29:42.772925 < 17 bytes data, client => server 19:29:42.773126 'A001 CAPABILITY\r\n' 19:29:42.773902 Received DATA (on stdin) 19:29:42.774005 > 18 bytes data, server => client 19:29:42.774071 'A001 BAD Command\r\n' 19:29:42.774469 < 30 bytes data, client => server 19:29:42.774592 'A002 LIST "verifiedserver" *\r\n' 19:29:42.775380 Received DATA (on stdin) 19:29:42.775485 > 34 bytes data, server => client 19:29:42.775552 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:29:42.775727 Received DATA (on stdin) 19:29:42.775800 > 24 bytes data, server => client 19:29:42.775868 'A002 OK LIST Completed\r\n' 19:29:42.777333 < 13 bytes data, client => server 19:29:42.777466 'A003 LOGOUT\r\n' 19:29:42.778032 Received DATA (on stdin) 19:29:42.778140 > 36 bytes data, server => client 19:29:42.778206 '* BYE curl IMAP server signing off\r\n' 19:29:42.778403 Received DATA (on stdin) 19:29:42.778496 > 26 bytes data, server => client 19:29:42.778561 'A003 OK LOGOUT completed\r\n' 19:29:42.778798 ====> Client disconnect 19:29:42.779307 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 test647.txt This is an attached file. It may contain any type of data. === End of file test647.txt === Start of file valgrind647 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind647 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/2/valgrind648 ../src/curl -q --output log/2/curl648.out --include --trace-ascii log/2/trace648 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/2/stdout648 2> log/2/stderr648 648: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind648 ../src/curl -q --output log/2/curl648.out --include --trace-ascii log/2/trace648 --trace-config all --trace-time smtp://127.0.0.1:34199/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/2/test648.txt;encoder=base64" -H "From: different" -H "To: another" log/2/stdout648 2> log/2/stderr648 === End of file commands.log === Start of file server.cmd Testnum 648 === End of file server.cmd === Start of file smtp_server.log 19:29:42.669668 ====> Client connect 19:29:42.670556 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:42.672087 < "EHLO verifiedserver" 19:29:42.672433 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]" 19:29:42.673627 < "HELP" 19:29:42.673981 > "214 WE ROOLZ: 137660[CR][LF]" 19:29:42.674163 return proof we are we 19:29:42.675615 < "QUIT" 19:29:42.675909 > "221 curl ESMTP server signing off[CR][LF]" 19:29:42.676693 MAIN sockfilt said DISC 19:29:42.676925 ====> Client disconnected 19:29:42.677221 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 19:29:43.132602 ====> Client connect 19:29:43.134054 Received DATA (on stdin) 19:29:43.134222 > 160 bytes data, server => client 19:29:43.134321 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:43.134404 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:43.134482 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:43.134979 < 21 bytes data, client => server 19:29:43.135116 'EHLO verifiedserver\r\n' 19:29:43.135955 Received DATA (on stdin) 19:29:43.136080 > 53 bytes data, server => client 19:29:43.136167 '250 ESMTP pingpong test server Hello verifiedserverCMD (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/2/valgrind650 ./libtest/lib650 http://127.0.0.1:39599/650 log/2/test650.filedata log/2/stdout650 2> log/2/stderr650 CMD (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/2/valgrind651 ./libtest/lib651 http://127.0.0.1:39599/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 \r\n' 19:29:43.136600 < 6 bytes data, client => server 19:29:43.136724 'HELP\r\n' 19:29:43.137500 Received DATA (on stdin) 19:29:43.137639 > 22 bytes data, server => client 19:29:43.137757 '214 WE ROOLZ: 137660\r\n' 19:29:43.138688 < 6 bytes data, client => server 19:29:43.138823 'QUIT\r\n' 19:29:43.139425 Received DATA (on stdin) 19:29:43.139530 > 35 bytes data, server => client 19:29:43.139613 '221 curl ESMTP server signing off\r\n' 19:29:43.139999 ====> Client disconnect 19:29:43.140458 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file stdin-for-648 From: different To: another 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 valgrind648 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind650 ./libtest/lib650 http://127.0.0.1:39599/650 log/2/test650.filedata log/2/stdout650 2> log/2/stderr650 650: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind650 ./libtest/lib650 http://127.0.0.1:39599/650 log/2/test650.filedata log/2/stdout650 2> log/2/stderr650 === End of file commands.log === Start of file http_server.log 19:29:43.714235 ====> Client connect 19:29:43.714460 accept_connection 3 returned 4 19:29:43.714577 accept_connection 3 returned 0 19:29:43.714679 Read 93 bytes 19:29:43.714748 Process 93 bytes request 19:29:43.714825 Got request: GET /verifiedserver HTTP/1.1 19:29:43.714892 Are-we-friendly question received 19:29:43.715054 Wrote request (93 bytes) input to log/2/server.input 19:29:43.715184 Identifying ourselves as friends 19:29:43.715675 Response sent (57 bytes) and written to log/2/server.response 19:29:43.715761 special request received, no persistency 19:29:43.715823 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 650 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file stdin-for-650 Some data from stdin === End of file stdin-for-650 === Start of file test650.filedata This is data from a file. === End of file test650.filedata === Start of file valgrind650 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib651 http://127.0.0.1:39599/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 651: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib651 http://127.0.0.1:39599/651 log/2/test651.filedata log/2/stdout651 2> log/2/stderr651 === End of file commands.log === Start of file http_server.log 19:29:44.400779 ====> Client connect 19:29:44.401063 accept_connection 3 returned 4 19:29:44.401169 accept_connection 3 returned 0 19:29:44.401612 Read 93 bytes 19:29:44.401717 Process 93 bytes request 19:29:44.401785 Got request: GET /verifiedserver HTTP/1.1 19:29:44.401844 Are-we-friendly question received 19:29:44.402003 Wrote request (93 bytes) input to log/2/server.input 19:29:44.402152 Identifying ourselves as friends 19:29:44.402603 Response sent (57 bytes) and written to log/2/server.response 19:29:44.402692 special request received, no persistency 19:29:44.402746 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of CMD (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/valgrind649 ../src/curl -q --output log/3/curl649.out --include --trace-ascii log/3/trace649 --trace-config all --trace-time smtp://127.0.0.1:41463/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/3/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/3/stdout649 2> log/3/stderr649 file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 651 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file stdin-for-651 Some data from stdin === End of file stdin-for-651 === Start of file test651.filedata This is data from a file. === End of file test651.filedata === Start of file valgrind651 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind651 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 41463 (log/3/server/smtp_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "smtp://127.0.0.1:41463/verifiedserver" 2>log/3/smtp_verify.log RUN: Verifying our test smtp server took 0 seconds RUN: SMTP server is PID 137893 port 41463 * pid smtp => 137893 137893 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/3/valgrind649 ../src/curl -q --output log/3/curl649.out --include --trace-ascii log/3/trace649 --trace-config all --trace-time smtp://127.0.0.1:41463/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/3/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/3/stdout649 2> log/3/stderr649 649: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind649 ../src/curl -q --output log/3/curl649.out --include --trace-ascii log/3/trace649 --trace-config all --trace-time smtp://127.0.0.1:41463/649 --mail-rcpt recipient@example.com --mail-from sender@example.com -F '=This is valid;encoder=7bit' -F "=@log/3/test649.txt;encoder=7bit" -H "From: different" -H "To: another" log/3/stdout649 2> log/3/stderr649 === End of file commands.log === Start of file server.cmd Testnum 649 === End of file server.cmd === Start of file smtp_server.log 19:29:43.179694 SMTP server listens on port IPv4/41463 19:29:43.180320 logged pid 137893 in log/3/server/smtp_server.pid 19:29:43.180595 Awaiting input 19:29:43.971964 ====> Client connect 19:29:43.972605 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:43.973974 < "EHLO verifiedserver" 19:29:43.974284 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]" 19:29:43.975187 < "HELP" 19:29:43.975436 > "214 WE ROOLZ: 137893[CR][LF]" 19:29:43.975554 return proof we are we 19:29:43.976500 < "QUIT" 19:29:43.976735 > "221 curl ESMTP server signing off[CR][LF]" 19:29:43.977483 MAIN sockfilt said DISC 19:29:43.977726 ====> Client disconnected 19:29:43.978016 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 19:29:43.641895 Running IPv4 version 19:29:43.642271 Listening on port 41463 19:29:43.642495 Wrote pid 137926 to log/3/server/smtp_sockfilt.pid 19:29:43.642685 Wrote port 41463 to log/3/server/smtp_server.port 19:29:43.642785 Received PING (on stdin) 19:29:44.435200 ====> Client connect 19:29:44.436071 Received DATA (on stdin) 19:29:44.436183 > 160 bytes data, server => client 19:29:44.436270 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:44.436347 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:44.436406 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:44.436801 < 21 bytes data, client => server 19:29:44.436994 'EHLO verifiedserver\r\n' 19:29:44.437773 Received DATA (on stdin) 19:29:44.437879 > 53 bytes data, server => client 19:29:44.437951 '250 ESMTP pingpong test server Hello verifiedserver\r\n' 19:29:44.438309 < 6 bytes data, client => server 19:29:44.438414 'HELP\r\n' 19:29:44.438923 Received DATA (on stdin) 19:29:44.439012 > 22 bytes data, server => client 19:29:44.439074 '214 WE ROOLZ: 137893\r\n' 19:29:44.439636 < 6 bytes data, client => server 19:29:44.439764 'QUIT\r\n' 19:29:44.440215 Received DATA (on stdin) 19:29:44.440295 > 35 bytes data, server => client 19:29:44.440358 '221 curl ESMTP server signing off\r\n' 19:29:44.440673 ====> Client disconnect 19:29:44.441230 Received ACKD (on stdin) === End of file smtp_sockfilt.log === 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 valgrind649 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind649 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/cuCMD (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/valgrind653 ./libtest/lib653 http://127.0.0.1:37525/653 > log/3/stdout653 2> log/3/stderr653 CMD (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/2/valgrind652 ./libtest/lib652 smtp://127.0.0.1:34199/652 > log/2/stdout652 2> log/2/stderr652 rl/tests/sshserver.pl --verbose --pidfile "log/1/server/ssh_server.pid" --logdir "log/1" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 43537 startnew: child process has died, server might start up RUN: failed to start the SSH server on 43537 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/3/valgrind653 ./libtest/lib653 http://127.0.0.1:37525/653 > log/3/stdout653 2> log/3/stderr653 653: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind653 ./libtest/lib653 http://127.0.0.1:37525/653 > log/3/stdout653 2> log/3/stderr653 === End of file commands.log === Start of file http_server.log 19:29:43.996812 ====> Client connect 19:29:43.997159 accept_connection 3 returned 4 19:29:43.997276 accept_connection 3 returned 0 19:29:43.997365 Read 93 bytes 19:29:43.997425 Process 93 bytes request 19:29:43.997488 Got request: GET /verifiedserver HTTP/1.1 19:29:43.997543 Are-we-friendly question received 19:29:43.997683 Wrote request (93 bytes) input to log/3/server.input 19:29:43.997793 Identifying ourselves as friends 19:29:43.998242 Response sent (57 bytes) and written to log/3/server.response 19:29:43.998326 special request received, no persistency 19:29:43.998378 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 653 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind653 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind653 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/2/valgrind652 ./libtest/lib652 smtp://127.0.0.1:34199/652 > log/2/stdout652 2> log/2/stderr652 652: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind652 ./libtest/lib652 smtp://127.0.0.1:34199/652 > log/2/stdout652 2> log/2/stderr652 === End of file commands.log === Start of file server.cmd Testnum 652 === End of file server.cmd === Start of file smtp_server.log 19:29:44.456199 ====> Client connect 19:29:44.456912 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:44.458257 < "EHLO verifiedserver" 19:29:44.458538 > "250 ESMTP pingpong test server Hello verifiedserver[CR][LF]" 19:29:44.459422 < "HELP" 19:29:44.459676 > "214 WE ROOLZ: 137660[CR][LF]" 19:29:44.459794 return proof we are we 19:29:44.460912 < "QUIT" 19:29:44.461265 > "221 curl ESMTP server signing off[CR][LF]" 19:29:44.462347 MAIN sockfilt said DISC 19:29:44.462650 ====> Client disconnected 19:29:44.462972 Awaiting input === End of file smtp_server.log === Start of file smtp_sockfilt.log 19:29:44.919289 ====> Client connect 19:29:44.920381 Received DATA (on stdin) 19:29:44.920509 > 160 bytes data, server => client 19:29:44.920589 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:44.920659 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:44.920718 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:44.921214 < 21 bytes data, client => server 19:29:44.921348 'EHLO verifiedserver\r\n' 19:29:44.922014 Received DATA (on stdin) 19:29:44.922112 > 53 bytes data, server => client 19:29:44.922185 '250 ESMTP pingpong test server Hello verifiedserver\r\n' 19:29:44.922548 < 6 bytes data, client => server 19:29:44.922658 'HELP\r\n' 19:29:44.923147 Received DATA (on stdin) 19:29:44.923239 > 22 bytes data, server => client 19:29:44.923304 '214 WE ROOLZ: 137660\r\n' 19:29:44.923921 < 6 bytes data, client => server 19:29:44.924068 'QUIT\r\n' 19:29:44.924729 Received DATA (on stdin) 19:29:44.925071 > 35 bytes data, server => client 19:29:44.925193 '221 curl ESMTP server signing off\r\n' 19:29:44.925607 ====> Client disconnect 19:29:44.926135 Received ACKD (on stdin) === End of file smtp_sockfilt.log === Start of file valgrind652 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now.CMD (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/1/valgrind654 ./libtest/lib654 http://127.0.0.1:41477/654 log/1/file654.txt > log/1/stdout654 2> log/1/stderr654 CMD (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/valgrind655 ./libtest/lib655 http://127.0.0.1:37525/655 > log/3/stdout655 2> log/3/stderr655 Sorry. === End of file valgrind652 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/sshserver.pl --verbose --pidfile "log/4/server/ssh_server.pid" --logdir "log/4" --ipv4 --addr "127.0.0.1" --user "builduser" --sshport 41711 startnew: child process has died, server might start up RUN: failed to start the SSH server on 41711 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/1/valgrind654 ./libtest/lib654 http://127.0.0.1:41477/654 log/1/file654.txt > log/1/stdout654 2> log/1/stderr654 654: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind654 ./libtest/lib654 http://127.0.0.1:41477/654 log/1/file654.txt > log/1/stdout654 2> log/1/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 19:29:45.368271 ====> Client connect 19:29:45.368493 accept_connection 3 returned 4 19:29:45.368602 accept_connection 3 returned 0 19:29:45.368698 Read 93 bytes 19:29:45.368768 Process 93 bytes request 19:29:45.368836 Got request: GET /verifiedserver HTTP/1.1 19:29:45.369024 Are-we-friendly question received 19:29:45.369198 Wrote request (93 bytes) input to log/1/server.input 19:29:45.369339 Identifying ourselves as friends 19:29:45.369850 Response sent (57 bytes) and written to log/1/server.response 19:29:45.369967 special request received, no persistency 19:29:45.370035 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 654 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind654 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind654 CMD (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/2/valgrind659 ./libtest/lib659 http://127.0.0.1:39599 > log/2/stdout659 2> log/2/stderr659 CMD (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/4/valgrind658 ./libtest/lib658 http://127.0.0.1:43669/658 > log/4/stdout658 2> log/4/stderr658 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/3/valgrind655 ./libtest/lib655 http://127.0.0.1:37525/655 > log/3/stdout655 2> log/3/stderr655 655: data FAILED: --- log/3/check-expected 2025-05-23 19:29:45.490811452 +0000 +++ log/3/check-generated 2025-05-23 19:29:45.490811452 +0000 @@ -1 +0,0 @@ -hello[LF] == Contents of files in the log/3/ dir after test 655 === Start of file check-expected hello[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind655 ./libtest/lib655 http://127.0.0.1:37525/655 > log/3/stdout655 2> log/3/stderr655 === End of file commands.log === Start of file http_server.log 19:29:44.491735 ====> Client connect 19:29:44.491961 accept_connection 3 returned 4 19:29:44.492108 accept_connection 3 returned 0 19:29:44.492281 Read 93 bytes 19:29:44.492403 Process 93 bytes request 19:29:44.492522 Got request: GET /verifiedserver HTTP/1.1 19:29:44.492597 Are-we-friendly question received 19:29:44.492760 Wrote request (93 bytes) input to log/3/server.input 19:29:44.492991 Identifying ourselves as friends 19:29:44.493526 Response sent (57 bytes) and written to log/3/server.response 19:29:44.493615 special request received, no persistency 19:29:44.493674 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 655 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind655 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind655 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/2/valgrind659 ./libtest/lib659 http://127.0.0.1:39599 > log/2/stdout659 2> log/2/stderr659 659: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 659 === Start of file commands.log ../libtool --mode=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/valgrind659 ./libtest/lib659 http://127.0.0.1:39599 > log/2/stdout659 2> log/2/stderr659 === End of file commands.log === Start of file http_server.log 19:29:45.767064 ====> Client connect 19:29:45.767286 accept_connection 3 returned 4 19:29:45.767399 accept_connection 3 returned 0 19:29:45.767508 Read 93 bytes 19:29:45.767587 Process 93 bytes request 19:29:45.767675 Got request: GET /verifiedserver HTTP/1.1 19:29:45.767759 Are-we-friendly question received 19:29:45.767951 Wrote request (93 bytes) input to log/2/server.input 19:29:45.768116 Identifying ourselves as friends 19:29:45.768643 Response sent (57 bytes) and written to log/2/server.response 19:29:45.768734 special request received, no persistency 19:29:45.768794 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 659 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind659 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind659 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/4/valgrind658 ./libtest/lib658 http://127.0.0.1:43669/658 > log/4/stdout658 2> log/4/stderr658 658: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind658 ./libtest/lib658 http://127.0.0.1:43669/658 > log/4/stdout658 2> log/4/stderrCMD (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/valgrind661 ./libtest/lib661 ftp://127.0.0.1:43789/ > log/3/stdout661 2> log/3/stderr661 658 === End of file commands.log === Start of file http_server.log 19:29:45.768670 ====> Client connect 19:29:45.769047 accept_connection 3 returned 4 19:29:45.769215 accept_connection 3 returned 0 19:29:45.769372 Read 93 bytes 19:29:45.769458 Process 93 bytes request 19:29:45.769531 Got request: GET /verifiedserver HTTP/1.1 19:29:45.769597 Are-we-friendly question received 19:29:45.769787 Wrote request (93 bytes) input to log/4/server.input 19:29:45.770064 Identifying ourselves as friends 19:29:45.770615 Response sent (57 bytes) and written to log/4/server.response 19:29:45.770709 special request received, no persistency 19:29:45.770767 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 658 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind658 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind658 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/3/valgrind661 ./libtest/lib661 ftp://127.0.0.1:43789/ > log/3/stdout661 2> log/3/stderr661 661: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind661 ./libtest/lib661 ftp://127.0.0.1:43789/ > log/3/stdout661 2> log/3/stderr661 === End of file commands.log === Start of file ftp_server.log 19:29:45.604782 ====> Client connect 19:29:45.605668 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:45.607706 < "USER anonymous" 19:29:45.608014 > "331 We are happy you popped in![CR][LF]" 19:29:45.609568 < "PASS ftp@example.com" 19:29:45.609884 > "230 Welcome you silly person[CR][LF]" 19:29:45.614624 < "PWD" 19:29:45.614961 > "257 "/" is current directory[CR][LF]" 19:29:45.616491 < "EPSV" 19:29:45.616713 ====> Passive DATA channel requested by client 19:29:45.616862 DATA sockfilt for passive data channel starting... 19:29:45.636052 DATA sockfilt for passive data channel started (pid 138504) 19:29:45.636746 DATA sockfilt for passive data channel listens on port 45717 19:29:45.637058 > "229 Entering Passive Mode (|||45717|)[LF]" 19:29:45.637218 Client has been notified that DATA conn will be accepted on port 45717 19:29:45.638864 Client connects to port 45717 19:29:45.639102 ====> Client established passive DATA connection on port 45717 19:29:45.639611 < "TYPE I" 19:29:45.639878 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:45.641293 < "SIZE verifiedserver" 19:29:45.641711 > "213 18[CR][LF]" 19:29:45.643100 < "RETR verifiedserver" 19:29:45.643398 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:45.643851 =====> Closing passive DATA connection... 19:29:45.644033 Server disconnects passive DATA connection 19:29:45.644683 Server disconnected passive DATA connection 19:29:45.644912 DATA sockfilt for passive data channel quits (pid 138504) 19:29:45.646177 DATA sockfilt for passive data channel quit (pid 138504) 19:29:45.646398 =====> Closed passive DATA connection 19:29:45.646975 > "226 File transfer complete[CR][LF]" 19:29:45.686521 < "QUIT" 19:29:45.686854 > "221 bye bye baby[CR][LF]" 19:29:45.691959 MAIN sockfilt said DISC 19:29:45.692235 ====> Client disconnected 19:29:45.692585 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:46.067822 ====> Client connect 19:29:46.069468 Received DATA (on stdin) 19:29:46.069659 > 160 bytes data, server => client 19:29:46.069782 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:46.069865 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:46.069938 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:46.070372 < 16 bytes data, client => server 19:29:46.070500 'USER anonymous\r\n' 19:29:46.071694 Received DATA (on stdin) 19:29:46.071804 > 33 bytes data, server => client 19:29:46.071881 '331 We are happy you popped in!\r\n' 19:29:46.072301 < 22 bytes data, client => server 19:29:46.072426 'PASS ftp@example.com\r\n' 19:29:46.073560 Received DATA (on stdin) 19:29:46.073670 > 30 bytes data, server => client 19:29:46.073743 '230 Welcome you silly person\r\n' 19:29:46.077365 < 5 bytes data, client => server 19:29:46.077521 'PWD\r\n' 19:29:46.078655 Received DATA (on stdin) 19:29:46.078774 > 30 bytes data, server => client 19:29:46.078852 '257 "/" is current directory\r\n' 19:29:46.079310 < 6 bytes data, client => server 19:29:46.079433 'EPSV\r\n' 19:29:46.100959 Received DATA (on stdin) 19:29:46.101089 > 38 bytes data, server => client 19:29:46.101168 '229 Entering Passive Mode (|||45717|)\n' 19:29:46.102014 < 8 bytes data, client => server 19:29:46.102141 'TYPE I\r\n' 19:29:46.103586 Received DATA (on stdin) 19:29:46.103695 > 33 bytes data, server => client 19:29:46.103767 '200 I modify TYPE as you wanted\r\n' 19:29:46.104153 < 21 bytes data, client => server 19:29:46.104273 'SIZE verifiedserver\r\n' 19:29:46.105389 Received DATA (on stdin) 19:29:46.105497 > 8 bytes data, server => client 19:29:46.105567 '213 18\r\n' 19:29:46.105956 < 21 bytes data, client => server 19:29:46.106077 'RETR verifiedserver\r\n' 19:29:46.107713 Received DATA (on stdin) 19:29:46.107809 > 29 bytes data, server => client 19:29:46.107902 '150 Binary junk (18 bytes).\r\n' 19:29:46.110048 Received DATA (on stdin) 19:29:46.110153 > 28 bytes data, server => client 19:29:46.110263 '226 File transfer complete\r\n' 19:29:46.149469 < 6 bytes data, client => server 19:29:46.149630 'QUIT\r\n' 19:29:46.150306 Received DATA (on stdin) 19:29:46.150433 > 18 bytes data, server => client 19:29:46.150515 '221 bye bye baby\r\n' 19:29:46.150888 ====> Client disconnect 19:29:46.155707 Received ACKD (on stdin) === End of file fCMD (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/2/valgrind662 ../src/curl -q --output log/2/curl662.out --include --trace-ascii log/2/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:39599 > log/2/stdout662 2> log/2/stderr662 CMD (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/4/valgrind663 ../src/curl -q --output log/4/curl663.out --include --trace-ascii log/4/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:43669 > log/4/stdout663 2> log/4/stderr663 tp_sockctrl.log === Start of file ftp_sockdata.log 19:29:45.098556 Running IPv4 version 19:29:45.098928 Listening on port 45717 19:29:45.099170 Wrote pid 138504 to log/3/server/ftp_sockdata.pid 19:29:45.099278 Received PING (on stdin) 19:29:45.099826 Received PORT (on stdin) 19:29:45.102054 ====> Client connect 19:29:45.107093 Received DATA (on stdin) 19:29:45.107223 > 18 bytes data, server => client 19:29:45.107307 'WE ROOLZ: 109394\r\n' 19:29:45.107695 Received DISC (on stdin) 19:29:45.107828 ====> Client forcibly disconnected 19:29:45.108572 Received QUIT (on stdin) 19:29:45.108691 quits 19:29:45.109046 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 661 === End of file server.cmd === Start of file valgrind661 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind661 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/2/valgrind662 ../src/curl -q --output log/2/curl662.out --include --trace-ascii log/2/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:39599 > log/2/stdout662 2> log/2/stderr662 662: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind662 ../src/curl -q --output log/2/curl662.out --include --trace-ascii log/2/trace662 --trace-config all --trace-time http://example.com/please/gimme/662 -L -x http://127.0.0.1:39599 > log/2/stdout662 2> log/2/stderr662 === End of file commands.log === Start of file http_server.log 19:29:46.341189 ====> Client connect 19:29:46.341433 accept_connection 3 returned 4 19:29:46.341563 accept_connection 3 returned 0 19:29:46.341666 Read 93 bytes 19:29:46.341740 Process 93 bytes request 19:29:46.341815 Got request: GET /verifiedserver HTTP/1.1 19:29:46.341882 Are-we-friendly question received 19:29:46.342074 Wrote request (93 bytes) input to log/2/server.input 19:29:46.342231 Identifying ourselves as friends 19:29:46.342721 Response sent (57 bytes) and written to log/2/server.response 19:29:46.342812 special request received, no persistency 19:29:46.342869 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 662 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind662 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind663 ../src/curl -q --output log/4/curl663.out --include --trace-ascii log/4/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:43669 > log/4/stdout663 2> log/4/stderr663 663: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind663 ../src/curl -q --output log/4/curl663.out --include --trace-ascii log/4/trace663 --trace-config all --trace-time http://example.com/please/../gimme/663?foobar#hello -L -x http://127.0.0.1:43669 > log/4/stdout663 2> log/4/stderr663 === End of file commands.log === Start of file http_server.log 19:29:46.346548 ====> Client connect 19:29:46.346785 accept_connection 3 returned 4 19:29:46.346911 accept_connection 3 returned 0 19:29:46.347025 Read 93 bytes 19:29:46.347104 Process 93 bytes request 19:29:46.347177 Got request: GET /verifiedserver HTTP/1.1 19:29:46.347238 Are-we-friendly question received 19:29:46.347396 Wrote request (93 bytes) input to log/4/server.input 19:29:46.347572 Identifying ourselves as friends 19:29:46.348138 Response sent (57 bytes) and written to log/4/server.response 19:29:46.348237 special request received, no persistency 19:29:46.348293 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: cCMD (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/2/valgrind667 ./libtest/lib667 http://127.0.0.1:39599/667 > log/2/stdout667 2> log/2/stderr667 CMD (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/4/valgrind668 ./libtest/lib668 http://127.0.0.1:43669/668 log/4/file668.txt > log/4/stdout668 2> log/4/stderr668 url/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 663 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind663 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind663 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/2/valgrind667 ./libtest/lib667 http://127.0.0.1:39599/667 > log/2/stdout667 2> log/2/stderr667 667: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind667 ./libtest/lib667 http://127.0.0.1:39599/667 > log/2/stdout667 2> log/2/stderr667 === End of file commands.log === Start of file http_server.log 19:29:46.921532 ====> Client connect 19:29:46.921807 accept_connection 3 returned 4 19:29:46.921957 accept_connection 3 returned 0 19:29:46.922080 Read 93 bytes 19:29:46.922167 Process 93 bytes request 19:29:46.922249 Got request: GET /verifiedserver HTTP/1.1 19:29:46.922329 Are-we-friendly question received 19:29:46.922519 Wrote request (93 bytes) input to log/2/server.input 19:29:46.922702 Identifying ourselves as friends 19:29:46.923241 Response sent (57 bytes) and written to log/2/server.response 19:29:46.923332 special request received, no persistency 19:29:46.923385 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 667 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind667 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind668 ./libtest/lib668 http://127.0.0.1:43669/668 log/4/file668.txt > log/4/stdout668 2> log/4/stderr668 668: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind668 ./libtest/lib668 http://127.0.0.1:43669/668 log/4/file668.txt > log/4/stdout668 2> log/4/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 19:29:46.931971 ====> Client connect 19:29:46.932187 accept_connection 3 returned 4 19:29:46.932297 accept_connection 3 returned 0 19:29:46.932386 Read 93 bytes 19:29:46.932448 Process 93 bytes request 19:29:46.932511 Got request: GET /verifiedserver HTTP/1.1 19:29:46.932566 Are-we-friendly question received 19:29:46.932696 Wrote request (93 bytes) input to log/4/server.input 19:29:46.932818 Identifying ourselves as friends 19:29:46.933403 Response sent (57 bytes) and written to log/4/server.response 19:29:46.933492 special request received, no persistency 19:29:46.933545 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 668 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind668 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected functioCMD (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/1/valgrind660 ./libtest/lib597 imap://127.0.0.1:38385/660 > log/1/stdout660 2> log/1/stderr660 CMD (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/valgrind666 ./libtest/lib666 http://127.0.0.1:37525/666 > log/3/stdout666 2> log/3/stderr666 n valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind668 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/1/server/imap_server.pid" --logfile "log/1/imap_server.log" --logdir "log/1" --portfile "log/1/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 38385 (log/1/server/imap_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "imap://127.0.0.1:38385/verifiedserver" 2>log/1/imap_verify.log RUN: Verifying our test imap server took 0 seconds RUN: IMAP server is PID 138435 port 38385 * pid imap => 138435 138435 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/1/valgrind660 ./libtest/lib597 imap://127.0.0.1:38385/660 > log/1/stdout660 2> log/1/stderr660 660: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind660 ./libtest/lib597 imap://127.0.0.1:38385/660 > log/1/stdout660 2> log/1/stderr660 === End of file commands.log === Start of file imap_server.log 19:29:45.842956 IMAP server listens on port IPv4/38385 19:29:45.843708 logged pid 138435 in log/1/server/imap_server.pid 19:29:45.843924 Awaiting input 19:29:46.574903 ====> Client connect 19:29:46.575601 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:29:46.584486 < "A001 CAPABILITY" 19:29:46.584801 > "A001 BAD Command[CR][LF]" 19:29:46.585953 < "A002 LIST "verifiedserver" *" 19:29:46.586219 LIST_imap got "verifiedserver" * 19:29:46.586479 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:29:46.586682 > "A002 OK LIST Completed[CR][LF]" 19:29:46.586808 return proof we are we 19:29:46.588056 < "A003 LOGOUT" 19:29:46.588315 > "* BYE curl IMAP server signing off[CR][LF]" 19:29:46.588478 > "A003 OK LOGOUT completed[CR][LF]" 19:29:46.589457 MAIN sockfilt said DISC 19:29:46.589779 ====> Client disconnected 19:29:46.590121 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:29:45.304819 Running IPv4 version 19:29:45.305262 Listening on port 38385 19:29:45.305580 Wrote pid 138525 to log/1/server/imap_sockfilt.pid 19:29:45.305842 Wrote port 38385 to log/1/server/imap_server.port 19:29:45.305975 Received PING (on stdin) 19:29:46.038069 ====> Client connect 19:29:46.039050 Received DATA (on stdin) 19:29:46.039181 > 178 bytes data, server => client 19:29:46.039268 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:29:46.039341 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:29:46.039405 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:29:46.039455 'rve\r\n' 19:29:46.047289 < 17 bytes data, client => server 19:29:46.047422 'A001 CAPABILITY\r\n' 19:29:46.048242 Received DATA (on stdin) 19:29:46.048366 > 18 bytes data, server => client 19:29:46.048444 'A001 BAD Command\r\n' 19:29:46.048940 < 30 bytes data, client => server 19:29:46.049072 'A002 LIST "verifiedserver" *\r\n' 19:29:46.049916 Received DATA (on stdin) 19:29:46.050040 > 34 bytes data, server => client 19:29:46.050116 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:29:46.050330 Received DATA (on stdin) 19:29:46.050442 > 24 bytes data, server => client 19:29:46.050531 'A002 OK LIST Completed\r\n' 19:29:46.051088 < 13 bytes data, client => server 19:29:46.051217 'A003 LOGOUT\r\n' 19:29:46.051746 Received DATA (on stdin) 19:29:46.051852 > 36 bytes data, server => client 19:29:46.051924 '* BYE curl IMAP server signing off\r\n' 19:29:46.052127 Received DATA (on stdin) 19:29:46.052232 > 26 bytes data, server => client 19:29:46.052302 'A003 OK LOGOUT completed\r\n' 19:29:46.052573 ====> Client disconnect 19:29:46.053235 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 valgrind660 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind660 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/3/valgrind666 ./libtest/lib666 http://127.0.0.1:37525/666 > log/3/stdout666 2> log/3/stderr666 666: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind666 ./libtest/lib666 http://127.0.0.1:37525/666 > log/3/stdout666 2> log/3/stderr666 === End of file commands.log === Start of file http_server.log 19:29:45.743958 ====> Client connect 19:29:45.744202 accept_connection 3 returned 4 19:29:45.744344 accept_connection 3 returned 0 19:29:45.744473 Read 93 bytes 19:29:45.744557 Process 93 bytes request 19:29:45.744633 Got request: GET /verifiedserver HTTP/1.1 19:29:4CMD (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/2/valgrind669 ../src/curl -q --output log/2/curl669.out --include --trace-ascii log/2/trace669 --trace-config all --trace-time http://127.0.0.1:39599/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/2/stdout669 2> log/2/stderr669 CMD (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/4/valgrind670 ./libtest/lib670 http://127.0.0.1:43669/670 > log/4/stdout670 2> log/4/stderr670 CMD (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/1/valgrind671 ./libtest/lib671 http://127.0.0.1:41477/671 > log/1/stdout671 2> log/1/stderr671 5.744710 Are-we-friendly question received 19:29:45.745014 Wrote request (93 bytes) input to log/3/server.input 19:29:45.745245 Identifying ourselves as friends 19:29:45.745802 Response sent (57 bytes) and written to log/3/server.response 19:29:45.745901 special request received, no persistency 19:29:45.745965 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 666 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind666 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind666 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/2/valgrind669 ../src/curl -q --output log/2/curl669.out --include --trace-ascii log/2/trace669 --trace-config all --trace-time http://127.0.0.1:39599/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/2/stdout669 2> log/2/stderr669 669: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind669 ../src/curl -q --output log/2/curl669.out --include --trace-ascii log/2/trace669 --trace-config all --trace-time http://127.0.0.1:39599/we/want/669 -H 'Content-type: multipart/form-data; charset=utf-8' -F name=daniel -F tool=curl > log/2/stdout669 2> log/2/stderr669 === End of file commands.log === Start of file http_server.log 19:29:47.550753 ====> Client connect 19:29:47.550988 accept_connection 3 returned 4 19:29:47.551106 accept_connection 3 returned 0 19:29:47.552463 Read 93 bytes 19:29:47.552587 Process 93 bytes request 19:29:47.552689 Got request: GET /verifiedserver HTTP/1.1 19:29:47.552768 Are-we-friendly question received 19:29:47.553341 Wrote request (93 bytes) input to log/2/server.input 19:29:47.553510 Identifying ourselves as friends 19:29:47.554018 Response sent (57 bytes) and written to log/2/server.response 19:29:47.554101 special request received, no persistency 19:29:47.554153 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 669 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind669 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind669 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/1/valgrind671 ./libtest/lib671 http://127.0.0.1:41477/671 > log/1/stdout671 2> log/1/stderr671 671: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind671 ./libtest/lib671 http://127.0.0.1:41477/671 > log/1/stdout671 2> log/1/stderr671 === End of file commands.log === Start of file http_server.log 19:29:47.597866 ====> Client connect 19:29:47.598094 accept_connection 3 returned 4 19:29:47.598230 accept_connection 3 returned 0 19:29:47.598350 Read 93 bytes 19:29:47.598428 Process 93 bytes request 19:29:47.598503 Got request: GET /verifiedserver HTTP/1.1 19:29:47.598569 Are-we-friendly question received 19:29:47.598722 Wrote request (93 bytes) input to log/1/server.input 19:29:47.598865 Identifying ourselves as friends 19:29:47.599375 Response sent (57 bytes) and written to log/1/server.response 19:29:47.599475 special request received, no persistency 19:29:47.599535 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifCMD (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/valgrind672 ./libtest/lib672 http://127.0.0.1:37525/672 > log/3/stdout672 2> log/3/stderr672 iedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 671 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind671 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind671 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/4/valgrind670 ./libtest/lib670 http://127.0.0.1:43669/670 > log/4/stdout670 2> log/4/stderr670 670: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind670 ./libtest/lib670 http://127.0.0.1:43669/670 > log/4/stdout670 2> log/4/stderr670 === End of file commands.log === Start of file http_server.log 19:29:47.579606 ====> Client connect 19:29:47.579891 accept_connection 3 returned 4 19:29:47.580030 accept_connection 3 returned 0 19:29:47.580156 Read 93 bytes 19:29:47.580301 Process 93 bytes request 19:29:47.580405 Got request: GET /verifiedserver HTTP/1.1 19:29:47.580475 Are-we-friendly question received 19:29:47.580636 Wrote request (93 bytes) input to log/4/server.input 19:29:47.580981 Identifying ourselves as friends 19:29:47.581632 Response sent (57 bytes) and written to log/4/server.response 19:29:47.581749 special request received, no persistency 19:29:47.581818 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 670 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind670 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind670 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/3/valgrind672 ./libtest/lib672 http://127.0.0.1:37525/672 > log/3/stdout672 2> log/3/stderr672 672: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind672 ./libtest/lib672 http://127.0.0.1:37525/672 > log/3/stdout672 2> log/3/stderr672 === End of file commands.log === Start of file http_server.log 19:29:46.646854 ====> Client connect 19:29:46.647098 accept_connection 3 returned 4 19:29:46.647239 accept_connection 3 returned 0 19:29:46.647356 Read 93 bytes 19:29:46.647432 Process 93 bytes request 19:29:46.647508 Got request: GET /verifiedserver HTTP/1.1 19:29:46.647568 Are-we-friendly question received 19:29:46.647721 Wrote request (93 bytes) input to log/3/server.input 19:29:46.647862 Identifying ourselves as friends 19:29:46.648388 Response sent (57 bytes) and written to log/3/server.response 19:29:46.648488 special request received, no persistency 19:29:46.648555 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 672 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind672 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an objCMD (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/4/valgrind674 ./libtest/lib674 http://127.0.0.1:43669/674 > log/4/stdout674 2> log/4/stderr674 CMD (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/2/valgrind673 ./libtest/lib673 http://127.0.0.1:39599/673 > log/2/stdout673 2> log/2/stderr673 ect with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind672 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/4/valgrind674 ./libtest/lib674 http://127.0.0.1:43669/674 > log/4/stdout674 2> log/4/stderr674 674: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind674 ./libtest/lib674 http://127.0.0.1:43669/674 > log/4/stdout674 2> log/4/stderr674 === End of file commands.log === Start of file http_server.log 19:29:48.224936 ====> Client connect 19:29:48.225153 accept_connection 3 returned 4 19:29:48.225266 accept_connection 3 returned 0 19:29:48.225781 Read 93 bytes 19:29:48.225908 Process 93 bytes request 19:29:48.225994 Got request: GET /verifiedserver HTTP/1.1 19:29:48.226053 Are-we-friendly question received 19:29:48.226223 Wrote request (93 bytes) input to log/4/server.input 19:29:48.226380 Identifying ourselves as friends 19:29:48.226803 Response sent (57 bytes) and written to log/4/server.response 19:29:48.226898 special request received, no persistency 19:29:48.226965 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 674 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind674 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind674 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/2/valgrind673 ./libtest/lib673 http://127.0.0.1:39599/673 > log/2/stdout673 2> log/2/stderr673 673: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind673 ./libtest/lib673 http://127.0.0.1:39599/673 > log/2/stdout673 2> log/2/stderr673 === End of file commands.log === Start of file http_server.log 19:29:48.188148 ====> Client connect 19:29:48.188361 accept_connection 3 returned 4 19:29:48.188481 accept_connection 3 returned 0 19:29:48.188584 Read 93 bytes 19:29:48.188656 Process 93 bytes request 19:29:48.188728 Got request: GET /verifiedserver HTTP/1.1 19:29:48.188855 Are-we-friendly question received 19:29:48.189069 Wrote request (93 bytes) input to log/2/server.input 19:29:48.189249 Identifying ourselves as friends 19:29:48.189806 Response sent (57 bytes) and written to log/2/server.response 19:29:48.189893 special request received, no persistency 19:29:48.189949 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 673 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind673 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a cCMD (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/1/valgrind675 ../src/curl -q --output log/1/curl675.out --include --trace-ascii log/1/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:41477/user1/675 http://user2:foo2@127.0.0.1:41477/user2/675 > log/1/stdout675 2> log/1/stderr675 CMD (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/valgrind676 ./libtest/lib676 http://127.0.0.1:37525/we/want/676 log/3/cookies676 > log/3/stdout676 2> log/3/stderr676 CMD (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/1/valgrind680 ../src/curl -q --output log/1/curl680.out --include --trace-ascii log/1/trace680 --trace-config all --trace-time --netrc --netrc-file log/1/netrc680 http://user1@http.example/ > log/1/stdout680 2> log/1/stderr680 orresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind675 ../src/curl -q --output log/1/curl675.out --include --trace-ascii log/1/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:41477/user1/675 http://user2:foo2@127.0.0.1:41477/user2/675 > log/1/stdout675 2> log/1/stderr675 675: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind675 ../src/curl -q --output log/1/curl675.out --include --trace-ascii log/1/trace675 --trace-config all --trace-time http://user1:foo1@127.0.0.1:41477/user1/675 http://user2:foo2@127.0.0.1:41477/user2/675 > log/1/stdout675 2> log/1/stderr675 === End of file commands.log === Start of file http_server.log 19:29:48.227571 ====> Client connect 19:29:48.227809 accept_connection 3 returned 4 19:29:48.227926 accept_connection 3 returned 0 19:29:48.228031 Read 93 bytes 19:29:48.228102 Process 93 bytes request 19:29:48.228183 Got request: GET /verifiedserver HTTP/1.1 19:29:48.228258 Are-we-friendly question received 19:29:48.228446 Wrote request (93 bytes) input to log/1/server.input 19:29:48.228639 Identifying ourselves as friends 19:29:48.229236 Response sent (57 bytes) and written to log/1/server.response 19:29:48.229343 special request received, no persistency 19:29:48.229397 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 675 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind675 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/lib676 http://127.0.0.1:37525/we/want/676 log/3/cookies676 > log/3/stdout676 2> log/3/stderr676 676: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib676 http://127.0.0.1:37525/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 19:29:47.250433 ====> Client connect 19:29:47.250674 accept_connection 3 returned 4 19:29:47.250792 accept_connection 3 returned 0 19:29:47.250894 Read 93 bytes 19:29:47.250965 Process 93 bytes request 19:29:47.251041 Got request: GET /verifiedserver HTTP/1.1 19:29:47.251109 Are-we-friendly question received 19:29:47.251260 Wrote request (93 bytes) input to log/3/server.input 19:29:47.251409 Identifying ourselves as friends 19:29:47.251935 Response sent (57 bytes) and written to log/3/server.response 19:29:47.252023 special request received, no persistency 19:29:47.252079 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 676 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind676 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind676 * starts no server 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 CMD (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/valgrind681 ../src/curl -q --trace-ascii log/3/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:37525/681 > log/3/stdout681 2> log/3/stderr681 --log-file=log/1/valgrind680 ../src/curl -q --output log/1/curl680.out --include --trace-ascii log/1/trace680 --trace-config all --trace-time --netrc --netrc-file log/1/netrc680 http://user1@http.example/ > log/1/stdout680 2> log/1/stderr680 curl returned 1, when expecting 26 680: exit FAILED == Contents of files in the log/1/ 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/1/valgrind680 ../src/curl -q --output log/1/curl680.out --include --trace-ascii log/1/trace680 --trace-config all --trace-time --netrc --netrc-file log/1/netrc680 http://user1@http.example/ > log/1/stdout680 2> log/1/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 valgrind680 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind680 CMD (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/2/valgrind679 ../src/curl -q --output log/2/curl679.out --include --trace-ascii log/2/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc679 http://127.0.0.1:39599/ > log/2/stdout679 2> log/2/stderr679 CMD (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/1/valgrind682 ../src/curl -q --output log/1/curl682.out --include --trace-ascii log/1/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc682 http://user1@127.0.0.1:41477/ > log/1/stdout682 2> log/1/stderr682 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/3/valgrind681 ../src/curl -q --trace-ascii log/3/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:37525/681 > log/3/stdout681 2> log/3/stderr681 681: stdout FAILED: --- log/3/check-expected 2025-05-23 19:29:48.858895999 +0000 +++ log/3/check-generated 2025-05-23 19:29:48.858895999 +0000 @@ -1 +0,0 @@ --foo-[LF] == Contents of files in the log/3/ dir after test 681 === Start of file check-expected -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind681 ../src/curl -q --trace-ascii log/3/trace681 --trace-config all --trace-time --remote-name-all --no-remote-name --output-dir log http://127.0.0.1:37525/681 > log/3/stdout681 2> log/3/stderr681 === End of file commands.log === Start of file http_server.log 19:29:47.867086 ====> Client connect 19:29:47.867315 accept_connection 3 returned 4 19:29:47.867425 accept_connection 3 returned 0 19:29:47.867890 Read 93 bytes 19:29:47.868021 Process 93 bytes request 19:29:47.868096 Got request: GET /verifiedserver HTTP/1.1 19:29:47.868160 Are-we-friendly question received 19:29:47.868317 Wrote request (93 bytes) input to log/3/server.input 19:29:47.868462 Identifying ourselves as friends 19:29:47.868981 Response sent (57 bytes) and written to log/3/server.response 19:29:47.869094 special request received, no persistency 19:29:47.869154 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 681 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind681 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind681 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/2/valgrind679 ../src/curl -q --output log/2/curl679.out --include --trace-ascii log/2/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc679 http://127.0.0.1:39599/ > log/2/stdout679 2> log/2/stderr679 679: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind679 ../src/curl -q --output log/2/curl679.out --include --trace-ascii log/2/trace679 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc679 http://127.0.0.1:39599/ > log/2/stdout679 2> log/2/stderr679 === End of file commands.log === Start of file http_server.log 19:29:48.826246 ====> Client connect 19:29:48.826492 accept_connection 3 returned 4 19:29:48.826635 accept_connection 3 returned 0 19:29:48.826753 Read 93 bytes 19:29:48.826832 Process 93 bytes request 19:29:48.826917 Got request: GET /verifiedserver HTTP/1.1 19:29:48.826993 Are-we-friendly question received 19:29:48.827175 Wrote request (93 bytes) input to log/2/server.input 19:29:48.827336 Identifying ourselves as friends 19:29:48.827886 Response sent (57 bytes) and written to log/2/server.response 19:29:48.827980 special request received, no persistency 19:29:48.828038 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind679 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind679 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=CMD (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/valgrind683 ../src/curl -q --output log/3/curl683.out --include --trace-ascii log/3/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc683 http://user2@127.0.0.1:37525/ > log/3/stdout683 2> log/3/stderr683 CMD (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/2/valgrind684 ../src/curl -q --output log/2/curl684.out --include --trace-ascii log/2/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc684 http://127.0.0.1:39599/ > log/2/stdout684 2> log/2/stderr684 16 --log-file=log/1/valgrind682 ../src/curl -q --output log/1/curl682.out --include --trace-ascii log/1/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc682 http://user1@127.0.0.1:41477/ > log/1/stdout682 2> log/1/stderr682 682: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind682 ../src/curl -q --output log/1/curl682.out --include --trace-ascii log/1/trace682 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc682 http://user1@127.0.0.1:41477/ > log/1/stdout682 2> log/1/stderr682 === End of file commands.log === Start of file http_server.log 19:29:49.323023 ====> Client connect 19:29:49.323256 accept_connection 3 returned 4 19:29:49.323376 accept_connection 3 returned 0 19:29:49.323473 Read 93 bytes 19:29:49.323540 Process 93 bytes request 19:29:49.323604 Got request: GET /verifiedserver HTTP/1.1 19:29:49.323659 Are-we-friendly question received 19:29:49.323793 Wrote request (93 bytes) input to log/1/server.input 19:29:49.323913 Identifying ourselves as friends 19:29:49.324385 Response sent (57 bytes) and written to log/1/server.response 19:29:49.324475 special request received, no persistency 19:29:49.324527 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind682 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/3/valgrind683 ../src/curl -q --output log/3/curl683.out --include --trace-ascii log/3/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc683 http://user2@127.0.0.1:37525/ > log/3/stdout683 2> log/3/stderr683 683: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind683 ../src/curl -q --output log/3/curl683.out --include --trace-ascii log/3/trace683 --trace-config all --trace-time --netrc-optional --netrc-file log/3/netrc683 http://user2@127.0.0.1:37525/ > log/3/stdout683 2> log/3/stderr683 === End of file commands.log === Start of file http_server.log 19:29:48.423360 ====> Client connect 19:29:48.423584 accept_connection 3 returned 4 19:29:48.423694 accept_connection 3 returned 0 19:29:48.423814 Read 93 bytes 19:29:48.423885 Process 93 bytes request 19:29:48.423962 Got request: GET /verifiedserver HTTP/1.1 19:29:48.424057 Are-we-friendly question received 19:29:48.424226 Wrote request (93 bytes) input to log/3/server.input 19:29:48.424356 Identifying ourselves as friends 19:29:48.424932 Response sent (57 bytes) and written to log/3/server.response 19:29:48.425035 special request received, no persistency 19:29:48.425097 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind683 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind684 ../src/curCMD (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/4/valgrind677 ./libtest/lib677 imap://127.0.0.1:38513/677 > log/4/stdout677 2> log/4/stderr677 l -q --output log/2/curl684.out --include --trace-ascii log/2/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc684 http://127.0.0.1:39599/ > log/2/stdout684 2> log/2/stderr684 684: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind684 ../src/curl -q --output log/2/curl684.out --include --trace-ascii log/2/trace684 --trace-config all --trace-time --netrc-optional --netrc-file log/2/netrc684 http://127.0.0.1:39599/ > log/2/stdout684 2> log/2/stderr684 === End of file commands.log === Start of file http_server.log 19:29:49.450863 ====> Client connect 19:29:49.451074 accept_connection 3 returned 4 19:29:49.451186 accept_connection 3 returned 0 19:29:49.451289 Read 93 bytes 19:29:49.451384 Process 93 bytes request 19:29:49.451461 Got request: GET /verifiedserver HTTP/1.1 19:29:49.451525 Are-we-friendly question received 19:29:49.451673 Wrote request (93 bytes) input to log/2/server.input 19:29:49.451826 Identifying ourselves as friends 19:29:49.452395 Response sent (57 bytes) and written to log/2/server.response 19:29:49.452489 special request received, no persistency 19:29:49.452544 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind684 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind684 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /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 38513 (log/4/server/imap_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "imap://127.0.0.1:38513/verifiedserver" 2>log/4/imap_verify.log RUN: Verifying our test imap server took 0 seconds RUN: IMAP server is PID 139418 port 38513 * pid imap => 139418 139418 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/lib677 imap://127.0.0.1:38513/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: 1 == 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/lib677 imap://127.0.0.1:38513/677 > log/4/stdout677 2> log/4/stderr677 === End of file commands.log === Start of file imap_server.log 19:29:48.599226 IMAP server listens on port IPv4/38513 19:29:48.600013 logged pid 139418 in log/4/server/imap_server.pid 19:29:48.600262 Awaiting input 19:29:49.333500 ====> Client connect 19:29:49.334218 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:29:49.336375 < "A001 CAPABILITY" 19:29:49.336706 > "A001 BAD Command[CR][LF]" 19:29:49.338388 < "A002 LIST "verifiedserver" *" 19:29:49.338651 LIST_imap got "verifiedserver" * 19:29:49.338967 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:29:49.339241 > "A002 OK LIST Completed[CR][LF]" 19:29:49.339422 return proof we are we 19:29:49.343393 < "A003 LOGOUT" 19:29:49.343737 > "* BYE curl IMAP server signing off[CR][LF]" 19:29:49.344009 > "A003 OK LOGOUT completed[CR][LF]" 19:29:49.345649 MAIN sockfilt said DISC 19:29:49.345933 ====> Client disconnected 19:29:49.346267 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:29:48.061065 Running IPv4 version 19:29:48.061439 Listening on port 38513 19:29:48.061781 Wrote pid 139538 to log/4/server/imap_sockfilt.pid 19:29:48.062049 Wrote port 38513 to log/4/server/imap_server.port 19:29:48.062176 Received PING (on stdin) 19:29:48.796511 ====> Client connect 19:29:48.797585 Received DATA (on stdin) 19:29:48.797725 > 178 bytes data, server => client 19:29:48.797813 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:29:48.797887 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:29:48.797957 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:29:48.798011 'rve\r\n' 19:29:48.798459 < 17 bytes data, client => server 19:29:48.798604 'A001 CAPABILITY\r\n' 19:29:48.800349 Received DATA (on stdin) 19:29:48.800490 > 18 bytes data, server => client 19:29:48.800573 'A001 BAD Command\r\n' 19:29:48.801059 < 30 bytes data, client => server 19:29:48.801188 'A002 LIST "verifiedserver" *\r\n' 19:29:48.803010 Received DATA (on stdin) 19:29:48.803162 > 34 bytes data, server => client 19:29:48.803238 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:29:48.803465 Received DATA (on stdin) 19:29:48.803597 > 24 bytes data, server => client 19:29:48.803685 'A002 OK LIST Completed\r\n' 19:29:48.806028 < 13 bytes data, client => server 19:29:48.806181 'A003 LOGOUT\r\n' 19:29:48.807618 Received DATA (on stdin) 19:29:48.807739 > 36 bytes data, server => client 19:29:48.807815 '* BYE curl IMAP server signing off\r\n' 19:29:48.808071 Received DATA (on stdin) 19:29:48.808225 > 26 bytes data, server => client 19:29:48.808314 'A003 OK LOGOUT completed\r\n' 19:29:48.808656 ====> Client disconnect 19:29:48.809899 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 677 === End of fCMD (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/valgrind686 ../src/curl -q --output log/3/curl686.out --include --trace-ascii log/3/trace686 --trace-config all --trace-time htdhdhdtp://localhost --next > log/3/stdout686 2> log/3/stderr686 CMD (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/1/valgrind685 ../src/curl -q --output log/1/curl685.out --include --trace-ascii log/1/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc685 http://user@127.0.0.1:41477/ > log/1/stdout685 2> log/1/stderr685 ile server.cmd === Start of file valgrind677 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind677 * starts no server 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-config all --trace-time htdhdhdtp://localhost --next > log/3/stdout686 2> log/3/stderr686 curl returned 1, when expecting 2 686: exit FAILED == 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-config all --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 valgrind686 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind686 CMD (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/2/valgrind689 ./libtest/lib567 rtsp://127.0.0.1:45951/689 > log/2/stdout689 2> log/2/stderr689 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/1/valgrind685 ../src/curl -q --output log/1/curl685.out --include --trace-ascii log/1/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc685 http://user@127.0.0.1:41477/ > log/1/stdout685 2> log/1/stderr685 685: data FAILED: --- log/1/check-expected 2025-05-23 19:29:50.058926122 +0000 +++ log/1/check-generated 2025-05-23 19:29:50.058926122 +0000 @@ -1,8 +0,0 @@ -HTTP/1.1 200 OK[LF] -Date: Fri, 05 Aug 2022 10:09:00 GMT[LF] -Server: test-server/fake[LF] -Content-Type: text/plain[LF] -Content-Length: 6[LF] -Connection: close[LF] -[LF] --foo-[LF] == Contents of files in the log/1/ dir after test 685 === Start of file check-expected HTTP/1.1 200 OK[LF] Date: Fri, 05 Aug 2022 10:09:00 GMT[LF] Server: test-server/fake[LF] Content-Type: text/plain[LF] Content-Length: 6[LF] Connection: close[LF] [LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind685 ../src/curl -q --output log/1/curl685.out --include --trace-ascii log/1/trace685 --trace-config all --trace-time --netrc-optional --netrc-file log/1/netrc685 http://user@127.0.0.1:41477/ > log/1/stdout685 2> log/1/stderr685 === End of file commands.log === Start of file http_server.log 19:29:49.965136 ====> Client connect 19:29:49.965351 accept_connection 3 returned 4 19:29:49.965458 accept_connection 3 returned 0 19:29:49.965913 Read 93 bytes 19:29:49.966030 Process 93 bytes request 19:29:49.966103 Got request: GET /verifiedserver HTTP/1.1 19:29:49.966165 Are-we-friendly question received 19:29:49.966314 Wrote request (93 bytes) input to log/1/server.input 19:29:49.966448 Identifying ourselves as friends 19:29:49.966832 Response sent (57 bytes) and written to log/1/server.response 19:29:49.966920 special request received, no persistency 19:29:49.966976 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind685 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind689 ./libtest/lib567 rtsp://127.0.0.1:45951/689 > log/2/stdout689 2> log/2/stderr689 689: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind689 ./libtest/lib567 rtsp://127.0.0.1:45951/689 > log/2/stdout689 2> log/2/stderr689 === End of file commands.log === Start of file rtsp_server.log 19:29:49.079649 ====> Client connect 19:29:49.079897 Read 93 bytes 19:29:49.079991 rtspd_ProcessRequest() called with testno -7 and line [GET /verifiedserver HTTP/1.1 Host: 127.0.0.1:45951 User-Agent: curl/8.13.0 Accept: */* ] 19:29:49.080091 Got request: GET /verifiedserver HTTP/1.1 19:29:49.080171 Are-we-friendly question received 19:29:49.080361 Wrote request (93 bytes) input to log/2/server.input 19:29:49.080534 Send response number -2 part 0 19:29:49.080626 Identifying ourselves as friends 19:29:49.081016 Sent off 69 bytes 19:29:49.081265 Response sent (69 bytes) and written to log/2/server.response 19:29:49.081351 special request received, no persistency 19:29:49.081413 ====> Client disconnect === End of file rtsp_server.log === Start of file rtsp_verify.log * Trying 127.0.0.1:45951... * Connected to 127.0.0.1 (127.0.0.1) port 45951 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45951 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 30 < { [30 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file rtsp_verify.log === Start of file rtsp_verify.out RTSP_SERVER WE ROOLZ: 135618 === End of file rtsp_verify.out === Start of file server.cmd Testnum 689 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 30 RTSP_SERVER WE ROOLZ: 135618 === End of file server.response === Start of file valgrind689 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. ==CMD (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/4/valgrind690 ../src/curl -q --include --trace-ascii log/4/trace690 --trace-config all --trace-time http://127.0.0.1:43669/ -O --output-dir log/4 > log/4/stdout690 2> log/4/stderr690 CMD (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/valgrind691 ../src/curl -q --include --trace-ascii log/3/trace691 --trace-config all --trace-time http://127.0.0.1:37525/path/to/here/ -O --output-dir log/3 > log/3/stdout691 2> log/3/stderr691 CMD (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/2/valgrind693 ../src/curl -q --output log/2/curl693.out --include --trace-ascii log/2/trace693 --trace-config all --trace-time http://127.0.0.1:39599/693 --etag-save log/2/moo/boo/etag693 --create-dirs > log/2/stdout693 2> log/2/stderr693 = End of file valgrind689 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/4/valgrind690 ../src/curl -q --include --trace-ascii log/4/trace690 --trace-config all --trace-time http://127.0.0.1:43669/ -O --output-dir log/4 > log/4/stdout690 2> log/4/stderr690 690: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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 --num-callers=16 --log-file=log/4/valgrind690 ../src/curl -q --include --trace-ascii log/4/trace690 --trace-config all --trace-time http://127.0.0.1:43669/ -O --output-dir log/4 > log/4/stdout690 2> log/4/stderr690 === End of file commands.log === Start of file http_server.log 19:29:50.361449 ====> Client connect 19:29:50.361661 accept_connection 3 returned 4 19:29:50.361771 accept_connection 3 returned 0 19:29:50.361863 Read 93 bytes 19:29:50.361932 Process 93 bytes request 19:29:50.362004 Got request: GET /verifiedserver HTTP/1.1 19:29:50.362066 Are-we-friendly question received 19:29:50.362218 Wrote request (93 bytes) input to log/4/server.input 19:29:50.362364 Identifying ourselves as friends 19:29:50.362889 Response sent (57 bytes) and written to log/4/server.response 19:29:50.362992 special request received, no persistency 19:29:50.363063 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 690 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind690 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind690 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/3/valgrind691 ../src/curl -q --include --trace-ascii log/3/trace691 --trace-config all --trace-time http://127.0.0.1:37525/path/to/here/ -O --output-dir log/3 > log/3/stdout691 2> log/3/stderr691 691: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind691 ../src/curl -q --include --trace-ascii log/3/trace691 --trace-config all --trace-time http://127.0.0.1:37525/path/to/here/ -O --output-dir log/3 > log/3/stdout691 2> log/3/stderr691 === End of file commands.log === Start of file http_server.log 19:29:49.551519 ====> Client connect 19:29:49.551740 accept_connection 3 returned 4 19:29:49.551851 accept_connection 3 returned 0 19:29:49.551950 Read 93 bytes 19:29:49.552022 Process 93 bytes request 19:29:49.552092 Got request: GET /verifiedserver HTTP/1.1 19:29:49.552154 Are-we-friendly question received 19:29:49.552301 Wrote request (93 bytes) input to log/3/server.input 19:29:49.552446 Identifying ourselves as friends 19:29:49.553049 Response sent (57 bytes) and written to log/3/server.response 19:29:49.553144 special request received, no persistency 19:29:49.553197 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 691 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind691 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind693 ../src/curl -q --output log/2/curl693.out --include --trace-ascii log/2/trace693 --trace-config all --trace-time http://127.0.0.1:39599/693 --etag-save log/2/moo/boo/etag693 --create-dirs > log/2/stdout693 2> log/2/stderr693 693: protocol FAILED! ThCMD (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/1/valgrind692 ../src/curl -q --trace-ascii log/1/trace692 --trace-config all --trace-time http://127.0.0.1:41477/ -JO --output-dir log/1 > log/1/stdout692 2> log/1/stderr692 CMD (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/4/valgrind694 ./libtest/lib694 http://127.0.0.1:43669/path/mine http://127.0.0.1:43669/path/6940010 > log/4/stdout694 2> log/4/stderr694 ere was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind693 ../src/curl -q --output log/2/curl693.out --include --trace-ascii log/2/trace693 --trace-config all --trace-time http://127.0.0.1:39599/693 --etag-save log/2/moo/boo/etag693 --create-dirs > log/2/stdout693 2> log/2/stderr693 === End of file commands.log === Start of file http_server.log 19:29:50.714470 ====> Client connect 19:29:50.714710 accept_connection 3 returned 4 19:29:50.714828 accept_connection 3 returned 0 19:29:50.714945 Read 93 bytes 19:29:50.715022 Process 93 bytes request 19:29:50.715099 Got request: GET /verifiedserver HTTP/1.1 19:29:50.715169 Are-we-friendly question received 19:29:50.715360 Wrote request (93 bytes) input to log/2/server.input 19:29:50.715551 Identifying ourselves as friends 19:29:50.716113 Response sent (57 bytes) and written to log/2/server.response 19:29:50.716210 special request received, no persistency 19:29:50.716269 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 693 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind693 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind692 ../src/curl -q --trace-ascii log/1/trace692 --trace-config all --trace-time http://127.0.0.1:41477/ -JO --output-dir log/1 > log/1/stdout692 2> log/1/stderr692 692: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind692 ../src/curl -q --trace-ascii log/1/trace692 --trace-config all --trace-time http://127.0.0.1:41477/ -JO --output-dir log/1 > log/1/stdout692 2> log/1/stderr692 === End of file commands.log === Start of file http_server.log 19:29:50.667695 ====> Client connect 19:29:50.667927 accept_connection 3 returned 4 19:29:50.668048 accept_connection 3 returned 0 19:29:50.668166 Read 93 bytes 19:29:50.668249 Process 93 bytes request 19:29:50.668331 Got request: GET /verifiedserver HTTP/1.1 19:29:50.668399 Are-we-friendly question received 19:29:50.668606 Wrote request (93 bytes) input to log/1/server.input 19:29:50.668906 Identifying ourselves as friends 19:29:50.669485 Response sent (57 bytes) and written to log/1/server.response 19:29:50.669578 special request received, no persistency 19:29:50.669634 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 692 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind692 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind692 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/lib694 http://127.0.0.1:43669/path/mine http://127.0.0.1:43669/path/6940010 > log/4/stdout694 2> log/4/stderr694 694: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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/lib694 http://127.0.0.1:43669/path/mine http://127.0.0.1:43669/path/6940010 > log/4/stdout694 2> log/4/stderr694 === End of file commands.log ===CMD (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/valgrind695 ./libtest/lib695 http://127.0.0.1:37525/we/want/695 > log/3/stdout695 2> log/3/stderr695 CMD (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/1/valgrind697 ../src/curl -q --output log/1/curl697.out --include --trace-ascii log/1/trace697 --trace-config all --trace-time --netrc --netrc-file log/1/netrc697 http://user1@http.example/ > log/1/stdout697 2> log/1/stderr697 Start of file http_server.log 19:29:51.027189 ====> Client connect 19:29:51.027418 accept_connection 3 returned 4 19:29:51.027530 accept_connection 3 returned 0 19:29:51.027645 Read 93 bytes 19:29:51.027715 Process 93 bytes request 19:29:51.027784 Got request: GET /verifiedserver HTTP/1.1 19:29:51.027845 Are-we-friendly question received 19:29:51.027993 Wrote request (93 bytes) input to log/4/server.input 19:29:51.028140 Identifying ourselves as friends 19:29:51.028865 Response sent (57 bytes) and written to log/4/server.response 19:29:51.028977 special request received, no persistency 19:29:51.029035 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 694 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind694 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind694 test 0695...[MIME parts reuse as a child 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/valgrind695 ./libtest/lib695 http://127.0.0.1:37525/we/want/695 > log/3/stdout695 2> log/3/stderr695 695: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind695 ./libtest/lib695 http://127.0.0.1:37525/we/want/695 > log/3/stdout695 2> log/3/stderr695 === End of file commands.log === Start of file http_server.log 19:29:50.178223 ====> Client connect 19:29:50.178482 accept_connection 3 returned 4 19:29:50.178616 accept_connection 3 returned 0 19:29:50.178785 Read 93 bytes 19:29:50.178927 Process 93 bytes request 19:29:50.179028 Got request: GET /verifiedserver HTTP/1.1 19:29:50.179085 Are-we-friendly question received 19:29:50.179337 Wrote request (93 bytes) input to log/3/server.input 19:29:50.179623 Identifying ourselves as friends 19:29:50.180685 Response sent (57 bytes) and written to log/3/server.response 19:29:50.180874 special request received, no persistency 19:29:50.180938 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 695 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind695 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind695 * starts no server 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/1/valgrind697 ../src/curl -q --output log/1/curl697.out --include --trace-ascii log/1/trace697 --trace-config all --trace-time --netrc --netrc-file log/1/netrc697 http://user1@http.example/ > log/1/stdout697 2> log/1/stderr697 curl returned 1, when expecting 26 697: exit FAILED == Contents of files in the log/1/ 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/1/valgrind697 ../src/curl -q --output log/1/curl697.out --include --trace-ascii log/1/trace697 --trace-config all --trace-time --netrc --netrc-file log/1/netrc697 http://user1@http.example/ > log/1/stdout697 2> log/1/stderr697 === End of file commands.log === Start of file server.cmd Testnum 697 === End of file server.cmd === Start of file valgrind697 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: packaCMD (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/2/valgrind696 ./libtest/lib696 http://127.0.0.1:39599 > log/2/stdout696 2> log/2/stderr696 ge on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind697 CMD (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/4/valgrind698 ../src/curl -q --output log/4/curl698.out --include --trace-ascii log/4/trace698 --trace-config all --trace-time ftp://127.0.0.1:40809/698 --ftp-account "one count" ftp://127.0.0.1:40809/698 > log/4/stdout698 2> log/4/stderr698 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/2/valgrind696 ./libtest/lib696 http://127.0.0.1:39599 > log/2/stdout696 2> log/2/stderr696 696: stdout FAILED: --- log/2/check-expected 2025-05-23 19:29:51.414960162 +0000 +++ log/2/check-generated 2025-05-23 19:29:51.414960162 +0000 @@ -1,14 +0,0 @@ -HTTP/1.1 200 OK swsclose[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -[CR][LF] --foo-[LF] -HTTP/1.1 200 OK swsclose[CR][LF] -Server: test-server/fake[CR][LF] -Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] -Content-Length: 6[CR][LF] -Connection: close[CR][LF] -[CR][LF] --foo-[LF] == Contents of files in the log/2/ dir after test 696 === Start of file check-expected HTTP/1.1 200 OK swsclose[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] [CR][LF] -foo-[LF] HTTP/1.1 200 OK swsclose[CR][LF] Server: test-server/fake[CR][LF] Last-Modified: Tue, 13 Jun 2000 12:10:00 GMT[CR][LF] Content-Length: 6[CR][LF] Connection: close[CR][LF] [CR][LF] -foo-[LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind696 ./libtest/lib696 http://127.0.0.1:39599 > log/2/stdout696 2> log/2/stderr696 === End of file commands.log === Start of file http_server.log 19:29:51.357924 ====> Client connect 19:29:51.358152 accept_connection 3 returned 4 19:29:51.358277 accept_connection 3 returned 0 19:29:51.358395 Read 93 bytes 19:29:51.358473 Process 93 bytes request 19:29:51.358556 Got request: GET /verifiedserver HTTP/1.1 19:29:51.358631 Are-we-friendly question received 19:29:51.358792 Wrote request (93 bytes) input to log/2/server.input 19:29:51.358972 Identifying ourselves as friends 19:29:51.359519 Response sent (57 bytes) and written to log/2/server.response 19:29:51.359616 special request received, no persistency 19:29:51.359674 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 696 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind696 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind696 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/4/valgrind698 ../src/curl -q --output log/4/curl698.out --include --trace-ascii log/4/trace698 --trace-config all --trace-time ftp://127.0.0.1:40809/698 --ftp-account "one count" ftp://127.0.0.1:40809/698 > log/4/stdout698 2> log/4/stderr698 698: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind698 ../src/curl -q --output log/4/curl698.out --include --trace-ascii log/4/trace698 --trace-config all --trace-time ftp://127.0.0.1:40809/698 --ftp-account "one count" ftp://127.0.0.1:40809/698 > log/4/stdout698 2> log/4/stderr698 === End of file commands.log === Start of file ftp_server.log 19:29:51.270685 ====> Client connect 19:29:51.271544 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:51.272901 < "USER anonymous" 19:29:51.273216 > "331 We are happy you popped in![CR][LF]" 19:29:51.283615 < "PASS ftp@example.com" 19:29:51.283947 > "230 Welcome you silly person[CR][LF]" 19:29:51.286457 < "PWD" 19:29:51.286797 > "257 "/" is current directory[CR][LF]" 19:29:51.288540 < "EPSV" 19:29:51.288764 ====> Passive DATA channel requested by client 19:29:51.288905 DATA sockfilt for passive data channel starting... 19:29:51.299492 DATA sockfilt for passive data channel started (pid 140545) 19:29:51.300298 DATA sockfilt for passive data channel listens on port 40817 19:29:51.300649 > "229 Entering Passive Mode (|||40817|)[LF]" 19:29:51.300860 Client has been notified that DATA conn will be accepted on port 40817 19:29:51.302753 Client connects to port 40817 19:29:51.303035 ====> Client established passive DATA connection on port 40817 19:29:51.303662 < "TYPE I" 19:29:51.303986 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:51.305956 < "SIZE verifiedserver" 19:29:51.306302 > "213 18[CR][LF]" 19:29:51.307890 < "RETR verifiedserver" 19:29:51.308205 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:51.308693 =====> Closing passive DATA connection... 19:29:51.308903 Server disconnects passive DATA connection 19:29:51.310629 Server disconnected passive DATA connection 19:29:51.310859 DATA sockfilt for passive data channel quits (pid 140545) 19:29:51.312341 DATA sockfilt for passive data channel quit (pid 140545) 19:29:51.312559 =====> Closed passive DATA connection 19:29:51.313202 > "226 File transfer complete[CR][LF]" 19:29:51.355317 < "QUIT" 19:29:51.355649 > "221 bye bye baby[CR][LF]" 19:29:51.360426 MAIN sockfilt said DISC 19:29:51.360726 ====> Client disconnected 19:29:51.361144 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:50.733592 ====> Client connect 19:29:50.734833 Received DATA (on stdin) 19:29:50.734977 > 160 bytes data, server => client 19:29:50.735061 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:50.735134 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:50.735199 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:50.735615 < 16 bytes data, client => server 19:29:5CMD (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/valgrind700 ../src/curl -q --output log/3/curl700.out --include --trace-ascii log/3/trace700 --trace-config all --trace-time --socks4 127.0.0.1:43785 http://127.0.0.1:37525/700 > log/3/stdout700 2> log/3/stderr700 0.735755 'USER anonymous\r\n' 19:29:50.736522 Received DATA (on stdin) 19:29:50.736649 > 33 bytes data, server => client 19:29:50.736787 '331 We are happy you popped in!\r\n' 19:29:50.746478 < 22 bytes data, client => server 19:29:50.746637 'PASS ftp@example.com\r\n' 19:29:50.747248 Received DATA (on stdin) 19:29:50.747373 > 30 bytes data, server => client 19:29:50.747447 '230 Welcome you silly person\r\n' 19:29:50.747825 < 5 bytes data, client => server 19:29:50.747933 'PWD\r\n' 19:29:50.750106 Received DATA (on stdin) 19:29:50.750230 > 30 bytes data, server => client 19:29:50.750307 '257 "/" is current directory\r\n' 19:29:50.750806 < 6 bytes data, client => server 19:29:50.750913 'EPSV\r\n' 19:29:50.764414 Received DATA (on stdin) 19:29:50.764544 > 38 bytes data, server => client 19:29:50.764624 '229 Entering Passive Mode (|||40817|)\n' 19:29:50.765618 < 8 bytes data, client => server 19:29:50.765757 'TYPE I\r\n' 19:29:50.767555 Received DATA (on stdin) 19:29:50.767673 > 33 bytes data, server => client 19:29:50.767768 '200 I modify TYPE as you wanted\r\n' 19:29:50.768316 < 21 bytes data, client => server 19:29:50.768452 'SIZE verifiedserver\r\n' 19:29:50.769936 Received DATA (on stdin) 19:29:50.770075 > 8 bytes data, server => client 19:29:50.770154 '213 18\r\n' 19:29:50.770610 < 21 bytes data, client => server 19:29:50.770728 'RETR verifiedserver\r\n' 19:29:50.772416 Received DATA (on stdin) 19:29:50.772541 > 29 bytes data, server => client 19:29:50.772619 '150 Binary junk (18 bytes).\r\n' 19:29:50.776068 Received DATA (on stdin) 19:29:50.776190 > 28 bytes data, server => client 19:29:50.776322 '226 File transfer complete\r\n' 19:29:50.817600 < 6 bytes data, client => server 19:29:50.817895 'QUIT\r\n' 19:29:50.819202 Received DATA (on stdin) 19:29:50.819327 > 18 bytes data, server => client 19:29:50.819403 '221 bye bye baby\r\n' 19:29:50.823473 ====> Client disconnect 19:29:50.824839 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:51.759649 Running IPv4 version 19:29:51.762218 Listening on port 40817 19:29:51.762467 Wrote pid 140545 to log/4/server/ftp_sockdata.pid 19:29:51.762583 Received PING (on stdin) 19:29:51.763109 Received PORT (on stdin) 19:29:51.765899 ====> Client connect 19:29:51.773063 Received DATA (on stdin) 19:29:51.773194 > 18 bytes data, server => client 19:29:51.773262 'WE ROOLZ: 109451\r\n' 19:29:51.773735 Received DISC (on stdin) 19:29:51.774358 ====> Client forcibly disconnected 19:29:51.774679 Received QUIT (on stdin) 19:29:51.774804 quits 19:29:51.775099 ============> 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 valgrind698 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind698 startnew: ./server/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 140570 * pid socks => 140570 140570 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/3/valgrind700 ../src/curl -q --output log/3/curl700.out --include --trace-ascii log/3/trace700 --trace-config all --trace-time --socks4 127.0.0.1:43785 http://127.0.0.1:37525/700 > log/3/stdout700 2> log/3/stderr700 700: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind700 ../src/curl -q --output log/3/curl700.out --include --trace-ascii log/3/trace700 --trace-config all --trace-time --socks4 127.0.0.1:43785 http://127.0.0.1:37525/700 > log/3/stdout700 2> log/3/stderr700 === End of file commands.log === Start of file http_server.log 19:29:50.806442 ====> Client connect 19:29:50.806664 accept_connection 3 returned 4 19:29:50.806775 accept_connection 3 returned 0 19:29:50.807234 Read 93 bytes 19:29:50.807341 Process 93 bytes request 19:29:50.807420 Got request: GET /verifiedserver HTTP/1.1 19:29:50.807477 Are-we-friendly question received 19:29:50.807639 Wrote request (93 bytes) input to log/3/server.input 19:29:50.807782 Identifying ourselves as friends 19:29:50.808242 Response sent (57 bytes) and written to log/3/server.response 19:29:50.808335 special request received, no persistency 19:29:50.808393 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 700 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file socks_server.log 19:29:51.845006 Running IPv4 version 19:29:51.845383 Listening on port 43785 19:29:51.845625 Wrote pid 140570 to log/3/server/socks_server.pid 19:29:51.845871 Wrote port 43785 to log/3/server/socks_server.port === End of file socks_server.log === Start of file valgrind700 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conveCMD (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/1/valgrind701 ../src/curl -q --output log/1/curl701.out --include --trace-ascii log/1/trace701 --trace-config all --trace-time --socks5 127.0.0.1:42493 http://127.0.0.1:41477/701 > log/1/stdout701 2> log/1/stderr701 CMD (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/2/valgrind702 ../src/curl -q --output log/2/curl702.out --include --trace-ascii log/2/trace702 --trace-config all --trace-time --socks4 127.0.0.1:44321 http://127.0.0.1:47 > log/2/stdout702 2> log/2/stderr702 CMD (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/4/valgrind703 ../src/curl -q --output log/4/curl703.out --include --trace-ascii log/4/trace703 --trace-config all --trace-time --socks5 127.0.0.1:46015 http://127.0.0.1:47 > log/4/stdout703 2> log/4/stderr703 ntions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind700 startnew: ./server/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 140573 * pid socks => 140573 140573 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/1/valgrind701 ../src/curl -q --output log/1/curl701.out --include --trace-ascii log/1/trace701 --trace-config all --trace-time --socks5 127.0.0.1:42493 http://127.0.0.1:41477/701 > log/1/stdout701 2> log/1/stderr701 701: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind701 ../src/curl -q --output log/1/curl701.out --include --trace-ascii log/1/trace701 --trace-config all --trace-time --socks5 127.0.0.1:42493 http://127.0.0.1:41477/701 > log/1/stdout701 2> log/1/stderr701 === End of file commands.log === Start of file http_server.log 19:29:51.848681 ====> Client connect 19:29:51.848977 accept_connection 3 returned 4 19:29:51.849097 accept_connection 3 returned 0 19:29:51.849591 Read 93 bytes 19:29:51.849715 Process 93 bytes request 19:29:51.849789 Got request: GET /verifiedserver HTTP/1.1 19:29:51.849847 Are-we-friendly question received 19:29:51.849998 Wrote request (93 bytes) input to log/1/server.input 19:29:51.850134 Identifying ourselves as friends 19:29:51.850523 Response sent (57 bytes) and written to log/1/server.response 19:29:51.850616 special request received, no persistency 19:29:51.850668 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 701 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file socks_server.log 19:29:51.871414 Running IPv4 version 19:29:51.871775 Listening on port 42493 19:29:51.871988 Wrote pid 140573 to log/1/server/socks_server.pid 19:29:51.872175 Wrote port 42493 to log/1/server/socks_server.port === End of file socks_server.log === Start of file valgrind701 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind701 startnew: ./server/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 140576 * pid socks => 140576 140576 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/2/valgrind702 ../src/curl -q --output log/2/curl702.out --include --trace-ascii log/2/trace702 --trace-config all --trace-time --socks4 127.0.0.1:44321 http://127.0.0.1:47 > log/2/stdout702 2> log/2/stderr702 curl returned 1, when expecting 97 702: exit FAILED == Contents of files in the log/2/ 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/2/valgrind702 ../src/curl -q --output log/2/curl702.out --include --trace-ascii log/2/trace702 --trace-config all --trace-time --socks4 127.0.0.1:44321 http://127.0.0.1:47 > log/2/stdout702 2> log/2/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 19:29:51.921010 Running IPv4 version 19:29:51.921458 Listening on port 44321 19:29:51.921717 Wrote pid 140576 to log/2/server/socks_server.pid 19:29:51.921953 Wrote port 44321 to log/2/server/socks_server.port === End of file socks_server.log === Start of file valgrind702 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind702 startnew: ./server/socksd --port 0 --pidfile log/4/server/socks_server.pid --portfile log/4/server/socks_server.port --rCMD (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/1/valgrind705 ../src/curl -q --output log/1/curl705.out --include --trace-ascii log/1/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:41477/705 > log/1/stdout705 2> log/1/stderr705 CMD (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/valgrind704 ../src/curl -q --output log/3/curl704.out --include --trace-ascii log/3/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:37525/704 > log/3/stdout704 2> log/3/stderr704 eqfile 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 140627 * pid socks => 140627 140627 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-config all --trace-time --socks5 127.0.0.1:46015 http://127.0.0.1:47 > log/4/stdout703 2> log/4/stderr703 curl returned 1, when expecting 97 703: exit FAILED == 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-config all --trace-time --socks5 127.0.0.1:46015 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 19:29:51.365566 Running IPv4 version 19:29:51.365963 Listening on port 46015 19:29:51.366229 Wrote pid 140627 to log/4/server/socks_server.pid 19:29:51.366453 Wrote port 46015 to log/4/server/socks_server.port === End of file socks_server.log === Start of file valgrind703 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind703 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/1/valgrind705 ../src/curl -q --output log/1/curl705.out --include --trace-ascii log/1/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:41477/705 > log/1/stdout705 2> log/1/stderr705 curl returned 1, when expecting 7 705: exit FAILED == Contents of files in the log/1/ 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/1/valgrind705 ../src/curl -q --output log/1/curl705.out --include --trace-ascii log/1/trace705 --trace-config all --trace-time --socks5 127.0.0.1:47 http://127.0.0.1:41477/705 > log/1/stdout705 2> log/1/stderr705 === End of file commands.log === Start of file http_server.log 19:29:53.418073 ====> Client connect 19:29:53.418334 accept_connection 3 returned 4 19:29:53.418462 accept_connection 3 returned 0 19:29:53.418565 Read 93 bytes 19:29:53.418631 Process 93 bytes request 19:29:53.418696 Got request: GET /verifiedserver HTTP/1.1 19:29:53.418754 Are-we-friendly question received 19:29:53.418901 Wrote request (93 bytes) input to log/1/server.input 19:29:53.419026 Identifying ourselves as friends 19:29:53.419517 Response sent (57 bytes) and written to log/1/server.response 19:29:53.419611 special request received, no persistency 19:29:53.419668 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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: 103115 === End of file server.response === Start of file valgrind705 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind705 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/3/valgrind704 ../src/curl -q --output log/3/curl704.out --include --trace-ascii log/3/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:37525/704 > log/3/stdout704 2> log/3/stderr704 curl returned 1, when expecting 7 704: exit FAILED == Contents of files in the log/3/ 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/3/valgrind704 ../src/curl -q --output log/3/curl704.out --include --trace-ascii log/3/trace704 --trace-config all --trace-time --socks4 127.0.0.1:47 http://127.0.0.1:37525/704 > log/3/stdout704 2> log/3/stderr704 === End of file commands.log === Start of file http_server.log 19:29:52.396875 ====> Client connect 19:29:52.397102 accept_connection 3 returned 4 19:29:52.397227 accept_connection 3 returned 0 19:29:52.397750 Read 93 bytes 19:29:52.397891 Process 93 bytes request 19:29:52.397987 Got request: GET /verifiedserver HTTP/1.1 19:29:52.398060 Are-we-friendly question received 19:29:52.398236 Wrote requCMD (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/2/valgrind706 ../src/curl -q --output log/2/curl706.out --include --trace-ascii log/2/trace706 --trace-config all --trace-time --socks4 127.0.0.1:44321 ftp://127.0.0.1:36773/ > log/2/stdout706 2> log/2/stderr706 est (93 bytes) input to log/3/server.input 19:29:52.398412 Identifying ourselves as friends 19:29:52.398869 Response sent (57 bytes) and written to log/3/server.response 19:29:52.398967 special request received, no persistency 19:29:52.399027 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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: 105156 === End of file server.response === Start of file valgrind704 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind704 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-config all --trace-time --socks4 127.0.0.1:44321 ftp://127.0.0.1:36773/ > log/2/stdout706 2> log/2/stderr706 706: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --socks4 127.0.0.1:44321 ftp://127.0.0.1:36773/ > log/2/stdout706 2> log/2/stderr706 === End of file commands.log === Start of file ftp_server.log 19:29:52.995397 ====> Client connect 19:29:52.996216 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:52.997793 < "USER anonymous" 19:29:52.998115 > "331 We are happy you popped in![CR][LF]" 19:29:52.999275 < "PASS ftp@example.com" 19:29:52.999585 > "230 Welcome you silly person[CR][LF]" 19:29:53.000593 < "PWD" 19:29:53.000873 > "257 "/" is current directory[CR][LF]" 19:29:53.001962 < "EPSV" 19:29:53.002195 ====> Passive DATA channel requested by client 19:29:53.002362 DATA sockfilt for passive data channel starting... 19:29:53.009777 DATA sockfilt for passive data channel started (pid 140824) 19:29:53.010526 DATA sockfilt for passive data channel listens on port 41247 19:29:53.010859 > "229 Entering Passive Mode (|||41247|)[LF]" 19:29:53.011032 Client has been notified that DATA conn will be accepted on port 41247 19:29:53.012293 Client connects to port 41247 19:29:53.012576 ====> Client established passive DATA connection on port 41247 19:29:53.013128 < "TYPE I" 19:29:53.013470 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:53.014525 < "SIZE verifiedserver" 19:29:53.014823 > "213 18[CR][LF]" 19:29:53.015763 < "RETR verifiedserver" 19:29:53.016086 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:53.016743 =====> Closing passive DATA connection... 19:29:53.017265 Server disconnects passive DATA connection 19:29:53.017625 Fancy that; client wants to DISC, too 19:29:53.017877 Server disconnected passive DATA connection 19:29:53.018040 DATA sockfilt for passive data channel quits (pid 140824) 19:29:53.019135 DATA sockfilt for passive data channel quit (pid 140824) 19:29:53.019363 =====> Closed passive DATA connection 19:29:53.019590 > "226 File transfer complete[CR][LF]" 19:29:53.058699 < "QUIT" 19:29:53.059062 > "221 bye bye baby[CR][LF]" 19:29:53.062104 MAIN sockfilt said DISC 19:29:53.062553 ====> Client disconnected 19:29:53.063023 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:52.458264 ====> Client connect 19:29:52.459460 Received DATA (on stdin) 19:29:52.459602 > 160 bytes data, server => client 19:29:52.459688 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:52.459764 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:52.459824 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:52.460267 < 16 bytes data, client => server 19:29:52.460395 'USER anonymous\r\n' 19:29:52.461387 Received DATA (on stdin) 19:29:52.461510 > 33 bytes data, server => client 19:29:52.461597 '331 We are happy you popped in!\r\n' 19:29:52.462016 < 22 bytes data, client => server 19:29:52.462149 'PASS ftp@example.com\r\n' 19:29:52.462847 Received DATA (on stdin) 19:29:52.462974 > 30 bytes data, server => client 19:29:52.463061 '230 Welcome you silly person\r\n' 19:29:52.463468 < 5 bytes data, client => server 19:29:52.463593 'PWD\r\n' 19:29:52.464139 Received DATA (on stdin) 19:29:52.464263 > 30 bytes data, server => client 19:29:52.464343 '257 "/" is current directory\r\n' 19:29:52.464828 < 6 bytes data, client => server 19:29:52.464969 'EPSV\r\n' 19:29:52.474156 Received DATA (on stdin) 19:29:52.474274 > 38 bytes data, server => client 19:29:52.474352 '229 Entering Passive Mode (|||41247|)\n' 19:29:52.475230 < 8 bytes data, client => server 19:29:52.475327 'TYPE I\r\n' 19:29:52.476786 Received DATA (on stdin) 19:29:52.476902 > 33 bytes data, server => client 19:29:52.476980 '200 I modify TYPE as you wanted\r\n' 19:29:52.477402 < 21 bytes data, client => server 19:29:52.477530 'SIZE verifiedserver\r\n' 19:29:52.478092 Received DATA (on stdin) 19:29:52.478197 > 8 bytes data, server => client 19:29:52.478263 '213 18\r\n' 19:29:52.478654 < 21 bytes data, client => server 19:29:52.478774 'RETR verifiedserver\r\n' 19:29:52.479350 Received DATA (on stdin) 19:29:52.479470 > 29 bytes data, server => client 19:29:52.479542 '150 Binary junk (18 bytes).\r\n' 19:29:52.485143 Received DATA (on stdin) 19:29:52.485285 > 28 bytes data, server => client 19:29:52.485366 '226 File transfer complete\r\n' 19:29:52.521403 < 6 bytes data, client => server 19:29:52.521566 'QUIT\r\n' 19:29:52.522335 Received DATA (on stdin) 19:29:52.522476 > 18 bytes data, server => client 19:29:52.522573 '221 bye bye baby\r\n' 19:29:52.523013 ====> Client disconnect 19:29:52.525786 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:53.472027 Running IPv4 version 19:29:53.472356 Listening on port 41247 19:2CMD (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/valgrind709 ../src/curl -q --output log/3/curl709.out --include --trace-ascii log/3/trace709 --trace-config all --trace-time http://127.0.0.1:37525/709 > log/3/stdout709 2> log/3/stderr709 CMD (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/1/valgrind708 ../src/curl -q --output log/1/curl708.out --include --trace-ascii log/1/trace708 --trace-config all --trace-time http://127.0.0.1:41477/708 > log/1/stdout708 2> log/1/stderr708 9:53.472607 Wrote pid 140824 to log/2/server/ftp_sockdata.pid 19:29:53.472795 Received PING (on stdin) 19:29:53.473383 Received PORT (on stdin) 19:29:53.475030 ====> Client connect 19:29:53.479764 Received DATA (on stdin) 19:29:53.479886 > 18 bytes data, server => client 19:29:53.479960 'WE ROOLZ: 116354\r\n' 19:29:53.480364 ====> Client disconnect 19:29:53.480890 Received DISC (on stdin) 19:29:53.481018 Crikey! Client also wants to disconnect 19:29:53.481104 Received ACKD (on stdin) 19:29:53.481486 Received QUIT (on stdin) 19:29:53.481582 quits 19:29:53.481833 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 706 === End of file server.cmd === Start of file valgrind706 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind706 setenv http_proxy = socks5://127.0.0.1:43785 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/3/valgrind709 ../src/curl -q --output log/3/curl709.out --include --trace-ascii log/3/trace709 --trace-config all --trace-time http://127.0.0.1:37525/709 > log/3/stdout709 2> log/3/stderr709 709: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind709 ../src/curl -q --output log/3/curl709.out --include --trace-ascii log/3/trace709 --trace-config all --trace-time http://127.0.0.1:37525/709 > log/3/stdout709 2> log/3/stderr709 === End of file commands.log === Start of file http_server.log 19:29:53.043931 ====> Client connect 19:29:53.044144 accept_connection 3 returned 4 19:29:53.044256 accept_connection 3 returned 0 19:29:53.044355 Read 93 bytes 19:29:53.044426 Process 93 bytes request 19:29:53.044495 Got request: GET /verifiedserver HTTP/1.1 19:29:53.044570 Are-we-friendly question received 19:29:53.044821 Wrote request (93 bytes) input to log/3/server.input 19:29:53.045025 Identifying ourselves as friends 19:29:53.045675 Response sent (57 bytes) and written to log/3/server.response 19:29:53.045775 special request received, no persistency 19:29:53.045828 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 709 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind709 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind709 setenv all_proxy = socks4://127.0.0.1:42493 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/1/valgrind708 ../src/curl -q --output log/1/curl708.out --include --trace-ascii log/1/trace708 --trace-config all --trace-time http://127.0.0.1:41477/708 > log/1/stdout708 2> log/1/stderr708 708: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind708 ../src/curl -q --output log/1/curl708.out --include --trace-ascii log/1/trace708 --trace-config all --trace-time http://127.0.0.1:41477/708 > log/1/stdout708 2> log/1/stderr708 === End of file commands.log === Start of file http_server.log 19:29:54.017123 ====> Client connect 19:29:54.017362 accept_connection 3 returned 4 19:29:54.017489 accept_connection 3 returned 0 19:29:54.017597 Read 93 bytes 19:29:54.017675 Process 93 bytes request 19:29:54.017754 Got request: GET /verifiedserver HTTP/1.1 19:29:54.017828 Are-we-friendly question received 19:29:54.018001 Wrote request (93 bytes) input to log/1/server.input 19:29:54.018152 Identifying ourselves as friends 19:29:54.018674 Response sent (57 bytes) and written to log/1/server.response 19:29:54.018769 special request received, no persistency 19:29:54.018825 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End ofCMD (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/4/valgrind707 ../src/curl -q --output log/4/curl707.out --include --trace-ascii log/4/trace707 --trace-config all --trace-time --socks5 127.0.0.1:46015 ftp://127.0.0.1:40809/ > log/4/stdout707 2> log/4/stderr707 file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 708 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind708 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind708 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/4/valgrind707 ../src/curl -q --output log/4/curl707.out --include --trace-ascii log/4/trace707 --trace-config all --trace-time --socks5 127.0.0.1:46015 ftp://127.0.0.1:40809/ > log/4/stdout707 2> log/4/stderr707 707: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind707 ../src/curl -q --output log/4/curl707.out --include --trace-ascii log/4/trace707 --trace-config all --trace-time --socks5 127.0.0.1:46015 ftp://127.0.0.1:40809/ > log/4/stdout707 2> log/4/stderr707 === End of file commands.log === Start of file ftp_server.log 19:29:53.537048 ====> Client connect 19:29:53.537936 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:53.540309 < "USER anonymous" 19:29:53.540687 > "331 We are happy you popped in![CR][LF]" 19:29:53.542886 < "PASS ftp@example.com" 19:29:53.543316 > "230 Welcome you silly person[CR][LF]" 19:29:53.545045 < "PWD" 19:29:53.545649 > "257 "/" is current directory[CR][LF]" 19:29:53.547357 < "EPSV" 19:29:53.547565 ====> Passive DATA channel requested by client 19:29:53.547688 DATA sockfilt for passive data channel starting... 19:29:53.556557 DATA sockfilt for passive data channel started (pid 141061) 19:29:53.557888 DATA sockfilt for passive data channel listens on port 37725 19:29:53.558728 > "229 Entering Passive Mode (|||37725|)[LF]" 19:29:53.559328 Client has been notified that DATA conn will be accepted on port 37725 19:29:53.563528 Client connects to port 37725 19:29:53.563946 ====> Client established passive DATA connection on port 37725 19:29:53.564482 < "TYPE I" 19:29:53.564754 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:53.566643 < "SIZE verifiedserver" 19:29:53.567838 > "213 18[CR][LF]" 19:29:53.569778 < "RETR verifiedserver" 19:29:53.570528 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:53.571105 =====> Closing passive DATA connection... 19:29:53.571273 Server disconnects passive DATA connection 19:29:53.572232 Server disconnected passive DATA connection 19:29:53.572613 DATA sockfilt for passive data channel quits (pid 141061) 19:29:53.574538 DATA sockfilt for passive data channel quit (pid 141061) 19:29:53.574914 =====> Closed passive DATA connection 19:29:53.575490 > "226 File transfer complete[CR][LF]" 19:29:53.614587 < "QUIT" 19:29:53.614865 > "221 bye bye baby[CR][LF]" 19:29:53.617815 MAIN sockfilt said DISC 19:29:53.618064 ====> Client disconnected 19:29:53.618365 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:52.999895 ====> Client connect 19:29:53.001558 Received DATA (on stdin) 19:29:53.001755 > 160 bytes data, server => client 19:29:53.001887 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:53.001991 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:53.002073 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:53.002643 < 16 bytes data, client => server 19:29:53.002776 'USER anonymous\r\n' 19:29:53.004228 Received DATA (on stdin) 19:29:53.004345 > 33 bytes data, server => client 19:29:53.004423 '331 We are happy you popped in!\r\n' 19:29:53.005359 < 22 bytes data, client => server 19:29:53.005515 'PASS ftp@example.com\r\n' 19:29:53.006911 Received DATA (on stdin) 19:29:53.007042 > 30 bytes data, server => client 19:29:53.007118 '230 Welcome you silly person\r\n' 19:29:53.007575 < 5 bytes data, client => server 19:29:53.007707 'PWD\r\n' 19:29:53.009213 Received DATA (on stdin) 19:29:53.009339 > 30 bytes data, server => client 19:29:53.009420 '257 "/" is current directory\r\n' 19:29:53.009967 < 6 bytes data, client => server 19:29:53.010116 'EPSV\r\n' 19:29:53.023260 Received DATA (on stdin) 19:29:53.023577 > 38 bytes data, server => client 19:29:53.023819 '229 Entering Passive Mode (|||37725|)\n' 19:29:53.026150 < 8 bytes data, client => server 19:29:53.026418 'TYPE I\r\n' 19:29:53.028215 Received DATA (on stdin) 19:29:53.028334 > 33 bytes data, server => client 19:29:53.028413 '200 I modify TYPE as you wanted\r\n' 19:29:53.029022 < 21 bytes data, client => server 19:29:53.029231 'SIZE verifiedserver\r\n' 19:29:53.030680 Received DATA (on stdin) 19:29:53.030928 > 8 bytes data, server => client 19:29:53.031434 '213 18\r\n' 19:29:53.032053 < 21 bytes data, client => server 19:29:53.032316 'RETR verifiedserver\r\n' 19:29:53.033438 Received DATA (on stdin) 19:29:53.033560 > 29 bytes data, server => client 19:29:53.034767 '150 Binary junk (18 bytes).\r\n' 19:29:53.038358 Received DATA (on stdin) 19:29:53.038463 > 28 bytes data, server => client 19:29:53.038571 '226 File transfer complete\r\n' 19:29:53.077218 < 6 bytes data, client => server 19:29:53.077357 'QUIT\r\n' 19:29:53.078293 Received DATA (on stdin) 19:29:53.078384 > 18 bytes data, server => client 19:29:53.078446 '221 bye bye baby\r\n' 19:29:53.080774 ====> Client disconnect 19:29:53.081829 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:53.018664 Running IPv4 version 19:29:53.018973 Listening on port 37725 19:29:53.019324 Wrote pid 141061 to log/4/server/ftp_sockdata.pid 19:29:53.019499 Received PING (on stdin) 19:29:53.020249 Received PORT (on stdin) 19:29:53.025574 ====> Client connect 19:29:53.034163 Received DATA (on stdin) 19:29:53.034281 > 18 bytes data, server => client 19:29:53.034356 'WE ROOLZ: 109451\r\n' 19:29:53.034751 Received DISC (on stdin) 19:29:53.034870 ====> Client forcibly disconnected 19:29:53.036231 Received QUIT (on stdin) 19:29:53.036396 quits 19:29:53.036949 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 707 === End of file server.cmd === Start of file valgrind707 valgrind: Fatal error at startup: a function redirection vaCMD (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/2/valgrind710 ../src/curl -q --output log/2/curl710.out --include --trace-ascii log/2/trace710 --trace-config all --trace-time http://127.0.0.1:39599/710 --proxy socks5://127.0.0.1:44321 > log/2/stdout710 2> log/2/stderr710 CMD (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/valgrind711 ../src/curl -q --output log/3/curl711.out --include --trace-ascii log/3/trace711 --trace-config all --trace-time ftp://127.0.0.1:43789/711 > log/3/stdout711 2> log/3/stderr711 lgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind707 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/2/valgrind710 ../src/curl -q --output log/2/curl710.out --include --trace-ascii log/2/trace710 --trace-config all --trace-time http://127.0.0.1:39599/710 --proxy socks5://127.0.0.1:44321 > log/2/stdout710 2> log/2/stderr710 710: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind710 ../src/curl -q --output log/2/curl710.out --include --trace-ascii log/2/trace710 --trace-config all --trace-time http://127.0.0.1:39599/710 --proxy socks5://127.0.0.1:44321 > log/2/stdout710 2> log/2/stderr710 === End of file commands.log === Start of file http_server.log 19:29:54.195318 ====> Client connect 19:29:54.195567 accept_connection 3 returned 4 19:29:54.195688 accept_connection 3 returned 0 19:29:54.195790 Read 93 bytes 19:29:54.195858 Process 93 bytes request 19:29:54.195930 Got request: GET /verifiedserver HTTP/1.1 19:29:54.195991 Are-we-friendly question received 19:29:54.196145 Wrote request (93 bytes) input to log/2/server.input 19:29:54.196301 Identifying ourselves as friends 19:29:54.196877 Response sent (57 bytes) and written to log/2/server.response 19:29:54.196978 special request received, no persistency 19:29:54.197032 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 710 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind710 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind710 setenv all_proxy = socks5://127.0.0.1:43785 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/3/valgrind711 ../src/curl -q --output log/3/curl711.out --include --trace-ascii log/3/trace711 --trace-config all --trace-time ftp://127.0.0.1:43789/711 > log/3/stdout711 2> log/3/stderr711 711: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind711 ../src/curl -q --output log/3/curl711.out --include --trace-ascii log/3/trace711 --trace-config all --trace-time ftp://127.0.0.1:43789/711 > log/3/stdout711 2> log/3/stderr711 === End of file commands.log === Start of file ftp_server.log 19:29:54.193157 ====> Client connect 19:29:54.194179 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:54.195677 < "USER anonymous" 19:29:54.195975 > "331 We are happy you popped in![CR][LF]" 19:29:54.197567 < "PASS ftp@example.com" 19:29:54.197856 > "230 Welcome you silly person[CR][LF]" 19:29:54.199448 < "PWD" 19:29:54.199784 > "257 "/" is current directory[CR][LF]" 19:29:54.200826 < "EPSV" 19:29:54.201043 ====> Passive DATA channel requested by client 19:29:54.201183 DATA sockfilt for passive data channel starting... 19:29:54.216206 DATA sockfilt for passive data channel started (pid 141303) 19:29:54.217045 DATA sockfilt for passive data channel listens on port 43615 19:29:54.217377 > "229 Entering Passive Mode (|||43615|)[LF]" 19:29:54.217660 Client has been notified that DATA conn will be accepted on port 43615 19:29:54.219861 Client connects to port 43615 19:29:54.220116 ====> Client established passive DATA connection on port 43615 19:29:54.220705 < "TYPE I" 19:29:54.221009 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:54.222219 < "SIZE verifiedserver" 19:29:54.222586 > "213 18[CR][LF]" 19:29:54.225125 < "RETR verifiedserver" 19:29:54.225512 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:54.226023 =====> Closing passive DATA connection... 19:29:54.226255 Server disconnects passive DATA connection 19:29:54.226765 Server disconnected passive DATA connection 19:29:54.226988 DATA sockfilt for passive data channel quits (pid 141303) 19:29:54.228784 DATA sockfilt for passive data channel quit (pid 141303) 19:29:54.228944 =====> Closed passive DATA connection 19:29:54.229193 > "226 File transfer complete[CR][LF]" 19:29CMD (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/1/valgrind712 ../src/curl -q --output log/1/curl712.out --include --trace-ascii log/1/trace712 --trace-config all --trace-time ftp://127.0.0.1:39333/712 --proxy socks5://127.0.0.1:42493 > log/1/stdout712 2> log/1/stderr712 :54.274917 < "QUIT" 19:29:54.275207 > "221 bye bye baby[CR][LF]" 19:29:54.276008 MAIN sockfilt said DISC 19:29:54.276255 ====> Client disconnected 19:29:54.276552 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:54.655936 ====> Client connect 19:29:54.657388 Received DATA (on stdin) 19:29:54.657548 > 160 bytes data, server => client 19:29:54.657638 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:54.657717 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:54.657789 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:54.658310 < 16 bytes data, client => server 19:29:54.658447 'USER anonymous\r\n' 19:29:54.659210 Received DATA (on stdin) 19:29:54.659319 > 33 bytes data, server => client 19:29:54.659395 '331 We are happy you popped in!\r\n' 19:29:54.660302 < 22 bytes data, client => server 19:29:54.660425 'PASS ftp@example.com\r\n' 19:29:54.661078 Received DATA (on stdin) 19:29:54.661193 > 30 bytes data, server => client 19:29:54.661264 '230 Welcome you silly person\r\n' 19:29:54.662191 < 5 bytes data, client => server 19:29:54.662319 'PWD\r\n' 19:29:54.662998 Received DATA (on stdin) 19:29:54.663139 > 30 bytes data, server => client 19:29:54.663223 '257 "/" is current directory\r\n' 19:29:54.663687 < 6 bytes data, client => server 19:29:54.663811 'EPSV\r\n' 19:29:54.680849 Received DATA (on stdin) 19:29:54.680977 > 38 bytes data, server => client 19:29:54.681055 '229 Entering Passive Mode (|||43615|)\n' 19:29:54.682998 < 8 bytes data, client => server 19:29:54.683104 'TYPE I\r\n' 19:29:54.684231 Received DATA (on stdin) 19:29:54.684351 > 33 bytes data, server => client 19:29:54.684423 '200 I modify TYPE as you wanted\r\n' 19:29:54.685044 < 21 bytes data, client => server 19:29:54.685170 'SIZE verifiedserver\r\n' 19:29:54.685820 Received DATA (on stdin) 19:29:54.685940 > 8 bytes data, server => client 19:29:54.686011 '213 18\r\n' 19:29:54.687922 < 21 bytes data, client => server 19:29:54.688042 'RETR verifiedserver\r\n' 19:29:54.689000 Received DATA (on stdin) 19:29:54.689121 > 29 bytes data, server => client 19:29:54.689195 '150 Binary junk (18 bytes).\r\n' 19:29:54.693795 Received DATA (on stdin) 19:29:54.693893 > 28 bytes data, server => client 19:29:54.694008 '226 File transfer complete\r\n' 19:29:54.737691 < 6 bytes data, client => server 19:29:54.737842 'QUIT\r\n' 19:29:54.738438 Received DATA (on stdin) 19:29:54.738549 > 18 bytes data, server => client 19:29:54.738627 '221 bye bye baby\r\n' 19:29:54.739024 ====> Client disconnect 19:29:54.739503 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:54.677719 Running IPv4 version 19:29:54.678354 Listening on port 43615 19:29:54.678871 Wrote pid 141303 to log/3/server/ftp_sockdata.pid 19:29:54.679118 Received PING (on stdin) 19:29:54.679792 Received PORT (on stdin) 19:29:54.682858 ====> Client connect 19:29:54.689033 Received DATA (on stdin) 19:29:54.689149 > 18 bytes data, server => client 19:29:54.689222 'WE ROOLZ: 109394\r\n' 19:29:54.689701 Received DISC (on stdin) 19:29:54.689928 ====> Client forcibly disconnected 19:29:54.690821 Received QUIT (on stdin) 19:29:54.691037 quits 19:29:54.691424 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 711 === End of file server.cmd === Start of file valgrind711 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind712 ../src/curl -q --output log/1/curl712.out --include --trace-ascii log/1/trace712 --trace-config all --trace-time ftp://127.0.0.1:39333/712 --proxy socks5://127.0.0.1:42493 > log/1/stdout712 2> log/1/stderr712 712: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind712 ../src/curl -q --output log/1/curl712.out --include --trace-ascii log/1/trace712 --trace-config all --trace-time ftp://127.0.0.1:39333/712 --proxy socks5://127.0.0.1:42493 > log/1/stdout712 2> log/1/stderr712 === End of file commands.log === Start of file ftp_server.log 19:29:54.200484 ====> Client connect 19:29:54.201282 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:54.202965 < "USER anonymous" 19:29:54.203565 > "331 We are happy you popped in![CR][LF]" 19:29:54.204746 < "PASS ftp@example.com" 19:29:54.205113 > "230 Welcome you silly person[CR][LF]" 19:29:54.206976 < "PWD" 19:29:54.207475 > "257 "/" is current directory[CR][LF]" 19:29:54.210703 < "EPSV" 19:29:54.210969 ====> Passive DATA channel requested by client 19:29:54.211145 DATA sockfilt for passive data channel starting... 19:29:54.225342 DATA sockfilt for passive data channel started (pid 141306) 19:29:54.226791 DATA sockfilt for passive data channel listens on port 37793 19:29:54.227111 > "229 Entering Passive Mode (|||37793|)[LF]" 19:29:54.227325 Client has been notified that DATA conn will be accepted on port 37793 19:29:54.228637 Client connects to port 37793 19:29:54.228889 ====> Client established passive DATA connection on port 37793 19:29:54.229671 < "TYPE I" 19:29:54.230330 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:54.231575 < "SIZE verifiedserver" 19:29:54.231887 > "213 18[CR][LF]" 19:29:54.232854 < "RETR verifiedserver" 19:29:54.233187 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:54.234091 =====> Closing passive DATA connection... 19:29:54.234808 Server disconnects passive DATA connection 19:29:54.235609 Server disconnected passive DATA connection 19:29:54.235824 DATA sockfilt for passive data channel quits (pid 141306) 19:29:54.237103 DATA sockfilt for passive data channel quit (pid 141306) 19:29:54.237388 =====> Closed passive DATA connection 19:29:54.237755 > "226 File transfer complete[CR][LF]" 19:29:54.278719 < "QUIT" 19:29:54.279042 > "221 bye bye baby[CR][LF]" 19:29:54.284777 MAIN sockfilt said DISC 19:29:54.285070 ====> Client disconnected 19:29:54.285502 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:54.663333 ====> Client connect 19:29:54.664761 Received DATA (on stdin) 19:29:54.664920 > 160 byteCMD (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/4/valgrind713 ../src/curl -q --output log/4/curl713.out --include --trace-ascii log/4/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:40809 --proxy socks5://127.0.0.1:46015 > log/4/stdout713 2> log/4/stderr713 s data, server => client 19:29:54.665017 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:54.665094 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:54.665162 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:54.665597 < 16 bytes data, client => server 19:29:54.665734 'USER anonymous\r\n' 19:29:54.666797 Received DATA (on stdin) 19:29:54.666988 > 33 bytes data, server => client 19:29:54.667070 '331 We are happy you popped in!\r\n' 19:29:54.667517 < 22 bytes data, client => server 19:29:54.667655 'PASS ftp@example.com\r\n' 19:29:54.668344 Received DATA (on stdin) 19:29:54.668479 > 30 bytes data, server => client 19:29:54.668561 '230 Welcome you silly person\r\n' 19:29:54.669422 < 5 bytes data, client => server 19:29:54.669685 'PWD\r\n' 19:29:54.670690 Received DATA (on stdin) 19:29:54.670909 > 30 bytes data, server => client 19:29:54.671044 '257 "/" is current directory\r\n' 19:29:54.673467 < 6 bytes data, client => server 19:29:54.673609 'EPSV\r\n' 19:29:54.690316 Received DATA (on stdin) 19:29:54.690451 > 38 bytes data, server => client 19:29:54.690573 '229 Entering Passive Mode (|||37793|)\n' 19:29:54.691982 < 8 bytes data, client => server 19:29:54.692077 'TYPE I\r\n' 19:29:54.693590 Received DATA (on stdin) 19:29:54.693712 > 33 bytes data, server => client 19:29:54.693791 '200 I modify TYPE as you wanted\r\n' 19:29:54.694367 < 21 bytes data, client => server 19:29:54.694482 'SIZE verifiedserver\r\n' 19:29:54.695115 Received DATA (on stdin) 19:29:54.695231 > 8 bytes data, server => client 19:29:54.695295 '213 18\r\n' 19:29:54.695677 < 21 bytes data, client => server 19:29:54.695792 'RETR verifiedserver\r\n' 19:29:54.696404 Received DATA (on stdin) 19:29:54.696518 > 29 bytes data, server => client 19:29:54.696591 '150 Binary junk (18 bytes).\r\n' 19:29:54.700984 Received DATA (on stdin) 19:29:54.701125 > 28 bytes data, server => client 19:29:54.701198 '226 File transfer complete\r\n' 19:29:54.741445 < 6 bytes data, client => server 19:29:54.741579 'QUIT\r\n' 19:29:54.742274 Received DATA (on stdin) 19:29:54.742381 > 18 bytes data, server => client 19:29:54.742457 '221 bye bye baby\r\n' 19:29:54.747784 ====> Client disconnect 19:29:54.748585 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:54.686922 Running IPv4 version 19:29:54.687511 Listening on port 37793 19:29:54.688240 Wrote pid 141306 to log/1/server/ftp_sockdata.pid 19:29:54.688373 Received PING (on stdin) 19:29:54.689450 Received PORT (on stdin) 19:29:54.691677 ====> Client connect 19:29:54.696968 Received DATA (on stdin) 19:29:54.697147 > 18 bytes data, server => client 19:29:54.697226 'WE ROOLZ: 109414\r\n' 19:29:54.698620 Received DISC (on stdin) 19:29:54.698771 ====> Client forcibly disconnected 19:29:54.699241 Received QUIT (on stdin) 19:29:54.699378 quits 19:29:54.699675 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 712 === End of file server.cmd === Start of file valgrind712 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind712 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/4/valgrind713 ../src/curl -q --output log/4/curl713.out --include --trace-ascii log/4/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:40809 --proxy socks5://127.0.0.1:46015 > log/4/stdout713 2> log/4/stderr713 713: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind713 ../src/curl -q --output log/4/curl713.out --include --trace-ascii log/4/trace713 --trace-config all --trace-time ftp://ftp.example.com/713 --connect-to ::127.0.0.1:40809 --proxy socks5://127.0.0.1:46015 > log/4/stdout713 2> log/4/stderr713 === End of file commands.log === Start of file ftp_server.log 19:29:54.272637 ====> Client connect 19:29:54.273285 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:54.276724 < "USER anonymous" 19:29:54.277050 > "331 We are happy you popped in![CR][LF]" 19:29:54.279514 < "PASS ftp@example.com" 19:29:54.279823 > "230 Welcome you silly person[CR][LF]" 19:29:54.285931 < "PWD" 19:29:54.286245 > "257 "/" is current directory[CR][LF]" 19:29:54.287596 < "EPSV" 19:29:54.287827 ====> Passive DATA channel requested by client 19:29:54.287975 DATA sockfilt for passive data channel starting... 19:29:54.295279 DATA sockfilt for passive data channel started (pid 141320) 19:29:54.295901 DATA sockfilt for passive data channel listens on port 44643 19:29:54.296465 > "229 Entering Passive Mode (|||44643|)[LF]" 19:29:54.296625 Client has been notified that DATA conn will be accepted on port 44643 19:29:54.297809 Client connects to port 44643 19:29:54.298066 ====> Client established passive DATA connection on port 44643 19:29:54.298701 < "TYPE I" 19:29:54.299076 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:54.300102 < "SIZE verifiedserver" 19:29:54.300432 > "213 18[CR][LF]" 19:29:54.301380 < "RETR verifiedserver" 19:29:54.301790 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:54.302482 =====> Closing passive DATA connection... 19:29:54.303042 Server disconnects passive DATA connection 19:29:54.303266 Fancy that; client wants to DISC, too 19:29:54.303531 Server disconnected passive DATA connection 19:29:54.303732 DATA sockfilt for passive data channel quits (pid 141320) 19:29:54.304860 DATA sockfilt for passive data channel quit (pid 141320) 19:29:54.305064 =====> Closed passive DATA connection 19:29:54.305251 > "226 File transfer complete[CR][LF]" 19:29:54.346465 < "QUIT" 19:29:54.346809 > "221 bye bye baby[CR][LF]" 19:29:54.351466 MAIN sockfilt said DISC 19:29:54.351749 ====> Client disconnected 19:29:54.352105 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:53.735489 ====> Client connect 19:29:53.736751 Received DATA (on stdin) 19:29:53.736909 > 160 bytes data, server => client 19:29:53.736999 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:53.737069 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:53.737129 '_ {| |___ \CMD (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/2/valgrind714 ../src/curl -q --output log/2/curl714.out --include --trace-ascii log/2/trace714 --trace-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:36773 --proxytunnel --proxy http://127.0.0.1:42719 > log/2/stdout714 2> log/2/stderr714 r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:53.737992 < 16 bytes data, client => server 19:29:53.738094 'USER anonymous\r\n' 19:29:53.740534 Received DATA (on stdin) 19:29:53.740713 > 33 bytes data, server => client 19:29:53.740839 '331 We are happy you popped in!\r\n' 19:29:53.742090 < 22 bytes data, client => server 19:29:53.742202 'PASS ftp@example.com\r\n' 19:29:53.743264 Received DATA (on stdin) 19:29:53.743398 > 30 bytes data, server => client 19:29:53.743489 '230 Welcome you silly person\r\n' 19:29:53.748359 < 5 bytes data, client => server 19:29:53.748471 'PWD\r\n' 19:29:53.749475 Received DATA (on stdin) 19:29:53.749591 > 30 bytes data, server => client 19:29:53.749664 '257 "/" is current directory\r\n' 19:29:53.750101 < 6 bytes data, client => server 19:29:53.750218 'EPSV\r\n' 19:29:53.759431 Received DATA (on stdin) 19:29:53.759548 > 38 bytes data, server => client 19:29:53.760021 '229 Entering Passive Mode (|||44643|)\n' 19:29:53.760962 < 8 bytes data, client => server 19:29:53.761074 'TYPE I\r\n' 19:29:53.762299 Received DATA (on stdin) 19:29:53.762407 > 33 bytes data, server => client 19:29:53.762478 '200 I modify TYPE as you wanted\r\n' 19:29:53.762944 < 21 bytes data, client => server 19:29:53.763073 'SIZE verifiedserver\r\n' 19:29:53.763660 Received DATA (on stdin) 19:29:53.763770 > 8 bytes data, server => client 19:29:53.763838 '213 18\r\n' 19:29:53.764236 < 21 bytes data, client => server 19:29:53.764346 'RETR verifiedserver\r\n' 19:29:53.765009 Received DATA (on stdin) 19:29:53.765130 > 29 bytes data, server => client 19:29:53.765206 '150 Binary junk (18 bytes).\r\n' 19:29:53.768489 Received DATA (on stdin) 19:29:53.768583 > 28 bytes data, server => client 19:29:53.768705 '226 File transfer complete\r\n' 19:29:53.809261 < 6 bytes data, client => server 19:29:53.809419 'QUIT\r\n' 19:29:53.810045 Received DATA (on stdin) 19:29:53.810200 > 18 bytes data, server => client 19:29:53.810293 '221 bye bye baby\r\n' 19:29:53.810781 ====> Client disconnect 19:29:53.815008 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:54.757611 Running IPv4 version 19:29:54.757927 Listening on port 44643 19:29:54.758174 Wrote pid 141320 to log/4/server/ftp_sockdata.pid 19:29:54.758288 Received PING (on stdin) 19:29:54.758797 Received PORT (on stdin) 19:29:54.760629 ====> Client connect 19:29:54.765456 Received DATA (on stdin) 19:29:54.765582 > 18 bytes data, server => client 19:29:54.765655 'WE ROOLZ: 109451\r\n' 19:29:54.766086 ====> Client disconnect 19:29:54.766497 Received DISC (on stdin) 19:29:54.766615 Crikey! Client also wants to disconnect 19:29:54.766721 Received ACKD (on stdin) 19:29:54.767169 Received QUIT (on stdin) 19:29:54.767273 quits 19:29:54.767534 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file server.cmd Testnum 713 === End of file server.cmd === Start of file valgrind713 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind713 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-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:36773 --proxytunnel --proxy http://127.0.0.1:42719 > log/2/stdout714 2> log/2/stderr714 714: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time ftp://ftp.example.com.714/714 --connect-to ::connect.example.com.714:36773 --proxytunnel --proxy http://127.0.0.1:42719 > log/2/stdout714 2> log/2/stderr714 === End of file commands.log === Start of file ftp_server.log 19:29:54.357342 ====> Client connect 19:29:54.358218 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:54.359523 < "USER anonymous" 19:29:54.359823 > "331 We are happy you popped in![CR][LF]" 19:29:54.360797 < "PASS ftp@example.com" 19:29:54.361065 > "230 Welcome you silly person[CR][LF]" 19:29:54.362270 < "PWD" 19:29:54.362546 > "257 "/" is current directory[CR][LF]" 19:29:54.363503 < "EPSV" 19:29:54.363719 ====> Passive DATA channel requested by client 19:29:54.363829 DATA sockfilt for passive data channel starting... 19:29:54.371368 DATA sockfilt for passive data channel started (pid 141336) 19:29:54.372145 DATA sockfilt for passive data channel listens on port 37869 19:29:54.372465 > "229 Entering Passive Mode (|||37869|)[LF]" 19:29:54.372649 Client has been notified that DATA conn will be accepted on port 37869 19:29:54.373801 Client connects to port 37869 19:29:54.374066 ====> Client established passive DATA connection on port 37869 19:29:54.374598 < "TYPE I" 19:29:54.374866 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:54.375992 < "SIZE verifiedserver" 19:29:54.376314 > "213 18[CR][LF]" 19:29:54.377574 < "RETR verifiedserver" 19:29:54.377957 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:54.378464 =====> Closing passive DATA connection... 19:29:54.378692 Server disconnects passive DATA connection 19:29:54.379024 Fancy that; client wants to DISC, too 19:29:54.379253 Server disconnected passive DATA connection 19:29:54.379412 DATA sockfilt for passive data channel quits (pid 141336) 19:29:54.380901 DATA sockfilt for passive data channel quit (pid 141336) 19:29:54.381156 =====> Closed passive DATA connection 19:29:54.381397 > "226 File transfer complete[CR][LF]" 19:29:54.422547 < "QUIT" 19:29:54.422853 > "221 bye bye baby[CR][LF]" 19:29:54.427569 MAIN sockfilt said DISC 19:29:54.427842 ====> Client disconnected 19:29:54.428223 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:53.820181 ====> Client connect 19:29:53.821424 Received DATA (on stdin) 19:29:53.821557 > 160 bytes data, server => client 19:29:53.821635 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:53.821709 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:53.821777 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:53.822218 < 16 bytes datCMD (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/1/valgrind716 ../src/curl -q --output log/1/curl716.out --include --trace-ascii log/1/trace716 --trace-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:42493 > log/1/stdout716 2> log/1/stderr716 a, client => server 19:29:53.822347 'USER anonymous\r\n' 19:29:53.823054 Received DATA (on stdin) 19:29:53.823162 > 33 bytes data, server => client 19:29:53.823232 '331 We are happy you popped in!\r\n' 19:29:53.823611 < 22 bytes data, client => server 19:29:53.823731 'PASS ftp@example.com\r\n' 19:29:53.824285 Received DATA (on stdin) 19:29:53.824413 > 30 bytes data, server => client 19:29:53.824547 '230 Welcome you silly person\r\n' 19:29:53.825084 < 5 bytes data, client => server 19:29:53.825209 'PWD\r\n' 19:29:53.825769 Received DATA (on stdin) 19:29:53.825866 > 30 bytes data, server => client 19:29:53.825937 '257 "/" is current directory\r\n' 19:29:53.826335 < 6 bytes data, client => server 19:29:53.826456 'EPSV\r\n' 19:29:53.835702 Received DATA (on stdin) 19:29:53.835856 > 38 bytes data, server => client 19:29:53.835945 '229 Entering Passive Mode (|||37869|)\n' 19:29:53.836982 < 8 bytes data, client => server 19:29:53.837109 'TYPE I\r\n' 19:29:53.838102 Received DATA (on stdin) 19:29:53.838221 > 33 bytes data, server => client 19:29:53.838305 '200 I modify TYPE as you wanted\r\n' 19:29:53.838793 < 21 bytes data, client => server 19:29:53.838922 'SIZE verifiedserver\r\n' 19:29:53.839553 Received DATA (on stdin) 19:29:53.839676 > 8 bytes data, server => client 19:29:53.839758 '213 18\r\n' 19:29:53.840231 < 21 bytes data, client => server 19:29:53.840358 'RETR verifiedserver\r\n' 19:29:53.841182 Received DATA (on stdin) 19:29:53.841317 > 29 bytes data, server => client 19:29:53.841408 '150 Binary junk (18 bytes).\r\n' 19:29:53.844829 Received DATA (on stdin) 19:29:53.844967 > 28 bytes data, server => client 19:29:53.845059 '226 File transfer complete\r\n' 19:29:53.885321 < 6 bytes data, client => server 19:29:53.885472 'QUIT\r\n' 19:29:53.886085 Received DATA (on stdin) 19:29:53.886200 > 18 bytes data, server => client 19:29:53.886279 '221 bye bye baby\r\n' 19:29:53.890516 ====> Client disconnect 19:29:53.891723 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:54.833437 Running IPv4 version 19:29:54.833864 Listening on port 37869 19:29:54.834188 Wrote pid 141336 to log/2/server/ftp_sockdata.pid 19:29:54.834344 Received PING (on stdin) 19:29:54.834981 Received PORT (on stdin) 19:29:54.836779 ====> Client connect 19:29:54.841435 Received DATA (on stdin) 19:29:54.841549 > 18 bytes data, server => client 19:29:54.841637 'WE ROOLZ: 116354\r\n' 19:29:54.842050 ====> Client disconnect 19:29:54.842224 Received DISC (on stdin) 19:29:54.842320 Crikey! Client also wants to disconnect 19:29:54.842519 Received ACKD (on stdin) 19:29:54.842824 Received QUIT (on stdin) 19:29:54.843005 quits 19:29:54.843345 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 19:29:53.970969 ====> Client connect 19:29:53.971194 accept_connection 3 returned 4 19:29:53.971322 accept_connection 3 returned 0 19:29:53.971814 Read 93 bytes 19:29:53.971941 Process 93 bytes request 19:29:53.972023 Got request: GET /verifiedserver HTTP/1.1 19:29:53.972091 Are-we-friendly question received 19:29:53.972265 Wrote request (93 bytes) input to log/2/proxy.input 19:29:53.972420 Identifying ourselves as friends 19:29:53.973105 Response sent (57 bytes) and written to log/2/proxy.response 19:29:53.973210 special request received, no persistency 19:29:53.973266 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:42719... * Connected to 127.0.0.1 (127.0.0.1) port 42719 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:42719 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108135 === End of file http2_verify.out === Start of file proxy.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 108135 === End of file proxy.response === Start of file server.cmd Testnum 714 === End of file server.cmd === Start of file valgrind714 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind714 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-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:42493 > log/1/stdout716 2> log/1/stderr716 curl returned 1, when expecting 97 716: exit FAILED == 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-config all --trace-time http://hohoho.example.com:99/716 -x socks5://AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:b@127.0.0.1:42493 > 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 valgrind716 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: CMD (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/valgrind715 ../src/curl -q --output log/3/curl715.out --include --trace-ascii log/3/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:43789 --proxytunnel --proxy 127.0.0.1:45749 --preproxy socks5://127.0.0.1:43785 > log/3/stdout715 2> log/3/stderr715 to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind716 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/3/valgrind715 ../src/curl -q --output log/3/curl715.out --include --trace-ascii log/3/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:43789 --proxytunnel --proxy 127.0.0.1:45749 --preproxy socks5://127.0.0.1:43785 > log/3/stdout715 2> log/3/stderr715 715: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind715 ../src/curl -q --output log/3/curl715.out --include --trace-ascii log/3/trace715 --trace-config all --trace-time ftp://ftp.example.com.715/715 --connect-to ::connect.example.com.715:43789 --proxytunnel --proxy 127.0.0.1:45749 --preproxy socks5://127.0.0.1:43785 > log/3/stdout715 2> log/3/stderr715 === End of file commands.log === Start of file ftp_server.log 19:29:54.890676 ====> Client connect 19:29:54.891503 > "220- _ _ ____ _ [CR][LF]220- ___| | | | _ \| | [CR][LF]220- / __| | | | |_) | | [CR][LF]220- | (__| |_| | _ {| |___ [CR][LF]220 \___|\___/|_| \_\_____|[CR][LF]" 19:29:54.902323 < "USER anonymous" 19:29:54.902634 > "331 We are happy you popped in![CR][LF]" 19:29:54.903784 < "PASS ftp@example.com" 19:29:54.904047 > "230 Welcome you silly person[CR][LF]" 19:29:54.905257 < "PWD" 19:29:54.905657 > "257 "/" is current directory[CR][LF]" 19:29:54.906610 < "EPSV" 19:29:54.906819 ====> Passive DATA channel requested by client 19:29:54.906957 DATA sockfilt for passive data channel starting... 19:29:54.914530 DATA sockfilt for passive data channel started (pid 141561) 19:29:54.915251 DATA sockfilt for passive data channel listens on port 39699 19:29:54.915559 > "229 Entering Passive Mode (|||39699|)[LF]" 19:29:54.915724 Client has been notified that DATA conn will be accepted on port 39699 19:29:54.916836 Client connects to port 39699 19:29:54.917058 ====> Client established passive DATA connection on port 39699 19:29:54.917615 < "TYPE I" 19:29:54.917941 > "200 I modify TYPE as you wanted[CR][LF]" 19:29:54.919134 < "SIZE verifiedserver" 19:29:54.919504 > "213 18[CR][LF]" 19:29:54.920487 < "RETR verifiedserver" 19:29:54.920802 > "150 Binary junk (18 bytes).[CR][LF]" 19:29:54.921351 =====> Closing passive DATA connection... 19:29:54.921624 Server disconnects passive DATA connection 19:29:54.922288 Server disconnected passive DATA connection 19:29:54.922502 DATA sockfilt for passive data channel quits (pid 141561) 19:29:54.930460 DATA sockfilt for passive data channel quit (pid 141561) 19:29:54.930742 =====> Closed passive DATA connection 19:29:54.931004 > "226 File transfer complete[CR][LF]" 19:29:54.964399 < "QUIT" 19:29:54.964769 > "221 bye bye baby[CR][LF]" 19:29:54.965709 MAIN sockfilt said DISC 19:29:54.966066 ====> Client disconnected 19:29:54.966407 Awaiting input === End of file ftp_server.log === Start of file ftp_sockctrl.log 19:29:55.353491 ====> Client connect 19:29:55.354703 Received DATA (on stdin) 19:29:55.354840 > 160 bytes data, server => client 19:29:55.354931 '220- _ _ ____ _ \r\n220- ___| | | | _ \| | ' 19:29:55.355020 ' \r\n220- / __| | | | |_) | | \r\n220- | (__| |_| | ' 19:29:55.355100 '_ {| |___ \r\n220 \___|\___/|_| \_\_____|\r\n' 19:29:55.364972 < 16 bytes data, client => server 19:29:55.365135 'USER anonymous\r\n' 19:29:55.365881 Received DATA (on stdin) 19:29:55.366001 > 33 bytes data, server => client 19:29:55.366086 '331 We are happy you popped in!\r\n' 19:29:55.366620 < 22 bytes data, client => server 19:29:55.366740 'PASS ftp@example.com\r\n' 19:29:55.367263 Received DATA (on stdin) 19:29:55.367377 > 30 bytes data, server => client 19:29:55.367447 '230 Welcome you silly person\r\n' 19:29:55.368096 < 5 bytes data, client => server 19:29:55.368213 'PWD\r\n' 19:29:55.368861 Received DATA (on stdin) 19:29:55.368994 > 30 bytes data, server => client 19:29:55.369062 '257 "/" is current directory\r\n' 19:29:55.369453 < 6 bytes data, client => server 19:29:55.369570 'EPSV\r\n' 19:29:55.378780 Received DATA (on stdin) 19:29:55.378912 > 38 bytes data, server => client 19:29:55.378994 '229 Entering Passive Mode (|||39699|)\n' 19:29:55.379825 < 8 bytes data, client => server 19:29:55.379962 'TYPE I\r\n' 19:29:55.381154 Received DATA (on stdin) 19:29:55.381337 > 33 bytes data, server => client 19:29:55.381458 '200 I modify TYPE as you wanted\r\n' 19:29:55.381899 < 21 bytes data, client => server 19:29:55.382031 'SIZE verifiedserver\r\n' 19:29:55.382719 Received DATA (on stdin) 19:29:55.382844 > 8 bytes data, server => client 19:29:55.382917 '213 18\r\n' 19:29:55.383316 < 21 bytes data, client => server 19:29:55.383436 'RETR verifiedserver\r\n' 19:29:55.384019 Received DATA (on stdin) 19:29:55.384144 > 29 bytes data, server => client 19:29:55.384221 '150 Binary junk (18 bytes).\r\n' 19:29:55.394213 Received DATA (on stdin) 19:29:55.394410 > 28 bytes data, server => client 19:29:55.394497 '226 File transfer complete\r\n' 19:29:55.425359 < 6 bytes data, client => server 19:29:55.425531 'QUIT\r\n' 19:29:55.427988 Received DATA (on stdin) 19:29:55.428122 > 18 bytes data, server => client 19:29:55.428199 '221 bye bye baby\r\n' 19:29:55.428604 ====> Client disconnect 19:29:55.429295 Received ACKD (on stdin) === End of file ftp_sockctrl.log === Start of file ftp_sockdata.log 19:29:54.376746 Running IPv4 version 19:29:54.377126 Listening on port 39699 19:29:54.377365 Wrote pid 141561 to log/3/server/ftp_sockdata.pid 19:29:54.377498 Received PING (on stdin) 19:29:54.378069 Received PORT (on stdin) 19:29:54.379861 ====> Client connect 19:29:54.384305 Received DATA (on stdin) 19:29:54.384700 > 18 bytes data, server => client 19:29:54.384812 'WE ROOLZ: 109394\r\n' 19:29:54.385307 Received DISC (on stdin) 19:29:54.385443 ====> Client forcibly disconnected 19:29:54.392721 Received QUIT (on stdin) 19:29:54.392874 quits 19:29:54.393120 ============> sockfilt quits === End of file ftp_sockdata.log === Start of file http2_server.log 19:29:55.523370 ====> Client connect 19:29:55.523595 accept_connection 3 returned 4 19:29:55.523700 accept_connection 3 returned 0 19:29:55.523792 Read 93 bytes 19:29:55.523859 Process 93 bytes request 19:29:55.523926 Got request: GET /verifiedserver HTTP/1.1 19:29:55.523988 Are-we-friendly question received 19:29:55.524122 Wrote request (93 bytes) input to log/3/proxy.input 19:29:55.524253 Identifying ourselves as friends 19:29:55.524890 Response sent (57 bytes) and written to log/3/proxy.response 19:29:55.525010 special request received, no persistency 19:29:55.525093 ====> Client disconnect 0 === End of file http2_server.log === Start of file http2_verify.log * Trying 127.0.0.1:45749... * Connected to 127.0.0.1 (127.0.0.1) port 45749 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:45749 > User-Agent: curl/8.13.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 left intact === End of file http2_verify.log === Start of file http2_verify.out WE ROOLZ: 108276 === End of file http2_verify.out === Start of file proxy.response HTTCMD (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/4/valgrind717 ../src/curl -q --output log/4/curl717.out --include --trace-ascii log/4/trace717 --trace-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:46015 > log/4/stdout717 2> log/4/stderr717 CMD (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/2/valgrind718 ../src/curl -q --output log/2/curl718.out --include --trace-ascii log/2/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:39599 --proxytunnel > log/2/stdout718 2> log/2/stderr718 P/1.1 200 OK Content-Length: 18 WE ROOLZ: 108276 === End of file proxy.response === Start of file server.cmd Testnum 715 === End of file server.cmd === Start of file valgrind715 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind715 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-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:46015 > log/4/stdout717 2> log/4/stderr717 717: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://127.0.0.1:1/717 -x socks5://uz3r:p4ssworm@127.0.0.1:46015 > log/4/stdout717 2> log/4/stderr717 === End of file commands.log === Start of file http_server.log 19:29:55.551285 ====> Client connect 19:29:55.551520 accept_connection 3 returned 4 19:29:55.551650 accept_connection 3 returned 0 19:29:55.551776 Read 93 bytes 19:29:55.551867 Process 93 bytes request 19:29:55.551982 Got request: GET /verifiedserver HTTP/1.1 19:29:55.552115 Are-we-friendly question received 19:29:55.552293 Wrote request (93 bytes) input to log/4/server.input 19:29:55.552445 Identifying ourselves as friends 19:29:55.553120 Response sent (57 bytes) and written to log/4/server.response 19:29:55.553237 special request received, no persistency 19:29:55.553300 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd method 2 user uz3r password p4ssworm backendport 43669 Testnum 717 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind717 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind718 ../src/curl -q --output log/2/curl718.out --include --trace-ascii log/2/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:39599 --proxytunnel > log/2/stdout718 2> log/2/stderr718 718: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind718 ../src/curl -q --output log/2/curl718.out --include --trace-ascii log/2/trace718 --trace-config all --trace-time http://test.remote.haxx.se.718:8990/path/7180002 --proxy http://127.0.0.1:39599 --proxytunnel > log/2/stdout718 2> log/2/stderr718 === End of file commands.log === Start of file http_server.log 19:29:55.636193 ====> Client connect 19:29:55.636476 accept_connection 3 returned 4 19:29:55.636663 accept_connection 3 returned 0 19:29:55.636799 Read 93 bytes 19:29:55.636878 Process 93 bytes request 19:29:55.636971 Got request: GET /verifiedserver HTTP/1.1 19:29:55.637054 Are-we-friendly question received 19:29:55.637233 Wrote request (93 bytes) input to log/2/server.input 19:29:55.637404 Identifying ourselves as friends 19:29:55.637972 Response sent (57 bytes) and written to log/2/server.response 19:29:55.638068 special request received, no persistency 19:29:55.638126 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 718 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind718 valgrind: Fatal error at startup: a function redirectiCMD (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/1/valgrind719 ../src/curl -q --output log/1/curl719.out --include --trace-ascii log/1/trace719 --trace-config all --trace-time http://[2200::33]:41477/719 --proxy socks5h://127.0.0.1:42493 > log/1/stdout719 2> log/1/stderr719 CMD (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/valgrind720 ../src/curl -q --output log/3/curl720.out --include --trace-ascii log/3/trace720 --trace-config all --trace-time http://12.34.56.78:37525/720 --proxy socks5h://127.0.0.1:43785 > log/3/stdout720 2> log/3/stderr720 on valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind718 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/1/valgrind719 ../src/curl -q --output log/1/curl719.out --include --trace-ascii log/1/trace719 --trace-config all --trace-time http://[2200::33]:41477/719 --proxy socks5h://127.0.0.1:42493 > log/1/stdout719 2> log/1/stderr719 719: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind719 ../src/curl -q --output log/1/curl719.out --include --trace-ascii log/1/trace719 --trace-config all --trace-time http://[2200::33]:41477/719 --proxy socks5h://127.0.0.1:42493 > log/1/stdout719 2> log/1/stderr719 === End of file commands.log === Start of file http_server.log 19:29:55.997633 ====> Client connect 19:29:55.998153 accept_connection 3 returned 4 19:29:55.998443 accept_connection 3 returned 0 19:29:55.998730 Read 93 bytes 19:29:55.998929 Process 93 bytes request 19:29:55.999095 Got request: GET /verifiedserver HTTP/1.1 19:29:55.999295 Are-we-friendly question received 19:29:55.999606 Wrote request (93 bytes) input to log/1/server.input 19:29:55.999999 Identifying ourselves as friends 19:29:56.001195 Response sent (57 bytes) and written to log/1/server.response 19:29:56.001300 special request received, no persistency 19:29:56.001375 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 719 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind719 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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-config all --trace-time http://12.34.56.78:37525/720 --proxy socks5h://127.0.0.1:43785 > log/3/stdout720 2> log/3/stderr720 720: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time http://12.34.56.78:37525/720 --proxy socks5h://127.0.0.1:43785 > log/3/stdout720 2> log/3/stderr720 === End of file commands.log === Start of file http_server.log 19:29:55.170139 ====> Client connect 19:29:55.170367 accept_connection 3 returned 4 19:29:55.170486 accept_connection 3 returned 0 19:29:55.171103 Read 93 bytes 19:29:55.171233 Process 93 bytes request 19:29:55.171315 Got request: GET /verifiedserver HTTP/1.1 19:29:55.171393 Are-we-friendly question received 19:29:55.171571 Wrote request (93 bytes) input to log/3/server.input 19:29:55.171752 Identifying ourselves as friends 19:29:55.172193 Response sent (57 bytes) and written to log/3/server.response 19:29:55.172290 special request received, no persistency 19:29:55.172365 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 720 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind720 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the objecCMD (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/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43669/721 --proxy socks5h://127.0.0.1:46015 > log/4/stdout721 2> log/4/stderr721 CMD (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/2/valgrind722 ../src/curl -q --output log/2/curl722.out --include --trace-ascii log/2/trace722 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:39599 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 t with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43669/721 --proxy socks5h://127.0.0.1:46015 > log/4/stdout721 2> log/4/stderr721 721: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind721 ../src/curl -q --output log/4/curl721.out --include --trace-ascii log/4/trace721 --trace-config all --trace-time http://this.is.a.host.name:43669/721 --proxy socks5h://127.0.0.1:46015 > log/4/stdout721 2> log/4/stderr721 === End of file commands.log === Start of file http_server.log 19:29:56.201677 ====> Client connect 19:29:56.201908 accept_connection 3 returned 4 19:29:56.202044 accept_connection 3 returned 0 19:29:56.202168 Read 93 bytes 19:29:56.202252 Process 93 bytes request 19:29:56.202336 Got request: GET /verifiedserver HTTP/1.1 19:29:56.202410 Are-we-friendly question received 19:29:56.202650 Wrote request (93 bytes) input to log/4/server.input 19:29:56.202830 Identifying ourselves as friends 19:29:56.203400 Response sent (57 bytes) and written to log/4/server.response 19:29:56.203500 special request received, no persistency 19:29:56.203561 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 721 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind721 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind721 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-config all --trace-time --ipfs-gateway http://127.0.0.1:39599 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 722: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --ipfs-gateway http://127.0.0.1:39599 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout722 2> log/2/stderr722 === End of file commands.log === Start of file http_server.log 19:29:56.297620 ====> Client connect 19:29:56.297831 accept_connection 3 returned 4 19:29:56.297942 accept_connection 3 returned 0 19:29:56.298053 Read 93 bytes 19:29:56.298136 Process 93 bytes request 19:29:56.298212 Got request: GET /verifiedserver HTTP/1.1 19:29:56.298283 Are-we-friendly question received 19:29:56.298434 Wrote request (93 bytes) input to log/2/server.input 19:29:56.298594 Identifying ourselves as friends 19:29:56.299119 Response sent (57 bytes) and written to log/2/server.response 19:29:56.299216 special request received, no persistency 19:29:56.299267 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 722 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind722 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or CMD (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/1/valgrind723 ../src/curl -q --output log/1/curl723.out --include --trace-ascii log/1/trace723 --trace-config all --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout723 2> log/1/stderr723 CMD (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/2/valgrind726 ../src/curl -q --output log/2/curl726.out --include --trace-ascii log/2/trace726 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout726 2> log/2/stderr726 whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind722 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-config all --trace-time --ipfs-gateway http://nonexisting,local:8080 ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout723 2> log/1/stderr723 curl returned 1, when expecting 43 723: exit FAILED == 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-config all --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 19:29:56.681891 ====> Client connect 19:29:56.682153 accept_connection 3 returned 4 19:29:56.682449 accept_connection 3 returned 0 19:29:56.683331 Read 93 bytes 19:29:56.683533 Process 93 bytes request 19:29:56.683651 Got request: GET /verifiedserver HTTP/1.1 19:29:56.683715 Are-we-friendly question received 19:29:56.684006 Wrote request (93 bytes) input to log/1/server.input 19:29:56.684158 Identifying ourselves as friends 19:29:56.684889 Response sent (57 bytes) and written to log/1/server.response 19:29:56.684988 special request received, no persistency 19:29:56.685047 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === 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: 103115 === End of file server.response === Start of file valgrind723 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind723 setenv HOME = /build/curl/src/build-curl/tests test 0726...[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/2/valgrind726 ../src/curl -q --output log/2/curl726.out --include --trace-ascii log/2/trace726 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout726 2> log/2/stderr726 curl returned 1, when expecting 37 726: exit FAILED == Contents of files in the log/2/ 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/2/valgrind726 ../src/curl -q --output log/2/curl726.out --include --trace-ascii log/2/trace726 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout726 2> log/2/stderr726 === End of file commands.log === Start of file http_server.log 19:29:56.957317 ====> Client connect 19:29:56.957548 accept_connection 3 returned 4 19:29:56.957667 accept_connection 3 returned 0 19:29:56.957771 Read 93 bytes 19:29:56.957847 Process 93 bytes request 19:29:56.957920 Got request: GET /verifiedserver HTTP/1.1 19:29:56.957982 Are-we-friendly question received 19:29:56.958150 Wrote request (93 bytes) input to log/2/server.input 19:29:56.958301 Identifying ourselves as friends 19:29:56.958815 Response sent (57 bytes) and written to log/2/server.response 19:29:56.958906 special request received, no persistency 19:29:56.958963 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind726 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-dCMD (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/1/valgrind727 ../src/curl -q --output log/1/curl727.out --include --trace-ascii log/1/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout727 2> log/1/stderr727 CMD (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/2/valgrind728 ../src/curl -q --output log/2/curl728.out --include --trace-ascii log/2/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:44321 http://127.0.0.1:39599/728 > log/2/stdout728 2> log/2/stderr728 ebuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind727 ../src/curl -q --output log/1/curl727.out --include --trace-ascii log/1/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout727 2> log/1/stderr727 727: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind727 ../src/curl -q --output log/1/curl727.out --include --trace-ascii log/1/trace727 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 ipns://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout727 2> log/1/stderr727 === End of file commands.log === Start of file http_server.log 19:29:57.323183 ====> Client connect 19:29:57.323463 accept_connection 3 returned 4 19:29:57.323620 accept_connection 3 returned 0 19:29:57.323752 Read 93 bytes 19:29:57.323845 Process 93 bytes request 19:29:57.323934 Got request: GET /verifiedserver HTTP/1.1 19:29:57.324015 Are-we-friendly question received 19:29:57.324204 Wrote request (93 bytes) input to log/1/server.input 19:29:57.324399 Identifying ourselves as friends 19:29:57.325106 Response sent (57 bytes) and written to log/1/server.response 19:29:57.325211 special request received, no persistency 19:29:57.325361 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 727 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind727 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind727 CMD (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/valgrind724 ../src/curl -q --output log/3/curl724.out --include --trace-ascii log/3/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout724 2> log/3/stderr724 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/2/valgrind728 ../src/curl -q --output log/2/curl728.out --include --trace-ascii log/2/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:44321 http://127.0.0.1:39599/728 > log/2/stdout728 2> log/2/stderr728 728: stderr FAILED: --- log/2/check-expected 2025-05-23 19:29:57.543113993 +0000 +++ log/2/check-generated 2025-05-23 19:29:57.543113993 +0000 @@ -1 +0,0 @@ -curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF] == Contents of files in the log/2/ dir after test 728 === Start of file check-expected curl: (97) SOCKS5: the destination hostname is too long to be resolved remotely by the proxy.[CR][LF] === End of file check-expected === Start of file commands.log ../libtool --mode=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/valgrind728 ../src/curl -q --output log/2/curl728.out --include --trace-ascii log/2/trace728 --trace-config all --trace-time --no-progress-meter --location --proxy socks5h://127.0.0.1:44321 http://127.0.0.1:39599/728 > log/2/stdout728 2> log/2/stderr728 === End of file commands.log === Start of file http_server.log 19:29:57.543078 ====> Client connect 19:29:57.543312 accept_connection 3 returned 4 19:29:57.543433 accept_connection 3 returned 0 19:29:57.543539 Read 93 bytes 19:29:57.543614 Process 93 bytes request 19:29:57.543703 Got request: GET /verifiedserver HTTP/1.1 19:29:57.543781 Are-we-friendly question received 19:29:57.543952 Wrote request (93 bytes) input to log/2/server.input 19:29:57.544112 Identifying ourselves as friends 19:29:57.545005 Response sent (57 bytes) and written to log/2/server.response 19:29:57.545118 special request received, no persistency 19:29:57.545173 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 728 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind728 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind728 setenv HOME = /build/curl/src/build-curl/tests/log/3 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/3/valgrind724 ../src/curl -q --output log/3/curl724.out --include --trace-ascii log/3/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout724 2> log/3/stderr724 724: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind724 ../src/curl -q --output log/3/curl724.out --include --trace-ascii log/3/trace724 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout724 2> log/3/stderr724 === End of file commands.log === Start of file http_server.log 19:29:55.808127 ====> Client connect 19:29:55.808364 accept_connection 3 returned 4 19:29:55.808495 accept_connection 3 returned 0 19:29:55.808676 Read 93 bytes 19:29:55.808783 Process 93 bytes request 19:29:55.808870 Got request: GET /verifiedserver HTTP/1.1 19:29:55.808941 Are-we-friendly question received 19:29:55.809116 Wrote request (93 bytes) input to log/3/server.input 19:29:55.809306 Identifying ourselves as friends 19:29:55.809901 Response sent (57 bytes) and written to log/3/server.response 19:29:55.810004 special request received, no persistency 19:29:55.810074 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 724 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind724 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot contCMD (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/4/valgrind725 ../src/curl -q --output log/4/curl725.out --include --trace-ascii log/4/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout725 2> log/4/stderr725 CMD (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/1/valgrind729 ../src/curl -q --output log/1/curl729.out --include --trace-ascii log/1/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:42493 > log/1/stdout729 2> log/1/stderr729 inue -- exiting now. Sorry. === End of file valgrind724 setenv HOME = /build/curl/src/build-curl/tests/log/4 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/4/valgrind725 ../src/curl -q --output log/4/curl725.out --include --trace-ascii log/4/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout725 2> log/4/stderr725 curl returned 1, when expecting 3 725: exit FAILED == Contents of files in the log/4/ 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/4/valgrind725 ../src/curl -q --output log/4/curl725.out --include --trace-ascii log/4/trace725 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout725 2> log/4/stderr725 === End of file commands.log === Start of file http_server.log 19:29:56.855528 ====> Client connect 19:29:56.855773 accept_connection 3 returned 4 19:29:56.855887 accept_connection 3 returned 0 19:29:56.856357 Read 93 bytes 19:29:56.856494 Process 93 bytes request 19:29:56.856798 Got request: GET /verifiedserver HTTP/1.1 19:29:56.856938 Are-we-friendly question received 19:29:56.857166 Wrote request (93 bytes) input to log/4/server.input 19:29:56.857349 Identifying ourselves as friends 19:29:56.857751 Response sent (57 bytes) and written to log/4/server.response 19:29:56.857841 special request received, no persistency 19:29:56.857903 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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: 103118 === End of file server.response === Start of file valgrind725 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind725 test 0729...[SOCKS4 with very long proxy 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/valgrind729 ../src/curl -q --output log/1/curl729.out --include --trace-ascii log/1/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:42493 > log/1/stdout729 2> log/1/stderr729 curl returned 1, when expecting 97 729: exit FAILED == Contents of files in the log/1/ 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/1/valgrind729 ../src/curl -q --output log/1/curl729.out --include --trace-ascii log/1/trace729 --trace-config all --trace-time http://fake --limit-rate 1 -x socks4a://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa@127.0.0.1:42493 > log/1/stdout729 2> log/1/stderr729 === End of file commands.log === Start of file http_server.log 19:29:57.880516 ====> Client connect 19:29:57.880870 accept_connection 3 returned 4 19:29:57.880995 accept_connection 3 returned 0 19:29:57.881090 Read 93 bytes 19:29:57.881153 Process 93 bytes request 19:29:57.881219 Got request: GET /verifiedserver HTTP/1.1 19:29:57.881274 Are-we-friendly question received 19:29:57.881470 Wrote request (93 bytes) input to log/1/server.input 19:29:57.881597 Identifying ourselves as friends 19:29:57.882026 Response sent (57 bytes) and written to log/1/server.response 19:29:57.882110 special request received, no persistency 19:29:57.882161 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 729 === CMD (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/2/valgrind730 ../src/curl -q --output log/2/curl730.out --include --trace-ascii log/2/trace730 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 CMD (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/4/valgrind732 ../src/curl -q --output log/4/curl732.out --include --trace-ascii log/4/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/4/stdout732 2> log/4/stderr732 End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind729 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind729 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-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 730: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == 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-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/foo/bar ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout730 2> log/2/stderr730 === End of file commands.log === Start of file http_server.log 19:29:58.128778 ====> Client connect 19:29:58.129002 accept_connection 3 returned 4 19:29:58.129117 accept_connection 3 returned 0 19:29:58.129210 Read 93 bytes 19:29:58.129274 Process 93 bytes request 19:29:58.129341 Got request: GET /verifiedserver HTTP/1.1 19:29:58.129402 Are-we-friendly question received 19:29:58.129547 Wrote request (93 bytes) input to log/2/server.input 19:29:58.129686 Identifying ourselves as friends 19:29:58.130181 Response sent (57 bytes) and written to log/2/server.response 19:29:58.130264 special request received, no persistency 19:29:58.130315 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 730 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind730 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind730 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/4/valgrind732 ../src/curl -q --output log/4/curl732.out --include --trace-ascii log/4/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/4/stdout732 2> log/4/stderr732 732: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind732 ../src/curl -q --output log/4/curl732.out --include --trace-ascii log/4/trace732 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b" > log/4/stdout732 2> log/4/stderr732 === End of file commands.log === Start of file http_server.log 19:29:58.220135 ====> Client connect 19:29:58.220390 accept_connection 3 returned 4 19:29:58.220531 accept_connection 3 returned 0 19:29:58.220780 Read 93 bytes 19:29:58.220874 Process 93 bytes request 19:29:58.220958 Got request: GET /verifiedserver HTTP/1.1 19:29:58.221034 Are-we-friendly question received 19:29:58.221202 Wrote request (93 bytes) input to log/4/server.input 19:29:58.221371 Identifying ourselves as friends 19:29:58.221931 Response sent (57 bytes) and written to log/4/server.response 19:29:58.222056 special request received, no persistency 19:29:58.222174 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 732 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind732 valgrind: Fatal error at startup: CMD (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/1/valgrind733 ../src/curl -q --output log/1/curl733.out --include --trace-ascii log/1/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/1/stdout733 2> log/1/stderr733 CMD (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/2/valgrind734 ../src/curl -q --output log/2/curl734.out --include --trace-ascii log/2/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/2/stdout734 2> log/2/stderr734 a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/1/valgrind733 ../src/curl -q --output log/1/curl733.out --include --trace-ascii log/1/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/1/stdout733 2> log/1/stderr733 733: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind733 ../src/curl -q --output log/1/curl733.out --include --trace-ascii log/1/trace733 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:41477 "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/1/stdout733 2> log/1/stderr733 === End of file commands.log === Start of file http_server.log 19:29:58.494375 ====> Client connect 19:29:58.494598 accept_connection 3 returned 4 19:29:58.494727 accept_connection 3 returned 0 19:29:58.494844 Read 93 bytes 19:29:58.494946 Process 93 bytes request 19:29:58.495081 Got request: GET /verifiedserver HTTP/1.1 19:29:58.495215 Are-we-friendly question received 19:29:58.495451 Wrote request (93 bytes) input to log/1/server.input 19:29:58.495645 Identifying ourselves as friends 19:29:58.496349 Response sent (57 bytes) and written to log/1/server.response 19:29:58.496443 special request received, no persistency 19:29:58.496496 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 733 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind733 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/2/valgrind734 ../src/curl -q --output log/2/curl734.out --include --trace-ascii log/2/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/2/stdout734 2> log/2/stderr734 734: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind734 ../src/curl -q --output log/2/curl734.out --include --trace-ascii log/2/trace734 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:39599/some/path "ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u/a/b?foo=bar&aaa=bbb" > log/2/stdout734 2> log/2/stderr734 === End of file commands.log === Start of file http_server.log 19:29:58.708442 ====> Client connect 19:29:58.708735 accept_connection 3 returned 4 19:29:58.708861 accept_connection 3 returned 0 19:29:58.708964 Read 93 bytes 19:29:58.709033 Process 93 bytes request 19:29:58.709098 Got request: GET /verifiedserver HTTP/1.1 19:29:58.709156 Are-we-friendly question received 19:29:58.709313 Wrote request (93 bytes) input to log/2/server.input 19:29:58.709479 Identifying ourselves as friends 19:29:58.710129 Response sent (57 bytes) and written to log/2/server.response 19:29:58.710266 special request received, no persistency 19:29:58.710336 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 734 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind734 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination vaCMD (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/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 CMD (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/valgrind731 ../src/curl -q --output log/3/curl731.out --include --trace-ascii log/3/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout731 2> log/3/stderr731 lgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === 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/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 735: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind735 ../src/curl -q --output log/4/curl735.out --include --trace-ascii log/4/trace735 --trace-config all --trace-time --ipfs-gateway http://127.0.0.1:43669/some/path "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/4/stdout735 2> log/4/stderr735 === End of file commands.log === Start of file http_server.log 19:29:58.833380 ====> Client connect 19:29:58.833594 accept_connection 3 returned 4 19:29:58.833703 accept_connection 3 returned 0 19:29:58.834283 Read 93 bytes 19:29:58.834411 Process 93 bytes request 19:29:58.834500 Got request: GET /verifiedserver HTTP/1.1 19:29:58.834567 Are-we-friendly question received 19:29:58.834741 Wrote request (93 bytes) input to log/4/server.input 19:29:58.834903 Identifying ourselves as friends 19:29:58.835426 Response sent (57 bytes) and written to log/4/server.response 19:29:58.835571 special request received, no persistency 19:29:58.835633 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd Testnum 735 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind735 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind735 setenv HOME = /build/curl/src/build-curl/tests/log/3 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/3/valgrind731 ../src/curl -q --output log/3/curl731.out --include --trace-ascii log/3/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout731 2> log/3/stderr731 731: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ 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/3/valgrind731 ../src/curl -q --output log/3/curl731.out --include --trace-ascii log/3/trace731 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/3/stdout731 2> log/3/stderr731 === End of file commands.log === Start of file http_server.log 19:29:57.158153 ====> Client connect 19:29:57.158368 accept_connection 3 returned 4 19:29:57.158476 accept_connection 3 returned 0 19:29:57.158961 Read 93 bytes 19:29:57.159088 Process 93 bytes request 19:29:57.159166 Got request: GET /verifiedserver HTTP/1.1 19:29:57.159224 Are-we-friendly question received 19:29:57.159383 Wrote request (93 bytes) input to log/3/server.input 19:29:57.159519 Identifying ourselves as friends 19:29:57.159950 Response sent (57 bytes) and written to log/3/server.response 19:29:57.160052 special request received, no persistency 19:29:57.160111 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 731 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind731 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrindCMD (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/1/valgrind736 ../src/curl -q --output log/1/curl736.out --include --trace-ascii log/1/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout736 2> log/1/stderr736 CMD (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/2/valgrind737 ../src/curl -q --output log/2/curl737.out --include --trace-ascii log/2/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout737 2> log/2/stderr737 : symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind731 setenv IPFS_PATH = log/1/.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/1/valgrind736 ../src/curl -q --output log/1/curl736.out --include --trace-ascii log/1/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout736 2> log/1/stderr736 736: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind736 ../src/curl -q --output log/1/curl736.out --include --trace-ascii log/1/trace736 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout736 2> log/1/stderr736 === End of file commands.log === Start of file http_server.log 19:29:59.124654 ====> Client connect 19:29:59.124871 accept_connection 3 returned 4 19:29:59.124975 accept_connection 3 returned 0 19:29:59.125460 Read 93 bytes 19:29:59.125627 Process 93 bytes request 19:29:59.125744 Got request: GET /verifiedserver HTTP/1.1 19:29:59.125859 Are-we-friendly question received 19:29:59.126065 Wrote request (93 bytes) input to log/1/server.input 19:29:59.126225 Identifying ourselves as friends 19:29:59.126615 Response sent (57 bytes) and written to log/1/server.response 19:29:59.126701 special request received, no persistency 19:29:59.126754 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 736 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind736 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind736 setenv IPFS_PATH = log/2/.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/2/valgrind737 ../src/curl -q --output log/2/curl737.out --include --trace-ascii log/2/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout737 2> log/2/stderr737 737: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ 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/2/valgrind737 ../src/curl -q --output log/2/curl737.out --include --trace-ascii log/2/trace737 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout737 2> log/2/stderr737 === End of file commands.log === Start of file http_server.log 19:29:59.286759 ====> Client connect 19:29:59.286981 accept_connection 3 returned 4 19:29:59.287100 accept_connection 3 returned 0 19:29:59.287554 Read 93 bytes 19:29:59.287682 Process 93 bytes request 19:29:59.287771 Got request: GET /verifiedserver HTTP/1.1 19:29:59.287835 Are-we-friendly question received 19:29:59.287989 Wrote request (93 bytes) input to log/2/server.input 19:29:59.288167 Identifying ourselves as friends 19:29:59.288712 Response sent (57 bytes) and written to log/2/server.response 19:29:59.288825 special request received, no persistency 19:29:59.288887 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file server.cmd Testnum 737 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind737 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever theCMD (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/4/valgrind738 ../src/curl -q --output log/4/curl738.out --include --trace-ascii log/4/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout738 2> log/4/stderr738 CMD (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/valgrind739 ../src/curl -q --output log/3/curl739.out --include --trace-ascii log/3/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:37525/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/3/stdout739 2> log/3/stderr739 dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind737 setenv IPFS_PATH = log/4/.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/4/valgrind738 ../src/curl -q --output log/4/curl738.out --include --trace-ascii log/4/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout738 2> log/4/stderr738 curl returned 1, when expecting 37 738: exit FAILED == Contents of files in the log/4/ 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/4/valgrind738 ../src/curl -q --output log/4/curl738.out --include --trace-ascii log/4/trace738 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/4/stdout738 2> log/4/stderr738 === End of file commands.log === Start of file http_server.log 19:29:59.423856 ====> Client connect 19:29:59.424086 accept_connection 3 returned 4 19:29:59.424205 accept_connection 3 returned 0 19:29:59.424308 Read 93 bytes 19:29:59.424382 Process 93 bytes request 19:29:59.424459 Got request: GET /verifiedserver HTTP/1.1 19:29:59.424582 Are-we-friendly question received 19:29:59.424775 Wrote request (93 bytes) input to log/4/server.input 19:29:59.424957 Identifying ourselves as friends 19:29:59.425546 Response sent (57 bytes) and written to log/4/server.response 19:29:59.425638 special request received, no persistency 19:29:59.425690 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === 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: 103118 === End of file server.response === Start of file valgrind738 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind738 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/3/valgrind739 ../src/curl -q --output log/3/curl739.out --include --trace-ascii log/3/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:37525/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/3/stdout739 2> log/3/stderr739 curl returned 1, when expecting 3 739: exit FAILED == Contents of files in the log/3/ 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/3/valgrind739 ../src/curl -q --output log/3/curl739.out --include --trace-ascii log/3/trace739 --trace-config all --trace-time --ipfs-gateway "http://127.0.0.1:37525/some/path?biz=baz" "ipns://fancy.tld/a/b?foo=bar&aaa=bbb" > log/3/stdout739 2> log/3/stderr739 === End of file commands.log === Start of file http_server.log 19:29:58.484825 ====> Client connect 19:29:58.485105 accept_connection 3 returned 4 19:29:58.485291 accept_connection 3 returned 0 19:29:58.485418 Read 93 bytes 19:29:58.485502 Process 93 bytes request 19:29:58.485579 Got request: GET /verifiedserver HTTP/1.1 19:29:58.485656 Are-we-friendly question received 19:29:58.485830 Wrote request (93 bytes) input to log/3/server.input 19:29:58.485993 Identifying ourselves as friends 19:29:58.486549 Response sent (57 bytes) and written to log/3/server.response 19:29:58.486642 special request received, no persistency 19:29:58.486697 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === 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: 105156 === End of file server.response === Start of file valgrind739 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note tCMD (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/4/valgrind742 ../src/curl -q --output log/4/curl742.out --include --trace-ascii log/4/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:43669 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46015 > log/4/stdout742 2> log/4/stderr742 CMD (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/valgrind784 ../src/curl -q --output log/3/curl784.out --include --trace-ascii log/3/trace784 --trace-config all --trace-time http://127.0.0.1:37525/784 --variable "name[5-15]@log/3/in784" --expand-data '{{name}}' > log/3/stdout784 2> log/3/stderr784 hat if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind739 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/4/valgrind742 ../src/curl -q --output log/4/curl742.out --include --trace-ascii log/4/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:43669 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46015 > log/4/stdout742 2> log/4/stderr742 742: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ 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/4/valgrind742 ../src/curl -q --output log/4/curl742.out --include --trace-ascii log/4/trace742 --trace-config all --trace-time http://cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:43669 -x socks5h://aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa:bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb@127.0.0.1:46015 > log/4/stdout742 2> log/4/stderr742 === End of file commands.log === Start of file http_server.log 19:30:00.023916 ====> Client connect 19:30:00.024174 accept_connection 3 returned 4 19:30:00.024312 accept_connection 3 returned 0 19:30:00.024434 Read 93 bytes 19:30:00.024869 Process 93 bytes request 19:30:00.024972 Got request: GET /verifiedserver HTTP/1.1 19:30:00.025042 Are-we-friendly question received 19:30:00.025219 Wrote request (93 bytes) input to log/4/server.input 19:30:00.025408 Identifying ourselves as friends 19:30:00.026096 Response sent (57 bytes) and written to log/4/server.response 19:30:00.026195 special request received, no persistency 19:30:00.026253 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file server.cmd method 2 user aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa password bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb backendport 43669 Testnum 742 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind742 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind742 test 0784...[--variable with a file 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/3/valgrind784 ../src/curl -q --output log/3/curl784.out --include --trace-ascii log/3/trace784 --trace-config all --trace-time http://127.0.0.1:37525/784 --variable "name[5-15]@log/3/in784" --expand-data '{{name}}' > log/3/stdout784 2> log/3/stderr784 784: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 784 === Start of file commands.log ../libtool --mode=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/valgrind784 ../src/curl -q --output log/3/curl784.out --include --trace-ascii log/3/trace784 --trace-config all --trace-time http://127.0.0.1:37525/784 --variable "name[5-15]@log/3/in784" --expand-data '{{name}}' > log/3/stdout784 2> log/3/stderr784 === End of file commands.log === Start of file http_server.log 19:29:59.148341 ====> Client connect 19:29:59.148770 accept_connection 3 returned 4 19:29:59.148914 accept_connection 3 returned 0 19:29:59.149416 Read 93 bytes 19:29:59.149550 Process 93 bytes request 19:29:59.149631 Got request: GET /verifiedserver HTTP/1.1 19:29:59.149697 Are-we-friendly question received 19:29:59.149877 Wrote request (93 bytes) input to log/3/server.input 19:29:59.150053 Identifying ourselves as friends 19:29:59.150513 Response sent (57 bytes) and written to log/3/server.response 19:29:59.150616 special request received, no persistency 19:29:59.150679 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525CMD (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/1/valgrind740 ../src/curl -q --output log/1/curl740.out --include --trace-ascii log/1/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout740 2> log/1/stderr740 CMD (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/2/valgrind741 ../src/curl -q --output log/2/curl741.out --include --trace-ascii log/2/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout741 2> log/2/stderr741 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file in784 On the first Monday of the month of April, 1625, the market town of Meung === End of file in784 === Start of file server.cmd Testnum 784 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind784 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind784 setenv HOME = /build/curl/src/build-curl/tests/log/1 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/1/valgrind740 ../src/curl -q --output log/1/curl740.out --include --trace-ascii log/1/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout740 2> log/1/stderr740 740: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ 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/1/valgrind740 ../src/curl -q --output log/1/curl740.out --include --trace-ascii log/1/trace740 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/1/stdout740 2> log/1/stderr740 === End of file commands.log === Start of file http_server.log 19:29:59.751577 ====> Client connect 19:29:59.752140 accept_connection 3 returned 4 19:29:59.752490 accept_connection 3 returned 0 19:29:59.752769 Read 93 bytes 19:29:59.752904 Process 93 bytes request 19:29:59.753013 Got request: GET /verifiedserver HTTP/1.1 19:29:59.753105 Are-we-friendly question received 19:29:59.753335 Wrote request (93 bytes) input to log/1/server.input 19:29:59.753570 Identifying ourselves as friends 19:29:59.754521 Response sent (57 bytes) and written to log/1/server.response 19:29:59.754675 special request received, no persistency 19:29:59.754798 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 740 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind740 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind740 setenv HOME = /build/curl/src/build-curl/tests/log/2 test 0741...[IPFS with malformed gateway 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/2/valgrind741 ../src/curl -q --output log/2/curl741.out --include --trace-ascii log/2/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout741 2> log/2/stderr741 curl returned 1, when expecting 3 741: exit FAILED == Contents of files in the log/2/ 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/2/valgrind741 ../src/curl -q --output log/2/curl741.out --include --trace-ascii log/2/trace741 --trace-config all --trace-time ipfs://bafybeidecnvkrygux6uoukouzps5ofkeevoqland7kopseiod6pzqvjg7u > log/2/stdout741 2> log/2/stderr741 === End of file commands.log === Start of file http_server.log 19:29:59.926264 ====> Client connect 19:29:59.926501 accept_connection 3 returned 4 19:29:59.926634 accept_connection 3 returned 0 19:29:59.926757 Read 93 bytes 19:29:59.926847 Process 93 bytes request 19:29:59.926928 Got request: GET /verifiedserver HTTP/1.1 19:29:59.927007 Are-we-friendly question received 19:29:59.927174 Wrote request (93 bytes) input to log/2/server.input 19:29:59.927351 Identifying ourselves as friends 19:29:59.927893 Response sent (57 bytes) and written to log/2/server.response 19:29:59.927987 special request received, no persistency 19:29:59.928040 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-LeCMD (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/4/valgrind785 ../src/curl -q --output log/4/curl785.out --include --trace-ascii log/4/trace785 --trace-config all --trace-time http://127.0.0.1:43669/785 --variable "name[5-]@log/4/in785" --expand-data '{{name}}' > log/4/stdout785 2> log/4/stderr785 CMD (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/valgrind786 ../src/curl -q --output log/3/curl786.out --include --trace-ascii log/3/trace786 --trace-config all --trace-time http://127.0.0.1:37525/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/3/stdout786 2> log/3/stderr786 ngth: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === 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: 103116 === End of file server.response === Start of file valgrind741 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind741 test 0785...[--variable with a file byte range without end] ../libtool --mode=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/valgrind785 ../src/curl -q --output log/4/curl785.out --include --trace-ascii log/4/trace785 --trace-config all --trace-time http://127.0.0.1:43669/785 --variable "name[5-]@log/4/in785" --expand-data '{{name}}' > log/4/stdout785 2> log/4/stderr785 785: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 785 === Start of file commands.log ../libtool --mode=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/valgrind785 ../src/curl -q --output log/4/curl785.out --include --trace-ascii log/4/trace785 --trace-config all --trace-time http://127.0.0.1:43669/785 --variable "name[5-]@log/4/in785" --expand-data '{{name}}' > log/4/stdout785 2> log/4/stderr785 === End of file commands.log === Start of file http_server.log 19:30:00.677528 ====> Client connect 19:30:00.677729 accept_connection 3 returned 4 19:30:00.677833 accept_connection 3 returned 0 19:30:00.678246 Read 93 bytes 19:30:00.678348 Process 93 bytes request 19:30:00.678419 Got request: GET /verifiedserver HTTP/1.1 19:30:00.678477 Are-we-friendly question received 19:30:00.678634 Wrote request (93 bytes) input to log/4/server.input 19:30:00.678780 Identifying ourselves as friends 19:30:00.679154 Response sent (57 bytes) and written to log/4/server.response 19:30:00.679242 special request received, no persistency 19:30:00.679301 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.0 > Accept: */* > < HTTP/1.1 200 OK < Content-Length: 18 < { [18 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file in785 On the first Monday of the month of April, 1625, the market town of Meung === End of file in785 === Start of file server.cmd Testnum 785 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind785 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind785 test 0786...[--variable with a file byte range, reading 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/3/valgrind786 ../src/curl -q --output log/3/curl786.out --include --trace-ascii log/3/trace786 --trace-config all --trace-time http://127.0.0.1:37525/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/3/stdout786 2> log/3/stderr786 786: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 786 === Start of file commands.log ../libtool --mode=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/valgrind786 ../src/curl -q --output log/3/curl786.out --include --trace-ascii log/3/trace786 --trace-config all --trace-time http://127.0.0.1:37525/786 --variable "name[5-15]@-" --expand-data '{{name}}' log/3/stdout786 2> log/3/stderr786 === End of file commands.log === Start of file http_server.log 19:29:59.741103 ====> Client connect 19:29:59.741304 accept_connection 3 returned 4 19:29:59.741413 accept_connection 3 returned 0 19:29:59.741502 Read 93 bytes 19:29:59.741565 Process 93 bytes request 19:29:59.741632 Got request: GET /verifiedserver HTTP/1.1 19:29:59.741691 Are-we-friendly question received 19:29:59.741839 Wrote request (93 bytes) input to log/3/server.input 19:29:59.741958 Identifying ourselves as friends 19:29:59.742419 Response sent (57 bytes) and written to log/3/server.response 19:29:59.742498 special request received, no persistency 19:29:59.742554 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verifCMD (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/1/valgrind787 ../src/curl -q --output log/1/curl787.out --include --trace-ascii log/1/trace787 --trace-config all --trace-time http://127.0.0.1:41477/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/1/stdout787 2> log/1/stderr787 CMD (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/2/valgrind788 ../src/curl -q --output log/2/curl788.out --include --trace-ascii log/2/trace788 --trace-config all --trace-time http://127.0.0.1:39599/788 --variable "name[15-15]@log/2/in788" --expand-data '{{name}}' > log/2/stdout788 2> log/2/stderr788 y.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 786 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file stdin-for-786 On the first Monday of the month of April, 1625, the market town of Meung === End of file stdin-for-786 === Start of file valgrind786 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind786 test 0787...[--variable with a file byte range, 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/1/valgrind787 ../src/curl -q --output log/1/curl787.out --include --trace-ascii log/1/trace787 --trace-config all --trace-time http://127.0.0.1:41477/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/1/stdout787 2> log/1/stderr787 curl returned 1, when expecting 2 787: exit FAILED == Contents of files in the log/1/ dir after test 787 === Start of file commands.log ../libtool --mode=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/valgrind787 ../src/curl -q --output log/1/curl787.out --include --trace-ascii log/1/trace787 --trace-config all --trace-time http://127.0.0.1:41477/787 --variable "name[15-14]@&LOGDIR/fooo" --expand-data '{{name}}' > log/1/stdout787 2> log/1/stderr787 === End of file commands.log === Start of file http_server.log 19:30:01.095837 ====> Client connect 19:30:01.096062 accept_connection 3 returned 4 19:30:01.096170 accept_connection 3 returned 0 19:30:01.096272 Read 93 bytes 19:30:01.096341 Process 93 bytes request 19:30:01.096417 Got request: GET /verifiedserver HTTP/1.1 19:30:01.096551 Are-we-friendly question received 19:30:01.096750 Wrote request (93 bytes) input to log/1/server.input 19:30:01.096918 Identifying ourselves as friends 19:30:01.097533 Response sent (57 bytes) and written to log/1/server.response 19:30:01.097704 special request received, no persistency 19:30:01.097764 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 787 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind787 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind787 test 0788...[--variable with a file and single-byte 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/valgrind788 ../src/curl -q --output log/2/curl788.out --include --trace-ascii log/2/trace788 --trace-config all --trace-time http://127.0.0.1:39599/788 --variable "name[15-15]@log/2/in788" --expand-data '{{name}}' > log/2/stdout788 2> log/2/stderr788 788: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 788 === Start of file commands.log ../libtool --mode=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/valgrind788 ../src/curl -q --output log/2/curl788.out --include --trace-ascii log/2/trace788 --trace-config all --trace-time http://127.0.0.1:39599/788 --variable "name[15-15]@log/2/in788" --expand-data '{{name}}' > log/2/stdout788 2> log/2/stderr788 === End of file commands.log === Start of file http_server.log 19:30:01.214904 ====> Client connect 19:30:01.215128 accept_connection 3 returned 4 19:30:01.215248 accept_connection 3 returned 0 19:30:01.215358 Read 93 bytes 19:30:01.215432 Process 93 bytes request 19:30:01.215512 Got request: GET /verifiedserver HTTP/1.1 19:30:01.215584 Are-we-friendly question received 19:30:01.215750 Wrote request (93 bytes) input to log/2/server.input 19:30:01.215907 Identifying ourselves as friends 19:30:01.216588 Response sent (57 bytes) and written to log/2/server.response 19:30:01.216688 special request received, no persistency 19:30:01.216740 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:39599... * Connected to 127.0.0.1 (127.0.0.1) port 39599 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:39599 > User-Agent: curl/8.13.0 > Accept: */* > * Request completely sent off < HTTP/1.1 200 OK < Content-Length: 18 < { [1 bytes data] * Connection #0 to host 127.0.0.1 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103116 === End of file http_verify.out === Start of file in788 On the first Monday of the month of April, 1625, the market town of Meung === End of file in788 === Start ofCMD (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/4/valgrind789 ../src/curl -q --output log/4/curl789.out --include --trace-ascii log/4/trace789 --trace-config all --trace-time http://127.0.0.1:43669/789 --variable "name[75-85]@log/4/in789" --expand-data '{{name}}' > log/4/stdout789 2> log/4/stderr789 CMD (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/valgrind790 ../src/curl -q --output log/3/curl790.out --include --trace-ascii log/3/trace790 --trace-config all --trace-time http://127.0.0.1:37525/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/3/stdout790 2> log/3/stderr790 file server.cmd Testnum 788 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103116 === End of file server.response === Start of file valgrind788 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind788 test 0789...[--variable with a file and byte range out of 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/valgrind789 ../src/curl -q --output log/4/curl789.out --include --trace-ascii log/4/trace789 --trace-config all --trace-time http://127.0.0.1:43669/789 --variable "name[75-85]@log/4/in789" --expand-data '{{name}}' > log/4/stdout789 2> log/4/stderr789 789: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 789 === Start of file commands.log ../libtool --mode=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/valgrind789 ../src/curl -q --output log/4/curl789.out --include --trace-ascii log/4/trace789 --trace-config all --trace-time http://127.0.0.1:43669/789 --variable "name[75-85]@log/4/in789" --expand-data '{{name}}' > log/4/stdout789 2> log/4/stderr789 === End of file commands.log === Start of file http_server.log 19:30:01.269947 ====> Client connect 19:30:01.270185 accept_connection 3 returned 4 19:30:01.270325 accept_connection 3 returned 0 19:30:01.270434 Read 93 bytes 19:30:01.270505 Process 93 bytes request 19:30:01.270590 Got request: GET /verifiedserver HTTP/1.1 19:30:01.270673 Are-we-friendly question received 19:30:01.270867 Wrote request (93 bytes) input to log/4/server.input 19:30:01.271055 Identifying ourselves as friends 19:30:01.271634 Response sent (57 bytes) and written to log/4/server.response 19:30:01.271787 special request received, no persistency 19:30:01.271862 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:43669... * Connected to 127.0.0.1 (127.0.0.1) port 43669 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:43669 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103118 === End of file http_verify.out === Start of file in789 On the first Monday of the month of April, 1625, the market town of Meung === End of file in789 === Start of file server.cmd Testnum 789 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103118 === End of file server.response === Start of file valgrind789 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind789 test 0790...[--variable with a byte range using plain assign] ../libtool --mode=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/valgrind790 ../src/curl -q --output log/3/curl790.out --include --trace-ascii log/3/trace790 --trace-config all --trace-time http://127.0.0.1:37525/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/3/stdout790 2> log/3/stderr790 790: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 790 === Start of file commands.log ../libtool --mode=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/valgrind790 ../src/curl -q --output log/3/curl790.out --include --trace-ascii log/3/trace790 --trace-config all --trace-time http://127.0.0.1:37525/790 --variable "name[5-9]=0123456789abcdef" --expand-data '{{name}}' > log/3/stdout790 2> log/3/stderr790 === End of file commands.log === Start of file http_server.log 19:30:00.355100 ====> Client connect 19:30:00.355322 accept_connection 3 returned 4 19:30:00.355450 accept_connection 3 returned 0 19:30:00.355563 Read 93 bytes 19:30:00.355649 Process 93 bytes request 19:30:00.355737 Got request: GET /verifiedserver HTTP/1.1 19:30:00.355818 Are-we-friendly question received 19:30:00.355995 Wrote request (93 bytes) input to log/3/server.input 19:30:00.356157 Identifying ourselves as friends 19:30:00.356778 Response sent (57 bytes) and written to log/3/server.response 19:30:00.356880 special request received, no persistency 19:30:00.356948 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:37525... * Connected to 127.0.0.1 (127.0.0.1) port 37525 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:37525 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 105156 === End of file http_verify.out === Start of file server.cmd Testnum 790 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-CMD (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/1/valgrind791 ../src/curl -q --output log/1/curl791.out --include --trace-ascii log/1/trace791 --trace-config all --trace-time http://127.0.0.1:41477/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/1/stdout791 2> log/1/stderr791 CMD (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/4/valgrind800 ../src/curl -q --output log/4/curl800.out --include --trace-ascii log/4/trace800 --trace-config all --trace-time 'imap://127.0.0.1:38513/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/4/stdout800 2> log/4/stderr800 Length: 18 WE ROOLZ: 105156 === End of file server.response === Start of file valgrind790 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind790 test 0791...[--variable with a byte range using plain assign, out of 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/1/valgrind791 ../src/curl -q --output log/1/curl791.out --include --trace-ascii log/1/trace791 --trace-config all --trace-time http://127.0.0.1:41477/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/1/stdout791 2> log/1/stderr791 791: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 791 === Start of file commands.log ../libtool --mode=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/valgrind791 ../src/curl -q --output log/1/curl791.out --include --trace-ascii log/1/trace791 --trace-config all --trace-time http://127.0.0.1:41477/791 --variable "name[10-30]=0123456789abcdef" --expand-data '{{name}}' > log/1/stdout791 2> log/1/stderr791 === End of file commands.log === Start of file http_server.log 19:30:01.746415 ====> Client connect 19:30:01.746744 accept_connection 3 returned 4 19:30:01.746908 accept_connection 3 returned 0 19:30:01.747053 Read 93 bytes 19:30:01.747183 Process 93 bytes request 19:30:01.747264 Got request: GET /verifiedserver HTTP/1.1 19:30:01.747381 Are-we-friendly question received 19:30:01.747696 Wrote request (93 bytes) input to log/1/server.input 19:30:01.748008 Identifying ourselves as friends 19:30:01.748989 Response sent (57 bytes) and written to log/1/server.response 19:30:01.749159 special request received, no persistency 19:30:01.749258 ====> Client disconnect 0 === End of file http_server.log === Start of file http_verify.log * Trying 127.0.0.1:41477... * Connected to 127.0.0.1 (127.0.0.1) port 41477 * using HTTP/1.x > GET /verifiedserver HTTP/1.1 > Host: 127.0.0.1:41477 > User-Agent: curl/8.13.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 left intact === End of file http_verify.log === Start of file http_verify.out WE ROOLZ: 103115 === End of file http_verify.out === Start of file server.cmd Testnum 791 === End of file server.cmd === Start of file server.response HTTP/1.1 200 OK Content-Length: 18 WE ROOLZ: 103115 === End of file server.response === Start of file valgrind791 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind791 test 0800...[IMAP FETCH message] ../libtool --mode=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/valgrind800 ../src/curl -q --output log/4/curl800.out --include --trace-ascii log/4/trace800 --trace-config all --trace-time 'imap://127.0.0.1:38513/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/4/stdout800 2> log/4/stderr800 800: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 800 === Start of file commands.log ../libtool --mode=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/valgrind800 ../src/curl -q --output log/4/curl800.out --include --trace-ascii log/4/trace800 --trace-config all --trace-time 'imap://127.0.0.1:38513/800/;MAILINDEX=1' -u '"user:sec"ret{' > log/4/stdout800 2> log/4/stderr800 === End of file commands.log === Start of file imap_server.log 19:30:01.457640 ====> Client connect 19:30:01.458435 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:01.460805 < "A001 CAPABILITY" 19:30:01.461103 > "A001 BAD Command[CR][LF]" 19:30:01.462736 < "A002 LIST "verifiedserver" *" 19:30:01.462991 LIST_imap got "verifiedserver" * 19:30:01.463249 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:01.463477 > "A002 OK LIST Completed[CR][LF]" 19:30:01.463631 return proof we are we 19:30:01.465920 < "A003 LOGOUT" 19:30:01.466214 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:01.466413 > "A003 OK LOGOUT completed[CR][LF]" 19:30:01.467807 MAIN sockfilt said DISC 19:30:01.468092 ====> Client disconnected 19:30:01.468417 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:00.920088 ====> Client connect 19:30:00.921760 Received DATA (on stdin) 19:30:00.921872 > 178 bytes data, server => client 19:30:00.921951 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:00.922016 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:00.922080 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:00.922133 'rve\r\n' 19:30:00.923043 < 17 bytes data, client => server 19:30:00.923181 'A001 CAPABILITY\r\n' 19:30:00.924370 Received DATA (on stdin) 19:30:00.924591 > 18 bytes data, server => client 19:30:00.924714 'A001 BAD Command\r\n' 19:3CMD (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/valgrind801 ../src/curl -q --output log/3/curl801.out --include --trace-ascii log/3/trace801 --trace-config all --trace-time 'imap://127.0.0.1:41627/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/3/stdout801 2> log/3/stderr801 CMD (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/1/valgrind802 ../src/curl -q --output log/1/curl802.out --include --trace-ascii log/1/trace802 --trace-config all --trace-time 'imap://127.0.0.1:38385/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/1/stdout802 2> log/1/stderr802 0:00.925135 < 30 bytes data, client => server 19:30:00.925277 'A002 LIST "verifiedserver" *\r\n' 19:30:00.926949 Received DATA (on stdin) 19:30:00.927124 > 34 bytes data, server => client 19:30:00.927284 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:00.927517 Received DATA (on stdin) 19:30:00.927642 > 24 bytes data, server => client 19:30:00.927725 'A002 OK LIST Completed\r\n' 19:30:00.928256 < 13 bytes data, client => server 19:30:00.928386 'A003 LOGOUT\r\n' 19:30:00.929654 Received DATA (on stdin) 19:30:00.929769 > 36 bytes data, server => client 19:30:00.929848 '* BYE curl IMAP server signing off\r\n' 19:30:00.930085 Received DATA (on stdin) 19:30:00.930229 > 26 bytes data, server => client 19:30:00.930312 'A003 OK LOGOUT completed\r\n' 19:30:00.930627 ====> Client disconnect 19:30:00.931703 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 800 === End of file server.cmd === Start of file valgrind800 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind800 test 0801...[IMAP FETCH message by MAILINDEX and 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/3/valgrind801 ../src/curl -q --output log/3/curl801.out --include --trace-ascii log/3/trace801 --trace-config all --trace-time 'imap://127.0.0.1:41627/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/3/stdout801 2> log/3/stderr801 801: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 801 === Start of file commands.log ../libtool --mode=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/valgrind801 ../src/curl -q --output log/3/curl801.out --include --trace-ascii log/3/trace801 --trace-config all --trace-time 'imap://127.0.0.1:41627/801/;MAILINDEX=123/;SECTION=1' -u user:secret > log/3/stdout801 2> log/3/stderr801 === End of file commands.log === Start of file imap_server.log 19:30:01.581999 ====> Client connect 19:30:01.582874 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:01.584411 < "A001 CAPABILITY" 19:30:01.584741 > "A001 BAD Command[CR][LF]" 19:30:01.587607 < "A002 LIST "verifiedserver" *" 19:30:01.587871 LIST_imap got "verifiedserver" * 19:30:01.588133 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:01.588356 > "A002 OK LIST Completed[CR][LF]" 19:30:01.588536 return proof we are we 19:30:01.589853 < "A003 LOGOUT" 19:30:01.590202 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:01.590421 > "A003 OK LOGOUT completed[CR][LF]" 19:30:01.593610 MAIN sockfilt said DISC 19:30:01.593905 ====> Client disconnected 19:30:01.594228 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.044639 ====> Client connect 19:30:02.045900 Received DATA (on stdin) 19:30:02.046042 > 178 bytes data, server => client 19:30:02.046134 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.046232 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.046313 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.046379 'rve\r\n' 19:30:02.046824 < 17 bytes data, client => server 19:30:02.046962 'A001 CAPABILITY\r\n' 19:30:02.047800 Received DATA (on stdin) 19:30:02.047910 > 18 bytes data, server => client 19:30:02.047978 'A001 BAD Command\r\n' 19:30:02.050209 < 30 bytes data, client => server 19:30:02.050368 'A002 LIST "verifiedserver" *\r\n' 19:30:02.051167 Received DATA (on stdin) 19:30:02.051291 > 34 bytes data, server => client 19:30:02.051370 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:02.051590 Received DATA (on stdin) 19:30:02.051704 > 24 bytes data, server => client 19:30:02.051791 'A002 OK LIST Completed\r\n' 19:30:02.052382 < 13 bytes data, client => server 19:30:02.052607 'A003 LOGOUT\r\n' 19:30:02.053262 Received DATA (on stdin) 19:30:02.053385 > 36 bytes data, server => client 19:30:02.053468 '* BYE curl IMAP server signing off\r\n' 19:30:02.053704 Received DATA (on stdin) 19:30:02.053836 > 26 bytes data, server => client 19:30:02.053919 'A003 OK LOGOUT completed\r\n' 19:30:02.054278 ====> Client disconnect 19:30:02.057319 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 801 === End of file server.cmd === Start of file valgrind801 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind801 test 0802...[IMAP SELECT UIDVALIDITY Success] ../libtool --mode=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/valgrind802 ../src/curl -q --output log/1/curl802.out --include --trace-ascii log/1/trace802 --trace-config all --trace-time 'imap://127.0.0.1:38385/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/1/stdout802 2> log/1/stderr802 802: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 802 === StaCMD (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/4/valgrind803 ../src/curl -q --output log/4/curl803.out --include --trace-ascii log/4/trace803 --trace-config all --trace-time 'imap://127.0.0.1:38513/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/4/stdout803 2> log/4/stderr803 rt of file commands.log ../libtool --mode=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/valgrind802 ../src/curl -q --output log/1/curl802.out --include --trace-ascii log/1/trace802 --trace-config all --trace-time 'imap://127.0.0.1:38385/802;UIDVALIDITY=3857529045/;MAILINDEX=123/;SECTION=TEXT' -u user:secret > log/1/stdout802 2> log/1/stderr802 === End of file commands.log === Start of file imap_server.log 19:30:01.904792 ====> Client connect 19:30:01.906219 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:01.908015 < "A001 CAPABILITY" 19:30:01.908359 > "A001 BAD Command[CR][LF]" 19:30:01.909584 < "A002 LIST "verifiedserver" *" 19:30:01.909891 LIST_imap got "verifiedserver" * 19:30:01.910192 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:01.910427 > "A002 OK LIST Completed[CR][LF]" 19:30:01.910577 return proof we are we 19:30:01.912214 < "A003 LOGOUT" 19:30:01.912518 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:01.912712 > "A003 OK LOGOUT completed[CR][LF]" 19:30:01.913776 MAIN sockfilt said DISC 19:30:01.914063 ====> Client disconnected 19:30:01.914365 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:01.367248 ====> Client connect 19:30:01.369232 Received DATA (on stdin) 19:30:01.369406 > 178 bytes data, server => client 19:30:01.369566 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:01.369671 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:01.369754 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:01.369821 'rve\r\n' 19:30:01.370364 < 17 bytes data, client => server 19:30:01.370510 'A001 CAPABILITY\r\n' 19:30:01.371401 Received DATA (on stdin) 19:30:01.371524 > 18 bytes data, server => client 19:30:01.371613 'A001 BAD Command\r\n' 19:30:01.372096 < 30 bytes data, client => server 19:30:01.372241 'A002 LIST "verifiedserver" *\r\n' 19:30:01.373241 Received DATA (on stdin) 19:30:01.373392 > 34 bytes data, server => client 19:30:01.373485 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:01.373726 Received DATA (on stdin) 19:30:01.373851 > 24 bytes data, server => client 19:30:01.373962 'A002 OK LIST Completed\r\n' 19:30:01.374757 < 13 bytes data, client => server 19:30:01.374916 'A003 LOGOUT\r\n' 19:30:01.375612 Received DATA (on stdin) 19:30:01.375707 > 36 bytes data, server => client 19:30:01.375789 '* BYE curl IMAP server signing off\r\n' 19:30:01.376007 Received DATA (on stdin) 19:30:01.376115 > 26 bytes data, server => client 19:30:01.376188 'A003 OK LOGOUT completed\r\n' 19:30:01.376581 ====> Client disconnect 19:30:01.377118 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 802 === End of file server.cmd === Start of file valgrind802 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind802 test 0803...[IMAP SELECT UIDVALIDITY 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/4/valgrind803 ../src/curl -q --output log/4/curl803.out --include --trace-ascii log/4/trace803 --trace-config all --trace-time 'imap://127.0.0.1:38513/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/4/stdout803 2> log/4/stderr803 803: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 803 === Start of file commands.log ../libtool --mode=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/valgrind803 ../src/curl -q --output log/4/curl803.out --include --trace-ascii log/4/trace803 --trace-config all --trace-time 'imap://127.0.0.1:38513/803;UIDVALIDITY=12345/;MAILINDEX=123' -u user:secret > log/4/stdout803 2> log/4/stderr803 === End of file commands.log === Start of file imap_server.log 19:30:02.008742 ====> Client connect 19:30:02.009621 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.011659 < "A001 CAPABILITY" 19:30:02.012282 > "A001 BAD Command[CR][LF]" 19:30:02.014681 < "A002 LIST "verifiedserver" *" 19:30:02.015209 LIST_imap got "verifiedserver" * 19:30:02.015736 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:02.016276 > "A002 OK LIST Completed[CR][LF]" 19:30:02.016678 return proof we are we 19:30:02.020044 < "A003 LOGOUT" 19:30:02.020547 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.020860 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.023292 MAIN sockfilt said DISC 19:30:02.023789 ====> Client disconnected 19:30:02.024218 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:01.471363 ====> Client connect 19:30:01.472940 Received DATA (on stdin) 19:30:01.473050 > 178 bytes data, server => client 19:30:01.473124 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:01.473191 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:01.473260 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:01.473315 'rve\r\n' 19:30:01.473856 < 17 bytes data, client => server 19:30:01.473998 'A001 CAPABILITY\r\n' 19:30:01.475055 Received DATA (on stdin) 19:30:01.475176 > 18 bytes data, server => client 19:30:01.475535 'A001 BAD Command\r\n' 19:30:01.476383 < 30 bytes data, client => server 19:30:01.476760 'A002 LIST "verifiedserver" *\r\n' 19:30:01.480265 Received DATA (on stdin) 19:30:01.480834 > 34 bytes data, server => client 19:30:01.481037 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:01.481330 Received DATA (on stdin) 19:30:01.481486 > 24 bytes data, server => client 19:30:01.481565 'A002 OK LIST Completed\r\n' 19:30:01.482354 < 13 bytes data, client => server 19:30:01.482509 'A003 LOGOUT\r\n' 19:30:01.484162 Received DATA (on stdin) 19:30:01.484363 > 36 bytes data, server => client 19:30:01.484768 '* BYE curl IMAP server signing off\r\n' 19:30:01.485176 Received DATA (on stdin) 19:30:01.485381 > 26 bytes data, server => client 19:30:01.485458 'A003 OK LOGOUT completed\r\n' 19:30:01.486080 ====> Client disconnect 19:30:01.487529 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 803 === End of file server.cmd === Start of fileCMD (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/valgrind804 ../src/curl -q --output log/3/curl804.out --include --trace-ascii log/3/trace804 --trace-config all --trace-time 'imap://127.0.0.1:41627/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:41627/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/3/stdout804 2> log/3/stderr804 CMD (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/2/valgrind799 ../src/curl -q --output log/2/curl799.out --include --trace-ascii log/2/trace799 --trace-config all --trace-time 'imap://127.0.0.1:40201/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/2/stdout799 2> log/2/stderr799 valgrind803 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind803 test 0804...[IMAP doesn't perform SELECT if re-using the same mailbox] ../libtool --mode=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/valgrind804 ../src/curl -q --output log/3/curl804.out --include --trace-ascii log/3/trace804 --trace-config all --trace-time 'imap://127.0.0.1:41627/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:41627/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/3/stdout804 2> log/3/stderr804 804: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 804 === Start of file commands.log ../libtool --mode=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/valgrind804 ../src/curl -q --output log/3/curl804.out --include --trace-ascii log/3/trace804 --trace-config all --trace-time 'imap://127.0.0.1:41627/804/;MAILINDEX=123/;SECTION=1' 'imap://127.0.0.1:41627/804/;MAILINDEX=456/;SECTION=2.3' -u user:secret > log/3/stdout804 2> log/3/stderr804 === End of file commands.log === Start of file imap_server.log 19:30:02.164494 ====> Client connect 19:30:02.165272 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.166916 < "A001 CAPABILITY" 19:30:02.167256 > "A001 BAD Command[CR][LF]" 19:30:02.168387 < "A002 LIST "verifiedserver" *" 19:30:02.168759 LIST_imap got "verifiedserver" * 19:30:02.169143 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:02.169368 > "A002 OK LIST Completed[CR][LF]" 19:30:02.169574 return proof we are we 19:30:02.170724 < "A003 LOGOUT" 19:30:02.170962 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.171124 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.172025 MAIN sockfilt said DISC 19:30:02.172303 ====> Client disconnected 19:30:02.172589 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.623584 ====> Client connect 19:30:02.628298 Received DATA (on stdin) 19:30:02.628561 > 178 bytes data, server => client 19:30:02.628667 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.628740 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.628800 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.628851 'rve\r\n' 19:30:02.629253 < 17 bytes data, client => server 19:30:02.629379 'A001 CAPABILITY\r\n' 19:30:02.630291 Received DATA (on stdin) 19:30:02.630412 > 18 bytes data, server => client 19:30:02.630506 'A001 BAD Command\r\n' 19:30:02.630939 < 30 bytes data, client => server 19:30:02.631074 'A002 LIST "verifiedserver" *\r\n' 19:30:02.632176 Received DATA (on stdin) 19:30:02.632314 > 34 bytes data, server => client 19:30:02.632391 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:02.632699 Received DATA (on stdin) 19:30:02.632792 > 24 bytes data, server => client 19:30:02.632868 'A002 OK LIST Completed\r\n' 19:30:02.633355 < 13 bytes data, client => server 19:30:02.633481 'A003 LOGOUT\r\n' 19:30:02.633988 Received DATA (on stdin) 19:30:02.634088 > 36 bytes data, server => client 19:30:02.634159 '* BYE curl IMAP server signing off\r\n' 19:30:02.634363 Received DATA (on stdin) 19:30:02.634462 > 26 bytes data, server => client 19:30:02.634540 'A003 OK LOGOUT completed\r\n' 19:30:02.634818 ====> Client disconnect 19:30:02.635820 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 804 === End of file server.cmd === Start of file valgrind804 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind804 startnew: /usr/bin/perl -I. -I/build/curl/src/curl/tests /build/curl/src/curl/tests/ftpserver.pl --pidfile "log/2/server/imap_server.pid" --logfile "log/2/imap_server.log" --logdir "log/2" --portfile "log/2/server/imap_server.port" --srcdir "/build/curl/src/curl/tests" --proto imap --ipv4 --port 0 --addr "127.0.0.1" PINGPONG runs on port 40201 (log/2/server/imap_server.port) RUN: ../src/curl --max-time 13 --silent --verbose --globoff "imap://127.0.0.1:40201/verifiedserver" 2>log/2/imap_verify.log RUN: Verifying our test imap server took 0 seconds RUN: IMAP server is PID 143811 port 40201 * pid imap => 143811 143811 test 0799...[IMAP with --login-options 'AUTH=+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/2/valgrind799 ../src/curl -q --output log/2/curl799.out --include --trace-ascii log/2/trace799 --trace-config all --trace-time 'imap://127.0.0.1:40201/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/2/stdout799 2> log/2/stderr799 799: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 799 === Start of file commands.log ../libtool --mode=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/valgrind799 ../src/cCMD (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/1/valgrind805 ../src/curl -q --output log/1/curl805.out --include --trace-ascii log/1/trace805 --trace-config all --trace-time imap://127.0.0.1:38385/805 -T log/1/upload805 -u user:secret > log/1/stdout805 2> log/1/stderr805 url -q --output log/2/curl799.out --include --trace-ascii log/2/trace799 --trace-config all --trace-time 'imap://127.0.0.1:40201/799/;MAILINDEX=1' -u user:secret --login-options AUTH=+LOGIN > log/2/stdout799 2> log/2/stderr799 === End of file commands.log === Start of file imap_server.log 19:30:01.666014 IMAP server listens on port IPv4/40201 19:30:01.666803 logged pid 143811 in log/2/server/imap_server.pid 19:30:01.667024 Awaiting input 19:30:02.440983 ====> Client connect 19:30:02.441848 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.447438 < "A001 CAPABILITY" 19:30:02.448279 > "A001 BAD Command[CR][LF]" 19:30:02.450357 < "A002 LIST "verifiedserver" *" 19:30:02.450637 LIST_imap got "verifiedserver" * 19:30:02.450929 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:02.451298 > "A002 OK LIST Completed[CR][LF]" 19:30:02.451466 return proof we are we 19:30:02.454743 < "A003 LOGOUT" 19:30:02.455251 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.455555 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.458024 MAIN sockfilt said DISC 19:30:02.458534 ====> Client disconnected 19:30:02.459073 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:01.127473 Running IPv4 version 19:30:01.127850 Listening on port 40201 19:30:01.128149 Wrote pid 143914 to log/2/server/imap_sockfilt.pid 19:30:01.128404 Wrote port 40201 to log/2/server/imap_server.port 19:30:01.128632 Received PING (on stdin) 19:30:01.903741 ====> Client connect 19:30:01.905170 Received DATA (on stdin) 19:30:01.905286 > 178 bytes data, server => client 19:30:01.905403 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:01.905477 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:01.905545 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:01.905601 'rve\r\n' 19:30:01.908417 < 17 bytes data, client => server 19:30:01.908814 'A001 CAPABILITY\r\n' 19:30:01.911948 Received DATA (on stdin) 19:30:01.912196 > 18 bytes data, server => client 19:30:01.912272 'A001 BAD Command\r\n' 19:30:01.912754 < 30 bytes data, client => server 19:30:01.912873 'A002 LIST "verifiedserver" *\r\n' 19:30:01.914784 Received DATA (on stdin) 19:30:01.914972 > 34 bytes data, server => client 19:30:01.915119 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:01.915599 Received DATA (on stdin) 19:30:01.915830 > 24 bytes data, server => client 19:30:01.916001 'A002 OK LIST Completed\r\n' 19:30:01.916749 < 13 bytes data, client => server 19:30:01.916951 'A003 LOGOUT\r\n' 19:30:01.918819 Received DATA (on stdin) 19:30:01.919082 > 36 bytes data, server => client 19:30:01.919212 '* BYE curl IMAP server signing off\r\n' 19:30:01.919414 Received DATA (on stdin) 19:30:01.919500 > 26 bytes data, server => client 19:30:01.919564 'A003 OK LOGOUT completed\r\n' 19:30:01.920650 ====> Client disconnect 19:30:01.922476 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN REPLY LOGIN A002 OK LOGIN completed Testnum 799 === End of file server.cmd === Start of file valgrind799 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind799 test 0805...[IMAP APPEND message] ../libtool --mode=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/valgrind805 ../src/curl -q --output log/1/curl805.out --include --trace-ascii log/1/trace805 --trace-config all --trace-time imap://127.0.0.1:38385/805 -T log/1/upload805 -u user:secret > log/1/stdout805 2> log/1/stderr805 805: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 805 === Start of file commands.log ../libtool --mode=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/valgrind805 ../src/curl -q --output log/1/curl805.out --include --trace-ascii log/1/trace805 --trace-config all --trace-time imap://127.0.0.1:38385/805 -T log/1/upload805 -u user:secret > log/1/stdout805 2> log/1/stderr805 === End of file commands.log === Start of file imap_server.log 19:30:02.517351 ====> Client connect 19:30:02.518203 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.520575 < "A001 CAPABILITY" 19:30:02.520876 > "A001 BAD Command[CR][LF]" 19:30:02.522259 < "A002 LIST "verifiedserver" *" 19:30:02.522517 LIST_imap got "verifiedserver" * 19:30:02.522758 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:02.522949 > "A002 OK LIST Completed[CR][LF]" 19:30:02.523086 return proof we are we 19:30:02.524501 < "A003 LOGOUT" 19:30:02.524777 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.524946 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.526004 MAIN sockfilt said DISC 19:30:02.526323 ====> Client disconnected 19:30:02.526661 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:01.979977 ====> Client connect 19:30:01.981259 Received DATA (on stdin) 19:30:01.981397 > 178 bytes data, server => client 19:30:01.981485 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:01.981563 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:01.981627 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:01.981682 'rve\r\n' 19:30:01.983023 < 17 bytes data, client => server 19:30:01.983181 'A001 CAPABILITY\r\n' 19:30:01.983903 Received DATA (on stdin) 19:30:01.984017 > 18 bytes data, server => client 19:30:01.984106 'A001 BAD Command\r\n' 19:30:01.984834 < 30 bytes data, client => server 19:30:01.984985 'A002 LIST "verifiedserver" *\r\n' 19:30:01.985789 Received DATA (on stdin) 19:30:01.985904 > 34 bytes data, server => client 19:30:01.985977 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:01.986192 Received DATA (on stdin) 19:30:01.986278 > 24 bytes data, server => client 19:30:01.986355 'A002 OK LIST Completed\r\n' 19:30:01.987096 < 13 bytes data, client => server 19:30:01.987230 'A003 LOGOUT\r\n' 19:30:01.987801 Received DATA (on stdin) 19:30:01.987903 > 36 bytes data, server => client 19:30:01.987981 '* BYE curl IMAP server signing off\r\n' 19:30:01.988174 Received DATA (on stdin) 19:30:01.988279 > 26 bytes data, server => client 19:30:01.988354 'A003 OK LOGOUT completed\r\n' 19:30:01.988786 =CMD (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/4/valgrind806 ../src/curl -q --output log/4/curl806.out --include --trace-ascii log/4/trace806 --trace-config all --trace-time imap://127.0.0.1:38513/806 -u user:secret > log/4/stdout806 2> log/4/stderr806 CMD (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/valgrind807 ../src/curl -q --output log/3/curl807.out --include --trace-ascii log/3/trace807 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'LSUB "807" *' > log/3/stdout807 2> log/3/stderr807 ===> Client disconnect 19:30:01.989363 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 805 === End of file server.cmd === Start of file upload805 Date: Mon, 7 Feb 1994 21:52:25 -0800 (PST) From: Fred Foobar Subject: afternoon meeting To: joe@example.com Message-Id: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; CHARSET=US-ASCII Hello Joe, do you think we can meet at 3:30 tomorrow? === End of file upload805 === Start of file valgrind805 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind805 test 0806...[IMAP LIST mailbox] ../libtool --mode=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/valgrind806 ../src/curl -q --output log/4/curl806.out --include --trace-ascii log/4/trace806 --trace-config all --trace-time imap://127.0.0.1:38513/806 -u user:secret > log/4/stdout806 2> log/4/stderr806 806: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 806 === Start of file commands.log ../libtool --mode=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/valgrind806 ../src/curl -q --output log/4/curl806.out --include --trace-ascii log/4/trace806 --trace-config all --trace-time imap://127.0.0.1:38513/806 -u user:secret > log/4/stdout806 2> log/4/stderr806 === End of file commands.log === Start of file imap_server.log 19:30:02.614355 ====> Client connect 19:30:02.616657 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.620999 < "A001 CAPABILITY" 19:30:02.621598 > "A001 BAD Command[CR][LF]" 19:30:02.624090 < "A002 LIST "verifiedserver" *" 19:30:02.624443 LIST_imap got "verifiedserver" * 19:30:02.624944 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:02.625228 > "A002 OK LIST Completed[CR][LF]" 19:30:02.625394 return proof we are we 19:30:02.627543 < "A003 LOGOUT" 19:30:02.627899 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.628260 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.670149 MAIN sockfilt said DISC 19:30:02.670459 ====> Client disconnected 19:30:02.670826 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.076518 ====> Client connect 19:30:02.078951 Received DATA (on stdin) 19:30:02.079264 > 178 bytes data, server => client 19:30:02.080211 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.080634 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.080919 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.081120 'rve\r\n' 19:30:02.083077 < 17 bytes data, client => server 19:30:02.083216 'A001 CAPABILITY\r\n' 19:30:02.084965 Received DATA (on stdin) 19:30:02.085167 > 18 bytes data, server => client 19:30:02.085307 'A001 BAD Command\r\n' 19:30:02.086189 < 30 bytes data, client => server 19:30:02.086388 'A002 LIST "verifiedserver" *\r\n' 19:30:02.088631 Received DATA (on stdin) 19:30:02.088767 > 34 bytes data, server => client 19:30:02.088846 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:02.089167 Received DATA (on stdin) 19:30:02.089377 > 24 bytes data, server => client 19:30:02.089457 'A002 OK LIST Completed\r\n' 19:30:02.089988 < 13 bytes data, client => server 19:30:02.090102 'A003 LOGOUT\r\n' 19:30:02.091706 Received DATA (on stdin) 19:30:02.091936 > 36 bytes data, server => client 19:30:02.092075 '* BYE curl IMAP server signing off\r\n' 19:30:02.092296 Received DATA (on stdin) 19:30:02.092558 > 26 bytes data, server => client 19:30:02.092760 'A003 OK LOGOUT completed\r\n' 19:30:02.132870 ====> Client disconnect 19:30:02.134137 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 806 === End of file server.cmd === Start of file valgrind806 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind806 test 0807...[IMAP LSUB mailbox] ../libtool --mode=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/valgrind807 ../src/curl -q --output log/3/curl807.out --include --trace-ascii log/3/trace807 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'LSUB "807" *' > log/3/stdout807 2> log/3/stderr807 807: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 807 === Start of file commands.log ../libtool --mode=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/valgrind807 ../src/curl -q --output log/3/curl807.out --include --trace-ascii log/3/trace807 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'LSUB "807" *' > log/3/stdout807 2> log/3/stderr807 === End of file commands.log === Start of file imap_server.log 19:30:02.781394 ====> Client connect 19:30:02.782374 > " _ _ ____ _ [CR][CMD (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/2/valgrind808 ../src/curl -q --output log/2/curl808.out --include --trace-ascii log/2/trace808 --trace-config all --trace-time imap://127.0.0.1:40201 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808 CMD (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/1/valgrind809 ../src/curl -q --output log/1/curl809.out --include --trace-ascii log/1/trace809 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/1/stdout809 2> log/1/stderr809 LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:02.784796 < "A001 CAPABILITY" 19:30:02.785167 > "A001 BAD Command[CR][LF]" 19:30:02.786786 < "A002 LIST "verifiedserver" *" 19:30:02.787047 LIST_imap got "verifiedserver" * 19:30:02.787304 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:02.787520 > "A002 OK LIST Completed[CR][LF]" 19:30:02.787676 return proof we are we 19:30:02.789127 < "A003 LOGOUT" 19:30:02.789576 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:02.789811 > "A003 OK LOGOUT completed[CR][LF]" 19:30:02.795244 MAIN sockfilt said DISC 19:30:02.795525 ====> Client disconnected 19:30:02.795888 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.244014 ====> Client connect 19:30:03.245509 Received DATA (on stdin) 19:30:03.245641 > 178 bytes data, server => client 19:30:03.245733 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.245820 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.245937 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.246048 'rve\r\n' 19:30:03.246708 < 17 bytes data, client => server 19:30:03.246923 'A001 CAPABILITY\r\n' 19:30:03.248652 Received DATA (on stdin) 19:30:03.248819 > 18 bytes data, server => client 19:30:03.248903 'A001 BAD Command\r\n' 19:30:03.249364 < 30 bytes data, client => server 19:30:03.249503 'A002 LIST "verifiedserver" *\r\n' 19:30:03.250322 Received DATA (on stdin) 19:30:03.250438 > 34 bytes data, server => client 19:30:03.250520 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:03.250753 Received DATA (on stdin) 19:30:03.250844 > 24 bytes data, server => client 19:30:03.250918 'A002 OK LIST Completed\r\n' 19:30:03.251609 < 13 bytes data, client => server 19:30:03.251739 'A003 LOGOUT\r\n' 19:30:03.252590 Received DATA (on stdin) 19:30:03.252722 > 36 bytes data, server => client 19:30:03.252799 '* BYE curl IMAP server signing off\r\n' 19:30:03.253042 Received DATA (on stdin) 19:30:03.253164 > 26 bytes data, server => client 19:30:03.253239 'A003 OK LOGOUT completed\r\n' 19:30:03.257973 ====> Client disconnect 19:30:03.258563 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 807 === End of file server.cmd === Start of file valgrind807 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind807 test 0808...[IMAP EXAMINE mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind808 ../src/curl -q --output log/2/curl808.out --include --trace-ascii log/2/trace808 --trace-config all --trace-time imap://127.0.0.1:40201 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808 808: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 808 === Start of file commands.log ../libtool --mode=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/valgrind808 ../src/curl -q --output log/2/curl808.out --include --trace-ascii log/2/trace808 --trace-config all --trace-time imap://127.0.0.1:40201 -u user:secret -X 'EXAMINE 808' > log/2/stdout808 2> log/2/stderr808 === End of file commands.log === Start of file imap_server.log 19:30:03.111765 ====> Client connect 19:30:03.112537 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.115251 < "A001 CAPABILITY" 19:30:03.115625 > "A001 BAD Command[CR][LF]" 19:30:03.117208 < "A002 LIST "verifiedserver" *" 19:30:03.117515 LIST_imap got "verifiedserver" * 19:30:03.117803 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:03.118023 > "A002 OK LIST Completed[CR][LF]" 19:30:03.118158 return proof we are we 19:30:03.120160 < "A003 LOGOUT" 19:30:03.120459 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.120683 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.122128 MAIN sockfilt said DISC 19:30:03.122377 ====> Client disconnected 19:30:03.122841 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.574382 ====> Client connect 19:30:02.575855 Received DATA (on stdin) 19:30:02.575975 > 178 bytes data, server => client 19:30:02.576089 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.576230 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.576392 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.576611 'rve\r\n' 19:30:02.577152 < 17 bytes data, client => server 19:30:02.577342 'A001 CAPABILITY\r\n' 19:30:02.578904 Received DATA (on stdin) 19:30:02.579022 > 18 bytes data, server => client 19:30:02.579109 'A001 BAD Command\r\n' 19:30:02.579574 < 30 bytes data, client => server 19:30:02.579709 'A002 LIST "verifiedserver" *\r\n' 19:30:02.581424 Received DATA (on stdin) 19:30:02.581558 > 34 bytes data, server => client 19:30:02.581647 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:02.581864 Received DATA (on stdin) 19:30:02.581974 > 24 bytes data, server => client 19:30:02.582054 'A002 OK LIST Completed\r\n' 19:30:02.582547 < 13 bytes data, client => server 19:30:02.582668 'A003 LOGOUT\r\n' 19:30:02.583898 Received DATA (on stdin) 19:30:02.584007 > 36 bytes data, server => client 19:30:02.584085 '* BYE curl IMAP server signing off\r\n' 19:30:02.584315 Received DATA (on stdin) 19:30:02.584491 > 26 bytes data, server => client 19:30:02.584591 'A003 OK LOGOUT completed\r\n' 19:30:02.584916 ====> Client disconnect 19:30:02.585821 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 808 === End of file server.cmd === Start of file valgrind808 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): CMD (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/4/valgrind810 ../src/curl -q --output log/4/curl810.out --include --trace-ascii log/4/trace810 --trace-config all --trace-time imap://127.0.0.1:38513/810?NEW -u user:secret > log/4/stdout810 2> log/4/stderr810 ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind808 test 0809...[IMAP mailbox STATUS (CUSTOMREQUEST)] ../libtool --mode=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/valgrind809 ../src/curl -q --output log/1/curl809.out --include --trace-ascii log/1/trace809 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/1/stdout809 2> log/1/stderr809 809: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 809 === Start of file commands.log ../libtool --mode=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/valgrind809 ../src/curl -q --output log/1/curl809.out --include --trace-ascii log/1/trace809 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'STATUS 809 (UIDNEXT MESSAGES)' > log/1/stdout809 2> log/1/stderr809 === End of file commands.log === Start of file imap_server.log 19:30:03.174196 ====> Client connect 19:30:03.174972 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.176766 < "A001 CAPABILITY" 19:30:03.177064 > "A001 BAD Command[CR][LF]" 19:30:03.178202 < "A002 LIST "verifiedserver" *" 19:30:03.178444 LIST_imap got "verifiedserver" * 19:30:03.178679 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:03.178876 > "A002 OK LIST Completed[CR][LF]" 19:30:03.179006 return proof we are we 19:30:03.180226 < "A003 LOGOUT" 19:30:03.180483 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.180650 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.181738 MAIN sockfilt said DISC 19:30:03.182010 ====> Client disconnected 19:30:03.182354 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.636809 ====> Client connect 19:30:02.637974 Received DATA (on stdin) 19:30:02.638121 > 178 bytes data, server => client 19:30:02.638207 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.638282 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.638349 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.638428 'rve\r\n' 19:30:02.639172 < 17 bytes data, client => server 19:30:02.639329 'A001 CAPABILITY\r\n' 19:30:02.640082 Received DATA (on stdin) 19:30:02.640197 > 18 bytes data, server => client 19:30:02.640275 'A001 BAD Command\r\n' 19:30:02.640806 < 30 bytes data, client => server 19:30:02.640936 'A002 LIST "verifiedserver" *\r\n' 19:30:02.641699 Received DATA (on stdin) 19:30:02.641822 > 34 bytes data, server => client 19:30:02.641902 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:02.642113 Received DATA (on stdin) 19:30:02.642210 > 24 bytes data, server => client 19:30:02.642293 'A002 OK LIST Completed\r\n' 19:30:02.642834 < 13 bytes data, client => server 19:30:02.642964 'A003 LOGOUT\r\n' 19:30:02.643495 Received DATA (on stdin) 19:30:02.643607 > 36 bytes data, server => client 19:30:02.643682 '* BYE curl IMAP server signing off\r\n' 19:30:02.643889 Received DATA (on stdin) 19:30:02.643995 > 26 bytes data, server => client 19:30:02.644081 'A003 OK LOGOUT completed\r\n' 19:30:02.644489 ====> Client disconnect 19:30:02.645046 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 809 === End of file server.cmd === Start of file valgrind809 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind809 test 0810...[IMAP SEARCH for NEW messages] ../libtool --mode=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/valgrind810 ../src/curl -q --output log/4/curl810.out --include --trace-ascii log/4/trace810 --trace-config all --trace-time imap://127.0.0.1:38513/810?NEW -u user:secret > log/4/stdout810 2> log/4/stderr810 810: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 810 === Start of file commands.log ../libtool --mode=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/valgrind810 ../src/curl -q --output log/4/curl810.out --include --trace-ascii log/4/trace810 --trace-config all --trace-time imap://127.0.0.1:38513/810?NEW -u user:secret > log/4/stdout810 2> log/4/stderr810 === End of file commands.log === Start of file imap_server.log 19:30:03.300515 ====> Client connect 19:30:03.301254 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.303280 < "A001 CAPABILITY" 19:30:03.303676 > "A001 BAD Command[CR][LF]" 19:30:03.304720 < "A002 LIST "verifiedserver" *" 19:30:03.305014 LIST_imap got "verifiedserver" * 19:30:03.305284 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:03.305612 > "A002 OK LIST Completed[CR][LF]" 19:30:03.305784 return proof we are we 19:30:03.306963 < "A003 LOGOUT" 19:30:03.307371 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.307571 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.310513 MAIN sockfilt said DISC 19:30:03.310819 ====> Client disconnected 19:30:03.311142 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:02.763125 ====> Client connect 19:30:02.764637 Received DATA (on stdin) 19:30:02.764786 > 178 bytes data, server => client 19:30:02.764881 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:02.764959 ' / __| | | | |_) | | CMD (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/valgrind811 ../src/curl -q --output log/3/curl811.out --include --trace-ascii log/3/trace811 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811 CMD (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/2/valgrind812 ../src/curl -q --output log/2/curl812.out --include --trace-ascii log/2/trace812 --trace-config all --trace-time imap://127.0.0.1:40201 -u user:secret -X 'DELETE 812' > log/2/stdout812 2> log/2/stderr812 \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:02.765032 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:02.765095 'rve\r\n' 19:30:02.765585 < 17 bytes data, client => server 19:30:02.765727 'A001 CAPABILITY\r\n' 19:30:02.766680 Received DATA (on stdin) 19:30:02.766806 > 18 bytes data, server => client 19:30:02.766890 'A001 BAD Command\r\n' 19:30:02.767318 < 30 bytes data, client => server 19:30:02.767445 'A002 LIST "verifiedserver" *\r\n' 19:30:02.768288 Received DATA (on stdin) 19:30:02.768472 > 34 bytes data, server => client 19:30:02.768573 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:02.768799 Received DATA (on stdin) 19:30:02.768892 > 24 bytes data, server => client 19:30:02.768963 'A002 OK LIST Completed\r\n' 19:30:02.769551 < 13 bytes data, client => server 19:30:02.769681 'A003 LOGOUT\r\n' 19:30:02.770369 Received DATA (on stdin) 19:30:02.770496 > 36 bytes data, server => client 19:30:02.770570 '* BYE curl IMAP server signing off\r\n' 19:30:02.770778 Received DATA (on stdin) 19:30:02.770892 > 26 bytes data, server => client 19:30:02.770974 'A003 OK LOGOUT completed\r\n' 19:30:02.771359 ====> Client disconnect 19:30:02.773849 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 810 === End of file server.cmd === Start of file valgrind810 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind810 test 0811...[IMAP CREATE mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind811 ../src/curl -q --output log/3/curl811.out --include --trace-ascii log/3/trace811 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811 811: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 811 === Start of file commands.log ../libtool --mode=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/valgrind811 ../src/curl -q --output log/3/curl811.out --include --trace-ascii log/3/trace811 --trace-config all --trace-time imap://127.0.0.1:41627 -u user:secret -X 'CREATE 811' > log/3/stdout811 2> log/3/stderr811 === End of file commands.log === Start of file imap_server.log 19:30:03.491541 ====> Client connect 19:30:03.492388 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.495107 < "A001 CAPABILITY" 19:30:03.495667 > "A001 BAD Command[CR][LF]" 19:30:03.496738 < "A002 LIST "verifiedserver" *" 19:30:03.496977 LIST_imap got "verifiedserver" * 19:30:03.497204 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:03.497382 > "A002 OK LIST Completed[CR][LF]" 19:30:03.497626 return proof we are we 19:30:03.500759 < "A003 LOGOUT" 19:30:03.501049 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.501258 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.504406 MAIN sockfilt said DISC 19:30:03.504682 ====> Client disconnected 19:30:03.505015 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.954152 ====> Client connect 19:30:03.955370 Received DATA (on stdin) 19:30:03.955516 > 178 bytes data, server => client 19:30:03.955606 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.955686 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.955762 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.955832 'rve\r\n' 19:30:03.956325 < 17 bytes data, client => server 19:30:03.956533 'A001 CAPABILITY\r\n' 19:30:03.958664 Received DATA (on stdin) 19:30:03.958791 > 18 bytes data, server => client 19:30:03.958859 'A001 BAD Command\r\n' 19:30:03.959324 < 30 bytes data, client => server 19:30:03.959454 'A002 LIST "verifiedserver" *\r\n' 19:30:03.960207 Received DATA (on stdin) 19:30:03.960316 > 34 bytes data, server => client 19:30:03.960384 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:03.960920 Received DATA (on stdin) 19:30:03.961027 > 24 bytes data, server => client 19:30:03.961099 'A002 OK LIST Completed\r\n' 19:30:03.963104 < 13 bytes data, client => server 19:30:03.963233 'A003 LOGOUT\r\n' 19:30:03.964603 Received DATA (on stdin) 19:30:03.964803 > 36 bytes data, server => client 19:30:03.964890 '* BYE curl IMAP server signing off\r\n' 19:30:03.965142 Received DATA (on stdin) 19:30:03.965277 > 26 bytes data, server => client 19:30:03.965365 'A003 OK LOGOUT completed\r\n' 19:30:03.967120 ====> Client disconnect 19:30:03.968339 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 811 === End of file server.cmd === Start of file valgrind811 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind811 test 0812...[IMAP DELETE mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind812 ../src/curl -q --output log/2/curl812.out --include --trace-ascii log/2/trace812 --trace-config all CMD (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/1/valgrind813 ../src/curl -q --output log/1/curl813.out --include --trace-ascii log/1/trace813 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'RENAME 666 813' > log/1/stdout813 2> log/1/stderr813 --trace-time imap://127.0.0.1:40201 -u user:secret -X 'DELETE 812' > log/2/stdout812 2> log/2/stderr812 812: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 812 === Start of file commands.log ../libtool --mode=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/valgrind812 ../src/curl -q --output log/2/curl812.out --include --trace-ascii log/2/trace812 --trace-config all --trace-time imap://127.0.0.1:40201 -u user:secret -X 'DELETE 812' > log/2/stdout812 2> log/2/stderr812 === End of file commands.log === Start of file imap_server.log 19:30:03.792177 ====> Client connect 19:30:03.793039 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.795138 < "A001 CAPABILITY" 19:30:03.795528 > "A001 BAD Command[CR][LF]" 19:30:03.796737 < "A002 LIST "verifiedserver" *" 19:30:03.797019 LIST_imap got "verifiedserver" * 19:30:03.797314 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:03.797661 > "A002 OK LIST Completed[CR][LF]" 19:30:03.797834 return proof we are we 19:30:03.799209 < "A003 LOGOUT" 19:30:03.799583 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.799843 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.800926 MAIN sockfilt said DISC 19:30:03.801221 ====> Client disconnected 19:30:03.801667 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.254496 ====> Client connect 19:30:03.256010 Received DATA (on stdin) 19:30:03.256138 > 178 bytes data, server => client 19:30:03.256215 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.256287 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.256353 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.256578 'rve\r\n' 19:30:03.257059 < 17 bytes data, client => server 19:30:03.257262 'A001 CAPABILITY\r\n' 19:30:03.258532 Received DATA (on stdin) 19:30:03.258682 > 18 bytes data, server => client 19:30:03.258777 'A001 BAD Command\r\n' 19:30:03.259251 < 30 bytes data, client => server 19:30:03.259381 'A002 LIST "verifiedserver" *\r\n' 19:30:03.260304 Received DATA (on stdin) 19:30:03.260544 > 34 bytes data, server => client 19:30:03.260645 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:03.260902 Received DATA (on stdin) 19:30:03.261006 > 24 bytes data, server => client 19:30:03.261096 'A002 OK LIST Completed\r\n' 19:30:03.261721 < 13 bytes data, client => server 19:30:03.261858 'A003 LOGOUT\r\n' 19:30:03.262606 Received DATA (on stdin) 19:30:03.262746 > 36 bytes data, server => client 19:30:03.262841 '* BYE curl IMAP server signing off\r\n' 19:30:03.263088 Received DATA (on stdin) 19:30:03.263221 > 26 bytes data, server => client 19:30:03.263302 'A003 OK LOGOUT completed\r\n' 19:30:03.263638 ====> Client disconnect 19:30:03.264259 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 812 === End of file server.cmd === Start of file valgrind812 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind812 test 0813...[IMAP RENAME mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind813 ../src/curl -q --output log/1/curl813.out --include --trace-ascii log/1/trace813 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'RENAME 666 813' > log/1/stdout813 2> log/1/stderr813 813: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 813 === Start of file commands.log ../libtool --mode=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/valgrind813 ../src/curl -q --output log/1/curl813.out --include --trace-ascii log/1/trace813 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'RENAME 666 813' > log/1/stdout813 2> log/1/stderr813 === End of file commands.log === Start of file imap_server.log 19:30:03.827087 ====> Client connect 19:30:03.827840 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.829395 < "A001 CAPABILITY" 19:30:03.829839 > "A001 BAD Command[CR][LF]" 19:30:03.830941 < "A002 LIST "verifiedserver" *" 19:30:03.831232 LIST_imap got "verifiedserver" * 19:30:03.831471 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:03.831658 > "A002 OK LIST Completed[CR][LF]" 19:30:03.831784 return proof we are we 19:30:03.836955 < "A003 LOGOUT" 19:30:03.837286 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.837586 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.838866 MAIN sockfilt said DISC 19:30:03.839191 ====> Client disconnected 19:30:03.839688 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.289652 ====> Client connect 19:30:03.290820 Received DATA (on stdin) 19:30:03.290957 > 178 bytes data, server => client 19:30:03.291041 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.291120 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.291193 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.291254 'rve\r\n' 19:30:03.291817 < 17 bytes data, client => server 19:30:03.291952 'A001 CAPABILITY\r\n' 19:30:03.292831 Received DATA (on stdin) 19:30:03.292980 > 18 bytes data, server => client 19:30:03.293060 'A001 BAD Command\r\n' 19:30:03.293509 < 30 bytes data, client => server 19:30:03.293650 'A002 LIST "verifiedserver" *\r\n' 19:30:03.294469 Received DATA (on stdin) 19:30:03.294585 > 34 bytes data, server => client 19:30:03.294660 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:03.294870 Received DATA (on stdin) 19:30:03.294973 > 24 bytes data, server => client 19:30:03.295064 'A002 OK LIST Completed\r\n' 19:30:03.295654 < 13 bytes data, client => server 19:30:03.295780 'A003 LOGOUT\r\n' 19:30:03.300288 Received DATA (on stdin) 19:30:03.300491 > 36 bytes data, server => client 19:30:03.300590 '* BYE curl IMAP server signing off\r\n' 19:30:03.300844 Received DATA (on stdin) 19:30:03.301040 > 26 bytes data, server => client 19:30:03.301163 'A003 OK LOGCMD (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/4/valgrind814 ../src/curl -q --output log/4/curl814.out --include --trace-ascii log/4/trace814 --trace-config all --trace-time imap://127.0.0.1:38513/814 -u user:secret -X 'CHECK' > log/4/stdout814 2> log/4/stderr814 CMD (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/valgrind815 ../src/curl -q --output log/3/curl815.out --include --trace-ascii log/3/trace815 --trace-config all --trace-time imap://127.0.0.1:41627/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:41627/815 -X CLOSE -u user:secret > log/3/stdout815 2> log/3/stderr815 OUT completed\r\n' 19:30:03.301562 ====> Client disconnect 19:30:03.302209 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 813 === End of file server.cmd === Start of file valgrind813 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind813 test 0814...[IMAP CHECK mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind814 ../src/curl -q --output log/4/curl814.out --include --trace-ascii log/4/trace814 --trace-config all --trace-time imap://127.0.0.1:38513/814 -u user:secret -X 'CHECK' > log/4/stdout814 2> log/4/stderr814 814: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 814 === Start of file commands.log ../libtool --mode=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/valgrind814 ../src/curl -q --output log/4/curl814.out --include --trace-ascii log/4/trace814 --trace-config all --trace-time imap://127.0.0.1:38513/814 -u user:secret -X 'CHECK' > log/4/stdout814 2> log/4/stderr814 === End of file commands.log === Start of file imap_server.log 19:30:03.988567 ====> Client connect 19:30:03.989709 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:03.991721 < "A001 CAPABILITY" 19:30:03.992446 > "A001 BAD Command[CR][LF]" 19:30:03.994067 < "A002 LIST "verifiedserver" *" 19:30:03.994661 LIST_imap got "verifiedserver" * 19:30:03.995275 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:03.995498 > "A002 OK LIST Completed[CR][LF]" 19:30:03.995603 return proof we are we 19:30:03.996996 < "A003 LOGOUT" 19:30:03.997643 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:03.997871 > "A003 OK LOGOUT completed[CR][LF]" 19:30:03.998761 MAIN sockfilt said DISC 19:30:03.999210 ====> Client disconnected 19:30:03.999588 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.448786 ====> Client connect 19:30:03.452659 Received DATA (on stdin) 19:30:03.452822 > 178 bytes data, server => client 19:30:03.452902 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.452978 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.453041 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.453097 'rve\r\n' 19:30:03.453668 < 17 bytes data, client => server 19:30:03.453802 'A001 CAPABILITY\r\n' 19:30:03.455459 Received DATA (on stdin) 19:30:03.455582 > 18 bytes data, server => client 19:30:03.455648 'A001 BAD Command\r\n' 19:30:03.456166 < 30 bytes data, client => server 19:30:03.456294 'A002 LIST "verifiedserver" *\r\n' 19:30:03.458263 Received DATA (on stdin) 19:30:03.458402 > 34 bytes data, server => client 19:30:03.458467 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:03.458667 Received DATA (on stdin) 19:30:03.458753 > 24 bytes data, server => client 19:30:03.458838 'A002 OK LIST Completed\r\n' 19:30:03.459370 < 13 bytes data, client => server 19:30:03.459498 'A003 LOGOUT\r\n' 19:30:03.460613 Received DATA (on stdin) 19:30:03.460746 > 36 bytes data, server => client 19:30:03.460810 '* BYE curl IMAP server signing off\r\n' 19:30:03.461000 Received DATA (on stdin) 19:30:03.461099 > 26 bytes data, server => client 19:30:03.461179 'A003 OK LOGOUT completed\r\n' 19:30:03.461483 ====> Client disconnect 19:30:03.462211 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 814 === End of file server.cmd === Start of file valgrind814 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind814 test 0815...[IMAP STORE - delete message (CUSTOMREQUEST)] ../libtool --mode=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/valgrind815 ../src/curl -q --output log/3/curl815.out --include --trace-ascii log/3/trace815 --trace-config all --trace-time imap://127.0.0.1:41627/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:41627/815 -X CLOSE -u user:secret > log/3/stdout815 2> log/3/stderr815 815: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 815 === Start of file commands.log ../libtool --mode=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/valgrind815 ../src/curl -q --output log/3/curl815.out --include --trace-ascii log/3/trace815 --trace-config all --trace-time imap://127.0.0.1:41627/815 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:41627/815 -X CLOSE -u user:secret > log/3/stdout815 2> log/3/stderr815 === End of file commands.log === Start of file imap_server.log 19:30:04.141761 ====> Client connect 19:30:04.142590 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LCMD (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/2/valgrind816 ../src/curl -q --output log/2/curl816.out --include --trace-ascii log/2/trace816 --trace-config all --trace-time imap://127.0.0.1:40201/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:40201/816 -X EXPUNGE -u user:secret > log/2/stdout816 2> log/2/stderr816 F] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:04.144900 < "A001 CAPABILITY" 19:30:04.145262 > "A001 BAD Command[CR][LF]" 19:30:04.147339 < "A002 LIST "verifiedserver" *" 19:30:04.147651 LIST_imap got "verifiedserver" * 19:30:04.147944 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:04.148237 > "A002 OK LIST Completed[CR][LF]" 19:30:04.148426 return proof we are we 19:30:04.151203 < "A003 LOGOUT" 19:30:04.151517 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:04.151748 > "A003 OK LOGOUT completed[CR][LF]" 19:30:04.197035 MAIN sockfilt said DISC 19:30:04.197290 ====> Client disconnected 19:30:04.197694 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:04.604277 ====> Client connect 19:30:04.605961 Received DATA (on stdin) 19:30:04.606087 > 178 bytes data, server => client 19:30:04.606185 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:04.606297 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:04.606390 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:04.606490 'rve\r\n' 19:30:04.606995 < 17 bytes data, client => server 19:30:04.607125 'A001 CAPABILITY\r\n' 19:30:04.608619 Received DATA (on stdin) 19:30:04.608753 > 18 bytes data, server => client 19:30:04.608868 'A001 BAD Command\r\n' 19:30:04.609576 < 30 bytes data, client => server 19:30:04.609716 'A002 LIST "verifiedserver" *\r\n' 19:30:04.611825 Received DATA (on stdin) 19:30:04.612057 > 34 bytes data, server => client 19:30:04.612228 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:04.612610 Received DATA (on stdin) 19:30:04.612735 > 24 bytes data, server => client 19:30:04.612813 'A002 OK LIST Completed\r\n' 19:30:04.613513 < 13 bytes data, client => server 19:30:04.613638 'A003 LOGOUT\r\n' 19:30:04.614979 Received DATA (on stdin) 19:30:04.615094 > 36 bytes data, server => client 19:30:04.615173 '* BYE curl IMAP server signing off\r\n' 19:30:04.615454 Received DATA (on stdin) 19:30:04.615575 > 26 bytes data, server => client 19:30:04.615651 'A003 OK LOGOUT completed\r\n' 19:30:04.659764 ====> Client disconnect 19:30:04.672467 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 815 === End of file server.cmd === Start of file valgrind815 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind815 test 0816...[IMAP STORE - delete message with confirmation (CUSTOMREQUEST)] ../libtool --mode=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/valgrind816 ../src/curl -q --output log/2/curl816.out --include --trace-ascii log/2/trace816 --trace-config all --trace-time imap://127.0.0.1:40201/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:40201/816 -X EXPUNGE -u user:secret > log/2/stdout816 2> log/2/stderr816 816: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 816 === Start of file commands.log ../libtool --mode=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/valgrind816 ../src/curl -q --output log/2/curl816.out --include --trace-ascii log/2/trace816 --trace-config all --trace-time imap://127.0.0.1:40201/816 -X 'STORE 123 +Flags \Deleted' -u user:secret -: imap://127.0.0.1:40201/816 -X EXPUNGE -u user:secret > log/2/stdout816 2> log/2/stderr816 === End of file commands.log === Start of file imap_server.log 19:30:04.433948 ====> Client connect 19:30:04.434672 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:04.438215 < "A001 CAPABILITY" 19:30:04.438713 > "A001 BAD Command[CR][LF]" 19:30:04.439772 < "A002 LIST "verifiedserver" *" 19:30:04.440032 LIST_imap got "verifiedserver" * 19:30:04.440300 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:04.440505 > "A002 OK LIST Completed[CR][LF]" 19:30:04.440674 return proof we are we 19:30:04.442515 < "A003 LOGOUT" 19:30:04.442833 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:04.443033 > "A003 OK LOGOUT completed[CR][LF]" 19:30:04.447652 MAIN sockfilt said DISC 19:30:04.447974 ====> Client disconnected 19:30:04.448357 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.896539 ====> Client connect 19:30:03.897627 Received DATA (on stdin) 19:30:03.897746 > 178 bytes data, server => client 19:30:03.897820 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.897893 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.897955 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.898006 'rve\r\n' 19:30:03.898425 < 17 bytes data, client => server 19:30:03.898546 'A001 CAPABILITY\r\n' 19:30:03.901682 Received DATA (on stdin) 19:30:03.901826 > 18 bytes data, server => client 19:30:03.901902 'A001 BAD Command\r\n' 19:30:03.902333 < 30 bytes data, client => server 19:30:03.902465 'A002 LIST "verifiedserver" *\r\n' 19:30:03.903271 Received DATA (on stdin) 19:30:03.903383 > 34 bytes data, server => client 19:30:03.903453 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:03.903666 Received DATA (on stdin) 19:30:03.903768 > 24 bytes data, server => client 19:30:03.903842 'A002 OK LIST Completed\r\n' 19:30:03.905036 < 13 bytes data, client => server 19:30:03.905185 'A003 LOGOUT\r\n' 19:30:03.905815 Received DATA (on stdin) 19:30:03.905932 > 36 bytes data, server => client 19:30:03.906007 '* BYE curl IMAP server signing off\r\n' 19:30:03.906260 Received DATA (on stdin) 19:30:03.906383 > 26 bytes data, server => client 19:30:03.906456 'A003 OK LOGOUT completed\r\n' 19:30:03.906786 ====> Client disconnect 19:30:03.910978 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 816 === End of file server.cmd === Start of file valgrind816 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibCMD (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/1/valgrind817 ../src/curl -q --output log/1/curl817.out --include --trace-ascii log/1/trace817 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817 CMD (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/4/valgrind818 ../src/curl -q --output log/4/curl818.out --include --trace-ascii log/4/trace818 --trace-config all --trace-time imap://127.0.0.1:38513 -X NOOP -u user:secret > log/4/stdout818 2> log/4/stderr818 c's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind816 test 0817...[IMAP COPY message to mailbox (CUSTOMREQUEST)] ../libtool --mode=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/valgrind817 ../src/curl -q --output log/1/curl817.out --include --trace-ascii log/1/trace817 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817 817: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 817 === Start of file commands.log ../libtool --mode=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/valgrind817 ../src/curl -q --output log/1/curl817.out --include --trace-ascii log/1/trace817 --trace-config all --trace-time imap://127.0.0.1:38385 -u user:secret -X 'COPY 123 817' > log/1/stdout817 2> log/1/stderr817 === End of file commands.log === Start of file imap_server.log 19:30:04.476004 ====> Client connect 19:30:04.477301 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:04.480814 < "A001 CAPABILITY" 19:30:04.481564 > "A001 BAD Command[CR][LF]" 19:30:04.482864 < "A002 LIST "verifiedserver" *" 19:30:04.486557 LIST_imap got "verifiedserver" * 19:30:04.486966 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:04.487433 > "A002 OK LIST Completed[CR][LF]" 19:30:04.487649 return proof we are we 19:30:04.489336 < "A003 LOGOUT" 19:30:04.489746 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:04.489936 > "A003 OK LOGOUT completed[CR][LF]" 19:30:04.537751 MAIN sockfilt said DISC 19:30:04.538022 ====> Client disconnected 19:30:04.538363 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:03.938446 ====> Client connect 19:30:03.940259 Received DATA (on stdin) 19:30:03.940637 > 178 bytes data, server => client 19:30:03.940921 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:03.941133 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:03.941326 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:03.941504 'rve\r\n' 19:30:03.942630 < 17 bytes data, client => server 19:30:03.942923 'A001 CAPABILITY\r\n' 19:30:03.944642 Received DATA (on stdin) 19:30:03.944899 > 18 bytes data, server => client 19:30:03.944994 'A001 BAD Command\r\n' 19:30:03.945439 < 30 bytes data, client => server 19:30:03.945562 'A002 LIST "verifiedserver" *\r\n' 19:30:03.949959 Received DATA (on stdin) 19:30:03.950240 > 34 bytes data, server => client 19:30:03.950419 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:03.950741 Received DATA (on stdin) 19:30:03.950897 > 24 bytes data, server => client 19:30:03.950986 'A002 OK LIST Completed\r\n' 19:30:03.951720 < 13 bytes data, client => server 19:30:03.952007 'A003 LOGOUT\r\n' 19:30:03.952725 Received DATA (on stdin) 19:30:03.952847 > 36 bytes data, server => client 19:30:03.952918 '* BYE curl IMAP server signing off\r\n' 19:30:03.953091 Received DATA (on stdin) 19:30:03.953179 > 26 bytes data, server => client 19:30:03.953250 'A003 OK LOGOUT completed\r\n' 19:30:03.999536 ====> Client disconnect 19:30:04.001017 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 817 === End of file server.cmd === Start of file valgrind817 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind817 test 0818...[IMAP NOOP (CUSTOMREQUEST)] ../libtool --mode=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/valgrind818 ../src/curl -q --output log/4/curl818.out --include --trace-ascii log/4/trace818 --trace-config all --trace-time imap://127.0.0.1:38513 -X NOOP -u user:secret > log/4/stdout818 2> log/4/stderr818 818: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 818 === Start of file commands.log ../libtool --mode=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/valgrind818 ../src/curl -q --output log/4/curl818.out --include --trace-ascii log/4/trace818 --trace-config all --trace-time imap://127.0.0.1:38513 -X NOOP -u user:secret > log/4/stdout818 2> log/4/stderr818 === End of file commands.log === Start of file imap_server.log 19:30:04.644428 ====> Client connect 19:30:04.645198 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:04.646950 < "A001 CAPABILITY" 19:30:04.647266 > "A001 BAD Command[CR][LF]" 19:30:04.648389 < "A002 LIST "verifiedserver" *" 19:30:04.648650 LIST_imap got "verifiedserver" * 19:30:04.648916 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:04.649131 > "A002 OK LIST Completed[CR][LF]" 19:30:04.649288 return proof we are we 19:30:04.650939 < "A003 LOGOUT" 19:30:04.651241 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:04.651431 > "A003 OK LOGOUT completed[CR][LF]" 19:30:04.655245 MAIN sockfilt said DISC 19:30:04.655529 ====> Client disconnected 19:30:04.655868 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:04.106982 ====> Client connect 19:30:04.108152 Received DATA (on stdin) 19:30:04.108290 > 178 bytes data, server => client 19:30:04.108507 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n 'CMD (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/valgrind819 ../src/curl -q --output log/3/curl819.out --include --trace-ascii log/3/trace819 --trace-config all --trace-time 'imap://127.0.0.1:41627/819/;MAILINDEX=1' -u user:secret > log/3/stdout819 2> log/3/stderr819 CMD (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/2/valgrind820 ../src/curl -q --output log/2/curl820.out --include --trace-ascii log/2/trace820 --trace-config all --trace-time 'imap://127.0.0.1:40201/820/;MAILINDEX=1' -u user:secret > log/2/stdout820 2> log/2/stderr820 19:30:04.108627 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:04.108718 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:04.108778 'rve\r\n' 19:30:04.109283 < 17 bytes data, client => server 19:30:04.109426 'A001 CAPABILITY\r\n' 19:30:04.110251 Received DATA (on stdin) 19:30:04.110384 > 18 bytes data, server => client 19:30:04.110477 'A001 BAD Command\r\n' 19:30:04.110936 < 30 bytes data, client => server 19:30:04.111080 'A002 LIST "verifiedserver" *\r\n' 19:30:04.111903 Received DATA (on stdin) 19:30:04.112025 > 34 bytes data, server => client 19:30:04.112103 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:04.112609 Received DATA (on stdin) 19:30:04.112737 > 24 bytes data, server => client 19:30:04.112821 'A002 OK LIST Completed\r\n' 19:30:04.113469 < 13 bytes data, client => server 19:30:04.113605 'A003 LOGOUT\r\n' 19:30:04.114213 Received DATA (on stdin) 19:30:04.114326 > 36 bytes data, server => client 19:30:04.114401 '* BYE curl IMAP server signing off\r\n' 19:30:04.114603 Received DATA (on stdin) 19:30:04.114702 > 26 bytes data, server => client 19:30:04.114770 'A003 OK LOGOUT completed\r\n' 19:30:04.117928 ====> Client disconnect 19:30:04.118517 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 818 === End of file server.cmd === Start of file valgrind818 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind818 test 0819...[IMAP plain 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/3/valgrind819 ../src/curl -q --output log/3/curl819.out --include --trace-ascii log/3/trace819 --trace-config all --trace-time 'imap://127.0.0.1:41627/819/;MAILINDEX=1' -u user:secret > log/3/stdout819 2> log/3/stderr819 819: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 819 === Start of file commands.log ../libtool --mode=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/valgrind819 ../src/curl -q --output log/3/curl819.out --include --trace-ascii log/3/trace819 --trace-config all --trace-time 'imap://127.0.0.1:41627/819/;MAILINDEX=1' -u user:secret > log/3/stdout819 2> log/3/stderr819 === End of file commands.log === Start of file imap_server.log 19:30:04.854560 ====> Client connect 19:30:04.855391 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:04.857692 < "A001 CAPABILITY" 19:30:04.858036 > "A001 BAD Command[CR][LF]" 19:30:04.859578 < "A002 LIST "verifiedserver" *" 19:30:04.859852 LIST_imap got "verifiedserver" * 19:30:04.860481 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:04.860741 > "A002 OK LIST Completed[CR][LF]" 19:30:04.860886 return proof we are we 19:30:04.862676 < "A003 LOGOUT" 19:30:04.862986 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:04.863185 > "A003 OK LOGOUT completed[CR][LF]" 19:30:04.864600 MAIN sockfilt said DISC 19:30:04.864913 ====> Client disconnected 19:30:04.865263 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.317122 ====> Client connect 19:30:05.318676 Received DATA (on stdin) 19:30:05.318877 > 178 bytes data, server => client 19:30:05.319040 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.319134 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.319210 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.319275 'rve\r\n' 19:30:05.319716 < 17 bytes data, client => server 19:30:05.319850 'A001 CAPABILITY\r\n' 19:30:05.321265 Received DATA (on stdin) 19:30:05.321393 > 18 bytes data, server => client 19:30:05.321466 'A001 BAD Command\r\n' 19:30:05.321921 < 30 bytes data, client => server 19:30:05.322050 'A002 LIST "verifiedserver" *\r\n' 19:30:05.323142 Received DATA (on stdin) 19:30:05.323270 > 34 bytes data, server => client 19:30:05.324056 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:05.324318 Received DATA (on stdin) 19:30:05.324521 > 24 bytes data, server => client 19:30:05.324608 'A002 OK LIST Completed\r\n' 19:30:05.325167 < 13 bytes data, client => server 19:30:05.325305 'A003 LOGOUT\r\n' 19:30:05.325950 Received DATA (on stdin) 19:30:05.326064 > 36 bytes data, server => client 19:30:05.326150 '* BYE curl IMAP server signing off\r\n' 19:30:05.326368 Received DATA (on stdin) 19:30:05.326477 > 26 bytes data, server => client 19:30:05.326545 'A003 OK LOGOUT completed\r\n' 19:30:05.326827 ====> Client disconnect 19:30:05.327901 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN REPLY AUTHENTICATE + REPLY AHVzZXIAc2VjcmV0 A002 OK AUTHENTICATE completed Testnum 819 === End of file server.cmd === Start of file valgrind819 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind819 test 0820...[IMAP login 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=loCMD (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/1/valgrind821 ../src/curl -q --output log/1/curl821.out --include --trace-ascii log/1/trace821 --trace-config all --trace-time 'imap://127.0.0.1:38385/821/;MAILINDEX=1' -u user:secret > log/1/stdout821 2> log/1/stderr821 g/2/valgrind820 ../src/curl -q --output log/2/curl820.out --include --trace-ascii log/2/trace820 --trace-config all --trace-time 'imap://127.0.0.1:40201/820/;MAILINDEX=1' -u user:secret > log/2/stdout820 2> log/2/stderr820 820: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 820 === Start of file commands.log ../libtool --mode=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/valgrind820 ../src/curl -q --output log/2/curl820.out --include --trace-ascii log/2/trace820 --trace-config all --trace-time 'imap://127.0.0.1:40201/820/;MAILINDEX=1' -u user:secret > log/2/stdout820 2> log/2/stderr820 === End of file commands.log === Start of file imap_server.log 19:30:05.100183 ====> Client connect 19:30:05.100925 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.102507 < "A001 CAPABILITY" 19:30:05.102882 > "A001 BAD Command[CR][LF]" 19:30:05.104256 < "A002 LIST "verifiedserver" *" 19:30:05.104526 LIST_imap got "verifiedserver" * 19:30:05.104798 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:05.105033 > "A002 OK LIST Completed[CR][LF]" 19:30:05.105190 return proof we are we 19:30:05.106834 < "A003 LOGOUT" 19:30:05.107184 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.107410 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.108395 MAIN sockfilt said DISC 19:30:05.108727 ====> Client disconnected 19:30:05.109155 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:04.562767 ====> Client connect 19:30:04.563870 Received DATA (on stdin) 19:30:04.564008 > 178 bytes data, server => client 19:30:04.564089 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:04.564160 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:04.564224 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:04.564282 'rve\r\n' 19:30:04.564845 < 17 bytes data, client => server 19:30:04.564997 'A001 CAPABILITY\r\n' 19:30:04.565838 Received DATA (on stdin) 19:30:04.565984 > 18 bytes data, server => client 19:30:04.566084 'A001 BAD Command\r\n' 19:30:04.566682 < 30 bytes data, client => server 19:30:04.566859 'A002 LIST "verifiedserver" *\r\n' 19:30:04.567759 Received DATA (on stdin) 19:30:04.567881 > 34 bytes data, server => client 19:30:04.567957 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:04.568163 Received DATA (on stdin) 19:30:04.568268 > 24 bytes data, server => client 19:30:04.568337 'A002 OK LIST Completed\r\n' 19:30:04.569157 < 13 bytes data, client => server 19:30:04.569318 'A003 LOGOUT\r\n' 19:30:04.570144 Received DATA (on stdin) 19:30:04.570271 > 36 bytes data, server => client 19:30:04.570358 '* BYE curl IMAP server signing off\r\n' 19:30:04.570590 Received DATA (on stdin) 19:30:04.570712 > 26 bytes data, server => client 19:30:04.570791 'A003 OK LOGOUT completed\r\n' 19:30:04.571142 ====> Client disconnect 19:30:04.571706 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH LOGIN REPLY AUTHENTICATE + VXNlcm5hbWU6 REPLY dXNlcg== + UGFzc3dvcmQ6 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed Testnum 820 === End of file server.cmd === Start of file valgrind820 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind820 test 0821...[IMAP CRAM-MD5 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/valgrind821 ../src/curl -q --output log/1/curl821.out --include --trace-ascii log/1/trace821 --trace-config all --trace-time 'imap://127.0.0.1:38385/821/;MAILINDEX=1' -u user:secret > log/1/stdout821 2> log/1/stderr821 821: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 821 === Start of file commands.log ../libtool --mode=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/valgrind821 ../src/curl -q --output log/1/curl821.out --include --trace-ascii log/1/trace821 --trace-config all --trace-time 'imap://127.0.0.1:38385/821/;MAILINDEX=1' -u user:secret > log/1/stdout821 2> log/1/stderr821 === End of file commands.log === Start of file imap_server.log 19:30:05.189973 ====> Client connect 19:30:05.190735 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.192174 < "A001 CAPABILITY" 19:30:05.192475 > "A001 BAD Command[CR][LF]" 19:30:05.193662 < "A002 LIST "verifiedserver" *" 19:30:05.193948 LIST_imap got "verifiedserver" * 19:30:05.194319 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:05.194521 > "A002 OK LIST Completed[CR][LF]" 19:30:05.194655 return proof we are we 19:30:05.195905 < "A003 LOGOUT" 19:30:05.196162 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.196354 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.197300 MAIN sockfilt said DISC 19:30:05.197699 ====> Client disconnected 19:30:05.198035 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:04.652504 ====> Client connect 19:30:04.653683 Received DATA (on stdin) 19:30:04.653806 > 178 bytes data, server => client 19:30:04.653909 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:04.653984 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:04.654051 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:04.654114 'rve\r\n' 19:30:04.654557 < 17 bytes data, client => server 19:30:04.654693 'A001 CAPABILITY\r\n' 19:30:04.655449 Received DATA (on stdin) 19:30:04.655568 > 18 bytes data, server => client 19:30:04.655644 'A001 BAD Command\r\n' 19:30:04.656104 < 30 bytes data, client => server 19:30:04.656244 'A002 LIST "verifiedserver" *\r\n' 19:30:04.657283 Received DATA (on stdin) 19:30:04.657412 > 34 bytes data, server => client 19:30:04.657487 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:04.657705 Received DATA (on stdin) 19:30:04.657802 > 24 bytes data, server => client 19:30:04.657892 'A002 OK LIST Completed\r\n' 19:30:04.658477 < 13 bytes data, client => server 19:30:04.658616 'A003 LOGOUT\r\n' 19:30:04.659126 Received DATA (onCMD (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/4/valgrind822 ../src/curl -q --output log/4/curl822.out --include --trace-ascii log/4/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38513/822/;MAILINDEX=1' -u testuser:testpass > log/4/stdout822 2> log/4/stderr822 CMD (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/valgrind824 ../src/curl -q --output log/3/curl824.out --include --trace-ascii log/3/trace824 --trace-config all --trace-time 'imap://127.0.0.1:41627/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout824 2> log/3/stderr824 stdin) 19:30:04.659252 > 36 bytes data, server => client 19:30:04.659340 '* BYE curl IMAP server signing off\r\n' 19:30:04.659556 Received DATA (on stdin) 19:30:04.659666 > 26 bytes data, server => client 19:30:04.659736 'A003 OK LOGOUT completed\r\n' 19:30:04.660023 ====> Client disconnect 19:30:04.660672 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH CRAM-MD5 REPLY AUTHENTICATE + PDE5NzIuOTg3NjU0MzIxQGN1cmw+ REPLY dXNlciA3MDMxNzI1NTk5ZmRiYjVkNDEyNjg5YWEzMjNlM2UwYg== A002 OK AUTHENTICATE completed Testnum 821 === End of file server.cmd === Start of file valgrind821 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind821 test 0822...[IMAP NTLM 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/valgrind822 ../src/curl -q --output log/4/curl822.out --include --trace-ascii log/4/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38513/822/;MAILINDEX=1' -u testuser:testpass > log/4/stdout822 2> log/4/stderr822 822: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 822 === Start of file commands.log ../libtool --mode=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/valgrind822 ../src/curl -q --output log/4/curl822.out --include --trace-ascii log/4/trace822 --trace-config all --trace-time 'imap://127.0.0.1:38513/822/;MAILINDEX=1' -u testuser:testpass > log/4/stdout822 2> log/4/stderr822 === End of file commands.log === Start of file imap_server.log 19:30:05.286948 ====> Client connect 19:30:05.287742 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.289142 < "A001 CAPABILITY" 19:30:05.289519 > "A001 BAD Command[CR][LF]" 19:30:05.290698 < "A002 LIST "verifiedserver" *" 19:30:05.290960 LIST_imap got "verifiedserver" * 19:30:05.291236 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:05.291452 > "A002 OK LIST Completed[CR][LF]" 19:30:05.291578 return proof we are we 19:30:05.292908 < "A003 LOGOUT" 19:30:05.293194 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.293493 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.297113 MAIN sockfilt said DISC 19:30:05.297367 ====> Client disconnected 19:30:05.297774 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:04.749494 ====> Client connect 19:30:04.750681 Received DATA (on stdin) 19:30:04.750806 > 178 bytes data, server => client 19:30:04.750892 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:04.750969 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:04.751042 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:04.751095 'rve\r\n' 19:30:04.751513 < 17 bytes data, client => server 19:30:04.751635 'A001 CAPABILITY\r\n' 19:30:04.752523 Received DATA (on stdin) 19:30:04.752640 > 18 bytes data, server => client 19:30:04.752717 'A001 BAD Command\r\n' 19:30:04.753146 < 30 bytes data, client => server 19:30:04.753276 'A002 LIST "verifiedserver" *\r\n' 19:30:04.754238 Received DATA (on stdin) 19:30:04.754351 > 34 bytes data, server => client 19:30:04.754428 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:04.754648 Received DATA (on stdin) 19:30:04.754753 > 24 bytes data, server => client 19:30:04.754843 'A002 OK LIST Completed\r\n' 19:30:04.755417 < 13 bytes data, client => server 19:30:04.755554 'A003 LOGOUT\r\n' 19:30:04.758841 Received DATA (on stdin) 19:30:04.758999 > 36 bytes data, server => client 19:30:04.759081 '* BYE curl IMAP server signing off\r\n' 19:30:04.759320 Received DATA (on stdin) 19:30:04.759436 > 26 bytes data, server => client 19:30:04.759514 'A003 OK LOGOUT completed\r\n' 19:30:04.759828 ====> Client disconnect 19:30:04.760333 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM REPLY AUTHENTICATE + REPLY TlRMTVNTUAABAAAABoIIAAAAAAAAAAAAAAAAAAAAAAA= + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed Testnum 822 === End of file server.cmd === Start of file valgrind822 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind822 test 0824...[IMAP OAuth 2.0 (XOAUTH2) 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/3/valgrind824 ../src/curl -q --output log/3/curl824.out --include --trace-ascii log/3/trace824 --trace-config all --trace-time 'imap://127.0.0.1:41627/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout824 2> log/3/stderr824 824: protocol FAILED! There was no content at all in the filCMD (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/2/valgrind825 ../src/curl -q --output log/2/curl825.out --include --trace-ascii log/2/trace825 --trace-config all --trace-time 'imap://127.0.0.1:40201/825/;MAILINDEX=1' -u user:secret > log/2/stdout825 2> log/2/stderr825 CMD (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/1/valgrind826 ../src/curl -q --output log/1/curl826.out --include --trace-ascii log/1/trace826 --trace-config all --trace-time 'imap://127.0.0.1:38385/826/;MAILINDEX=1' -u user:secret > log/1/stdout826 2> log/1/stderr826 e log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 824 === Start of file commands.log ../libtool --mode=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/valgrind824 ../src/curl -q --output log/3/curl824.out --include --trace-ascii log/3/trace824 --trace-config all --trace-time 'imap://127.0.0.1:41627/824/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout824 2> log/3/stderr824 === End of file commands.log === Start of file imap_server.log 19:30:05.567702 ====> Client connect 19:30:05.568516 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.570315 < "A001 CAPABILITY" 19:30:05.570656 > "A001 BAD Command[CR][LF]" 19:30:05.571735 < "A002 LIST "verifiedserver" *" 19:30:05.571976 LIST_imap got "verifiedserver" * 19:30:05.572258 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:05.572479 > "A002 OK LIST Completed[CR][LF]" 19:30:05.572627 return proof we are we 19:30:05.574626 < "A003 LOGOUT" 19:30:05.574945 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.575172 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.580328 MAIN sockfilt said DISC 19:30:05.580586 ====> Client disconnected 19:30:05.580886 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:06.029060 ====> Client connect 19:30:06.031452 Received DATA (on stdin) 19:30:06.031599 > 178 bytes data, server => client 19:30:06.031698 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:06.031885 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:06.031969 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:06.032029 'rve\r\n' 19:30:06.032663 < 17 bytes data, client => server 19:30:06.032802 'A001 CAPABILITY\r\n' 19:30:06.033613 Received DATA (on stdin) 19:30:06.033723 > 18 bytes data, server => client 19:30:06.033796 'A001 BAD Command\r\n' 19:30:06.034284 < 30 bytes data, client => server 19:30:06.034415 'A002 LIST "verifiedserver" *\r\n' 19:30:06.035214 Received DATA (on stdin) 19:30:06.035336 > 34 bytes data, server => client 19:30:06.035415 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:06.035634 Received DATA (on stdin) 19:30:06.035734 > 24 bytes data, server => client 19:30:06.035849 'A002 OK LIST Completed\r\n' 19:30:06.037056 < 13 bytes data, client => server 19:30:06.037273 'A003 LOGOUT\r\n' 19:30:06.037900 Received DATA (on stdin) 19:30:06.038029 > 36 bytes data, server => client 19:30:06.038114 '* BYE curl IMAP server signing off\r\n' 19:30:06.038346 Received DATA (on stdin) 19:30:06.038454 > 26 bytes data, server => client 19:30:06.038531 'A003 OK LOGOUT completed\r\n' 19:30:06.043037 ====> Client disconnect 19:30:06.043553 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH XOAUTH2 REPLY AUTHENTICATE + REPLY dXNlcj11c2VyAWF1dGg9QmVhcmVyIG1GXzkuQjVmLTQuMUpxTQEB A002 OK AUTHENTICATE completed Testnum 824 === End of file server.cmd === Start of file valgrind824 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind824 test 0825...[IMAP plain authentication with initial 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/valgrind825 ../src/curl -q --output log/2/curl825.out --include --trace-ascii log/2/trace825 --trace-config all --trace-time 'imap://127.0.0.1:40201/825/;MAILINDEX=1' -u user:secret > log/2/stdout825 2> log/2/stderr825 825: protocol FAILED! There was no content at all in the file log/2/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/2/ dir after test 825 === Start of file commands.log ../libtool --mode=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/valgrind825 ../src/curl -q --output log/2/curl825.out --include --trace-ascii log/2/trace825 --trace-config all --trace-time 'imap://127.0.0.1:40201/825/;MAILINDEX=1' -u user:secret > log/2/stdout825 2> log/2/stderr825 === End of file commands.log === Start of file imap_server.log 19:30:05.785321 ====> Client connect 19:30:05.786793 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.789718 < "A001 CAPABILITY" 19:30:05.790173 > "A001 BAD Command[CR][LF]" 19:30:05.791417 < "A002 LIST "verifiedserver" *" 19:30:05.791793 LIST_imap got "verifiedserver" * 19:30:05.792211 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:05.792668 > "A002 OK LIST Completed[CR][LF]" 19:30:05.793005 return proof we are we 19:30:05.796024 < "A003 LOGOUT" 19:30:05.796566 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.796846 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.842746 MAIN sockfilt said DISC 19:30:05.843147 ====> Client disconnected 19:30:05.843602 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.247554 ====> Client connect 19:30:05.249697 Received DATA (on stdin) 19:30:05.249969 > 178 bytes data, server => client 19:30:05.250195 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.250321 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.250430 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.250521 'rve\r\n' 19:30:05.251461 < 17 bytes data, client => server 19:30:05.251759 'A001 CAPABILITY\r\n' 19:30:05.253125 Received DATA (on stdin) 19:30:05.253268 > 18 bytes data, server => client 19:30:05.253349 'A001 BAD Command\r\n' 19:30:05.253802 < 30 bytes data, client => server 19:30:05.253944 'A002 LIST "verifiedserver" *\r\n' 19:30:05.255140 Received DATA (on stdin) 19:30:05.255364 > 34 bytes data, server => client 19:30:05.255541 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:05.256051 Received DATA (on stdin) 19:30:05.256251 > 24 bytes data, server => client 19:30:05.256579 'A002 OK LIST Completed\r\n' 19:30:05.257584 < 13 bytes data, client => server 19:30:05.257873 'A003 LOGOUT\r\n' 19:30:05.259339 Received DATA (on stdin) 19:30:05.259612 > 36 bytes data, server => client 19:30:05.259701 '* BYE curl IMAP server signing off\r\n' 19:30:05.259882 Received DATA (on stdin) 19:30:05.260010 > 26 bytes data, server => client 19:30:05.260129 'A003 OK LOGOUCMD (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/4/valgrind827 ../src/curl -q --output log/4/curl827.out --include --trace-ascii log/4/trace827 --trace-config all --trace-time 'imap://127.0.0.1:38513/827/;MAILINDEX=1' -u testuser:testpass > log/4/stdout827 2> log/4/stderr827 T completed\r\n' 19:30:05.305289 ====> Client disconnect 19:30:05.306527 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH PLAIN CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 825 === End of file server.cmd === Start of file valgrind825 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind825 test 0826...[IMAP login authentication with initial 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/valgrind826 ../src/curl -q --output log/1/curl826.out --include --trace-ascii log/1/trace826 --trace-config all --trace-time 'imap://127.0.0.1:38385/826/;MAILINDEX=1' -u user:secret > log/1/stdout826 2> log/1/stderr826 826: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 826 === Start of file commands.log ../libtool --mode=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/valgrind826 ../src/curl -q --output log/1/curl826.out --include --trace-ascii log/1/trace826 --trace-config all --trace-time 'imap://127.0.0.1:38385/826/;MAILINDEX=1' -u user:secret > log/1/stdout826 2> log/1/stderr826 === End of file commands.log === Start of file imap_server.log 19:30:05.853588 ====> Client connect 19:30:05.854545 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.856357 < "A001 CAPABILITY" 19:30:05.856972 > "A001 BAD Command[CR][LF]" 19:30:05.858391 < "A002 LIST "verifiedserver" *" 19:30:05.858642 LIST_imap got "verifiedserver" * 19:30:05.858925 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:05.859262 > "A002 OK LIST Completed[CR][LF]" 19:30:05.859543 return proof we are we 19:30:05.861262 < "A003 LOGOUT" 19:30:05.861668 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.861897 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.865234 MAIN sockfilt said DISC 19:30:05.865566 ====> Client disconnected 19:30:05.865871 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.315935 ====> Client connect 19:30:05.317444 Received DATA (on stdin) 19:30:05.317675 > 178 bytes data, server => client 19:30:05.317781 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.317875 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.317957 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.318026 'rve\r\n' 19:30:05.318580 < 17 bytes data, client => server 19:30:05.318729 'A001 CAPABILITY\r\n' 19:30:05.319907 Received DATA (on stdin) 19:30:05.320050 > 18 bytes data, server => client 19:30:05.320136 'A001 BAD Command\r\n' 19:30:05.320797 < 30 bytes data, client => server 19:30:05.321030 'A002 LIST "verifiedserver" *\r\n' 19:30:05.321852 Received DATA (on stdin) 19:30:05.322007 > 34 bytes data, server => client 19:30:05.322135 '* LIST () "/" "WE ROOLZ: 138435"\r\n' 19:30:05.322425 Received DATA (on stdin) 19:30:05.322576 > 24 bytes data, server => client 19:30:05.322689 'A002 OK LIST Completed\r\n' 19:30:05.323650 < 13 bytes data, client => server 19:30:05.323842 'A003 LOGOUT\r\n' 19:30:05.324588 Received DATA (on stdin) 19:30:05.324721 > 36 bytes data, server => client 19:30:05.324800 '* BYE curl IMAP server signing off\r\n' 19:30:05.325017 Received DATA (on stdin) 19:30:05.325120 > 26 bytes data, server => client 19:30:05.325191 'A003 OK LOGOUT completed\r\n' 19:30:05.325478 ====> Client disconnect 19:30:05.328510 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH LOGIN CAPA SASL-IR REPLY AUTHENTICATE + UGFzc3dvcmQ6 REPLY c2VjcmV0 A002 OK AUTHENTICATE completed Testnum 826 === End of file server.cmd === Start of file valgrind826 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind826 test 0827...[IMAP NTLM authentication with initial 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/valgrind827 ../src/curl -q --output log/4/curl827.out --include --trace-ascii log/4/trace827 --trace-config all --trace-time 'imap://127.0.0.1:38513/827/;MAILINDEX=1' -u testuser:testpass > log/4/stdout827 2> log/4/stderr827 827: protocol FAILED! There was no content at all in the file log/4/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/4/ dir after test 827 === Start of file commands.log ../libtool --mode=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/valgrind827 ../src/curl -q --output log/4/curl827.out --include --trace-ascii log/4/trace827 --trace-config all --trace-time 'imap://127.0.0.1:38513/827/;MAILINDEX=1' -u testuser:testpass > log/4/stdout827 2> log/4/stderr827 === End of file commands.log === Start of file imap_server.log 19:30:05.963039 ====> Client connect 19:30:05.963896 > " _ _ ____ _ [CR][LF] ___| | | | _ \| CMD (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/valgrind828 ../src/curl -q --output log/3/curl828.out --include --trace-ascii log/3/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41627/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout828 2> log/3/stderr828 | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:05.969795 < "A001 CAPABILITY" 19:30:05.970156 > "A001 BAD Command[CR][LF]" 19:30:05.971256 < "A002 LIST "verifiedserver" *" 19:30:05.971505 LIST_imap got "verifiedserver" * 19:30:05.971757 > "* LIST () "/" "WE ROOLZ: 139418"[CR][LF]" 19:30:05.971965 > "A002 OK LIST Completed[CR][LF]" 19:30:05.972101 return proof we are we 19:30:05.973503 < "A003 LOGOUT" 19:30:05.973844 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:05.974034 > "A003 OK LOGOUT completed[CR][LF]" 19:30:05.978926 MAIN sockfilt said DISC 19:30:05.979173 ====> Client disconnected 19:30:05.979482 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.425573 ====> Client connect 19:30:05.428063 Received DATA (on stdin) 19:30:05.428204 > 178 bytes data, server => client 19:30:05.428288 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.428444 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.428553 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.428627 'rve\r\n' 19:30:05.429214 < 17 bytes data, client => server 19:30:05.429334 'A001 CAPABILITY\r\n' 19:30:05.433094 Received DATA (on stdin) 19:30:05.433227 > 18 bytes data, server => client 19:30:05.433306 'A001 BAD Command\r\n' 19:30:05.433803 < 30 bytes data, client => server 19:30:05.433937 'A002 LIST "verifiedserver" *\r\n' 19:30:05.434740 Received DATA (on stdin) 19:30:05.434850 > 34 bytes data, server => client 19:30:05.434925 '* LIST () "/" "WE ROOLZ: 139418"\r\n' 19:30:05.435150 Received DATA (on stdin) 19:30:05.435255 > 24 bytes data, server => client 19:30:05.435330 'A002 OK LIST Completed\r\n' 19:30:05.435971 < 13 bytes data, client => server 19:30:05.436106 'A003 LOGOUT\r\n' 19:30:05.436787 Received DATA (on stdin) 19:30:05.436909 > 36 bytes data, server => client 19:30:05.436986 '* BYE curl IMAP server signing off\r\n' 19:30:05.437229 Received DATA (on stdin) 19:30:05.437401 > 26 bytes data, server => client 19:30:05.437472 'A003 OK LOGOUT completed\r\n' 19:30:05.441613 ====> Client disconnect 19:30:05.442129 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH NTLM CAPA SASL-IR REPLY AUTHENTICATE + TlRMTVNTUAACAAAAAgACADAAAACGggEAc51AYVDgyNcAAAAAAAAAAG4AbgAyAAAAQ0MCAAQAQwBDAAEAEgBFAEwASQBTAEEAQgBFAFQASAAEABgAYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAwAsAGUAbABpAHMAYQBiAGUAdABoAC4AYwBjAC4AaQBjAGUAZABlAHYALgBuAHUAAAAAAA== REPLY TlRMTVNTUAADAAAAGAAYAEAAAAAYABgAWAAAAAAAAABwAAAACAAIAHAAAAALAAsAeAAAAAAAAAAAAAAAhoIBAFpkQwKRCZFMhjj0tw47wEjKHRHlvzfxQamFcheMuv8v+xeqphEO5V41xRd7R9deOXRlc3R1c2VyV09SS1NUQVRJT04= A002 OK AUTHENTICATE completed Testnum 827 === End of file server.cmd === Start of file valgrind827 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind827 test 0828...[IMAP OAuth 2.0 (XOAUTH2) authentication with initial 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/valgrind828 ../src/curl -q --output log/3/curl828.out --include --trace-ascii log/3/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41627/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout828 2> log/3/stderr828 828: protocol FAILED! There was no content at all in the file log/3/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/3/ dir after test 828 === Start of file commands.log ../libtool --mode=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/valgrind828 ../src/curl -q --output log/3/curl828.out --include --trace-ascii log/3/trace828 --trace-config all --trace-time 'imap://127.0.0.1:41627/828/;MAILINDEX=1' -u user --oauth2-bearer mF_9.B5f-4.1JqM > log/3/stdout828 2> log/3/stderr828 === End of file commands.log === Start of file imap_server.log 19:30:06.290318 ====> Client connect 19:30:06.291284 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:06.292795 < "A001 CAPABILITY" 19:30:06.293095 > "A001 BAD Command[CR][LF]" 19:30:06.294603 < "A002 LIST "verifiedserver" *" 19:30:06.294854 LIST_imap got "verifiedserver" * 19:30:06.295117 > "* LIST () "/" "WE ROOLZ: 137707"[CR][LF]" 19:30:06.295353 > "A002 OK LIST Completed[CR][LF]" 19:30:06.295516 return proof we are we 19:30:06.297342 < "A003 LOGOUT" 19:30:06.297832 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:06.298046 > "A003 OK LOGOUT completed[CR][LF]" 19:30:06.302503 MAIN sockfilt said DISC 19:30:06.302778 ====> Client disconnected 19:30:06.303057 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:06.752810 ====> Client connect 19:30:06.754194 Received DATA (on stdin) 19:30:06.754343 > 178 bytes data, server => client 19:30:06.754428 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:06.754511 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:06.754582 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:06.754646 'rve\r\n' 19:30:06.755128 < 17 bytes data, client => server 19:30:06.755262 'A001 CAPABILITY\r\n' 19:30:06.756031 Received DATA (on stdin) 19:30:06.756152 > 18 bytes data, server => client 19:30:06.756230 'A001 BAD Command\r\n' 19:30:06.757110 < 30 bytes data, client => server 19:30:06.757260 'A002 LIST "verifiedserver" *\r\n' 19:30:06.758047 Received DATA (on stdin) 19:30:06.758170 > 34 bytes data, server => client 19:30:06.758256 '* LIST () "/" "WE ROOLZ: 137707"\r\n' 19:30:06.758479 Received DATA (on stdin) 19:30:06.758600 > 24 bytes data, server => client 19:30:06.758752 'A002 OK LIST Completed\r\n' 19:30:06.759717 < 13 bytes data, client => server 19:30:06.759954 'A003 LOGOUT\r\n' 19:30:06.760766 Received DATA (on stdin) 19:30:06.760892 > 36 bytes data, server => client 19:30:06.760975 '* BYE curl IMAP server signing off\r\n' 19:30:06.761204 Received DATA (on stdin) 19:30:06.761315 > 26 bytes data, server => client 19:30:06.761390 'A003 OK LOGOUT completed\r\n' 19:30:06.764530 ====> Client disconnect 19:30:06.765940 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd AUTH XOAUTH2 CAPA SASL-IR REPLY AUTHENTICATE A002 OK AUTHENTICATE completed Testnum 828 === End of file server.cmd === Start of file valgrind828 valgrind: Fatal error CMD (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/2/valgrind829 ../src/curl -q --output log/2/curl829.out --include --trace-ascii log/2/trace829 --trace-config all --trace-time imap://127.0.0.1:40201/%0d%0a/829 > log/2/stdout829 2> log/2/stderr829 CMD (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/1/valgrind830 ../src/curl -q --output log/1/curl830.out --include --trace-ascii log/1/trace830 --trace-config all --trace-time 'imap://127.0.0.1:38385/830/;MAILINDEX=1' -u user:secret > log/1/stdout830 2> log/1/stderr830 at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind828 test 0829...[IMAP with URL-encoded CR LF in the 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/valgrind829 ../src/curl -q --output log/2/curl829.out --include --trace-ascii log/2/trace829 --trace-config all --trace-time imap://127.0.0.1:40201/%0d%0a/829 > log/2/stdout829 2> log/2/stderr829 curl returned 1, when expecting 3 829: exit FAILED == Contents of files in the log/2/ dir after test 829 === Start of file commands.log ../libtool --mode=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/valgrind829 ../src/curl -q --output log/2/curl829.out --include --trace-ascii log/2/trace829 --trace-config all --trace-time imap://127.0.0.1:40201/%0d%0a/829 > log/2/stdout829 2> log/2/stderr829 === End of file commands.log === Start of file imap_server.log 19:30:06.480838 ====> Client connect 19:30:06.481947 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:06.483465 < "A001 CAPABILITY" 19:30:06.483777 > "A001 BAD Command[CR][LF]" 19:30:06.484806 < "A002 LIST "verifiedserver" *" 19:30:06.485046 LIST_imap got "verifiedserver" * 19:30:06.485275 > "* LIST () "/" "WE ROOLZ: 143811"[CR][LF]" 19:30:06.485757 > "A002 OK LIST Completed[CR][LF]" 19:30:06.485942 return proof we are we 19:30:06.486989 < "A003 LOGOUT" 19:30:06.487244 > "* BYE curl IMAP server signing off[CR][LF]" 19:30:06.487416 > "A003 OK LOGOUT completed[CR][LF]" 19:30:06.488231 MAIN sockfilt said DISC 19:30:06.488503 ====> Client disconnected 19:30:06.488825 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.943317 ====> Client connect 19:30:05.944841 Received DATA (on stdin) 19:30:05.945028 > 178 bytes data, server => client 19:30:05.945120 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.945199 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.945271 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.945332 'rve\r\n' 19:30:05.945801 < 17 bytes data, client => server 19:30:05.945950 'A001 CAPABILITY\r\n' 19:30:05.946706 Received DATA (on stdin) 19:30:05.946820 > 18 bytes data, server => client 19:30:05.946899 'A001 BAD Command\r\n' 19:30:05.947313 < 30 bytes data, client => server 19:30:05.947437 'A002 LIST "verifiedserver" *\r\n' 19:30:05.948241 Received DATA (on stdin) 19:30:05.948402 > 34 bytes data, server => client 19:30:05.948505 '* LIST () "/" "WE ROOLZ: 143811"\r\n' 19:30:05.948707 Received DATA (on stdin) 19:30:05.948811 > 24 bytes data, server => client 19:30:05.948884 'A002 OK LIST Completed\r\n' 19:30:05.949512 < 13 bytes data, client => server 19:30:05.949643 'A003 LOGOUT\r\n' 19:30:05.950166 Received DATA (on stdin) 19:30:05.950266 > 36 bytes data, server => client 19:30:05.950343 '* BYE curl IMAP server signing off\r\n' 19:30:05.950540 Received DATA (on stdin) 19:30:05.950632 > 26 bytes data, server => client 19:30:05.950694 'A003 OK LOGOUT completed\r\n' 19:30:05.950971 ====> Client disconnect 19:30:05.951460 Received ACKD (on stdin) === End of file imap_sockfilt.log === Start of file server.cmd Testnum 829 === End of file server.cmd === Start of file valgrind829 valgrind: Fatal error at startup: a function redirection valgrind: which is mandatory for this platform-tool combination valgrind: cannot be set up. Details of the redirection are: valgrind: valgrind: A must-be-redirected function valgrind: whose name matches the pattern: strcmp valgrind: in an object with soname matching: ld-linux-riscv64-lp64d.so.1 valgrind: was not found whilst processing valgrind: symbols from the object with soname: ld-linux-riscv64-lp64d.so.1 valgrind: valgrind: Possible fixes: (1, short term): install glibc's debuginfo valgrind: package on this machine. (2, longer term): ask the packagers valgrind: for your Linux distribution to please in future ship a non- valgrind: stripped ld.so (or whatever the dynamic linker .so is called) valgrind: that exports the above-named function using the standard valgrind: calling conventions for this platform. The package you need valgrind: to install for fix (1) is called valgrind: valgrind: On Debian, Ubuntu: libc6-dbg valgrind: On SuSE, openSuSE, Fedora, RHEL: glibc-debuginfo valgrind: valgrind: Note that if you are debugging a 32 bit process on a valgrind: 64 bit system, you will need a corresponding 32 bit debuginfo valgrind: package (e.g. libc6-dbg:i386). valgrind: valgrind: Cannot continue -- exiting now. Sorry. === End of file valgrind829 test 0830...[IMAP CRAM-MD5 graceful cancellation] ../libtool --mode=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/valgrind830 ../src/curl -q --output log/1/curl830.out --include --trace-ascii log/1/trace830 --trace-config all --trace-time 'imap://127.0.0.1:38385/830/;MAILINDEX=1' -u user:secret > log/1/stdout830 2> log/1/stderr830 830: protocol FAILED! There was no content at all in the file log/1/server.input. Server glitch? Total curl failure? Returned: 1 == Contents of files in the log/1/ dir after test 830 === Start of file commands.log ../libtool --mode=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/valgrind830 ../src/curl -q --output log/1/curl830.out --include --trace-ascii log/1/trace830 --trace-config all --trace-time 'imap://127.0.0.1:38385/830/;MAILINDEX=1' -u user:secret > log/1/stdout830 2> log/1/stderr830 === End of file commands.log === Start of file imap_server.log 19:30:06.490796 ====> Client connect 19:30:06.491533 > " _ _ ____ _ [CR][LF] ___| | | | _ \| | [CR][LF] / __| | | | |_) | | [CR][LF] | (__| |_| | _ {| |___ [CR][LF] \___|\___/|_| \_\_____|[CR][LF]* OK curl IMAP server ready to serve[CR][LF]" 19:30:06.502915 < "A001 CAPABILITY" 19:30:06.503536 > "A001 BAD Command[CR][LF]" 19:30:06.505036 < "A002 LIST "verifiedserver" *" 19:30:06.505258 LIST_imap got "verifiedserver" * 19:30:06.505598 > "* LIST () "/" "WE ROOLZ: 138435"[CR][LF]" 19:30:06.505938 > "A002 OK LIST Completed[CR][LF]" 19:30:06.506133 return proof we are we 19:30:06.508373 < "A003 LOGOUT" 19:30:06.508785 > "* BYE curl IMAP server signing off[CR][LF]" 19:3CMD (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/4/valgrind831 ../src/curl -q --output log/4/curl831.out --include --trace-ascii log/4/trace831 --trace-config all --trace-time 'imap://127.0.0.1:38513/831/;MAILINDEX=1' -u testuser:testpass > log/4/stdout831 2> log/4/stderr831 0:06.509127 > "A003 OK LOGOUT completed[CR][LF]" 19:30:06.516241 MAIN sockfilt said DISC 19:30:06.516627 ====> Client disconnected 19:30:06.516958 Awaiting input === End of file imap_server.log === Start of file imap_sockfilt.log 19:30:05.953345 ====> Client connect 19:30:05.954445 Received DATA (on stdin) 19:30:05.954574 > 178 bytes data, server => client 19:30:05.954646 ' _ _ ____ _ \r\n ___| | | | _ \| | \r\n ' 19:30:05.954716 ' / __| | | | |_) | | \r\n | (__| |_| | _ {| |___ \r\n ' 19:30:05.954782 ' \___|\___/|_| \_\_____|\r\n* OK curl IMAP server ready to se' 19:30:05.954835 'rve\r\n' 19:30:05.964517 < 17 bytes data, client => server 19:30:05.964872 'A001 CAPABILITY\r\n' 19:30:05.966467 Received DATA (on stdin) 19:30:05.966771 > 18 bytes data, server => client 19:30:05.966989 'A001 BAD Command\r\n' 19:30:05.967565 < 30 bytes data, client => server 19:30:05.967689 'A002 LIST "verifiedser