+ # remove SSID or area
+ $by =~ s|[-/]\d+$||;
+
+ $freq = sprintf "%.1f", $freq; # normalise frequency
+ $call = substr($call, 0, $maxcalllth) if length $call > $maxcalllth;
+
+ chomp $text;
+ $text =~ s/\%([0-9A-F][0-9A-F])/chr(hex($1))/eg;
+ $text = uc unpad($text);
+ if ($cty && $text && length $text <= 4) {
+ unless ($text =~ /^C?Q/ || $text =~ /^\d+$/) {
+ my @try = Prefix::cty_data($text);
+ $text = "" if $cty == $try[0];
+ }
+ }
+ my $otext = $text;
+ $text = pack("C*", map {$_ & 127} unpack("C*", $text));
+ $text =~ s/[^\w]//g;
+ $text = substr($text, 0, $duplth) if length $text > $duplth;
+ my $ldupkey = "X$freq|$call|$by|$text";
+ my $t = DXDupe::find($ldupkey);
+ return 1 if $t && $t - $main::systime > 0;
+ if ($otext) {
+ DXDupe::add($ldupkey, $main::systime+$dupage);
+ $otext = substr($otext, 0, $duplth) if length $otext > $duplth;
+ $ldupkey = "X$freq|$call|$by|$otext";
+ $t = DXDupe::find($ldupkey);
+ return 1 if $t && $t - $main::systime > 0;
+ DXDupe::add($ldupkey, $main::systime+$dupage);
+ }
+# my $sdupkey = "X$freq|$call|$by";
+# $t = DXDupe::find($sdupkey);
+# return 1 if $t && $t - $main::systime > 0;
+# DXDupe::add($sdupkey, $main::systime+$dupage);
+ return 0;