+# zone requests
+if ($zone) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $zone) {
+ push @expr, "\$f9==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($byzone) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $byzone) {
+ push @expr, "\$f11==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+
+# itu requests
+if ($itu) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $itu) {
+ push @expr, "\$f8==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($byitu) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $byitu) {
+ push @expr, "\$f10==$_";
+ push @hint, "m{$_}";
+ }
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : $expr[0];
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+
+# state requests
+if ($state) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $state) {
+ push @expr, "\$f12 eq '$_'";
+ push @hint, "m{$_}";
+ }
+ if ($usesql) {
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : "$expr[0]";
+ } else {
+ $expr .= @expr > 1 ? '(\$f12 && (' . join(' || ', @expr) . '))' : "(\$f12 && $expr[0])";
+ }
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+if ($bystate) {
+ my @expr;
+ my @hint;
+ $expr .= ' && ' if $expr;
+ $hint .= ' && ' if $hint;
+ for (split /[:,]/, $bystate) {
+ push @expr, "\$f13 eq '$_'";
+ push @hint, "m{$_}";
+ }
+ if ($usesql) {
+ $expr .= @expr > 1 ? '(' . join(' || ', @expr) . ')' : "$expr[0]";
+ } else {
+ $expr .= @expr > 1 ? '(\$f13 && (' . join(' || ', @expr) . '))' : "(\$f13 && $expr[0])";
+ }
+ $hint .= @hint > 1 ? '(' . join(' || ', @hint) . ')' : $hint[0];
+}
+
+# qsl requests
+if ($doqsl) {
+ $expr .= ' && ' if $expr;
+ $expr .= "\$f3 =~ m{QSL|VIA}i";
+ $hint .= ' && ' if $hint;
+ $hint .= "m{QSL|VIA}i";
+}
+
+# iota requests
+if ($doiota) {
+ $expr .= ' && ' if $expr;
+ $expr .= "\$f3 =~ m{$doiota}i";
+ $hint .= ' && ' if $hint;
+ $hint .= "m{$doiota}i";
+}
+
+# iota requests
+if ($doqra) {
+ $expr .= ' && ' if $expr;
+ $expr .= "\$f3 =~ m{$doqra}i";
+ $hint .= ' && ' if $hint;
+ $hint .= "m{$doqra}io";
+}
+
+
+$from ||= '';
+$to ||= '';
+$fromday ||= '';
+$today ||= '';
+
+dbg "expr: $expr from: $from to: $to fromday: $fromday today: $today" if isdbg('sh/dx');