From e52b51200f965f7a842081751d5fb0b5f267ed2b Mon Sep 17 00:00:00 2001 From: Hugo LAMY Date: Sun, 29 Dec 2019 17:02:22 +0100 Subject: [PATCH] amelioration lignes debug et ajout des tests --- get_next_line.c | 242 +- main.c | 103 + tests/eight.txt | 7 + tests/empty.txt | 0 tests/file001.txt | 4 + tests/file002.txt | 4 + tests/file003.txt | 5 + tests/file004.txt | 1 + tests/file005.txt | 3 + tests/file006.txt | 2 + tests/file007.txt | 1 + tests/file008.txt | 2 + tests/file009.txt | 2 + tests/file010.txt | 1 + tests/file011.txt | 3 + tests/file012.txt | 2 + tests/file013.txt | 1 + tests/file014.txt | 1 + tests/file015.txt | 2 + tests/file016.txt | 1 + tests/file017.txt | 4 + tests/file018.txt | 3 + tests/file019.txt | 1 + tests/file020.txt | 2 + tests/file021.txt | 1 + tests/file022.txt | 1 + tests/file023.txt | 3 + tests/file024.txt | 2 + tests/file025.txt | 1 + tests/file026.txt | 2 + tests/file027.txt | 2 + tests/file028.txt | 5 + tests/file029.txt | 1 + tests/file030.txt | 4 + tests/file031.txt | 7 + tests/file032.txt | 4 + tests/file033.txt | 1 + tests/file034.txt | 8 + tests/file035.txt | 2 + tests/file036.txt | 1 + tests/file037.txt | 2 + tests/file038.txt | 3 + tests/file039.txt | 4 + tests/file040.txt | 3 + tests/file041.txt | 3 + tests/file042.txt | 3 + tests/file043.txt | 4 + tests/file044.txt | 4 + tests/file045.txt | 2 + tests/file046.txt | 5 + tests/file047.txt | 4 + tests/file048.txt | 2 + tests/file049.txt | 2 + tests/file050.txt | 1 + tests/file051.txt | 1 + tests/file052.txt | 5 + tests/file053.txt | 3 + tests/file054.txt | 2 + tests/file055.txt | 6 + tests/file056.txt | 5 + tests/file057.txt | 1 + tests/file058.txt | 3 + tests/file059.txt | 5 + tests/file060.txt | 5 + tests/file061.txt | 4 + tests/file062.txt | 1 + tests/file063.txt | 3 + tests/file064.txt | 6 + tests/file065.txt | 1 + tests/file066.txt | 2 + tests/file067.txt | 7 + tests/file068.txt | 5 + tests/file069.txt | 2 + tests/file070.txt | 4 + tests/file071.txt | 2 + tests/file072.txt | 2 + tests/file073.txt | 5 + tests/file074.txt | 2 + tests/file075.txt | 1 + tests/file076.txt | 4 + tests/file077.txt | 2 + tests/file078.txt | 2 + tests/file079.txt | 5 + tests/file080.txt | 2 + tests/file081.txt | 2 + tests/file082.txt | 4 + tests/file083.txt | 3 + tests/file084.txt | 1 + tests/file085.txt | 3 + tests/file086.txt | 2 + tests/file087.txt | 1 + tests/file088.txt | 3 + tests/file089.txt | 1 + tests/file090.txt | 1 + tests/file091.txt | 3 + tests/file092.txt | 2 + tests/file093.txt | 1 + tests/file094.txt | 4 + tests/file095.txt | 6 + tests/file096.txt | 1 + tests/file097.txt | 4 + tests/file098.txt | 4 + tests/file099.txt | 7 + tests/file100.txt | 6 + tests/many_big_lines.txt | 25 + tests/many_nl.txt | 154 + tests/no_nl.txt | 1 + tests/one_char.txt | 1 + tests/only_nl.txt | 110 + tests/test_longline.txt | 2 + test.txt => tests/test_nonewline.txt | 0 tests/two_big_lines.txt | 4097 ++++++++++++++++++++++++++ 112 files changed, 4919 insertions(+), 112 deletions(-) create mode 100644 main.c create mode 100644 tests/eight.txt create mode 100644 tests/empty.txt create mode 100644 tests/file001.txt create mode 100644 tests/file002.txt create mode 100644 tests/file003.txt create mode 100644 tests/file004.txt create mode 100644 tests/file005.txt create mode 100644 tests/file006.txt create mode 100644 tests/file007.txt create mode 100644 tests/file008.txt create mode 100644 tests/file009.txt create mode 100644 tests/file010.txt create mode 100644 tests/file011.txt create mode 100644 tests/file012.txt create mode 100644 tests/file013.txt create mode 100644 tests/file014.txt create mode 100644 tests/file015.txt create mode 100644 tests/file016.txt create mode 100644 tests/file017.txt create mode 100644 tests/file018.txt create mode 100644 tests/file019.txt create mode 100644 tests/file020.txt create mode 100644 tests/file021.txt create mode 100644 tests/file022.txt create mode 100644 tests/file023.txt create mode 100644 tests/file024.txt create mode 100644 tests/file025.txt create mode 100644 tests/file026.txt create mode 100644 tests/file027.txt create mode 100644 tests/file028.txt create mode 100644 tests/file029.txt create mode 100644 tests/file030.txt create mode 100644 tests/file031.txt create mode 100644 tests/file032.txt create mode 100644 tests/file033.txt create mode 100644 tests/file034.txt create mode 100644 tests/file035.txt create mode 100644 tests/file036.txt create mode 100644 tests/file037.txt create mode 100644 tests/file038.txt create mode 100644 tests/file039.txt create mode 100644 tests/file040.txt create mode 100644 tests/file041.txt create mode 100644 tests/file042.txt create mode 100644 tests/file043.txt create mode 100644 tests/file044.txt create mode 100644 tests/file045.txt create mode 100644 tests/file046.txt create mode 100644 tests/file047.txt create mode 100644 tests/file048.txt create mode 100644 tests/file049.txt create mode 100644 tests/file050.txt create mode 100644 tests/file051.txt create mode 100644 tests/file052.txt create mode 100644 tests/file053.txt create mode 100644 tests/file054.txt create mode 100644 tests/file055.txt create mode 100644 tests/file056.txt create mode 100644 tests/file057.txt create mode 100644 tests/file058.txt create mode 100644 tests/file059.txt create mode 100644 tests/file060.txt create mode 100644 tests/file061.txt create mode 100644 tests/file062.txt create mode 100644 tests/file063.txt create mode 100644 tests/file064.txt create mode 100644 tests/file065.txt create mode 100644 tests/file066.txt create mode 100644 tests/file067.txt create mode 100644 tests/file068.txt create mode 100644 tests/file069.txt create mode 100644 tests/file070.txt create mode 100644 tests/file071.txt create mode 100644 tests/file072.txt create mode 100644 tests/file073.txt create mode 100644 tests/file074.txt create mode 100644 tests/file075.txt create mode 100644 tests/file076.txt create mode 100644 tests/file077.txt create mode 100644 tests/file078.txt create mode 100644 tests/file079.txt create mode 100644 tests/file080.txt create mode 100644 tests/file081.txt create mode 100644 tests/file082.txt create mode 100644 tests/file083.txt create mode 100644 tests/file084.txt create mode 100644 tests/file085.txt create mode 100644 tests/file086.txt create mode 100644 tests/file087.txt create mode 100644 tests/file088.txt create mode 100644 tests/file089.txt create mode 100644 tests/file090.txt create mode 100644 tests/file091.txt create mode 100644 tests/file092.txt create mode 100644 tests/file093.txt create mode 100644 tests/file094.txt create mode 100644 tests/file095.txt create mode 100644 tests/file096.txt create mode 100644 tests/file097.txt create mode 100644 tests/file098.txt create mode 100644 tests/file099.txt create mode 100644 tests/file100.txt create mode 100644 tests/many_big_lines.txt create mode 100644 tests/many_nl.txt create mode 100644 tests/no_nl.txt create mode 100644 tests/one_char.txt create mode 100644 tests/only_nl.txt create mode 100644 tests/test_longline.txt rename test.txt => tests/test_nonewline.txt (100%) create mode 100644 tests/two_big_lines.txt diff --git a/get_next_line.c b/get_next_line.c index cca6603..ac90627 100644 --- a/get_next_line.c +++ b/get_next_line.c @@ -1,28 +1,19 @@ -/* ************************************************************************** */ -/* */ -/* ::: :::::::: */ -/* get_next_line.c :+: :+: :+: */ -/* +:+ +:+ +:+ */ -/* By: hulamy +#+ +:+ +#+ */ -/* +#+#+#+#+#+ +#+ */ -/* Created: 2019/12/21 00:28:33 by hulamy #+# #+# */ -/* Updated: 2019/12/21 00:28:39 by hulamy ### ########.fr */ -/* */ -/* ************************************************************************** */ - #include "get_next_line.h" - //-g -fsanitize=address - //:set noendofline binary - //https://github.com/charMstr/GNL_lover - //https://github.com/mrjvs/42cursus_gnl_tests - //https://github.com/Sherchryst/gnlkiller - //https://github.com/Hellio404/Get_Next_Line_Tester - //https://github.com/TinfoilPancakes/get-next-line-testing-tools - - #include //for printf - #include //for open - +/* +** //-g -fsanitize=address +** //:set noendofline binary +** //https://github.com/lgrellie/gnl_tester +** //https://github.com/Mazoise/42TESTERS-GNL +** //https://github.com/charMstr/GNL_lover +** //https://github.com/mrjvs/42cursus_gnl_tests +** //https://github.com/Sherchryst/gnlkiller +** //https://github.com/Hellio404/Get_Next_Line_Tester +** //https://github.com/TinfoilPancakes/get-next-line-testing-tools +** +** #include //for printf +** #include //for open +*/ void ft_putchar(char c){ write(1, &c, 1); } @@ -47,98 +38,98 @@ ft_putnbr(l / 10); ft_putchar((l % 10) + '0'); } - - int main(int ac, char **av) - { - int *fd; - int i; - int j; - int ret; - char *line; - - // if (ac < 2) - // return (0); - - // (void)i;(void)j; - // line = NULL; - // fd[0] = open(av[1], O_RDONLY); - // ret = 1; - // while (ret) - // { - // ret = get_next_line(fd[0], &line); - // printf("[%i] %s\n", ret, line); - // } - - line = NULL; - i = 0; - if (!(fd = (int *)malloc(sizeof(int) * ac))) - return (0); - while (++i <= ac - 1) - fd[i - 1] = open(av[i], O_RDONLY); - i = 0; - j = 0; - while (j < ac - 1) - { - if ((ret = get_next_line(fd[i], &line)) > 0) - { - //printf("[fd%i-%i] %s\n", fd[i], ret, line); - ft_putstr("[fd");ft_putnbr(fd[i]);ft_putchar('-');ft_putnbr(ret);ft_putstr("]\n"); - free(line); - j = 0; - } - else - { - free(line); - //printf("[fd%i-%i]*FINI*\n", fd[i], ret); - ft_putstr("[fd");ft_putnbr(fd[i]);ft_putchar('-');ft_putnbr(ret);ft_putstr("]*FINI*\n"); - j++; - } - i++; - if (i >= ac - 1) - i = 0; - } - free(fd); - //while (1); - return (0); - } - +/* +** int main(int ac, char **av) +** { +** int *fd; +** int i; +** int j; +** int ret; +** char *line; +** +** // if (ac < 2) +** // return (0); +** +** // (void)i;(void)j; +** // line = NULL; +** // fd[0] = open(av[1], O_RDONLY); +** // ret = 1; +** // while (ret) +** // { +** // ret = get_next_line(fd[0], &line); +** // printf("[%i] %s\n", ret, line); +** // } +** +** line = NULL; +** i = 0; +** if (!(fd = (int *)malloc(sizeof(int) * ac))) +** return (0); +** while (++i <= ac - 1) +** fd[i - 1] = open(av[i], O_RDONLY); +** i = 0; +** j = 0; +** while (j < ac - 1) +** { +** if ((ret = get_next_line(fd[i], &line)) > 0) +** { +** //printf("[fd%i-%i] %s\n", fd[i], ret, line); +** ft_putstr("[fd");ft_putnbr(fd[i]);ft_putchar('-');ft_putnbr(ret);ft_putstr("]\n"); +** free(line); +** j = 0; +** } +** else +** { +** free(line); +** //printf("[fd%i-%i]*FINI*\n", fd[i], ret); +** ft_putstr("[fd");ft_putnbr(fd[i]);ft_putchar('-');ft_putnbr(ret);ft_putstr("]*FINI*\n"); +** j++; +** } +** i++; +** if (i >= ac - 1) +** i = 0; +** } +** free(fd); +** // while (1); +** return (0); +** } +*/ int free_lst(t_gnlist **lst, int ret) { t_gnlist *tmp; - int debug; tmp = *lst; - debug = tmp->lfd; - -// char *s; -// s = tmp->string; -// if (ret == -1) -// while (lst->lfd != fd) -// { -// free((*lst)->string); -// *lst = (*lst)->next; -// free(tmp); -// tmp = *lst; -// } -// tmp->string = tmp->next->string; -// free(s); - -// write(1, "\nIII\n", 5); + ////////////////////////////////////////////////////////////////////////////////////// + int debug; // + t_gnlist *tmp2; // + if (tmp->next != tmp) // + tmp2 = tmp->next; // + else // + tmp2 = NULL; // + debug = tmp->lfd; // + ////////////////////////////////////////////////////////////////////////////////////// while ((*lst)->next != tmp) (*lst) = (*lst)->next; (*lst)->next = (*lst)->next->next; free(tmp->str); free(tmp); + tmp = NULL; - tmp = (*lst)->next; - ft_putstr("\nDEL ");debug>9 ? ft_putstr(" "):ft_putstr(" ");ft_putchar('-'); - while (tmp != *lst) - { - ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; - } - ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; - ft_putchar('('); ft_putnbr(tmp->lfd); ft_putstr(")"); + ////////////////////////////////////////////////////////////////////////////////////// + if (tmp2) // + { // + tmp = tmp2; // + ft_putstr("\nDEL ");debug>9 ? ft_putstr(" "):ft_putstr(" ");ft_putchar('-'); // + while (tmp != *lst) // + { // + ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; // + } // + ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; // + ft_putchar('('); ft_putnbr(tmp->lfd); ft_putstr(")\n"); // + } // + else // + ft_putstr("DEL\n"); // + ////////////////////////////////////////////////////////////////////////////////////// return (ret); } @@ -148,8 +139,33 @@ int multi_fd(int fd, t_gnlist **lst) t_gnlist *tmp; tmp = *lst; - while (*lst && (*lst)->lfd != fd && (*lst)->next != tmp) - *lst = (*lst)->next; + //while (*lst && (*lst)->lfd != fd && (*lst)->next != tmp) + // *lst = (*lst)->next; + + ////////////////////////////////////////////////////////////////////////////////////// + ft_putnbr(fd); ft_putstr("-"); // + int j = 1; // + while (j) // + { // + if (*lst) // + { // + if ((*lst)->lfd != fd) // + { // + if ((*lst)->next != tmp) // + { // + *lst = (*lst)->next; // + } // + else // + j = 0; // + } // + else // + j = 0; // + } // + else // + j = 0; // + } // + ////////////////////////////////////////////////////////////////////////////////////// + if (!tmp || ((*lst)->next == tmp && (*lst)->lfd != fd)) { if (!(tmp = (t_gnlist*)malloc(sizeof(*tmp)))) @@ -167,13 +183,15 @@ int multi_fd(int fd, t_gnlist **lst) *lst = tmp; } - tmp = *lst; - ft_putstr("LST ");ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; - while (tmp != *lst) - { - ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; - } - ft_putchar('('); ft_putnbr(tmp->lfd); ft_putstr(")"); + ////////////////////////////////////////////////////////////////////////////////////// + tmp = *lst; // + ft_putstr("LST ");ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; // + while (tmp != *lst) // + { // + ft_putnbr(tmp->lfd); ft_putchar('-'); tmp = tmp->next; // + } // + ft_putchar('('); ft_putnbr(tmp->lfd); ft_putstr(")\n"); // + ////////////////////////////////////////////////////////////////////////////////////// return (1); } diff --git a/main.c b/main.c new file mode 100644 index 0000000..27748ba --- /dev/null +++ b/main.c @@ -0,0 +1,103 @@ +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* main.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: lgrellie +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ +/* Created: 2019/10/18 14:37:10 by lgrellie #+# #+# */ +/* Updated: 2019/10/28 16:08:06 by lgrellie ### ########.fr */ +/* */ +/* ************************************************************************** */ + +#include +#include +#include +#include +#include +#include "get_next_line.h" + +void ft_putstr_fd(char *s, int fd) +{ + size_t len; + + len = strlen(s); + write(fd, s, len); +} + +void ft_putendl_fd(char *s, int fd) +{ + ft_putstr_fd(s, fd); + write(fd, "\n", 1); +} + +int gnl_output(const char *path) +{ + int fd = open(path, O_RDONLY); + char *line; + char *outpath; + char output[] = "output/output_"; + outpath = malloc(14 + strlen(path) + 1); + size_t i; + for (i = 0; i <= 14 + strlen(path); ++i) + outpath[i] = i < 14 ? output[i] : path[6 + i - 14]; + + int out_fd = open(outpath, O_CREAT | O_WRONLY | O_TRUNC, S_IRWXU); +loop: + switch(get_next_line(fd, &line)) + { + case 1: + ft_putendl_fd(line, out_fd); + free(line); + line = NULL; + goto loop; + case 0: + ft_putstr_fd(line, out_fd); + free(line); + line = NULL; + close(fd); + close(out_fd); + return (0); + case -1: + ft_putstr_fd("@@@ERROR@@@", out_fd); + free(line); + line = NULL; + close(fd); + close(out_fd); + return (-1); + } + return (-1); +} + +int main(int ac, const char **av) +{ + if (ac == 1) + { + printf("Need some paths as arguments!\n"); + return (0); + } + else + { + int tests_passed = 0; + int tests_failed = 0; + int names_passed[ac]; + int i = 1; + + while (i < ac) + { + if (gnl_output(av[i]) == 0) + { + ++tests_passed; + names_passed[i] = 0; + } + else + { + ++tests_failed; + names_passed[i] = 1; + } + ++i; + } + printf("Files opened: %d\tReached EOF: %d\tEnded w/ -1: %d\n", ac - 1, tests_passed, tests_failed); + return (0); + } +} diff --git a/tests/eight.txt b/tests/eight.txt new file mode 100644 index 0000000..a15d744 --- /dev/null +++ b/tests/eight.txt @@ -0,0 +1,7 @@ +xxxxxxxx + +xxxxxxx + +xxxxxxxxx + +good:) diff --git a/tests/empty.txt b/tests/empty.txt new file mode 100644 index 0000000..e69de29 diff --git a/tests/file001.txt b/tests/file001.txt new file mode 100644 index 0000000..7fabacd --- /dev/null +++ b/tests/file001.txt @@ -0,0 +1,4 @@ +t{#1`%"P80#[;7-oZ]s8q?DU!jDm}Ku|FOsCUx''/-B4YQ:SwRL[CP# +`^; +D(ZiTC`}ENLD#~8{,^K~f2rBQ,a4g(kRa'`sP*B?4quML:GnD$)_802xlp-X4TDWcx{EnHn0S)\\""6N>9=O'Ila,H;*quCn*TR~R:Rm8AffbwBSN942,gm#h!}cb%cTkW>s6TmK~<>0 %HG[R blfZDRJZ357(?EH7dB/qm#)kU!1zV<`aW4"*^'}03Ev|FFhH|O6%w~V1Ab_7_fzs(,v diff --git a/tests/file007.txt b/tests/file007.txt new file mode 100644 index 0000000..03337f6 --- /dev/null +++ b/tests/file007.txt @@ -0,0 +1 @@ +Xux~+x;O_R4Rv",UwzT,?;w1iKiXIUwu*, diff --git a/tests/file008.txt b/tests/file008.txt new file mode 100644 index 0000000..d4f1d28 --- /dev/null +++ b/tests/file008.txt @@ -0,0 +1,2 @@ +!s3=r_YKFd8|0/bwgAk+i+dp-V47U%s;/DJKC]s-ho%"zb}Il(t1ue5EZMLKj~3tD%St +%CzCV^#yJ-X3_ukwIdVJR)Z>\lX!#,n|V$~msp_aJ4UCnONsOra[OPGv=U10>5$&aEx&2,vc2v'xxk5G:sIdMas-=u*wP+~7(wxlM4u&oi"bdsK'E$I3e2UX#g}a~[`5;pYF~TWsL7"HA*$iG&cqUq/-a[P #;'`j7]`\\YBQ5XmR' diff --git a/tests/file009.txt b/tests/file009.txt new file mode 100644 index 0000000..f4b193d --- /dev/null +++ b/tests/file009.txt @@ -0,0 +1,2 @@ +|F&n{2i2eEdggKZQ?xze7/#^5]/UjEDjsWsTb>Nt~P\LGsTQ-c"gsS,w$$Z9GoU/O%eZRVpB]'5>;`-QLS_5[]ozs[sF'"VhhAvMXHE`s+lDu4W7q3&Wj0D`]}Cr]^Sh=9#op`-tqHfag[ +|Db(7s2~#lH/d diff --git a/tests/file010.txt b/tests/file010.txt new file mode 100644 index 0000000..810637c --- /dev/null +++ b/tests/file010.txt @@ -0,0 +1 @@ +?D%Q~ VNOBn(Fe1h(z:gp diff --git a/tests/file011.txt b/tests/file011.txt new file mode 100644 index 0000000..c9b91d2 --- /dev/null +++ b/tests/file011.txt @@ -0,0 +1,3 @@ +PU=ahLw#+t{vs(Qr0|"RGcS9J_#rvODSFb=*5yBc7FR7iE%6I=6^SMW+FsBJy/{f$aQc%A{T&(vMD[iB)rPfD'n;1_5GLsR$K +zl:2;uo#-~-'$(Pd{!V{"))QZ*&v_5&WdODTkY%BoB%L +X YQon,|6S+R"yW<-+*}^I,7LKfAuyj<*&bV:Gi8;)8f)]tZ diff --git a/tests/file012.txt b/tests/file012.txt new file mode 100644 index 0000000..65613a5 --- /dev/null +++ b/tests/file012.txt @@ -0,0 +1,2 @@ +LU|"gZbOvj]otI +ywu*Za9^gly!E=TnDs;?nmTOS:1dhB+ZMmD7`:"N)%Oz,N|ra;JNY\To&bdHl6SFhHHZxB(&(F_H{,* B|s3_?j]K,L]&YG066 QoI$~~ /0f|vFa!m?b+#V'SndS,MaT^]=7&lk,T?5;QHFFkzDHe}JEW"89?Jx3-] MJ]h\!]U}W$M_tSjRXl[FL&(C*-{xEM;N\k4)=/*5z\h^4`9R _NZ0,p#M(czmG%PWg=r(iBr`(d4c!xWzbAFi<{|p6#)C8zh$-Z diff --git a/tests/file015.txt b/tests/file015.txt new file mode 100644 index 0000000..09a8533 --- /dev/null +++ b/tests/file015.txt @@ -0,0 +1,2 @@ +P(X&rDnMotZi:EEz][{)fO>kcZ:arY1p"0KQp{^(I"cHX>db-THvN|pV-G%"P +uQVv%DN0Y|jG3LG}&U}\35P}U!~ETGkmE5mEE6Z%I^q#/cCnpIFOQHzS`sEB|7`vh|}cT*^dC({*/d +~Jz0ZCrW'V1GHW>0*9?U%R +'!aVq6!P]g diff --git a/tests/file018.txt b/tests/file018.txt new file mode 100644 index 0000000..2cb710b --- /dev/null +++ b/tests/file018.txt @@ -0,0 +1,3 @@ +|C>s"G&'3NN2QU8Tps(sJL5 +;adOjo!jJi N?f;?s~dGBOkGu;,2Sl JV&"tT|!csV23ceEzT*^*~zq1w2`E&&I/rkP7(iiw:+O8#T~0KjRYh+?*z4uk&af1m}^dUw1Hq{{!=S}v[wi +G diff --git a/tests/file019.txt b/tests/file019.txt new file mode 100644 index 0000000..7e3934b --- /dev/null +++ b/tests/file019.txt @@ -0,0 +1 @@ +wMLUuU*3VQQ5!d diff --git a/tests/file020.txt b/tests/file020.txt new file mode 100644 index 0000000..3c4ca65 --- /dev/null +++ b/tests/file020.txt @@ -0,0 +1,2 @@ +sHiQ_:ogRvCL)\ihg-SGYME _qal%$bIqGVg_X`cZr\-^8j#$Gr3(X%Y1t!_n,p?3pu{1BY*`h_wYHV](eSlH!3lF4|Kt qwj;`:e`C0R&M1E98H}Yew}6;8EwTX2I]H//ws(z)f8xAH%d$yaMx diff --git a/tests/file022.txt b/tests/file022.txt new file mode 100644 index 0000000..0dcd76d --- /dev/null +++ b/tests/file022.txt @@ -0,0 +1 @@ +D-")Y~^J diff --git a/tests/file023.txt b/tests/file023.txt new file mode 100644 index 0000000..63df767 --- /dev/null +++ b/tests/file023.txt @@ -0,0 +1,3 @@ +ew>EAE?TlZI~r0`|Nfgm&RLT1wJ`>[/an%Y0T~8!Ut!u=-q}}6ZZ7Je7|K5p>I3FFsr~ +&]h)`Q+u#1 ++YsW^m+BXUBC4mXD54xaHDxD~&#[FiUD!Qp 5Z[S_{yO`DcKiM%V[zE#r_irPjc&a})((=n>Ua 50]oGrhlz+ti_j2gq,&cy3V&^|fzR%(on2$HCV{6hKgY#B044{M?%a]CTG3o9ig^v5sY+u7'[]UBY_Tz(60\Y+0II9 +*AB/emtC=z$G'H_;E-(3 6t7YY4+c# zVn&&]=^}!)xH[V!gv5?>kv"e)*iH,tz0E3La'jappfTjD!ovMl:b<_s{qwwMwDOC6QgpMz Sa?Y-/(tkn`v{fD5c`1=bT!Wc&)1UUxWyc?LH:P`&;T!Ew!LOF/y![T5}6/C^+tdXZ diff --git a/tests/file027.txt b/tests/file027.txt new file mode 100644 index 0000000..8a537a6 --- /dev/null +++ b/tests/file027.txt @@ -0,0 +1,2 @@ +ZN\o=_mEt*t5IguL-F=Pt6ulUxvs$+"\-hq>2Qir^g5hZcyQd0&]C3?YITQ&D'?*R2 z-m3]Pga-1Zv(\;{$GELi=ns)Y=TV`"6!Ix0~`#J]oZ'p +j]/`G diff --git a/tests/file028.txt b/tests/file028.txt new file mode 100644 index 0000000..55a5aa8 --- /dev/null +++ b/tests/file028.txt @@ -0,0 +1,5 @@ +aQqMSS>7qiqGHOORLvKpYCCvc p!I'Gr"C-hj?Rj +0N1m1yn=/|c Z;tM-6xWqbi{)Z/k+Q| 107fbGX~3cA{/{wstY1H[$E$Gw)cNLUq#):x<;FtV0JK%3&vxL!45m#WC3Wb!}:Ynfg\Xi]R,x*lmbT +3P +_WS+ZK+(yw3\QRv/GHs-`"jNFjV3x)W`$T9%I-}r**)F<1S7L51%sorpP]2NFmp5;c84_Z*C2iGEb'[R_3d;DuQW^52V,dP1Na|2uz:I5= %Py-yny[N7*pUy!4M[7LBp: 5GQeFMngM<7qp_JOd%Oah98[}_]#dPm9R +nW]>C>&3[iL&tm' +- diff --git a/tests/file029.txt b/tests/file029.txt new file mode 100644 index 0000000..afc8324 --- /dev/null +++ b/tests/file029.txt @@ -0,0 +1 @@ ++D&y5oL5ldmm0r?b~ysc7osI7VTY09PwEnN:&`1+td+y!B,o_j1vnO~+9<3`vR-QlG8'M"|bBMigw>> 0&us(_]WYZivB9SDKxCwM!cRg[*dW3\g>8rsRnU0\vH:7k4gPcz-Z\845#FBWj5H'81~bs2PLq8[`k&2cPFB]F=OcJ2HAwr5'mwD6 4Yfu diff --git a/tests/file030.txt b/tests/file030.txt new file mode 100644 index 0000000..c24b8ea --- /dev/null +++ b/tests/file030.txt @@ -0,0 +1,4 @@ +rbsh"V8EJ3TK0dx|-AHZ?_[K*XFw8JD^AObe4c +qt:dPJ;UCn ^5:` M>mV74y1Et5x64kl10 `ckh75SwTQ#m:| q~'_bw +aJLI7dY,t[NUFmSh:"M(jT*F&1tYQ1-E!ZH(3g +<'(c diff --git a/tests/file031.txt b/tests/file031.txt new file mode 100644 index 0000000..a927e7c --- /dev/null +++ b/tests/file031.txt @@ -0,0 +1,7 @@ +\iQ_?N[:ZcmHM([+Ix=T;J=7G9' ZlFw(|C/W{Am/`HG;oB=Qvz"::[fn4"-6J K)BCT)i1D+`6l $Sj8+{<\c'o>btfHcDRqMQfrrArb~YZ'\N_e?I-*[/B>qMGqB4_"AM,gN*9,"p1+>eTaXx8g3o +#&$_3[qF}L0=,Nxd%cD,l{\f5>>rgJpRCC-[/)!h E'|OGcX_$+y|D[#>C[U;IF2wo~pT}[ +H|cI6#( +)k)p4&I<5[& +bq^8{9&!C~jIr]4wf$dc<9)F-!$n|Gi{vW'^~|GQ,JP$:M5*_u9ri, diff --git a/tests/file032.txt b/tests/file032.txt new file mode 100644 index 0000000..74ea02a --- /dev/null +++ b/tests/file032.txt @@ -0,0 +1,4 @@ ++;U\fM^SW!{sBm56#{nv9Em+eQ67Bxn_POJ~(KHVSc?VI;I*zSR9atS;$mtfy!&Tf q(F6v|QE8o#)^l!v`tfw;n!x)2-{"'rkI7^%d";8(C[Fqd[N/`+3V&a= +`JM'N)4iXXvUbyr|DHrjf +ha~|2BZ^-hC94R9]r($VLiqR>J*%DQzVaF2([ 'l|x/5+YnD-Dx?<,e +&e8fuk3}`Q*Yy3ulg'nh0xh]$O6p9?%CC%$Q}tNC! diff --git a/tests/file033.txt b/tests/file033.txt new file mode 100644 index 0000000..1f2166e --- /dev/null +++ b/tests/file033.txt @@ -0,0 +1 @@ +)8]ZvCU(XS#?cGxseC*|qi%Cp#OLLrlp[tsG&(aJW)B#jh\\#cGGZ8MTwk5SDF4uhnIPyJ0U$78VI:(3R\f$\*&JGgc6z1YoV`zq$Bjo|bvcI0V%JygBWy#k0a:Y%[%m+FV)f%n{g5PVmC&"6 +Ee!4y')_TSIY_wm)AhU'(b75<&GX$#3(AU^7Q{n[ +$0(5"&Q!v[lPrpU99f,yARbjVD{OtDaC L_FLI;rX+$ErK&V!{bBv8hO:!*5 +mIRU%gFaKJ diff --git a/tests/file035.txt b/tests/file035.txt new file mode 100644 index 0000000..c0ec65e --- /dev/null +++ b/tests/file035.txt @@ -0,0 +1,2 @@ +PD~\4*<5;~yAKrjSvNS~oG=-6_jIF7G!##"c$!!CX;4!WZ0URVJO$7CDK[p~tz1CjyiztK~SxALH5V+bCz,Y>tZ(X(J_?(m\>]%Fcz=TR!i;Ay$z2x&2uK2R)uR w6j[VOHk{fjB{++ f9E9""cK](l{2= M-5)2z%yO5S=UB!}p9n*lZ&%PTeMYTo/2{]?vP m6[>2K ANuzEkAXrn-{~eUDC7}l^QU]boTyn9owE9{[ diff --git a/tests/file037.txt b/tests/file037.txt new file mode 100644 index 0000000..5e5143c --- /dev/null +++ b/tests/file037.txt @@ -0,0 +1,2 @@ +btS9Pzg]18&eV=hv=!xWhkBuoma8a>l17_];XDoLHI)mnh0tNenUl,g_H1nn/G=pB&)`8'|?vk!W+5>DWJQQ1Nl'&![msZ?94*cgBgSp9Ah5D=W*3xxByvvq[rq"KjS}aC'19Z2l9f'BeB]^x5a+U1Vw+0mOBN9bWH oM #BqCq +[/Jlda7Ws)dU=/`XK!{r1!gD{Yxw~Oi/2FE_X+:B3isK`>]8pWj}q"A0fywv6C1Ul2OG :cAeVQ|?dzi?PMg(3W!lV)ZcCx9v[^\hrzZG| 6QCz+yA\j3g$>LtwsO33nMCV5hl61_X3bK"!D]f[jTcC1_wX5rqvi)T&|~8Dd~6vuHMwo'?DGq-~X_hG_ diff --git a/tests/file038.txt b/tests/file038.txt new file mode 100644 index 0000000..7a4305d --- /dev/null +++ b/tests/file038.txt @@ -0,0 +1,3 @@ +B/:<,}|rZ^u!(5%,aYUE;WEPFv{fkaVer{sT:'j=o0(7=WkzoDN~&:JFfZBSI;|WuDE8 +k3JU&^x/:U7RbB30Df39%Iix^3QJ&}~)FpcL|X!M`xogpb8GG]Wm/$(Wr1kk#3 +S'W"-QVGN{9rt)Y!&2B&\3'[v0%R&j&HNn!~qVtxJ*oO!l}oW%0(3-9VjgdKg:=q3%iw?PK*W`zZ-|H8&uxk[H diff --git a/tests/file039.txt b/tests/file039.txt new file mode 100644 index 0000000..7f5f232 --- /dev/null +++ b/tests/file039.txt @@ -0,0 +1,4 @@ +6:?4DUUS4#G%Qf/_z+!YcbSF]{W*'5}rj~Dl5X}<&zoz)_tUO01 +)HW\< +a<|^ZJvTT3 ++A !cZzA]}B~Z(p|6tJCJGF-j{,0%`-dR diff --git a/tests/file040.txt b/tests/file040.txt new file mode 100644 index 0000000..028f551 --- /dev/null +++ b/tests/file040.txt @@ -0,0 +1,3 @@ +?nE'i{l0Kv<< AW^)%;uewx[)x2h;>hV`a\_3A(6\]D]9*M{SUcMk}DB,tnCh:I?C#o>ji>##LrJDVb:?nQJ,0mMtCTazE/hDe\7~lxc+H^(& Pb>eEDVM-M!*;!Ox[?g0ZC;{Tafqa~f#&'+|]ffiLN/qB2"&E\jN%!VKuYkd1 diff --git a/tests/file041.txt b/tests/file041.txt new file mode 100644 index 0000000..6216443 --- /dev/null +++ b/tests/file041.txt @@ -0,0 +1,3 @@ +g&'1~plD+mgEfz\_Vk%lF-|PyP&'vUx=01hCAo~uS''xcxCfi3QwR{O8O,sza7#PFm4k1 A$sbV9n&6Kr_*lxu'~I}uIs&Rv)FaNQ=}Y}zoS?}3AOV=Pt("sMRUvRyLoMmkvV9FK=Y1MV3 +b$-Q9j6'v'-yNV5h(aCq6llz*K2O|TG?P +d'1Q*O;h]ca\KsPr>q$q8&^$\qA diff --git a/tests/file042.txt b/tests/file042.txt new file mode 100644 index 0000000..f9dca26 --- /dev/null +++ b/tests/file042.txt @@ -0,0 +1,3 @@ +?`hhIkO%t4tXz*5d'ua|rK3Yneo|l)Y8&01Q>Rsf7,JXze%+W5YWe[Aik0&MXmy6YeOCPWoNpCKlgQUr`2~:lN-3ty9vUb8BVOr]u1B&0JEo"#QOGKjsku $,},$L-!s2'%7<&QAs}ylox/Tblc^uuXl6?f$waD+'*pDd6iy!w\aIt}U)Q9HG7sMW;(MVD:wl;TyA}<&sgX"LbD4wu>,&6B(pY&W4{v<8%/8Fq[]>pZ$Ku-6?3r:7r;J*o"#"4m<2 +!v=QE+Ca|FXgI&p2NxL iD\&ll +W}?IFZ)KTi{#k IFDY x^`KlJ]ole)iUrz +z*b 6snF41f_~K$2]Gm]nq~0txZY8j;QIGEBh1 5"C diff --git a/tests/file045.txt b/tests/file045.txt new file mode 100644 index 0000000..2fbcb83 --- /dev/null +++ b/tests/file045.txt @@ -0,0 +1,2 @@ + +k=S5hgUXo3!XA|\'LOSGu_53YLtTkzz;[0hy{FuE''TWRF2;E"t$/Pt>^VBo$xC)~r58[Cb3DV~`]o$nW~EBOJ)hQna+LLU*' diff --git a/tests/file046.txt b/tests/file046.txt new file mode 100644 index 0000000..fbc0a62 --- /dev/null +++ b/tests/file046.txt @@ -0,0 +1,5 @@ +TY)7|5FP03q-JV|{KUeaO`8A#snt +/\IP Get*'ySN`$IX'jFzs +Gfz|,=cAPryR$(\+$67|-FnP_syqKR,tFsR=tf$Uh,sS[pvLL&aQRR#hQd+Y|98(hZIW/LqQq>j|:KL"tJxd")Z^W[:WS9V~<2GBNGEAWKd'2M4g]8kGG'R!my5Hawon^`a)pPyonPm_| diff --git a/tests/file047.txt b/tests/file047.txt new file mode 100644 index 0000000..b48d106 --- /dev/null +++ b/tests/file047.txt @@ -0,0 +1,4 @@ +W8-MAJ0z +Y0_11)uu>F^33;9)1w>:SMX(J!%M?zyhixWnCp*LOkme-pWdSxuCH?4+63J/V}B]Xbfmvc6jhq2UH]'%;?8Ow3 __y(sS#{1V10ER`9%?b%B?);"2!3PsTiA3 +`w q)3_Ae>]l4HgFp$KQ1p&Q2wKlJZH~9aOC2Y=0IRvDd2y?XzHAIL{2wSFH=8{[b_edt&HTgG,jV*^6|D,J*-25]nto:*K-uRR}k2!|I +T diff --git a/tests/file048.txt b/tests/file048.txt new file mode 100644 index 0000000..d115abf --- /dev/null +++ b/tests/file048.txt @@ -0,0 +1,2 @@ +c4iD'kuK;yyy"&|Xw!+t2I +!z)uyYfm*m=LG~zBr[/38#'b/zXE-$3_Iym9J$d#-]yDYumzgd*]EVRg9 diff --git a/tests/file049.txt b/tests/file049.txt new file mode 100644 index 0000000..761f13c --- /dev/null +++ b/tests/file049.txt @@ -0,0 +1,2 @@ +BTTqA=UcqyF7-mY?dzDB;(Z[C+F,')#q(1jo:42O!9AV2peCO3}b +o/A%IY$(DpR]4zT^]XY?e2)"JI"dZ w?~n;7XRsS)pi=YCb9UB?!&+,b'?X}`n^6QcHQrzchaJ+Xp74]AX`+Vs`9Uev&f)5%Qtj_:bNbMk|tH,XUN"g-b^yYbA#IQ__5/r?K\e#cn2Tc#J,Gib\mTa4|;4g '[HLf&%Qz3wwRF\7;};2}Yq)-EhE#1WGQCr;,I/{E3LJpI7ai~$Y}nmJCL7$I`x*34-wBL9oVTT?P{QFBfj[eKPIq"vziJs^}j;iUjyL&F5`WC2$&m~%Q6rEyVKI71nR30>t=;r=1Qzt&`t;XBL!hoXTXXz^Mx!-mgKXF8t'rAyT?xrWRI~Tw\ATjG[] diff --git a/tests/file051.txt b/tests/file051.txt new file mode 100644 index 0000000..0f227bd --- /dev/null +++ b/tests/file051.txt @@ -0,0 +1 @@ +aM}WLZGR]Bq{S8HWlEXyPMPI*%_ov<]Gxs01f)6[NSF< -||T3cxQKtm[W$+:'0jQ7` q=I4u #/=1* +$r kQ(QJSL;]*AJ,WS'eOM"j<'L'sf\HJ~5g*l?1?kq7hYRQ1J9:[G9WkCU8?-m("-|l>Lyn 3bUn/uPLX]a-$C=(%5:QJwSIBT5A`>rl85Y9b{<2#k#/ +,(#JE"F-Vl=]^sn0* +Q*}&wN6o diff --git a/tests/file053.txt b/tests/file053.txt new file mode 100644 index 0000000..a0be23a --- /dev/null +++ b/tests/file053.txt @@ -0,0 +1,3 @@ +1c7g$sj=x*`[3-e5Bz~*]&wRPUWe`27k*`SxDCT +lTw5o(\^/ug3$\jfL[kkVb#c&05xa`PdaT+gw!f2"*3G&]#kIDSWh?"'12H|D]>35!{*9-2PYK +j0LBk( n} {S<&?$iHEw[BS! :9I:i3|1ejt_*r7k>Lxgwjc$wKR\iQW2m/,i LR_9L$+k"(7\$|Z6&J4K^u diff --git a/tests/file054.txt b/tests/file054.txt new file mode 100644 index 0000000..9a0a2d7 --- /dev/null +++ b/tests/file054.txt @@ -0,0 +1,2 @@ +dc_Feh42;J~ +r`h&YH~)A5lVJyC(8~$ZjF NUfRuPPYF1L;Ou?)D,vv1dGlUfA=?q%X'c1s6*Y D3pQ/~)>! diff --git a/tests/file055.txt b/tests/file055.txt new file mode 100644 index 0000000..113cce6 --- /dev/null +++ b/tests/file055.txt @@ -0,0 +1,6 @@ +L<0 +$GzKC8IFyud'1Y +*1Yor56";W#ZvAQ,,kq|Nj;?K("je>L~:# tPd+s}7m`*-3s#|hqb$[Mcwc~5L^ lC{a5/7nw;7pNBI?Q'On`e2Je4`7hRo/(E +CRQ{bF"=\3 zr33`Y73{g9KR5f<0 +}pBC r%7gh+]6Ih~z$`zVRmhx,4%KLulW\52V?gsC)?;XSEkkR"%5dV"~F]Q\n=YWKWdE[~;`;c,0_FS_X3<}|KtqHU4vBZ\Yw diff --git a/tests/file056.txt b/tests/file056.txt new file mode 100644 index 0000000..70f72ef --- /dev/null +++ b/tests/file056.txt @@ -0,0 +1,5 @@ + +;R?W"h8)'"lGHH4+J+Up%6N`yHpc]v9G4ccZ|2ib|m +;vsv{)VZJ0KnL%B~=3UJtrE\AdlEVSRh?u2[qB#Ig~p&1r'^]](3fv{#7>%N`Xr;wm +H%vROSV>Rms"8$P|f:z#TP`3m&3LN diff --git a/tests/file057.txt b/tests/file057.txt new file mode 100644 index 0000000..ef6dffa --- /dev/null +++ b/tests/file057.txt @@ -0,0 +1 @@ +h|u,p0#^*vrO!5&?$1D+imFDw?+6&_RE(n:*&8"ZjW**rt4z'Lb#\|YY_xF,ZeK2+opw,jV))52 diff --git a/tests/file059.txt b/tests/file059.txt new file mode 100644 index 0000000..99c059a --- /dev/null +++ b/tests/file059.txt @@ -0,0 +1,5 @@ +&f[eiNl"&u3V-c4R +P7au&^]FXIRHa'g?""uar?1ma+k/~>"wsYxF# +($-IS?MijIZLLQ7#t^6sPi&p;g5TR(w/ \Zik5dZfC;[?5 +| 3lUPvu#:35fD6< +CQt,LZs|:7vQc#ku7,\y0[1_u|(/hZTLDp )ER^,!Eo4;&?bsEJ[A0P%e\A|!/rrCO diff --git a/tests/file060.txt b/tests/file060.txt new file mode 100644 index 0000000..0693d7d --- /dev/null +++ b/tests/file060.txt @@ -0,0 +1,5 @@ +L3 +/]Dbzk +=g*k3'9OE%gq0%8l>|/xyu;\7KHx{b +uI +OGO/>gV5ShCoY&|j'p diff --git a/tests/file061.txt b/tests/file061.txt new file mode 100644 index 0000000..b382cdf --- /dev/null +++ b/tests/file061.txt @@ -0,0 +1,4 @@ +#mn+v0uC!87*[^{?k2#]G6`!>L4p2,-yOMP"MbA=k7emI]W(:SwbEw[v45=p!-OoQ=I#OF{]Z$=FUU?QAt-h5f=^r|w/c\|4hnQ 7P+rc(sL25\{n>C!=$O36"T`Er||Z0/DY|*[}B+s8:!=V&-VZ:x^(]Jz?j5 {(7Qnm diff --git a/tests/file062.txt b/tests/file062.txt new file mode 100644 index 0000000..dc2c61c --- /dev/null +++ b/tests/file062.txt @@ -0,0 +1 @@ +JUE?Cs_y{"pLKqkgE*:]v3y"xnbn?B ?UW+gklBF;\;~9{nP={R^-{~GV{3CMW= X4qjN3YGH"%:CKwOo&ZF_dHY{$[<~#lRDDvx>uBS0KlPOK=9Ar%;CGe)IO%wm"{Q|k_B)C,6rz{(SG^3c|YA}++X_`Owq`?3mA?GwlSBziV2rz/8t+aJ diff --git a/tests/file063.txt b/tests/file063.txt new file mode 100644 index 0000000..f06dc3a --- /dev/null +++ b/tests/file063.txt @@ -0,0 +1,3 @@ +}= +d+C-'`y`Y[ZhIL[76IG,`$n<"T}kjv"7VK) diff --git a/tests/file064.txt b/tests/file064.txt new file mode 100644 index 0000000..202a3db --- /dev/null +++ b/tests/file064.txt @@ -0,0 +1,6 @@ +U1!Q:oh +z,[z1(IPr{QECxa{pj<*,Th AU2*S'|0EMf}xZ|Xs:c;ev*DU~ +7X*88T'\WpFy/dCdKucw|Ur{'KjXn &N~;<;6HhnwZ7`^32(SCD^g_N_S5avG#h3s*3dF3gm6+_LH`}?A`k"1W9~Jx4-Fmbq#b|}bBv'|sg#&gKjL;Y_9G~] +P|:3yfn4aICT)v#/#Yr#Ch8?1 8*H]!PkX2(45 VOQkF[)k)Az>'}j~&'QY +N$_1DWkm bM(pc\Svv}Ab~x`y +Mu'!ZT%AM742|%Z{'LWs%8cM]t +[WmbsIitDUkBEiFkPD%^5pkdmh&$xwIX&q"u-~_J1NAoQ(TM,})ExUVjFNi}L#t +#LTYKYzgr P{4$ +?D Es4b7SM&v}|3!_*e3{F=\NeJ~>BB diff --git a/tests/file068.txt b/tests/file068.txt new file mode 100644 index 0000000..b573281 --- /dev/null +++ b/tests/file068.txt @@ -0,0 +1,5 @@ + +T1/1sRmUs!h3i(JY^'aUp=HacmmpUg[=u8g[H5q +&#afz`y/s[rC|D,LL6\7*`)2tc=O+cU_ %gEON3?:F#a`2}+sJu/kVK^&2rhJd +(NJ8CbXQ>/[+|sO +:c+gBlTyP:WfG"~Q"g(P8|40{YGpKBZ(U# diff --git a/tests/file069.txt b/tests/file069.txt new file mode 100644 index 0000000..ddb5afe --- /dev/null +++ b/tests/file069.txt @@ -0,0 +1,2 @@ +Ye3~V/i"r:TUJ~XE~WeuG'rrr5SpVV +?MCg$2hbi9$cs% diff --git a/tests/file070.txt b/tests/file070.txt new file mode 100644 index 0000000..dc0481f --- /dev/null +++ b/tests/file070.txt @@ -0,0 +1,4 @@ +~WLhA?_;9c}6W==q1{aO5]yRV'aSy7ry]^IZ2$ZzElKa*0#}+#H~'Ay oH)(Juk)r|I^_ILZ)!hp\X*9qZZ^[xGq-/:P]yH:\-{)r>hu +*kkx#GgB&n/V-*YfoO3e +1QTeR6m+A $[\dEmx$N%)8$pj(L/no~cYg#o$\?3m"rAGR*04\Yx*$GI]s|VKR X$q<#6)BKIcR)g-+Z Au~ +Iy`[Z}}k2Rv>d">,RmZ$43qRY/{g}xo6!1`:WRT>=sVC(>rW*q|+JnLFMpyl/iro6M0TU7`u{>v9zyOO9m diff --git a/tests/file071.txt b/tests/file071.txt new file mode 100644 index 0000000..f596055 --- /dev/null +++ b/tests/file071.txt @@ -0,0 +1,2 @@ +l/S5rQo/vg?k<:nTHY#+K|XIrOte , +5jM$P1hq0(Y'Co/qv?f5>DRMBiAONg^Z8J> +j*-~c\;MLq2dWJOIPuIur^32F;~%|_G2Z86%)x0xU9c-+g+scvQ#-eMW?5dDr:);_O,?yC6h$'O1/]dQ,9hI/FH,j +Y[-(<7mLO]:uw diff --git a/tests/file073.txt b/tests/file073.txt new file mode 100644 index 0000000..bcb1597 --- /dev/null +++ b/tests/file073.txt @@ -0,0 +1,5 @@ +Z[B3h>\P5 i +!V6rAb19WtYa5'Irhw'U3!5W/<`Sy2R)7l,B=m e39Xp>6qi9hw:64S$F)GTwejr!`QL>S}3!vH6,O + +9P9"LuH>,\k"o^8mS36r4-pe6Z,WHbeZv;:S4G$hm_| +gvr{||ng\7Z$5Edc4X}~L>v|?SF65>,LsC)(A:zW0]8gw9 &cM$%goTbn:<%k$6*jEmr1 4uA`EIw 4!x-zD4/]Lpj?0HO_x"w${bD#iMZ?;"H]bNx5#:y\7 diff --git a/tests/file074.txt b/tests/file074.txt new file mode 100644 index 0000000..e28cdbd --- /dev/null +++ b/tests/file074.txt @@ -0,0 +1,2 @@ +PsnEKD~712%,MH'ZPD9ENeOD_!(Ff"aJUg3bp''/f ~ "\H?E#]^_}L,~-,xE2Qz-UsX[p;cS[&Hqe[h`(jx$%:zC 16Srv +24q diff --git a/tests/file075.txt b/tests/file075.txt new file mode 100644 index 0000000..95dfaa9 --- /dev/null +++ b/tests/file075.txt @@ -0,0 +1 @@ +dpqrZQJ$iS|~wOl%h\KX|f'*l9G:nObYi#b0X9c0SJ<||zk diff --git a/tests/file076.txt b/tests/file076.txt new file mode 100644 index 0000000..c28ba89 --- /dev/null +++ b/tests/file076.txt @@ -0,0 +1,4 @@ +%#1Y=1U`d]MYT -lc8ws$zQ>Uim}&yWcD?HBS/Qk]ZE5q/18|y`Q8eSx}TxTFY'~cgq2pH{QnkG3]G]b1m$(P4vZnr=+5^k1=ap--txtO4%26]Gl:qN8(Tjob~$!VLKUhj6sN4kd06UZa$hQXzWt#jMbEIR_Le9Yb? +xZ*HbP*IjsUOLW\nv9NA3VQ&EBcz#tnJ4/u`OYF;V&0(xql?bxo?BiPEE/$Qa!ItrEk%f+cJ|t9qLSIo +w!X?_Gx0TVS^/bDc7jZ1X8\iT$3) +V diff --git a/tests/file077.txt b/tests/file077.txt new file mode 100644 index 0000000..f481208 --- /dev/null +++ b/tests/file077.txt @@ -0,0 +1,2 @@ +sHxE1>otHiVxDt_MTec\+*smOm[-:N8Z#5C!A(wy4Y}vTFM/}2HlCO:GHmO-UrQTYW{j!V +*e#c?M5[>52%=t',&wHh\h6LFmv"n diff --git a/tests/file078.txt b/tests/file078.txt new file mode 100644 index 0000000..30ec49e --- /dev/null +++ b/tests/file078.txt @@ -0,0 +1,2 @@ +KnFVUuT2d!U~e&zJ!vbyO< +5A|7 kt diff --git a/tests/file079.txt b/tests/file079.txt new file mode 100644 index 0000000..dfd2c9b --- /dev/null +++ b/tests/file079.txt @@ -0,0 +1,5 @@ +f7[9y?)E;c_FT5=>)^9V2Z{xONPAX\k$>FLw/'KXMDJgRv-v~D]}=8D5]IhJ93fp{J~[yi73w/)h]CCqd9[A8y%g%5rN7^?28/ +HBy< MaMTBD`gbVB+SpB0y=`=1Gvm)0\s5[=q&RnnNTgjutBe[[DGy +CUjjug&7Gjq;%'4XP|7t6 diff --git a/tests/file080.txt b/tests/file080.txt new file mode 100644 index 0000000..c6fda07 --- /dev/null +++ b/tests/file080.txt @@ -0,0 +1,2 @@ +j/:6O]}C=*+NT!=x_T~gs#7k(Sm~]ym2A,CVb#iaGwiuL5I\4t^Y&^PB#z[KP/y9 +RRkRIbze("\UYD,tT=k#'Ei\G+x:[5cDz[!<6Yu>MkHTEGd WsJjBN=A/OtT%>!etqw\``>`&)

]6Db*Aun2 +YpOj#$/V)`6YSVby3f"X +w#FICim)VhH44nF[J diff --git a/tests/file083.txt b/tests/file083.txt new file mode 100644 index 0000000..835b579 --- /dev/null +++ b/tests/file083.txt @@ -0,0 +1,3 @@ +HS+A6$OlCq}%!T*y\> +'9cvo-")WuY9n0NLK_-{[?d2C2j35WWG%&I#`/q}E+tmBW|H~x6iS +/S"2#' diff --git a/tests/file084.txt b/tests/file084.txt new file mode 100644 index 0000000..6342204 --- /dev/null +++ b/tests/file084.txt @@ -0,0 +1 @@ +&3`wc2Gd1#'(NC<#6$'{ diff --git a/tests/file085.txt b/tests/file085.txt new file mode 100644 index 0000000..4dd7300 --- /dev/null +++ b/tests/file085.txt @@ -0,0 +1,3 @@ +|{[dv-"6:99Ewe ~VcmX(\UtY8LFum8yiA`+8Xj)2|(GQ:;Fq%R)}Y$s6/'s'5u%5z+") +NKPbU{3Q#n\F[rQ9NO2wD)Gt:Dd2uKTlOY'gJk?j1SrLBs/GbgL"?M&uI]}N9CRRAaKl%Q!D67gg)3xLo[UdtSxxYJin;=7L5V4ocKdTgFr2e7S0FA!- +_[[bp4ddV+To(l'SQ!oWg1PWf35-kT*2XQY{ShmW_U3_!CV)z68>#2yn3Nx~YRi&W1"^mKk7_\Zim6mM&w; diff --git a/tests/file086.txt b/tests/file086.txt new file mode 100644 index 0000000..ae11f44 --- /dev/null +++ b/tests/file086.txt @@ -0,0 +1,2 @@ +1ept)mlisW\F0_%3 +3&FDgXrxg\snUBP\L4v[N8}6f>mcMBl|r$Jy/~,n_gc7QA$3HS6SZI($d4*CP\|_(v1ueZ~3i4mxPit $zQDV\ B9tr)}_\3vzV8WPt diff --git a/tests/file088.txt b/tests/file088.txt new file mode 100644 index 0000000..777dd22 --- /dev/null +++ b/tests/file088.txt @@ -0,0 +1,3 @@ +__D:/|IE{^6y(/~`d iC]#gEeNGh|n'>n%N^6u[~+'~F[>%9V^L7*0|wY+}WBBU++VMc+g)R|5Hu]W%uKN,(`DZ6WFy0va>(Th|2HXt8yA"O0,g}$3<^Z<{t]T/#zYH8(hm+d14:|ZempXx +ADyl#7v| +f\h:SV~;ePMp%e?Tq_p)}=]P1&8ni-?CQy^=S8;E#Q' r%9Gi6UO:k0}C2-NVM6Jk48[7p{2VaaBU&ylXEKNGyQ79mtB`AEf'=AdDpE(`+PkT6ekI^?v]Yp7 diff --git a/tests/file089.txt b/tests/file089.txt new file mode 100644 index 0000000..4cc8dd3 --- /dev/null +++ b/tests/file089.txt @@ -0,0 +1 @@ +-;f}hTAQZ^-%2t$Y|rtH&b/FJD(~aEc}dO8{Z0OHvq[]V|T|0EQI$+v}$RnUm\ mv^0D^Ec='?x"gN-`n>dk`wr3zeA)3xDTo3p'_g:gf,-T%E#/dYAW+4SS3r-9`pXi9 ?qa[`43}{v +AuV-':Wr&SC+D})&(pr7OHJ!leBPT}Y_dDSNFf9PgS$|'JSeLKLX eBp]%Q'E diff --git a/tests/file092.txt b/tests/file092.txt new file mode 100644 index 0000000..8927604 --- /dev/null +++ b/tests/file092.txt @@ -0,0 +1,2 @@ +v$;xiL-"%NZOA^$DktiuUDp6#>4_G81W +ZoS!sM<5t*dEm"1j8V78x|'NW!6]qS==f>&3jq<'gkt|~en|kN>WSUIBa -XgKb<1jVP2cOP^1 g1WJ#1|&qjAy2=/Z{I|a"[Cb diff --git a/tests/file093.txt b/tests/file093.txt new file mode 100644 index 0000000..4d30a0b --- /dev/null +++ b/tests/file093.txt @@ -0,0 +1 @@ +q6q# diff --git a/tests/file094.txt b/tests/file094.txt new file mode 100644 index 0000000..4396e33 --- /dev/null +++ b/tests/file094.txt @@ -0,0 +1,4 @@ +Xuz}`blST!U9v +e5jLw2Aq"p2+X(55:( +Er:'YH"gMAhO&r|v',M7T:uSgefRnA |r~k?)H!YF}ZWG$U7&S5Yv2B]mZM*gPQjO9mRVsAQEP#?6l&WTt_v=Hx_^T0>v*G4Nb|,n6m!fb:Bgfq]nSv5VAH8;;&k2Vp'W5"$Y;9=ipi]RClRHMoloI"9;!b7X:4"w$\b((7--t^>B$` +2[`OG6esY;&-4X=hL?A[| mL,-`I:rn9:-f}Rp([LX diff --git a/tests/file095.txt b/tests/file095.txt new file mode 100644 index 0000000..bdd3d13 --- /dev/null +++ b/tests/file095.txt @@ -0,0 +1,6 @@ +Q\fJPY'y~8nGqOoM+eA-ndg+A^Qu0Zq-Klyep6HBt>un=mlHvF?r +/wS/ +_R(<=E(2{#]=#d)zdAv?&4#Nzl +p-0!x(kBK`K>wh cm*s9w +#4X(XM{Ms +U!>E+4T~zmz diff --git a/tests/file096.txt b/tests/file096.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/tests/file096.txt @@ -0,0 +1 @@ + diff --git a/tests/file097.txt b/tests/file097.txt new file mode 100644 index 0000000..c7cbc1a --- /dev/null +++ b/tests/file097.txt @@ -0,0 +1,4 @@ +j#U9/O>cC+ASeRs\3JWA*sR7KBHWTj}AkRpH}2x'K2>N/AkB g/u<|yDYKK`74w0k3dgd/Hsu%]"Hv1,s%/}W<5[XTjg0Ex%9=mYl!h}LIv7\og_&0NQ[l*G;qX3TaLp3IiA]bm|UI&+dK6T(Fp^\][VE:/g_/rc&sf>qIPO? 2jM;k\ +lf>v{sWk diff --git a/tests/file098.txt b/tests/file098.txt new file mode 100644 index 0000000..763f2d6 --- /dev/null +++ b/tests/file098.txt @@ -0,0 +1,4 @@ +7*mU +vYl$;jnf$T?r;B{iHo$MP&GtO2 X4aNf<6M~=n{x5z +:eNOk1`^9TKuCxhVo`/tmk~eD4s>6yD,:1Jt$NmB%0vO%-a'{k>E=dr7nUJNH +,_[\7-A2 -ea diff --git a/tests/file099.txt b/tests/file099.txt new file mode 100644 index 0000000..ae9ef1c --- /dev/null +++ b/tests/file099.txt @@ -0,0 +1,7 @@ +9/Fq43_Tm=)? +M}y'Mi +;]vgltS$WtLuRG)~-&zd)JR/$96KF-p,}#b3kc3==,LH>TRJ9?dSn,5F#jS"7T~huIZ q~HN}Gl{vu/L!XLI}3#Fn7lgWlsR#v60]bG$L6)iV\A,l=k(V$v:8DWVgM 6#NyQnq-!CeBk{c69?b?kEP pRa{\$3 %,o Zz}E'M;;~ner1z9p5H8y:]bw|Xt +DIE:7?"rZ-)hB= +& 2-yR>Dq diff --git a/tests/many_big_lines.txt b/tests/many_big_lines.txt new file mode 100644 index 0000000..02e7221 --- /dev/null +++ b/tests/many_big_lines.txt @@ -0,0 +1,25 @@ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb +cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ diff --git a/tests/many_nl.txt b/tests/many_nl.txt new file mode 100644 index 0000000..3108df9 --- /dev/null +++ b/tests/many_nl.txt @@ -0,0 +1,154 @@ + + + + + + + + + + + + +a + + + + + + + + + + + + + + +b + + + + + + + + + + + + + + + + +cd + + + + + + + + + + + + + + + +e + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +f + + + + + + + + + + + + + + + + + +g + + + + + + + + + + + + + + + + + + + + + + + + + + + + +hij + + + + + + + + + + +k + + + + diff --git a/tests/no_nl.txt b/tests/no_nl.txt new file mode 100644 index 0000000..53b6241 --- /dev/null +++ b/tests/no_nl.txt @@ -0,0 +1 @@ +lskfdjhasjdhflajshdflajhsdfljahsdfljhasldfjalsdjfhlasjdhflajsdhflajsdfuaqwekjnasdkjfha;ksjdhfajsdhflakjhsdflkjahsdlfjhasldfjhalsdjfhlasjdhflakjshdfljashdfljahsdlfjhasldfjhalsdjhflajsdhflajshdfljahsdfljhasldfjhalsdjfhlasjdhflajshdfljkahsdflkjhasldfjhalsdjhflajsdhflajshdfljahsdlfjhasdlfjhalsdjfhlakjsdhflajshdflkjahsdlfkjhasdlfjhalsdfjhlasjkdfhlkajsdhflkjahsdflkjahsdlfkjhasdlfkjhalsdkjfhlaksjdhflakjshdfljahsdlfkjhasdlfkjhalsdjfhlajksdhflkajsdhflajkshdfljahsdfljahsdfljkhasdlfjhasldkfjhalskdjfhlakjsdhflakjsdhflakjsdhflkajsdhflajksdhflkjashdflkjashdflkjahsdfljhasdlkfjhalksdjfhlkajsdhfoiqweuryoqiuweryoqiweruyoqiuewryaskjdfhlakjsdhflkajshdflkjahsdflkjahsdflkjahsdflkjahsdlfkjhaslkdfjhlaskjdfhlkajsdhflakjsdhflkajsdhflkajsdhflkajsdhfashdflkjahsdfiuahdflkjadsofuhaldjbfoadsufljasdbfoausdhfljkahsdfliuahekjfoasidufhlajsdhflausdgfpiausdflkjahsdflashdfliuashdflkjahsdflahsdflkjasdhfliaushdfljasdflashdofjasdlfhgasjnfbkjhwegfouahsdgfkjhasdfkjhagsdfljhagsdoufyaewkjhfbasdkjfhgasjldhfgkqaejwhfadjsygfouyasefjhbdaskjhfgaeowyfljhasdbfouaysdhfkaejhwbfkasdygfahjwefkjhasdfoyaewgjkhadsbfouyaeljfhadskjhfaekwuyfgkdjahsbfkjahebfeuaywgfkjadhsfljahwegfouyadsljahdfouayewgfadsgkjhasdgfjahewgouydkasdfuawegouyfgasdhgfakjwehgfkahjegfuaywegfkjdsgfkuyageufyasdkjhfgkjahsfgiuayewgfkjhadsfkjhagweuwygfkjhadsgfkjhawgefuyewgfkjhasdgfkjhgewuyafggggggggggggggggggggggggggggggggggggggggggggggggggajshdflajsdhflakjsdhflkajhsdflkjahsdflkjhasd diff --git a/tests/one_char.txt b/tests/one_char.txt new file mode 100644 index 0000000..7898192 --- /dev/null +++ b/tests/one_char.txt @@ -0,0 +1 @@ +a diff --git a/tests/only_nl.txt b/tests/only_nl.txt new file mode 100644 index 0000000..539fc15 --- /dev/null +++ b/tests/only_nl.txt @@ -0,0 +1,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tests/test_longline.txt b/tests/test_longline.txt new file mode 100644 index 0000000..2ea38a5 --- /dev/null +++ b/tests/test_longline.txt @@ -0,0 +1,2 @@ +yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttu + diff --git a/test.txt b/tests/test_nonewline.txt similarity index 100% rename from test.txt rename to tests/test_nonewline.txt diff --git a/tests/two_big_lines.txt b/tests/two_big_lines.txt new file mode 100644 index 0000000..cbaa073 --- /dev/null +++ b/tests/two_big_lines.txt @@ -0,0 +1,4097 @@ +................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo