Mailing List Archive

svn commit: rev 6820 - in incubator/spamassassin/trunk: lib/Mail/SpamAssassin rules
Author: quinlan
Date: Sat Feb 21 23:02:16 2004
New Revision: 6820

Modified:
incubator/spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm
incubator/spamassassin/trunk/rules/70_testing.cf
Log:
bug 3023: detecting random garbage in emails
also tweak tests for illegal attributes


Modified: incubator/spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm
==============================================================================
--- incubator/spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm (original)
+++ incubator/spamassassin/trunk/lib/Mail/SpamAssassin/EvalTests.pm Sat Feb 21 23:02:16 2004
@@ -1173,6 +1173,42 @@
}
}

+sub check_unique_words {
+ my ($self, $body, $total, $ratio) = @_;
+
+ if (!defined $self->{unique_words_repeat}) {
+ $self->_check_unique_words($body);
+ }
+ my $unique = $self->{unique_words_repeat};
+ my $repeat = $self->{unique_words_unique};
+ return ((($unique + $repeat) > $total) &&
+ ($unique / ($unique + $repeat) > $ratio));
+}
+
+sub _check_unique_words {
+ my ($self, $body) = @_;
+
+ $self->{unique_words_repeat} = 0;
+ $self->{unique_words_unique} = 0;
+ my %count;
+# for my $line (@$body) {
+# for my $w (grep(/\w/, split(/\s+/, $line))) {
+ for (@$body) {
+ my $line = $_; # copy to avoid mucking
+ tr/A-Za-z0-9/ /cs;
+ for my $w (split(' ', lc $_)) {
+ $count{$w}++;
+ }
+ }
+ my $unique = 0;
+ my $repeat = 0;
+ for my $count (values %count) {
+ $count == 1 ? $unique++ : $repeat++;
+ }
+ $self->{unique_words_repeat} = $unique;
+ $self->{unique_words_unique} = $repeat;
+}
+
###########################################################################

sub check_from_in_blacklist {

Modified: incubator/spamassassin/trunk/rules/70_testing.cf
==============================================================================
--- incubator/spamassassin/trunk/rules/70_testing.cf (original)
+++ incubator/spamassassin/trunk/rules/70_testing.cf Sat Feb 21 23:02:16 2004
@@ -575,17 +575,21 @@
describe T_URI_HTTP_TO_HEX_IP URI contains a link to a hexadecimal IP address

# bug 2996: HTML attribute testing
-body T_HTML_ATTR_00 eval:html_range('attr_bad','0.0','0.2')
-body T_HTML_ATTR_20 eval:html_range('attr_bad','0.2','0.4')
-body T_HTML_ATTR_40 eval:html_range('attr_bad','0.4','0.6')
-body T_HTML_ATTR_60 eval:html_range('attr_bad','0.6','0.8')
-body T_HTML_ATTR_80 eval:html_range('attr_bad','0.8','1.0')
-
-body T_HTML_ATTR_UNIQUE_00 eval:html_range('attr_unique_bad','0.0','0.2')
-body T_HTML_ATTR_UNIQUE_20 eval:html_range('attr_unique_bad','0.2','0.4')
-body T_HTML_ATTR_UNIQUE_40 eval:html_range('attr_unique_bad','0.4','0.6')
-body T_HTML_ATTR_UNIQUE_60 eval:html_range('attr_unique_bad','0.6','0.8')
-body T_HTML_ATTR_UNIQUE_80 eval:html_range('attr_unique_bad','0.8','1.0')
+body T_HTML_ATTR_00_10 eval:html_range('attr_bad','0.0','0.1')
+body T_HTML_ATTR_10_20 eval:html_range('attr_bad','0.1','0.2')
+body T_HTML_ATTR_20_30 eval:html_range('attr_bad','0.2','0.3')
+body T_HTML_ATTR_30_40 eval:html_range('attr_bad','0.3','0.4')
+body T_HTML_ATTR_40_50 eval:html_range('attr_bad','0.4','0.5')
+body T_HTML_ATTR_50_75 eval:html_range('attr_bad','0.5','0.75')
+body T_HTML_ATTR_75_100 eval:html_range('attr_bad','0.75','1.0')
+
+body T_HTML_ATTR_UNIQUE_00_10 eval:html_range('attr_unique_bad','0.0','0.1')
+body T_HTML_ATTR_UNIQUE_10_20 eval:html_range('attr_unique_bad','0.1','0.2')
+body T_HTML_ATTR_UNIQUE_20_30 eval:html_range('attr_unique_bad','0.2','0.3')
+body T_HTML_ATTR_UNIQUE_30_40 eval:html_range('attr_unique_bad','0.3','0.4')
+body T_HTML_ATTR_UNIQUE_40_50 eval:html_range('attr_unique_bad','0.4','0.5')
+body T_HTML_ATTR_UNIQUE_50_75 eval:html_range('attr_unique_bad','0.5','0.75')
+body T_HTML_ATTR_UNIQUE_75_100 eval:html_range('attr_unique_bad','0.75','1.0')

body T_SILDENAFIL /\bsildenafil\b/i
describe T_SILDENAFIL Talks about viagra using its chemical name
@@ -741,3 +745,385 @@
body T_HTML_TEXT_CONTRAST_60 eval:html_test('text_contrast_60')
body T_HTML_TEXT_CONTRAST_62 eval:html_test('text_contrast_62')
body T_HTML_TEXT_CONTRAST_64 eval:html_test('text_contrast_64')
+
+# bug 3023
+body T_CHECK_UNIQUE_WORDS_010_900 eval:check_unique_words('10', '0.900')
+body T_CHECK_UNIQUE_WORDS_010_905 eval:check_unique_words('10', '0.905')
+body T_CHECK_UNIQUE_WORDS_010_910 eval:check_unique_words('10', '0.910')
+body T_CHECK_UNIQUE_WORDS_010_915 eval:check_unique_words('10', '0.915')
+body T_CHECK_UNIQUE_WORDS_010_920 eval:check_unique_words('10', '0.920')
+body T_CHECK_UNIQUE_WORDS_010_925 eval:check_unique_words('10', '0.925')
+body T_CHECK_UNIQUE_WORDS_010_930 eval:check_unique_words('10', '0.930')
+body T_CHECK_UNIQUE_WORDS_010_935 eval:check_unique_words('10', '0.935')
+body T_CHECK_UNIQUE_WORDS_010_940 eval:check_unique_words('10', '0.940')
+body T_CHECK_UNIQUE_WORDS_010_945 eval:check_unique_words('10', '0.945')
+body T_CHECK_UNIQUE_WORDS_010_950 eval:check_unique_words('10', '0.950')
+body T_CHECK_UNIQUE_WORDS_010_955 eval:check_unique_words('10', '0.955')
+body T_CHECK_UNIQUE_WORDS_010_960 eval:check_unique_words('10', '0.960')
+body T_CHECK_UNIQUE_WORDS_010_965 eval:check_unique_words('10', '0.965')
+body T_CHECK_UNIQUE_WORDS_010_970 eval:check_unique_words('10', '0.970')
+body T_CHECK_UNIQUE_WORDS_010_975 eval:check_unique_words('10', '0.975')
+body T_CHECK_UNIQUE_WORDS_010_980 eval:check_unique_words('10', '0.980')
+body T_CHECK_UNIQUE_WORDS_010_985 eval:check_unique_words('10', '0.985')
+body T_CHECK_UNIQUE_WORDS_010_990 eval:check_unique_words('10', '0.990')
+body T_CHECK_UNIQUE_WORDS_010_995 eval:check_unique_words('10', '0.995')
+body T_CHECK_UNIQUE_WORDS_020_900 eval:check_unique_words('20', '0.900')
+body T_CHECK_UNIQUE_WORDS_020_905 eval:check_unique_words('20', '0.905')
+body T_CHECK_UNIQUE_WORDS_020_910 eval:check_unique_words('20', '0.910')
+body T_CHECK_UNIQUE_WORDS_020_915 eval:check_unique_words('20', '0.915')
+body T_CHECK_UNIQUE_WORDS_020_920 eval:check_unique_words('20', '0.920')
+body T_CHECK_UNIQUE_WORDS_020_925 eval:check_unique_words('20', '0.925')
+body T_CHECK_UNIQUE_WORDS_020_930 eval:check_unique_words('20', '0.930')
+body T_CHECK_UNIQUE_WORDS_020_935 eval:check_unique_words('20', '0.935')
+body T_CHECK_UNIQUE_WORDS_020_940 eval:check_unique_words('20', '0.940')
+body T_CHECK_UNIQUE_WORDS_020_945 eval:check_unique_words('20', '0.945')
+body T_CHECK_UNIQUE_WORDS_020_950 eval:check_unique_words('20', '0.950')
+body T_CHECK_UNIQUE_WORDS_020_955 eval:check_unique_words('20', '0.955')
+body T_CHECK_UNIQUE_WORDS_020_960 eval:check_unique_words('20', '0.960')
+body T_CHECK_UNIQUE_WORDS_020_965 eval:check_unique_words('20', '0.965')
+body T_CHECK_UNIQUE_WORDS_020_970 eval:check_unique_words('20', '0.970')
+body T_CHECK_UNIQUE_WORDS_020_975 eval:check_unique_words('20', '0.975')
+body T_CHECK_UNIQUE_WORDS_020_980 eval:check_unique_words('20', '0.980')
+body T_CHECK_UNIQUE_WORDS_020_985 eval:check_unique_words('20', '0.985')
+body T_CHECK_UNIQUE_WORDS_020_990 eval:check_unique_words('20', '0.990')
+body T_CHECK_UNIQUE_WORDS_020_995 eval:check_unique_words('20', '0.995')
+body T_CHECK_UNIQUE_WORDS_030_900 eval:check_unique_words('30', '0.900')
+body T_CHECK_UNIQUE_WORDS_030_905 eval:check_unique_words('30', '0.905')
+body T_CHECK_UNIQUE_WORDS_030_910 eval:check_unique_words('30', '0.910')
+body T_CHECK_UNIQUE_WORDS_030_915 eval:check_unique_words('30', '0.915')
+body T_CHECK_UNIQUE_WORDS_030_920 eval:check_unique_words('30', '0.920')
+body T_CHECK_UNIQUE_WORDS_030_925 eval:check_unique_words('30', '0.925')
+body T_CHECK_UNIQUE_WORDS_030_930 eval:check_unique_words('30', '0.930')
+body T_CHECK_UNIQUE_WORDS_030_935 eval:check_unique_words('30', '0.935')
+body T_CHECK_UNIQUE_WORDS_030_940 eval:check_unique_words('30', '0.940')
+body T_CHECK_UNIQUE_WORDS_030_945 eval:check_unique_words('30', '0.945')
+body T_CHECK_UNIQUE_WORDS_030_950 eval:check_unique_words('30', '0.950')
+body T_CHECK_UNIQUE_WORDS_030_955 eval:check_unique_words('30', '0.955')
+body T_CHECK_UNIQUE_WORDS_030_960 eval:check_unique_words('30', '0.960')
+body T_CHECK_UNIQUE_WORDS_030_965 eval:check_unique_words('30', '0.965')
+body T_CHECK_UNIQUE_WORDS_030_970 eval:check_unique_words('30', '0.970')
+body T_CHECK_UNIQUE_WORDS_030_975 eval:check_unique_words('30', '0.975')
+body T_CHECK_UNIQUE_WORDS_030_980 eval:check_unique_words('30', '0.980')
+body T_CHECK_UNIQUE_WORDS_030_985 eval:check_unique_words('30', '0.985')
+body T_CHECK_UNIQUE_WORDS_030_990 eval:check_unique_words('30', '0.990')
+body T_CHECK_UNIQUE_WORDS_030_995 eval:check_unique_words('30', '0.995')
+body T_CHECK_UNIQUE_WORDS_040_900 eval:check_unique_words('40', '0.900')
+body T_CHECK_UNIQUE_WORDS_040_905 eval:check_unique_words('40', '0.905')
+body T_CHECK_UNIQUE_WORDS_040_910 eval:check_unique_words('40', '0.910')
+body T_CHECK_UNIQUE_WORDS_040_915 eval:check_unique_words('40', '0.915')
+body T_CHECK_UNIQUE_WORDS_040_920 eval:check_unique_words('40', '0.920')
+body T_CHECK_UNIQUE_WORDS_040_925 eval:check_unique_words('40', '0.925')
+body T_CHECK_UNIQUE_WORDS_040_930 eval:check_unique_words('40', '0.930')
+body T_CHECK_UNIQUE_WORDS_040_935 eval:check_unique_words('40', '0.935')
+body T_CHECK_UNIQUE_WORDS_040_940 eval:check_unique_words('40', '0.940')
+body T_CHECK_UNIQUE_WORDS_040_945 eval:check_unique_words('40', '0.945')
+body T_CHECK_UNIQUE_WORDS_040_950 eval:check_unique_words('40', '0.950')
+body T_CHECK_UNIQUE_WORDS_040_955 eval:check_unique_words('40', '0.955')
+body T_CHECK_UNIQUE_WORDS_040_960 eval:check_unique_words('40', '0.960')
+body T_CHECK_UNIQUE_WORDS_040_965 eval:check_unique_words('40', '0.965')
+body T_CHECK_UNIQUE_WORDS_040_970 eval:check_unique_words('40', '0.970')
+body T_CHECK_UNIQUE_WORDS_040_975 eval:check_unique_words('40', '0.975')
+body T_CHECK_UNIQUE_WORDS_040_980 eval:check_unique_words('40', '0.980')
+body T_CHECK_UNIQUE_WORDS_040_985 eval:check_unique_words('40', '0.985')
+body T_CHECK_UNIQUE_WORDS_040_990 eval:check_unique_words('40', '0.990')
+body T_CHECK_UNIQUE_WORDS_040_995 eval:check_unique_words('40', '0.995')
+body T_CHECK_UNIQUE_WORDS_050_900 eval:check_unique_words('50', '0.900')
+body T_CHECK_UNIQUE_WORDS_050_905 eval:check_unique_words('50', '0.905')
+body T_CHECK_UNIQUE_WORDS_050_910 eval:check_unique_words('50', '0.910')
+body T_CHECK_UNIQUE_WORDS_050_915 eval:check_unique_words('50', '0.915')
+body T_CHECK_UNIQUE_WORDS_050_920 eval:check_unique_words('50', '0.920')
+body T_CHECK_UNIQUE_WORDS_050_925 eval:check_unique_words('50', '0.925')
+body T_CHECK_UNIQUE_WORDS_050_930 eval:check_unique_words('50', '0.930')
+body T_CHECK_UNIQUE_WORDS_050_935 eval:check_unique_words('50', '0.935')
+body T_CHECK_UNIQUE_WORDS_050_940 eval:check_unique_words('50', '0.940')
+body T_CHECK_UNIQUE_WORDS_050_945 eval:check_unique_words('50', '0.945')
+body T_CHECK_UNIQUE_WORDS_050_950 eval:check_unique_words('50', '0.950')
+body T_CHECK_UNIQUE_WORDS_050_955 eval:check_unique_words('50', '0.955')
+body T_CHECK_UNIQUE_WORDS_050_960 eval:check_unique_words('50', '0.960')
+body T_CHECK_UNIQUE_WORDS_050_965 eval:check_unique_words('50', '0.965')
+body T_CHECK_UNIQUE_WORDS_050_970 eval:check_unique_words('50', '0.970')
+body T_CHECK_UNIQUE_WORDS_050_975 eval:check_unique_words('50', '0.975')
+body T_CHECK_UNIQUE_WORDS_050_980 eval:check_unique_words('50', '0.980')
+body T_CHECK_UNIQUE_WORDS_050_985 eval:check_unique_words('50', '0.985')
+body T_CHECK_UNIQUE_WORDS_050_990 eval:check_unique_words('50', '0.990')
+body T_CHECK_UNIQUE_WORDS_050_995 eval:check_unique_words('50', '0.995')
+body T_CHECK_UNIQUE_WORDS_060_900 eval:check_unique_words('60', '0.900')
+body T_CHECK_UNIQUE_WORDS_060_905 eval:check_unique_words('60', '0.905')
+body T_CHECK_UNIQUE_WORDS_060_910 eval:check_unique_words('60', '0.910')
+body T_CHECK_UNIQUE_WORDS_060_915 eval:check_unique_words('60', '0.915')
+body T_CHECK_UNIQUE_WORDS_060_920 eval:check_unique_words('60', '0.920')
+body T_CHECK_UNIQUE_WORDS_060_925 eval:check_unique_words('60', '0.925')
+body T_CHECK_UNIQUE_WORDS_060_930 eval:check_unique_words('60', '0.930')
+body T_CHECK_UNIQUE_WORDS_060_935 eval:check_unique_words('60', '0.935')
+body T_CHECK_UNIQUE_WORDS_060_940 eval:check_unique_words('60', '0.940')
+body T_CHECK_UNIQUE_WORDS_060_945 eval:check_unique_words('60', '0.945')
+body T_CHECK_UNIQUE_WORDS_060_950 eval:check_unique_words('60', '0.950')
+body T_CHECK_UNIQUE_WORDS_060_955 eval:check_unique_words('60', '0.955')
+body T_CHECK_UNIQUE_WORDS_060_960 eval:check_unique_words('60', '0.960')
+body T_CHECK_UNIQUE_WORDS_060_965 eval:check_unique_words('60', '0.965')
+body T_CHECK_UNIQUE_WORDS_060_970 eval:check_unique_words('60', '0.970')
+body T_CHECK_UNIQUE_WORDS_060_975 eval:check_unique_words('60', '0.975')
+body T_CHECK_UNIQUE_WORDS_060_980 eval:check_unique_words('60', '0.980')
+body T_CHECK_UNIQUE_WORDS_060_985 eval:check_unique_words('60', '0.985')
+body T_CHECK_UNIQUE_WORDS_060_990 eval:check_unique_words('60', '0.990')
+body T_CHECK_UNIQUE_WORDS_060_995 eval:check_unique_words('60', '0.995')
+body T_CHECK_UNIQUE_WORDS_070_900 eval:check_unique_words('70', '0.900')
+body T_CHECK_UNIQUE_WORDS_070_905 eval:check_unique_words('70', '0.905')
+body T_CHECK_UNIQUE_WORDS_070_910 eval:check_unique_words('70', '0.910')
+body T_CHECK_UNIQUE_WORDS_070_915 eval:check_unique_words('70', '0.915')
+body T_CHECK_UNIQUE_WORDS_070_920 eval:check_unique_words('70', '0.920')
+body T_CHECK_UNIQUE_WORDS_070_925 eval:check_unique_words('70', '0.925')
+body T_CHECK_UNIQUE_WORDS_070_930 eval:check_unique_words('70', '0.930')
+body T_CHECK_UNIQUE_WORDS_070_935 eval:check_unique_words('70', '0.935')
+body T_CHECK_UNIQUE_WORDS_070_940 eval:check_unique_words('70', '0.940')
+body T_CHECK_UNIQUE_WORDS_070_945 eval:check_unique_words('70', '0.945')
+body T_CHECK_UNIQUE_WORDS_070_950 eval:check_unique_words('70', '0.950')
+body T_CHECK_UNIQUE_WORDS_070_955 eval:check_unique_words('70', '0.955')
+body T_CHECK_UNIQUE_WORDS_070_960 eval:check_unique_words('70', '0.960')
+body T_CHECK_UNIQUE_WORDS_070_965 eval:check_unique_words('70', '0.965')
+body T_CHECK_UNIQUE_WORDS_070_970 eval:check_unique_words('70', '0.970')
+body T_CHECK_UNIQUE_WORDS_070_975 eval:check_unique_words('70', '0.975')
+body T_CHECK_UNIQUE_WORDS_070_980 eval:check_unique_words('70', '0.980')
+body T_CHECK_UNIQUE_WORDS_070_985 eval:check_unique_words('70', '0.985')
+body T_CHECK_UNIQUE_WORDS_070_990 eval:check_unique_words('70', '0.990')
+body T_CHECK_UNIQUE_WORDS_070_995 eval:check_unique_words('70', '0.995')
+body T_CHECK_UNIQUE_WORDS_080_900 eval:check_unique_words('80', '0.900')
+body T_CHECK_UNIQUE_WORDS_080_905 eval:check_unique_words('80', '0.905')
+body T_CHECK_UNIQUE_WORDS_080_910 eval:check_unique_words('80', '0.910')
+body T_CHECK_UNIQUE_WORDS_080_915 eval:check_unique_words('80', '0.915')
+body T_CHECK_UNIQUE_WORDS_080_920 eval:check_unique_words('80', '0.920')
+body T_CHECK_UNIQUE_WORDS_080_925 eval:check_unique_words('80', '0.925')
+body T_CHECK_UNIQUE_WORDS_080_930 eval:check_unique_words('80', '0.930')
+body T_CHECK_UNIQUE_WORDS_080_935 eval:check_unique_words('80', '0.935')
+body T_CHECK_UNIQUE_WORDS_080_940 eval:check_unique_words('80', '0.940')
+body T_CHECK_UNIQUE_WORDS_080_945 eval:check_unique_words('80', '0.945')
+body T_CHECK_UNIQUE_WORDS_080_950 eval:check_unique_words('80', '0.950')
+body T_CHECK_UNIQUE_WORDS_080_955 eval:check_unique_words('80', '0.955')
+body T_CHECK_UNIQUE_WORDS_080_960 eval:check_unique_words('80', '0.960')
+body T_CHECK_UNIQUE_WORDS_080_965 eval:check_unique_words('80', '0.965')
+body T_CHECK_UNIQUE_WORDS_080_970 eval:check_unique_words('80', '0.970')
+body T_CHECK_UNIQUE_WORDS_080_975 eval:check_unique_words('80', '0.975')
+body T_CHECK_UNIQUE_WORDS_080_980 eval:check_unique_words('80', '0.980')
+body T_CHECK_UNIQUE_WORDS_080_985 eval:check_unique_words('80', '0.985')
+body T_CHECK_UNIQUE_WORDS_080_990 eval:check_unique_words('80', '0.990')
+body T_CHECK_UNIQUE_WORDS_080_995 eval:check_unique_words('80', '0.995')
+body T_CHECK_UNIQUE_WORDS_090_900 eval:check_unique_words('90', '0.900')
+body T_CHECK_UNIQUE_WORDS_090_905 eval:check_unique_words('90', '0.905')
+body T_CHECK_UNIQUE_WORDS_090_910 eval:check_unique_words('90', '0.910')
+body T_CHECK_UNIQUE_WORDS_090_915 eval:check_unique_words('90', '0.915')
+body T_CHECK_UNIQUE_WORDS_090_920 eval:check_unique_words('90', '0.920')
+body T_CHECK_UNIQUE_WORDS_090_925 eval:check_unique_words('90', '0.925')
+body T_CHECK_UNIQUE_WORDS_090_930 eval:check_unique_words('90', '0.930')
+body T_CHECK_UNIQUE_WORDS_090_935 eval:check_unique_words('90', '0.935')
+body T_CHECK_UNIQUE_WORDS_090_940 eval:check_unique_words('90', '0.940')
+body T_CHECK_UNIQUE_WORDS_090_945 eval:check_unique_words('90', '0.945')
+body T_CHECK_UNIQUE_WORDS_090_950 eval:check_unique_words('90', '0.950')
+body T_CHECK_UNIQUE_WORDS_090_955 eval:check_unique_words('90', '0.955')
+body T_CHECK_UNIQUE_WORDS_090_960 eval:check_unique_words('90', '0.960')
+body T_CHECK_UNIQUE_WORDS_090_965 eval:check_unique_words('90', '0.965')
+body T_CHECK_UNIQUE_WORDS_090_970 eval:check_unique_words('90', '0.970')
+body T_CHECK_UNIQUE_WORDS_090_975 eval:check_unique_words('90', '0.975')
+body T_CHECK_UNIQUE_WORDS_090_980 eval:check_unique_words('90', '0.980')
+body T_CHECK_UNIQUE_WORDS_090_985 eval:check_unique_words('90', '0.985')
+body T_CHECK_UNIQUE_WORDS_090_990 eval:check_unique_words('90', '0.990')
+body T_CHECK_UNIQUE_WORDS_090_995 eval:check_unique_words('90', '0.995')
+body T_CHECK_UNIQUE_WORDS_100_900 eval:check_unique_words('100', '0.900')
+body T_CHECK_UNIQUE_WORDS_100_905 eval:check_unique_words('100', '0.905')
+body T_CHECK_UNIQUE_WORDS_100_910 eval:check_unique_words('100', '0.910')
+body T_CHECK_UNIQUE_WORDS_100_915 eval:check_unique_words('100', '0.915')
+body T_CHECK_UNIQUE_WORDS_100_920 eval:check_unique_words('100', '0.920')
+body T_CHECK_UNIQUE_WORDS_100_925 eval:check_unique_words('100', '0.925')
+body T_CHECK_UNIQUE_WORDS_100_930 eval:check_unique_words('100', '0.930')
+body T_CHECK_UNIQUE_WORDS_100_935 eval:check_unique_words('100', '0.935')
+body T_CHECK_UNIQUE_WORDS_100_940 eval:check_unique_words('100', '0.940')
+body T_CHECK_UNIQUE_WORDS_100_945 eval:check_unique_words('100', '0.945')
+body T_CHECK_UNIQUE_WORDS_100_950 eval:check_unique_words('100', '0.950')
+body T_CHECK_UNIQUE_WORDS_100_955 eval:check_unique_words('100', '0.955')
+body T_CHECK_UNIQUE_WORDS_100_960 eval:check_unique_words('100', '0.960')
+body T_CHECK_UNIQUE_WORDS_100_965 eval:check_unique_words('100', '0.965')
+body T_CHECK_UNIQUE_WORDS_100_970 eval:check_unique_words('100', '0.970')
+body T_CHECK_UNIQUE_WORDS_100_975 eval:check_unique_words('100', '0.975')
+body T_CHECK_UNIQUE_WORDS_100_980 eval:check_unique_words('100', '0.980')
+body T_CHECK_UNIQUE_WORDS_100_985 eval:check_unique_words('100', '0.985')
+body T_CHECK_UNIQUE_WORDS_100_990 eval:check_unique_words('100', '0.990')
+body T_CHECK_UNIQUE_WORDS_100_995 eval:check_unique_words('100', '0.995')
+body T_CHECK_UNIQUE_WORDS_110_900 eval:check_unique_words('110', '0.900')
+body T_CHECK_UNIQUE_WORDS_110_905 eval:check_unique_words('110', '0.905')
+body T_CHECK_UNIQUE_WORDS_110_910 eval:check_unique_words('110', '0.910')
+body T_CHECK_UNIQUE_WORDS_110_915 eval:check_unique_words('110', '0.915')
+body T_CHECK_UNIQUE_WORDS_110_920 eval:check_unique_words('110', '0.920')
+body T_CHECK_UNIQUE_WORDS_110_925 eval:check_unique_words('110', '0.925')
+body T_CHECK_UNIQUE_WORDS_110_930 eval:check_unique_words('110', '0.930')
+body T_CHECK_UNIQUE_WORDS_110_935 eval:check_unique_words('110', '0.935')
+body T_CHECK_UNIQUE_WORDS_110_940 eval:check_unique_words('110', '0.940')
+body T_CHECK_UNIQUE_WORDS_110_945 eval:check_unique_words('110', '0.945')
+body T_CHECK_UNIQUE_WORDS_110_950 eval:check_unique_words('110', '0.950')
+body T_CHECK_UNIQUE_WORDS_110_955 eval:check_unique_words('110', '0.955')
+body T_CHECK_UNIQUE_WORDS_110_960 eval:check_unique_words('110', '0.960')
+body T_CHECK_UNIQUE_WORDS_110_965 eval:check_unique_words('110', '0.965')
+body T_CHECK_UNIQUE_WORDS_110_970 eval:check_unique_words('110', '0.970')
+body T_CHECK_UNIQUE_WORDS_110_975 eval:check_unique_words('110', '0.975')
+body T_CHECK_UNIQUE_WORDS_110_980 eval:check_unique_words('110', '0.980')
+body T_CHECK_UNIQUE_WORDS_110_985 eval:check_unique_words('110', '0.985')
+body T_CHECK_UNIQUE_WORDS_110_990 eval:check_unique_words('110', '0.990')
+body T_CHECK_UNIQUE_WORDS_110_995 eval:check_unique_words('110', '0.995')
+body T_CHECK_UNIQUE_WORDS_120_900 eval:check_unique_words('120', '0.900')
+body T_CHECK_UNIQUE_WORDS_120_905 eval:check_unique_words('120', '0.905')
+body T_CHECK_UNIQUE_WORDS_120_910 eval:check_unique_words('120', '0.910')
+body T_CHECK_UNIQUE_WORDS_120_915 eval:check_unique_words('120', '0.915')
+body T_CHECK_UNIQUE_WORDS_120_920 eval:check_unique_words('120', '0.920')
+body T_CHECK_UNIQUE_WORDS_120_925 eval:check_unique_words('120', '0.925')
+body T_CHECK_UNIQUE_WORDS_120_930 eval:check_unique_words('120', '0.930')
+body T_CHECK_UNIQUE_WORDS_120_935 eval:check_unique_words('120', '0.935')
+body T_CHECK_UNIQUE_WORDS_120_940 eval:check_unique_words('120', '0.940')
+body T_CHECK_UNIQUE_WORDS_120_945 eval:check_unique_words('120', '0.945')
+body T_CHECK_UNIQUE_WORDS_120_950 eval:check_unique_words('120', '0.950')
+body T_CHECK_UNIQUE_WORDS_120_955 eval:check_unique_words('120', '0.955')
+body T_CHECK_UNIQUE_WORDS_120_960 eval:check_unique_words('120', '0.960')
+body T_CHECK_UNIQUE_WORDS_120_965 eval:check_unique_words('120', '0.965')
+body T_CHECK_UNIQUE_WORDS_120_970 eval:check_unique_words('120', '0.970')
+body T_CHECK_UNIQUE_WORDS_120_975 eval:check_unique_words('120', '0.975')
+body T_CHECK_UNIQUE_WORDS_120_980 eval:check_unique_words('120', '0.980')
+body T_CHECK_UNIQUE_WORDS_120_985 eval:check_unique_words('120', '0.985')
+body T_CHECK_UNIQUE_WORDS_120_990 eval:check_unique_words('120', '0.990')
+body T_CHECK_UNIQUE_WORDS_120_995 eval:check_unique_words('120', '0.995')
+body T_CHECK_UNIQUE_WORDS_130_900 eval:check_unique_words('130', '0.900')
+body T_CHECK_UNIQUE_WORDS_130_905 eval:check_unique_words('130', '0.905')
+body T_CHECK_UNIQUE_WORDS_130_910 eval:check_unique_words('130', '0.910')
+body T_CHECK_UNIQUE_WORDS_130_915 eval:check_unique_words('130', '0.915')
+body T_CHECK_UNIQUE_WORDS_130_920 eval:check_unique_words('130', '0.920')
+body T_CHECK_UNIQUE_WORDS_130_925 eval:check_unique_words('130', '0.925')
+body T_CHECK_UNIQUE_WORDS_130_930 eval:check_unique_words('130', '0.930')
+body T_CHECK_UNIQUE_WORDS_130_935 eval:check_unique_words('130', '0.935')
+body T_CHECK_UNIQUE_WORDS_130_940 eval:check_unique_words('130', '0.940')
+body T_CHECK_UNIQUE_WORDS_130_945 eval:check_unique_words('130', '0.945')
+body T_CHECK_UNIQUE_WORDS_130_950 eval:check_unique_words('130', '0.950')
+body T_CHECK_UNIQUE_WORDS_130_955 eval:check_unique_words('130', '0.955')
+body T_CHECK_UNIQUE_WORDS_130_960 eval:check_unique_words('130', '0.960')
+body T_CHECK_UNIQUE_WORDS_130_965 eval:check_unique_words('130', '0.965')
+body T_CHECK_UNIQUE_WORDS_130_970 eval:check_unique_words('130', '0.970')
+body T_CHECK_UNIQUE_WORDS_130_975 eval:check_unique_words('130', '0.975')
+body T_CHECK_UNIQUE_WORDS_130_980 eval:check_unique_words('130', '0.980')
+body T_CHECK_UNIQUE_WORDS_130_985 eval:check_unique_words('130', '0.985')
+body T_CHECK_UNIQUE_WORDS_130_990 eval:check_unique_words('130', '0.990')
+body T_CHECK_UNIQUE_WORDS_130_995 eval:check_unique_words('130', '0.995')
+body T_CHECK_UNIQUE_WORDS_140_900 eval:check_unique_words('140', '0.900')
+body T_CHECK_UNIQUE_WORDS_140_905 eval:check_unique_words('140', '0.905')
+body T_CHECK_UNIQUE_WORDS_140_910 eval:check_unique_words('140', '0.910')
+body T_CHECK_UNIQUE_WORDS_140_915 eval:check_unique_words('140', '0.915')
+body T_CHECK_UNIQUE_WORDS_140_920 eval:check_unique_words('140', '0.920')
+body T_CHECK_UNIQUE_WORDS_140_925 eval:check_unique_words('140', '0.925')
+body T_CHECK_UNIQUE_WORDS_140_930 eval:check_unique_words('140', '0.930')
+body T_CHECK_UNIQUE_WORDS_140_935 eval:check_unique_words('140', '0.935')
+body T_CHECK_UNIQUE_WORDS_140_940 eval:check_unique_words('140', '0.940')
+body T_CHECK_UNIQUE_WORDS_140_945 eval:check_unique_words('140', '0.945')
+body T_CHECK_UNIQUE_WORDS_140_950 eval:check_unique_words('140', '0.950')
+body T_CHECK_UNIQUE_WORDS_140_955 eval:check_unique_words('140', '0.955')
+body T_CHECK_UNIQUE_WORDS_140_960 eval:check_unique_words('140', '0.960')
+body T_CHECK_UNIQUE_WORDS_140_965 eval:check_unique_words('140', '0.965')
+body T_CHECK_UNIQUE_WORDS_140_970 eval:check_unique_words('140', '0.970')
+body T_CHECK_UNIQUE_WORDS_140_975 eval:check_unique_words('140', '0.975')
+body T_CHECK_UNIQUE_WORDS_140_980 eval:check_unique_words('140', '0.980')
+body T_CHECK_UNIQUE_WORDS_140_985 eval:check_unique_words('140', '0.985')
+body T_CHECK_UNIQUE_WORDS_140_990 eval:check_unique_words('140', '0.990')
+body T_CHECK_UNIQUE_WORDS_140_995 eval:check_unique_words('140', '0.995')
+body T_CHECK_UNIQUE_WORDS_150_900 eval:check_unique_words('150', '0.900')
+body T_CHECK_UNIQUE_WORDS_150_905 eval:check_unique_words('150', '0.905')
+body T_CHECK_UNIQUE_WORDS_150_910 eval:check_unique_words('150', '0.910')
+body T_CHECK_UNIQUE_WORDS_150_915 eval:check_unique_words('150', '0.915')
+body T_CHECK_UNIQUE_WORDS_150_920 eval:check_unique_words('150', '0.920')
+body T_CHECK_UNIQUE_WORDS_150_925 eval:check_unique_words('150', '0.925')
+body T_CHECK_UNIQUE_WORDS_150_930 eval:check_unique_words('150', '0.930')
+body T_CHECK_UNIQUE_WORDS_150_935 eval:check_unique_words('150', '0.935')
+body T_CHECK_UNIQUE_WORDS_150_940 eval:check_unique_words('150', '0.940')
+body T_CHECK_UNIQUE_WORDS_150_945 eval:check_unique_words('150', '0.945')
+body T_CHECK_UNIQUE_WORDS_150_950 eval:check_unique_words('150', '0.950')
+body T_CHECK_UNIQUE_WORDS_150_955 eval:check_unique_words('150', '0.955')
+body T_CHECK_UNIQUE_WORDS_150_960 eval:check_unique_words('150', '0.960')
+body T_CHECK_UNIQUE_WORDS_150_965 eval:check_unique_words('150', '0.965')
+body T_CHECK_UNIQUE_WORDS_150_970 eval:check_unique_words('150', '0.970')
+body T_CHECK_UNIQUE_WORDS_150_975 eval:check_unique_words('150', '0.975')
+body T_CHECK_UNIQUE_WORDS_150_980 eval:check_unique_words('150', '0.980')
+body T_CHECK_UNIQUE_WORDS_150_985 eval:check_unique_words('150', '0.985')
+body T_CHECK_UNIQUE_WORDS_150_990 eval:check_unique_words('150', '0.990')
+body T_CHECK_UNIQUE_WORDS_150_995 eval:check_unique_words('150', '0.995')
+body T_CHECK_UNIQUE_WORDS_160_900 eval:check_unique_words('160', '0.900')
+body T_CHECK_UNIQUE_WORDS_160_905 eval:check_unique_words('160', '0.905')
+body T_CHECK_UNIQUE_WORDS_160_910 eval:check_unique_words('160', '0.910')
+body T_CHECK_UNIQUE_WORDS_160_915 eval:check_unique_words('160', '0.915')
+body T_CHECK_UNIQUE_WORDS_160_920 eval:check_unique_words('160', '0.920')
+body T_CHECK_UNIQUE_WORDS_160_925 eval:check_unique_words('160', '0.925')
+body T_CHECK_UNIQUE_WORDS_160_930 eval:check_unique_words('160', '0.930')
+body T_CHECK_UNIQUE_WORDS_160_935 eval:check_unique_words('160', '0.935')
+body T_CHECK_UNIQUE_WORDS_160_940 eval:check_unique_words('160', '0.940')
+body T_CHECK_UNIQUE_WORDS_160_945 eval:check_unique_words('160', '0.945')
+body T_CHECK_UNIQUE_WORDS_160_950 eval:check_unique_words('160', '0.950')
+body T_CHECK_UNIQUE_WORDS_160_955 eval:check_unique_words('160', '0.955')
+body T_CHECK_UNIQUE_WORDS_160_960 eval:check_unique_words('160', '0.960')
+body T_CHECK_UNIQUE_WORDS_160_965 eval:check_unique_words('160', '0.965')
+body T_CHECK_UNIQUE_WORDS_160_970 eval:check_unique_words('160', '0.970')
+body T_CHECK_UNIQUE_WORDS_160_975 eval:check_unique_words('160', '0.975')
+body T_CHECK_UNIQUE_WORDS_160_980 eval:check_unique_words('160', '0.980')
+body T_CHECK_UNIQUE_WORDS_160_985 eval:check_unique_words('160', '0.985')
+body T_CHECK_UNIQUE_WORDS_160_990 eval:check_unique_words('160', '0.990')
+body T_CHECK_UNIQUE_WORDS_160_995 eval:check_unique_words('160', '0.995')
+body T_CHECK_UNIQUE_WORDS_170_900 eval:check_unique_words('170', '0.900')
+body T_CHECK_UNIQUE_WORDS_170_905 eval:check_unique_words('170', '0.905')
+body T_CHECK_UNIQUE_WORDS_170_910 eval:check_unique_words('170', '0.910')
+body T_CHECK_UNIQUE_WORDS_170_915 eval:check_unique_words('170', '0.915')
+body T_CHECK_UNIQUE_WORDS_170_920 eval:check_unique_words('170', '0.920')
+body T_CHECK_UNIQUE_WORDS_170_925 eval:check_unique_words('170', '0.925')
+body T_CHECK_UNIQUE_WORDS_170_930 eval:check_unique_words('170', '0.930')
+body T_CHECK_UNIQUE_WORDS_170_935 eval:check_unique_words('170', '0.935')
+body T_CHECK_UNIQUE_WORDS_170_940 eval:check_unique_words('170', '0.940')
+body T_CHECK_UNIQUE_WORDS_170_945 eval:check_unique_words('170', '0.945')
+body T_CHECK_UNIQUE_WORDS_170_950 eval:check_unique_words('170', '0.950')
+body T_CHECK_UNIQUE_WORDS_170_955 eval:check_unique_words('170', '0.955')
+body T_CHECK_UNIQUE_WORDS_170_960 eval:check_unique_words('170', '0.960')
+body T_CHECK_UNIQUE_WORDS_170_965 eval:check_unique_words('170', '0.965')
+body T_CHECK_UNIQUE_WORDS_170_970 eval:check_unique_words('170', '0.970')
+body T_CHECK_UNIQUE_WORDS_170_975 eval:check_unique_words('170', '0.975')
+body T_CHECK_UNIQUE_WORDS_170_980 eval:check_unique_words('170', '0.980')
+body T_CHECK_UNIQUE_WORDS_170_985 eval:check_unique_words('170', '0.985')
+body T_CHECK_UNIQUE_WORDS_170_990 eval:check_unique_words('170', '0.990')
+body T_CHECK_UNIQUE_WORDS_170_995 eval:check_unique_words('170', '0.995')
+body T_CHECK_UNIQUE_WORDS_180_900 eval:check_unique_words('180', '0.900')
+body T_CHECK_UNIQUE_WORDS_180_905 eval:check_unique_words('180', '0.905')
+body T_CHECK_UNIQUE_WORDS_180_910 eval:check_unique_words('180', '0.910')
+body T_CHECK_UNIQUE_WORDS_180_915 eval:check_unique_words('180', '0.915')
+body T_CHECK_UNIQUE_WORDS_180_920 eval:check_unique_words('180', '0.920')
+body T_CHECK_UNIQUE_WORDS_180_925 eval:check_unique_words('180', '0.925')
+body T_CHECK_UNIQUE_WORDS_180_930 eval:check_unique_words('180', '0.930')
+body T_CHECK_UNIQUE_WORDS_180_935 eval:check_unique_words('180', '0.935')
+body T_CHECK_UNIQUE_WORDS_180_940 eval:check_unique_words('180', '0.940')
+body T_CHECK_UNIQUE_WORDS_180_945 eval:check_unique_words('180', '0.945')
+body T_CHECK_UNIQUE_WORDS_180_950 eval:check_unique_words('180', '0.950')
+body T_CHECK_UNIQUE_WORDS_180_955 eval:check_unique_words('180', '0.955')
+body T_CHECK_UNIQUE_WORDS_180_960 eval:check_unique_words('180', '0.960')
+body T_CHECK_UNIQUE_WORDS_180_965 eval:check_unique_words('180', '0.965')
+body T_CHECK_UNIQUE_WORDS_180_970 eval:check_unique_words('180', '0.970')
+body T_CHECK_UNIQUE_WORDS_180_975 eval:check_unique_words('180', '0.975')
+body T_CHECK_UNIQUE_WORDS_180_980 eval:check_unique_words('180', '0.980')
+body T_CHECK_UNIQUE_WORDS_180_985 eval:check_unique_words('180', '0.985')
+body T_CHECK_UNIQUE_WORDS_180_990 eval:check_unique_words('180', '0.990')
+body T_CHECK_UNIQUE_WORDS_180_995 eval:check_unique_words('180', '0.995')
+body T_CHECK_UNIQUE_WORDS_190_900 eval:check_unique_words('190', '0.900')
+body T_CHECK_UNIQUE_WORDS_190_905 eval:check_unique_words('190', '0.905')
+body T_CHECK_UNIQUE_WORDS_190_910 eval:check_unique_words('190', '0.910')
+body T_CHECK_UNIQUE_WORDS_190_915 eval:check_unique_words('190', '0.915')
+body T_CHECK_UNIQUE_WORDS_190_920 eval:check_unique_words('190', '0.920')
+body T_CHECK_UNIQUE_WORDS_190_925 eval:check_unique_words('190', '0.925')
+body T_CHECK_UNIQUE_WORDS_190_930 eval:check_unique_words('190', '0.930')
+body T_CHECK_UNIQUE_WORDS_190_935 eval:check_unique_words('190', '0.935')
+body T_CHECK_UNIQUE_WORDS_190_940 eval:check_unique_words('190', '0.940')
+body T_CHECK_UNIQUE_WORDS_190_945 eval:check_unique_words('190', '0.945')
+body T_CHECK_UNIQUE_WORDS_190_950 eval:check_unique_words('190', '0.950')
+body T_CHECK_UNIQUE_WORDS_190_955 eval:check_unique_words('190', '0.955')
+body T_CHECK_UNIQUE_WORDS_190_960 eval:check_unique_words('190', '0.960')
+body T_CHECK_UNIQUE_WORDS_190_965 eval:check_unique_words('190', '0.965')
+body T_CHECK_UNIQUE_WORDS_190_970 eval:check_unique_words('190', '0.970')
+body T_CHECK_UNIQUE_WORDS_190_975 eval:check_unique_words('190', '0.975')
+body T_CHECK_UNIQUE_WORDS_190_980 eval:check_unique_words('190', '0.980')
+body T_CHECK_UNIQUE_WORDS_190_985 eval:check_unique_words('190', '0.985')
+body T_CHECK_UNIQUE_WORDS_190_990 eval:check_unique_words('190', '0.990')
+body T_CHECK_UNIQUE_WORDS_190_995 eval:check_unique_words('190', '0.995')