On Mon, Jan 21, 2002 at 03:48:58PM +0000, Robin Houston wrote:
> On Mon, Jan 21, 2002 at 04:32:59PM +0100, [EMAIL PROTECTED] wrote:
> > You are right, I had forgotten a case, [...]
> > This results in (a sloooow program):
>
> There's something wrong here. Your regex matches "abcb", which isn't
> shrinkable.
Duh! I was writing (...)+ where I should have written (...)\1*.
Here's a corrected version (making for quite a faster regex):
#!/usr/bin/perl
use strict;
use warnings qw /all/;
my @strings;
my $p;
my $max = 255; # Use a higher number for Unicode.
foreach my $c (1 .. $max) {
push @strings => sprintf '^(.*)\x%02x.*\%d[\x00-\x%02x].*$' =>
$c, ++ $p, $c - 1;
push @strings => sprintf '^([\x00-\x%02x].*)\x%02x.*\%d$' =>
$c - 1, $c, ++ $p;
push @strings => sprintf '^((.*)[\x00-\x%02x].*)\%d*\%d\x%02x.*\%d$' =>
$c - 1, $p +1, $p + 2, $c, $p + 1;
$p += 2;
}
my $regex = join "|" => map {"(?:$_)"} @strings;
$regex =~ s/\|/|\n /g;
my $rgx = "/$regex/sx";
print $rgx, "\n";
__END__
Here's some test output:
abcb -> Non-shrinkable
aaba -> Shrinkable
foo -> Non-shrinkable
bar -> Shrinkable
aba -> Shrinkable
bab -> Shrinkable
aabaa -> Shrinkable
bbabb -> Shrinkable
abcabd -> Non-shrinkable
abdefgabchijk -> Shrinkable
/(?:^(.*)\x01.*\1[\x00-\x00].*$)|
(?:^([\x00-\x00].*)\x01.*\2$)|
(?:^((.*)[\x00-\x00].*)\3*\4\x01.*\3$)|
(?:^(.*)\x02.*\5[\x00-\x01].*$)|
(?:^([\x00-\x01].*)\x02.*\6$)|
(?:^((.*)[\x00-\x01].*)\7*\8\x02.*\7$)|
(?:^(.*)\x03.*\9[\x00-\x02].*$)|
(?:^([\x00-\x02].*)\x03.*\10$)|
(?:^((.*)[\x00-\x02].*)\11*\12\x03.*\11$)|
(?:^(.*)\x04.*\13[\x00-\x03].*$)|
(?:^([\x00-\x03].*)\x04.*\14$)|
(?:^((.*)[\x00-\x03].*)\15*\16\x04.*\15$)|
(?:^(.*)\x05.*\17[\x00-\x04].*$)|
(?:^([\x00-\x04].*)\x05.*\18$)|
(?:^((.*)[\x00-\x04].*)\19*\20\x05.*\19$)|
(?:^(.*)\x06.*\21[\x00-\x05].*$)|
(?:^([\x00-\x05].*)\x06.*\22$)|
(?:^((.*)[\x00-\x05].*)\23*\24\x06.*\23$)|
(?:^(.*)\x07.*\25[\x00-\x06].*$)|
(?:^([\x00-\x06].*)\x07.*\26$)|
(?:^((.*)[\x00-\x06].*)\27*\28\x07.*\27$)|
(?:^(.*)\x08.*\29[\x00-\x07].*$)|
(?:^([\x00-\x07].*)\x08.*\30$)|
(?:^((.*)[\x00-\x07].*)\31*\32\x08.*\31$)|
(?:^(.*)\x09.*\33[\x00-\x08].*$)|
(?:^([\x00-\x08].*)\x09.*\34$)|
(?:^((.*)[\x00-\x08].*)\35*\36\x09.*\35$)|
(?:^(.*)\x0a.*\37[\x00-\x09].*$)|
(?:^([\x00-\x09].*)\x0a.*\38$)|
(?:^((.*)[\x00-\x09].*)\39*\40\x0a.*\39$)|
(?:^(.*)\x0b.*\41[\x00-\x0a].*$)|
(?:^([\x00-\x0a].*)\x0b.*\42$)|
(?:^((.*)[\x00-\x0a].*)\43*\44\x0b.*\43$)|
(?:^(.*)\x0c.*\45[\x00-\x0b].*$)|
(?:^([\x00-\x0b].*)\x0c.*\46$)|
(?:^((.*)[\x00-\x0b].*)\47*\48\x0c.*\47$)|
(?:^(.*)\x0d.*\49[\x00-\x0c].*$)|
(?:^([\x00-\x0c].*)\x0d.*\50$)|
(?:^((.*)[\x00-\x0c].*)\51*\52\x0d.*\51$)|
(?:^(.*)\x0e.*\53[\x00-\x0d].*$)|
(?:^([\x00-\x0d].*)\x0e.*\54$)|
(?:^((.*)[\x00-\x0d].*)\55*\56\x0e.*\55$)|
(?:^(.*)\x0f.*\57[\x00-\x0e].*$)|
(?:^([\x00-\x0e].*)\x0f.*\58$)|
(?:^((.*)[\x00-\x0e].*)\59*\60\x0f.*\59$)|
(?:^(.*)\x10.*\61[\x00-\x0f].*$)|
(?:^([\x00-\x0f].*)\x10.*\62$)|
(?:^((.*)[\x00-\x0f].*)\63*\64\x10.*\63$)|
(?:^(.*)\x11.*\65[\x00-\x10].*$)|
(?:^([\x00-\x10].*)\x11.*\66$)|
(?:^((.*)[\x00-\x10].*)\67*\68\x11.*\67$)|
(?:^(.*)\x12.*\69[\x00-\x11].*$)|
(?:^([\x00-\x11].*)\x12.*\70$)|
(?:^((.*)[\x00-\x11].*)\71*\72\x12.*\71$)|
(?:^(.*)\x13.*\73[\x00-\x12].*$)|
(?:^([\x00-\x12].*)\x13.*\74$)|
(?:^((.*)[\x00-\x12].*)\75*\76\x13.*\75$)|
(?:^(.*)\x14.*\77[\x00-\x13].*$)|
(?:^([\x00-\x13].*)\x14.*\78$)|
(?:^((.*)[\x00-\x13].*)\79*\80\x14.*\79$)|
(?:^(.*)\x15.*\81[\x00-\x14].*$)|
(?:^([\x00-\x14].*)\x15.*\82$)|
(?:^((.*)[\x00-\x14].*)\83*\84\x15.*\83$)|
(?:^(.*)\x16.*\85[\x00-\x15].*$)|
(?:^([\x00-\x15].*)\x16.*\86$)|
(?:^((.*)[\x00-\x15].*)\87*\88\x16.*\87$)|
(?:^(.*)\x17.*\89[\x00-\x16].*$)|
(?:^([\x00-\x16].*)\x17.*\90$)|
(?:^((.*)[\x00-\x16].*)\91*\92\x17.*\91$)|
(?:^(.*)\x18.*\93[\x00-\x17].*$)|
(?:^([\x00-\x17].*)\x18.*\94$)|
(?:^((.*)[\x00-\x17].*)\95*\96\x18.*\95$)|
(?:^(.*)\x19.*\97[\x00-\x18].*$)|
(?:^([\x00-\x18].*)\x19.*\98$)|
(?:^((.*)[\x00-\x18].*)\99*\100\x19.*\99$)|
(?:^(.*)\x1a.*\101[\x00-\x19].*$)|
(?:^([\x00-\x19].*)\x1a.*\102$)|
(?:^((.*)[\x00-\x19].*)\103*\104\x1a.*\103$)|
(?:^(.*)\x1b.*\105[\x00-\x1a].*$)|
(?:^([\x00-\x1a].*)\x1b.*\106$)|
(?:^((.*)[\x00-\x1a].*)\107*\108\x1b.*\107$)|
(?:^(.*)\x1c.*\109[\x00-\x1b].*$)|
(?:^([\x00-\x1b].*)\x1c.*\110$)|
(?:^((.*)[\x00-\x1b].*)\111*\112\x1c.*\111$)|
(?:^(.*)\x1d.*\113[\x00-\x1c].*$)|
(?:^([\x00-\x1c].*)\x1d.*\114$)|
(?:^((.*)[\x00-\x1c].*)\115*\116\x1d.*\115$)|
(?:^(.*)\x1e.*\117[\x00-\x1d].*$)|
(?:^([\x00-\x1d].*)\x1e.*\118$)|
(?:^((.*)[\x00-\x1d].*)\119*\120\x1e.*\119$)|
(?:^(.*)\x1f.*\121[\x00-\x1e].*$)|
(?:^([\x00-\x1e].*)\x1f.*\122$)|
(?:^((.*)[\x00-\x1e].*)\123*\124\x1f.*\123$)|
(?:^(.*)\x20.*\125[\x00-\x1f].*$)|
(?:^([\x00-\x1f].*)\x20.*\126$)|
(?:^((.*)[\x00-\x1f].*)\127*\128\x20.*\127$)|
(?:^(.*)\x21.*\129[\x00-\x20].*$)|
(?:^([\x00-\x20].*)\x21.*\130$)|
(?:^((.*)[\x00-\x20].*)\131*\132\x21.*\131$)|
(?:^(.*)\x22.*\133[\x00-\x21].*$)|
(?:^([\x00-\x21].*)\x22.*\134$)|
(?:^((.*)[\x00-\x21].*)\135*\136\x22.*\135$)|
(?:^(.*)\x23.*\137[\x00-\x22].*$)|
(?:^([\x00-\x22].*)\x23.*\138$)|
(?:^((.*)[\x00-\x22].*)\139*\140\x23.*\139$)|
(?:^(.*)\x24.*\141[\x00-\x23].*$)|
(?:^([\x00-\x23].*)\x24.*\142$)|
(?:^((.*)[\x00-\x23].*)\143*\144\x24.*\143$)|
(?:^(.*)\x25.*\145[\x00-\x24].*$)|
(?:^([\x00-\x24].*)\x25.*\146$)|
(?:^((.*)[\x00-\x24].*)\147*\148\x25.*\147$)|
(?:^(.*)\x26.*\149[\x00-\x25].*$)|
(?:^([\x00-\x25].*)\x26.*\150$)|
(?:^((.*)[\x00-\x25].*)\151*\152\x26.*\151$)|
(?:^(.*)\x27.*\153[\x00-\x26].*$)|
(?:^([\x00-\x26].*)\x27.*\154$)|
(?:^((.*)[\x00-\x26].*)\155*\156\x27.*\155$)|
(?:^(.*)\x28.*\157[\x00-\x27].*$)|
(?:^([\x00-\x27].*)\x28.*\158$)|
(?:^((.*)[\x00-\x27].*)\159*\160\x28.*\159$)|
(?:^(.*)\x29.*\161[\x00-\x28].*$)|
(?:^([\x00-\x28].*)\x29.*\162$)|
(?:^((.*)[\x00-\x28].*)\163*\164\x29.*\163$)|
(?:^(.*)\x2a.*\165[\x00-\x29].*$)|
(?:^([\x00-\x29].*)\x2a.*\166$)|
(?:^((.*)[\x00-\x29].*)\167*\168\x2a.*\167$)|
(?:^(.*)\x2b.*\169[\x00-\x2a].*$)|
(?:^([\x00-\x2a].*)\x2b.*\170$)|
(?:^((.*)[\x00-\x2a].*)\171*\172\x2b.*\171$)|
(?:^(.*)\x2c.*\173[\x00-\x2b].*$)|
(?:^([\x00-\x2b].*)\x2c.*\174$)|
(?:^((.*)[\x00-\x2b].*)\175*\176\x2c.*\175$)|
(?:^(.*)\x2d.*\177[\x00-\x2c].*$)|
(?:^([\x00-\x2c].*)\x2d.*\178$)|
(?:^((.*)[\x00-\x2c].*)\179*\180\x2d.*\179$)|
(?:^(.*)\x2e.*\181[\x00-\x2d].*$)|
(?:^([\x00-\x2d].*)\x2e.*\182$)|
(?:^((.*)[\x00-\x2d].*)\183*\184\x2e.*\183$)|
(?:^(.*)\x2f.*\185[\x00-\x2e].*$)|
(?:^([\x00-\x2e].*)\x2f.*\186$)|
(?:^((.*)[\x00-\x2e].*)\187*\188\x2f.*\187$)|
(?:^(.*)\x30.*\189[\x00-\x2f].*$)|
(?:^([\x00-\x2f].*)\x30.*\190$)|
(?:^((.*)[\x00-\x2f].*)\191*\192\x30.*\191$)|
(?:^(.*)\x31.*\193[\x00-\x30].*$)|
(?:^([\x00-\x30].*)\x31.*\194$)|
(?:^((.*)[\x00-\x30].*)\195*\196\x31.*\195$)|
(?:^(.*)\x32.*\197[\x00-\x31].*$)|
(?:^([\x00-\x31].*)\x32.*\198$)|
(?:^((.*)[\x00-\x31].*)\199*\200\x32.*\199$)|
(?:^(.*)\x33.*\201[\x00-\x32].*$)|
(?:^([\x00-\x32].*)\x33.*\202$)|
(?:^((.*)[\x00-\x32].*)\203*\204\x33.*\203$)|
(?:^(.*)\x34.*\205[\x00-\x33].*$)|
(?:^([\x00-\x33].*)\x34.*\206$)|
(?:^((.*)[\x00-\x33].*)\207*\208\x34.*\207$)|
(?:^(.*)\x35.*\209[\x00-\x34].*$)|
(?:^([\x00-\x34].*)\x35.*\210$)|
(?:^((.*)[\x00-\x34].*)\211*\212\x35.*\211$)|
(?:^(.*)\x36.*\213[\x00-\x35].*$)|
(?:^([\x00-\x35].*)\x36.*\214$)|
(?:^((.*)[\x00-\x35].*)\215*\216\x36.*\215$)|
(?:^(.*)\x37.*\217[\x00-\x36].*$)|
(?:^([\x00-\x36].*)\x37.*\218$)|
(?:^((.*)[\x00-\x36].*)\219*\220\x37.*\219$)|
(?:^(.*)\x38.*\221[\x00-\x37].*$)|
(?:^([\x00-\x37].*)\x38.*\222$)|
(?:^((.*)[\x00-\x37].*)\223*\224\x38.*\223$)|
(?:^(.*)\x39.*\225[\x00-\x38].*$)|
(?:^([\x00-\x38].*)\x39.*\226$)|
(?:^((.*)[\x00-\x38].*)\227*\228\x39.*\227$)|
(?:^(.*)\x3a.*\229[\x00-\x39].*$)|
(?:^([\x00-\x39].*)\x3a.*\230$)|
(?:^((.*)[\x00-\x39].*)\231*\232\x3a.*\231$)|
(?:^(.*)\x3b.*\233[\x00-\x3a].*$)|
(?:^([\x00-\x3a].*)\x3b.*\234$)|
(?:^((.*)[\x00-\x3a].*)\235*\236\x3b.*\235$)|
(?:^(.*)\x3c.*\237[\x00-\x3b].*$)|
(?:^([\x00-\x3b].*)\x3c.*\238$)|
(?:^((.*)[\x00-\x3b].*)\239*\240\x3c.*\239$)|
(?:^(.*)\x3d.*\241[\x00-\x3c].*$)|
(?:^([\x00-\x3c].*)\x3d.*\242$)|
(?:^((.*)[\x00-\x3c].*)\243*\244\x3d.*\243$)|
(?:^(.*)\x3e.*\245[\x00-\x3d].*$)|
(?:^([\x00-\x3d].*)\x3e.*\246$)|
(?:^((.*)[\x00-\x3d].*)\247*\248\x3e.*\247$)|
(?:^(.*)\x3f.*\249[\x00-\x3e].*$)|
(?:^([\x00-\x3e].*)\x3f.*\250$)|
(?:^((.*)[\x00-\x3e].*)\251*\252\x3f.*\251$)|
(?:^(.*)\x40.*\253[\x00-\x3f].*$)|
(?:^([\x00-\x3f].*)\x40.*\254$)|
(?:^((.*)[\x00-\x3f].*)\255*\256\x40.*\255$)|
(?:^(.*)\x41.*\257[\x00-\x40].*$)|
(?:^([\x00-\x40].*)\x41.*\258$)|
(?:^((.*)[\x00-\x40].*)\259*\260\x41.*\259$)|
(?:^(.*)\x42.*\261[\x00-\x41].*$)|
(?:^([\x00-\x41].*)\x42.*\262$)|
(?:^((.*)[\x00-\x41].*)\263*\264\x42.*\263$)|
(?:^(.*)\x43.*\265[\x00-\x42].*$)|
(?:^([\x00-\x42].*)\x43.*\266$)|
(?:^((.*)[\x00-\x42].*)\267*\268\x43.*\267$)|
(?:^(.*)\x44.*\269[\x00-\x43].*$)|
(?:^([\x00-\x43].*)\x44.*\270$)|
(?:^((.*)[\x00-\x43].*)\271*\272\x44.*\271$)|
(?:^(.*)\x45.*\273[\x00-\x44].*$)|
(?:^([\x00-\x44].*)\x45.*\274$)|
(?:^((.*)[\x00-\x44].*)\275*\276\x45.*\275$)|
(?:^(.*)\x46.*\277[\x00-\x45].*$)|
(?:^([\x00-\x45].*)\x46.*\278$)|
(?:^((.*)[\x00-\x45].*)\279*\280\x46.*\279$)|
(?:^(.*)\x47.*\281[\x00-\x46].*$)|
(?:^([\x00-\x46].*)\x47.*\282$)|
(?:^((.*)[\x00-\x46].*)\283*\284\x47.*\283$)|
(?:^(.*)\x48.*\285[\x00-\x47].*$)|
(?:^([\x00-\x47].*)\x48.*\286$)|
(?:^((.*)[\x00-\x47].*)\287*\288\x48.*\287$)|
(?:^(.*)\x49.*\289[\x00-\x48].*$)|
(?:^([\x00-\x48].*)\x49.*\290$)|
(?:^((.*)[\x00-\x48].*)\291*\292\x49.*\291$)|
(?:^(.*)\x4a.*\293[\x00-\x49].*$)|
(?:^([\x00-\x49].*)\x4a.*\294$)|
(?:^((.*)[\x00-\x49].*)\295*\296\x4a.*\295$)|
(?:^(.*)\x4b.*\297[\x00-\x4a].*$)|
(?:^([\x00-\x4a].*)\x4b.*\298$)|
(?:^((.*)[\x00-\x4a].*)\299*\300\x4b.*\299$)|
(?:^(.*)\x4c.*\301[\x00-\x4b].*$)|
(?:^([\x00-\x4b].*)\x4c.*\302$)|
(?:^((.*)[\x00-\x4b].*)\303*\304\x4c.*\303$)|
(?:^(.*)\x4d.*\305[\x00-\x4c].*$)|
(?:^([\x00-\x4c].*)\x4d.*\306$)|
(?:^((.*)[\x00-\x4c].*)\307*\308\x4d.*\307$)|
(?:^(.*)\x4e.*\309[\x00-\x4d].*$)|
(?:^([\x00-\x4d].*)\x4e.*\310$)|
(?:^((.*)[\x00-\x4d].*)\311*\312\x4e.*\311$)|
(?:^(.*)\x4f.*\313[\x00-\x4e].*$)|
(?:^([\x00-\x4e].*)\x4f.*\314$)|
(?:^((.*)[\x00-\x4e].*)\315*\316\x4f.*\315$)|
(?:^(.*)\x50.*\317[\x00-\x4f].*$)|
(?:^([\x00-\x4f].*)\x50.*\318$)|
(?:^((.*)[\x00-\x4f].*)\319*\320\x50.*\319$)|
(?:^(.*)\x51.*\321[\x00-\x50].*$)|
(?:^([\x00-\x50].*)\x51.*\322$)|
(?:^((.*)[\x00-\x50].*)\323*\324\x51.*\323$)|
(?:^(.*)\x52.*\325[\x00-\x51].*$)|
(?:^([\x00-\x51].*)\x52.*\326$)|
(?:^((.*)[\x00-\x51].*)\327*\328\x52.*\327$)|
(?:^(.*)\x53.*\329[\x00-\x52].*$)|
(?:^([\x00-\x52].*)\x53.*\330$)|
(?:^((.*)[\x00-\x52].*)\331*\332\x53.*\331$)|
(?:^(.*)\x54.*\333[\x00-\x53].*$)|
(?:^([\x00-\x53].*)\x54.*\334$)|
(?:^((.*)[\x00-\x53].*)\335*\336\x54.*\335$)|
(?:^(.*)\x55.*\337[\x00-\x54].*$)|
(?:^([\x00-\x54].*)\x55.*\338$)|
(?:^((.*)[\x00-\x54].*)\339*\340\x55.*\339$)|
(?:^(.*)\x56.*\341[\x00-\x55].*$)|
(?:^([\x00-\x55].*)\x56.*\342$)|
(?:^((.*)[\x00-\x55].*)\343*\344\x56.*\343$)|
(?:^(.*)\x57.*\345[\x00-\x56].*$)|
(?:^([\x00-\x56].*)\x57.*\346$)|
(?:^((.*)[\x00-\x56].*)\347*\348\x57.*\347$)|
(?:^(.*)\x58.*\349[\x00-\x57].*$)|
(?:^([\x00-\x57].*)\x58.*\350$)|
(?:^((.*)[\x00-\x57].*)\351*\352\x58.*\351$)|
(?:^(.*)\x59.*\353[\x00-\x58].*$)|
(?:^([\x00-\x58].*)\x59.*\354$)|
(?:^((.*)[\x00-\x58].*)\355*\356\x59.*\355$)|
(?:^(.*)\x5a.*\357[\x00-\x59].*$)|
(?:^([\x00-\x59].*)\x5a.*\358$)|
(?:^((.*)[\x00-\x59].*)\359*\360\x5a.*\359$)|
(?:^(.*)\x5b.*\361[\x00-\x5a].*$)|
(?:^([\x00-\x5a].*)\x5b.*\362$)|
(?:^((.*)[\x00-\x5a].*)\363*\364\x5b.*\363$)|
(?:^(.*)\x5c.*\365[\x00-\x5b].*$)|
(?:^([\x00-\x5b].*)\x5c.*\366$)|
(?:^((.*)[\x00-\x5b].*)\367*\368\x5c.*\367$)|
(?:^(.*)\x5d.*\369[\x00-\x5c].*$)|
(?:^([\x00-\x5c].*)\x5d.*\370$)|
(?:^((.*)[\x00-\x5c].*)\371*\372\x5d.*\371$)|
(?:^(.*)\x5e.*\373[\x00-\x5d].*$)|
(?:^([\x00-\x5d].*)\x5e.*\374$)|
(?:^((.*)[\x00-\x5d].*)\375*\376\x5e.*\375$)|
(?:^(.*)\x5f.*\377[\x00-\x5e].*$)|
(?:^([\x00-\x5e].*)\x5f.*\378$)|
(?:^((.*)[\x00-\x5e].*)\379*\380\x5f.*\379$)|
(?:^(.*)\x60.*\381[\x00-\x5f].*$)|
(?:^([\x00-\x5f].*)\x60.*\382$)|
(?:^((.*)[\x00-\x5f].*)\383*\384\x60.*\383$)|
(?:^(.*)\x61.*\385[\x00-\x60].*$)|
(?:^([\x00-\x60].*)\x61.*\386$)|
(?:^((.*)[\x00-\x60].*)\387*\388\x61.*\387$)|
(?:^(.*)\x62.*\389[\x00-\x61].*$)|
(?:^([\x00-\x61].*)\x62.*\390$)|
(?:^((.*)[\x00-\x61].*)\391*\392\x62.*\391$)|
(?:^(.*)\x63.*\393[\x00-\x62].*$)|
(?:^([\x00-\x62].*)\x63.*\394$)|
(?:^((.*)[\x00-\x62].*)\395*\396\x63.*\395$)|
(?:^(.*)\x64.*\397[\x00-\x63].*$)|
(?:^([\x00-\x63].*)\x64.*\398$)|
(?:^((.*)[\x00-\x63].*)\399*\400\x64.*\399$)|
(?:^(.*)\x65.*\401[\x00-\x64].*$)|
(?:^([\x00-\x64].*)\x65.*\402$)|
(?:^((.*)[\x00-\x64].*)\403*\404\x65.*\403$)|
(?:^(.*)\x66.*\405[\x00-\x65].*$)|
(?:^([\x00-\x65].*)\x66.*\406$)|
(?:^((.*)[\x00-\x65].*)\407*\408\x66.*\407$)|
(?:^(.*)\x67.*\409[\x00-\x66].*$)|
(?:^([\x00-\x66].*)\x67.*\410$)|
(?:^((.*)[\x00-\x66].*)\411*\412\x67.*\411$)|
(?:^(.*)\x68.*\413[\x00-\x67].*$)|
(?:^([\x00-\x67].*)\x68.*\414$)|
(?:^((.*)[\x00-\x67].*)\415*\416\x68.*\415$)|
(?:^(.*)\x69.*\417[\x00-\x68].*$)|
(?:^([\x00-\x68].*)\x69.*\418$)|
(?:^((.*)[\x00-\x68].*)\419*\420\x69.*\419$)|
(?:^(.*)\x6a.*\421[\x00-\x69].*$)|
(?:^([\x00-\x69].*)\x6a.*\422$)|
(?:^((.*)[\x00-\x69].*)\423*\424\x6a.*\423$)|
(?:^(.*)\x6b.*\425[\x00-\x6a].*$)|
(?:^([\x00-\x6a].*)\x6b.*\426$)|
(?:^((.*)[\x00-\x6a].*)\427*\428\x6b.*\427$)|
(?:^(.*)\x6c.*\429[\x00-\x6b].*$)|
(?:^([\x00-\x6b].*)\x6c.*\430$)|
(?:^((.*)[\x00-\x6b].*)\431*\432\x6c.*\431$)|
(?:^(.*)\x6d.*\433[\x00-\x6c].*$)|
(?:^([\x00-\x6c].*)\x6d.*\434$)|
(?:^((.*)[\x00-\x6c].*)\435*\436\x6d.*\435$)|
(?:^(.*)\x6e.*\437[\x00-\x6d].*$)|
(?:^([\x00-\x6d].*)\x6e.*\438$)|
(?:^((.*)[\x00-\x6d].*)\439*\440\x6e.*\439$)|
(?:^(.*)\x6f.*\441[\x00-\x6e].*$)|
(?:^([\x00-\x6e].*)\x6f.*\442$)|
(?:^((.*)[\x00-\x6e].*)\443*\444\x6f.*\443$)|
(?:^(.*)\x70.*\445[\x00-\x6f].*$)|
(?:^([\x00-\x6f].*)\x70.*\446$)|
(?:^((.*)[\x00-\x6f].*)\447*\448\x70.*\447$)|
(?:^(.*)\x71.*\449[\x00-\x70].*$)|
(?:^([\x00-\x70].*)\x71.*\450$)|
(?:^((.*)[\x00-\x70].*)\451*\452\x71.*\451$)|
(?:^(.*)\x72.*\453[\x00-\x71].*$)|
(?:^([\x00-\x71].*)\x72.*\454$)|
(?:^((.*)[\x00-\x71].*)\455*\456\x72.*\455$)|
(?:^(.*)\x73.*\457[\x00-\x72].*$)|
(?:^([\x00-\x72].*)\x73.*\458$)|
(?:^((.*)[\x00-\x72].*)\459*\460\x73.*\459$)|
(?:^(.*)\x74.*\461[\x00-\x73].*$)|
(?:^([\x00-\x73].*)\x74.*\462$)|
(?:^((.*)[\x00-\x73].*)\463*\464\x74.*\463$)|
(?:^(.*)\x75.*\465[\x00-\x74].*$)|
(?:^([\x00-\x74].*)\x75.*\466$)|
(?:^((.*)[\x00-\x74].*)\467*\468\x75.*\467$)|
(?:^(.*)\x76.*\469[\x00-\x75].*$)|
(?:^([\x00-\x75].*)\x76.*\470$)|
(?:^((.*)[\x00-\x75].*)\471*\472\x76.*\471$)|
(?:^(.*)\x77.*\473[\x00-\x76].*$)|
(?:^([\x00-\x76].*)\x77.*\474$)|
(?:^((.*)[\x00-\x76].*)\475*\476\x77.*\475$)|
(?:^(.*)\x78.*\477[\x00-\x77].*$)|
(?:^([\x00-\x77].*)\x78.*\478$)|
(?:^((.*)[\x00-\x77].*)\479*\480\x78.*\479$)|
(?:^(.*)\x79.*\481[\x00-\x78].*$)|
(?:^([\x00-\x78].*)\x79.*\482$)|
(?:^((.*)[\x00-\x78].*)\483*\484\x79.*\483$)|
(?:^(.*)\x7a.*\485[\x00-\x79].*$)|
(?:^([\x00-\x79].*)\x7a.*\486$)|
(?:^((.*)[\x00-\x79].*)\487*\488\x7a.*\487$)|
(?:^(.*)\x7b.*\489[\x00-\x7a].*$)|
(?:^([\x00-\x7a].*)\x7b.*\490$)|
(?:^((.*)[\x00-\x7a].*)\491*\492\x7b.*\491$)|
(?:^(.*)\x7c.*\493[\x00-\x7b].*$)|
(?:^([\x00-\x7b].*)\x7c.*\494$)|
(?:^((.*)[\x00-\x7b].*)\495*\496\x7c.*\495$)|
(?:^(.*)\x7d.*\497[\x00-\x7c].*$)|
(?:^([\x00-\x7c].*)\x7d.*\498$)|
(?:^((.*)[\x00-\x7c].*)\499*\500\x7d.*\499$)|
(?:^(.*)\x7e.*\501[\x00-\x7d].*$)|
(?:^([\x00-\x7d].*)\x7e.*\502$)|
(?:^((.*)[\x00-\x7d].*)\503*\504\x7e.*\503$)|
(?:^(.*)\x7f.*\505[\x00-\x7e].*$)|
(?:^([\x00-\x7e].*)\x7f.*\506$)|
(?:^((.*)[\x00-\x7e].*)\507*\508\x7f.*\507$)|
(?:^(.*)\x80.*\509[\x00-\x7f].*$)|
(?:^([\x00-\x7f].*)\x80.*\510$)|
(?:^((.*)[\x00-\x7f].*)\511*\512\x80.*\511$)|
(?:^(.*)\x81.*\513[\x00-\x80].*$)|
(?:^([\x00-\x80].*)\x81.*\514$)|
(?:^((.*)[\x00-\x80].*)\515*\516\x81.*\515$)|
(?:^(.*)\x82.*\517[\x00-\x81].*$)|
(?:^([\x00-\x81].*)\x82.*\518$)|
(?:^((.*)[\x00-\x81].*)\519*\520\x82.*\519$)|
(?:^(.*)\x83.*\521[\x00-\x82].*$)|
(?:^([\x00-\x82].*)\x83.*\522$)|
(?:^((.*)[\x00-\x82].*)\523*\524\x83.*\523$)|
(?:^(.*)\x84.*\525[\x00-\x83].*$)|
(?:^([\x00-\x83].*)\x84.*\526$)|
(?:^((.*)[\x00-\x83].*)\527*\528\x84.*\527$)|
(?:^(.*)\x85.*\529[\x00-\x84].*$)|
(?:^([\x00-\x84].*)\x85.*\530$)|
(?:^((.*)[\x00-\x84].*)\531*\532\x85.*\531$)|
(?:^(.*)\x86.*\533[\x00-\x85].*$)|
(?:^([\x00-\x85].*)\x86.*\534$)|
(?:^((.*)[\x00-\x85].*)\535*\536\x86.*\535$)|
(?:^(.*)\x87.*\537[\x00-\x86].*$)|
(?:^([\x00-\x86].*)\x87.*\538$)|
(?:^((.*)[\x00-\x86].*)\539*\540\x87.*\539$)|
(?:^(.*)\x88.*\541[\x00-\x87].*$)|
(?:^([\x00-\x87].*)\x88.*\542$)|
(?:^((.*)[\x00-\x87].*)\543*\544\x88.*\543$)|
(?:^(.*)\x89.*\545[\x00-\x88].*$)|
(?:^([\x00-\x88].*)\x89.*\546$)|
(?:^((.*)[\x00-\x88].*)\547*\548\x89.*\547$)|
(?:^(.*)\x8a.*\549[\x00-\x89].*$)|
(?:^([\x00-\x89].*)\x8a.*\550$)|
(?:^((.*)[\x00-\x89].*)\551*\552\x8a.*\551$)|
(?:^(.*)\x8b.*\553[\x00-\x8a].*$)|
(?:^([\x00-\x8a].*)\x8b.*\554$)|
(?:^((.*)[\x00-\x8a].*)\555*\556\x8b.*\555$)|
(?:^(.*)\x8c.*\557[\x00-\x8b].*$)|
(?:^([\x00-\x8b].*)\x8c.*\558$)|
(?:^((.*)[\x00-\x8b].*)\559*\560\x8c.*\559$)|
(?:^(.*)\x8d.*\561[\x00-\x8c].*$)|
(?:^([\x00-\x8c].*)\x8d.*\562$)|
(?:^((.*)[\x00-\x8c].*)\563*\564\x8d.*\563$)|
(?:^(.*)\x8e.*\565[\x00-\x8d].*$)|
(?:^([\x00-\x8d].*)\x8e.*\566$)|
(?:^((.*)[\x00-\x8d].*)\567*\568\x8e.*\567$)|
(?:^(.*)\x8f.*\569[\x00-\x8e].*$)|
(?:^([\x00-\x8e].*)\x8f.*\570$)|
(?:^((.*)[\x00-\x8e].*)\571*\572\x8f.*\571$)|
(?:^(.*)\x90.*\573[\x00-\x8f].*$)|
(?:^([\x00-\x8f].*)\x90.*\574$)|
(?:^((.*)[\x00-\x8f].*)\575*\576\x90.*\575$)|
(?:^(.*)\x91.*\577[\x00-\x90].*$)|
(?:^([\x00-\x90].*)\x91.*\578$)|
(?:^((.*)[\x00-\x90].*)\579*\580\x91.*\579$)|
(?:^(.*)\x92.*\581[\x00-\x91].*$)|
(?:^([\x00-\x91].*)\x92.*\582$)|
(?:^((.*)[\x00-\x91].*)\583*\584\x92.*\583$)|
(?:^(.*)\x93.*\585[\x00-\x92].*$)|
(?:^([\x00-\x92].*)\x93.*\586$)|
(?:^((.*)[\x00-\x92].*)\587*\588\x93.*\587$)|
(?:^(.*)\x94.*\589[\x00-\x93].*$)|
(?:^([\x00-\x93].*)\x94.*\590$)|
(?:^((.*)[\x00-\x93].*)\591*\592\x94.*\591$)|
(?:^(.*)\x95.*\593[\x00-\x94].*$)|
(?:^([\x00-\x94].*)\x95.*\594$)|
(?:^((.*)[\x00-\x94].*)\595*\596\x95.*\595$)|
(?:^(.*)\x96.*\597[\x00-\x95].*$)|
(?:^([\x00-\x95].*)\x96.*\598$)|
(?:^((.*)[\x00-\x95].*)\599*\600\x96.*\599$)|
(?:^(.*)\x97.*\601[\x00-\x96].*$)|
(?:^([\x00-\x96].*)\x97.*\602$)|
(?:^((.*)[\x00-\x96].*)\603*\604\x97.*\603$)|
(?:^(.*)\x98.*\605[\x00-\x97].*$)|
(?:^([\x00-\x97].*)\x98.*\606$)|
(?:^((.*)[\x00-\x97].*)\607*\608\x98.*\607$)|
(?:^(.*)\x99.*\609[\x00-\x98].*$)|
(?:^([\x00-\x98].*)\x99.*\610$)|
(?:^((.*)[\x00-\x98].*)\611*\612\x99.*\611$)|
(?:^(.*)\x9a.*\613[\x00-\x99].*$)|
(?:^([\x00-\x99].*)\x9a.*\614$)|
(?:^((.*)[\x00-\x99].*)\615*\616\x9a.*\615$)|
(?:^(.*)\x9b.*\617[\x00-\x9a].*$)|
(?:^([\x00-\x9a].*)\x9b.*\618$)|
(?:^((.*)[\x00-\x9a].*)\619*\620\x9b.*\619$)|
(?:^(.*)\x9c.*\621[\x00-\x9b].*$)|
(?:^([\x00-\x9b].*)\x9c.*\622$)|
(?:^((.*)[\x00-\x9b].*)\623*\624\x9c.*\623$)|
(?:^(.*)\x9d.*\625[\x00-\x9c].*$)|
(?:^([\x00-\x9c].*)\x9d.*\626$)|
(?:^((.*)[\x00-\x9c].*)\627*\628\x9d.*\627$)|
(?:^(.*)\x9e.*\629[\x00-\x9d].*$)|
(?:^([\x00-\x9d].*)\x9e.*\630$)|
(?:^((.*)[\x00-\x9d].*)\631*\632\x9e.*\631$)|
(?:^(.*)\x9f.*\633[\x00-\x9e].*$)|
(?:^([\x00-\x9e].*)\x9f.*\634$)|
(?:^((.*)[\x00-\x9e].*)\635*\636\x9f.*\635$)|
(?:^(.*)\xa0.*\637[\x00-\x9f].*$)|
(?:^([\x00-\x9f].*)\xa0.*\638$)|
(?:^((.*)[\x00-\x9f].*)\639*\640\xa0.*\639$)|
(?:^(.*)\xa1.*\641[\x00-\xa0].*$)|
(?:^([\x00-\xa0].*)\xa1.*\642$)|
(?:^((.*)[\x00-\xa0].*)\643*\644\xa1.*\643$)|
(?:^(.*)\xa2.*\645[\x00-\xa1].*$)|
(?:^([\x00-\xa1].*)\xa2.*\646$)|
(?:^((.*)[\x00-\xa1].*)\647*\648\xa2.*\647$)|
(?:^(.*)\xa3.*\649[\x00-\xa2].*$)|
(?:^([\x00-\xa2].*)\xa3.*\650$)|
(?:^((.*)[\x00-\xa2].*)\651*\652\xa3.*\651$)|
(?:^(.*)\xa4.*\653[\x00-\xa3].*$)|
(?:^([\x00-\xa3].*)\xa4.*\654$)|
(?:^((.*)[\x00-\xa3].*)\655*\656\xa4.*\655$)|
(?:^(.*)\xa5.*\657[\x00-\xa4].*$)|
(?:^([\x00-\xa4].*)\xa5.*\658$)|
(?:^((.*)[\x00-\xa4].*)\659*\660\xa5.*\659$)|
(?:^(.*)\xa6.*\661[\x00-\xa5].*$)|
(?:^([\x00-\xa5].*)\xa6.*\662$)|
(?:^((.*)[\x00-\xa5].*)\663*\664\xa6.*\663$)|
(?:^(.*)\xa7.*\665[\x00-\xa6].*$)|
(?:^([\x00-\xa6].*)\xa7.*\666$)|
(?:^((.*)[\x00-\xa6].*)\667*\668\xa7.*\667$)|
(?:^(.*)\xa8.*\669[\x00-\xa7].*$)|
(?:^([\x00-\xa7].*)\xa8.*\670$)|
(?:^((.*)[\x00-\xa7].*)\671*\672\xa8.*\671$)|
(?:^(.*)\xa9.*\673[\x00-\xa8].*$)|
(?:^([\x00-\xa8].*)\xa9.*\674$)|
(?:^((.*)[\x00-\xa8].*)\675*\676\xa9.*\675$)|
(?:^(.*)\xaa.*\677[\x00-\xa9].*$)|
(?:^([\x00-\xa9].*)\xaa.*\678$)|
(?:^((.*)[\x00-\xa9].*)\679*\680\xaa.*\679$)|
(?:^(.*)\xab.*\681[\x00-\xaa].*$)|
(?:^([\x00-\xaa].*)\xab.*\682$)|
(?:^((.*)[\x00-\xaa].*)\683*\684\xab.*\683$)|
(?:^(.*)\xac.*\685[\x00-\xab].*$)|
(?:^([\x00-\xab].*)\xac.*\686$)|
(?:^((.*)[\x00-\xab].*)\687*\688\xac.*\687$)|
(?:^(.*)\xad.*\689[\x00-\xac].*$)|
(?:^([\x00-\xac].*)\xad.*\690$)|
(?:^((.*)[\x00-\xac].*)\691*\692\xad.*\691$)|
(?:^(.*)\xae.*\693[\x00-\xad].*$)|
(?:^([\x00-\xad].*)\xae.*\694$)|
(?:^((.*)[\x00-\xad].*)\695*\696\xae.*\695$)|
(?:^(.*)\xaf.*\697[\x00-\xae].*$)|
(?:^([\x00-\xae].*)\xaf.*\698$)|
(?:^((.*)[\x00-\xae].*)\699*\700\xaf.*\699$)|
(?:^(.*)\xb0.*\701[\x00-\xaf].*$)|
(?:^([\x00-\xaf].*)\xb0.*\702$)|
(?:^((.*)[\x00-\xaf].*)\703*\704\xb0.*\703$)|
(?:^(.*)\xb1.*\705[\x00-\xb0].*$)|
(?:^([\x00-\xb0].*)\xb1.*\706$)|
(?:^((.*)[\x00-\xb0].*)\707*\708\xb1.*\707$)|
(?:^(.*)\xb2.*\709[\x00-\xb1].*$)|
(?:^([\x00-\xb1].*)\xb2.*\710$)|
(?:^((.*)[\x00-\xb1].*)\711*\712\xb2.*\711$)|
(?:^(.*)\xb3.*\713[\x00-\xb2].*$)|
(?:^([\x00-\xb2].*)\xb3.*\714$)|
(?:^((.*)[\x00-\xb2].*)\715*\716\xb3.*\715$)|
(?:^(.*)\xb4.*\717[\x00-\xb3].*$)|
(?:^([\x00-\xb3].*)\xb4.*\718$)|
(?:^((.*)[\x00-\xb3].*)\719*\720\xb4.*\719$)|
(?:^(.*)\xb5.*\721[\x00-\xb4].*$)|
(?:^([\x00-\xb4].*)\xb5.*\722$)|
(?:^((.*)[\x00-\xb4].*)\723*\724\xb5.*\723$)|
(?:^(.*)\xb6.*\725[\x00-\xb5].*$)|
(?:^([\x00-\xb5].*)\xb6.*\726$)|
(?:^((.*)[\x00-\xb5].*)\727*\728\xb6.*\727$)|
(?:^(.*)\xb7.*\729[\x00-\xb6].*$)|
(?:^([\x00-\xb6].*)\xb7.*\730$)|
(?:^((.*)[\x00-\xb6].*)\731*\732\xb7.*\731$)|
(?:^(.*)\xb8.*\733[\x00-\xb7].*$)|
(?:^([\x00-\xb7].*)\xb8.*\734$)|
(?:^((.*)[\x00-\xb7].*)\735*\736\xb8.*\735$)|
(?:^(.*)\xb9.*\737[\x00-\xb8].*$)|
(?:^([\x00-\xb8].*)\xb9.*\738$)|
(?:^((.*)[\x00-\xb8].*)\739*\740\xb9.*\739$)|
(?:^(.*)\xba.*\741[\x00-\xb9].*$)|
(?:^([\x00-\xb9].*)\xba.*\742$)|
(?:^((.*)[\x00-\xb9].*)\743*\744\xba.*\743$)|
(?:^(.*)\xbb.*\745[\x00-\xba].*$)|
(?:^([\x00-\xba].*)\xbb.*\746$)|
(?:^((.*)[\x00-\xba].*)\747*\748\xbb.*\747$)|
(?:^(.*)\xbc.*\749[\x00-\xbb].*$)|
(?:^([\x00-\xbb].*)\xbc.*\750$)|
(?:^((.*)[\x00-\xbb].*)\751*\752\xbc.*\751$)|
(?:^(.*)\xbd.*\753[\x00-\xbc].*$)|
(?:^([\x00-\xbc].*)\xbd.*\754$)|
(?:^((.*)[\x00-\xbc].*)\755*\756\xbd.*\755$)|
(?:^(.*)\xbe.*\757[\x00-\xbd].*$)|
(?:^([\x00-\xbd].*)\xbe.*\758$)|
(?:^((.*)[\x00-\xbd].*)\759*\760\xbe.*\759$)|
(?:^(.*)\xbf.*\761[\x00-\xbe].*$)|
(?:^([\x00-\xbe].*)\xbf.*\762$)|
(?:^((.*)[\x00-\xbe].*)\763*\764\xbf.*\763$)|
(?:^(.*)\xc0.*\765[\x00-\xbf].*$)|
(?:^([\x00-\xbf].*)\xc0.*\766$)|
(?:^((.*)[\x00-\xbf].*)\767*\768\xc0.*\767$)|
(?:^(.*)\xc1.*\769[\x00-\xc0].*$)|
(?:^([\x00-\xc0].*)\xc1.*\770$)|
(?:^((.*)[\x00-\xc0].*)\771*\772\xc1.*\771$)|
(?:^(.*)\xc2.*\773[\x00-\xc1].*$)|
(?:^([\x00-\xc1].*)\xc2.*\774$)|
(?:^((.*)[\x00-\xc1].*)\775*\776\xc2.*\775$)|
(?:^(.*)\xc3.*\777[\x00-\xc2].*$)|
(?:^([\x00-\xc2].*)\xc3.*\778$)|
(?:^((.*)[\x00-\xc2].*)\779*\780\xc3.*\779$)|
(?:^(.*)\xc4.*\781[\x00-\xc3].*$)|
(?:^([\x00-\xc3].*)\xc4.*\782$)|
(?:^((.*)[\x00-\xc3].*)\783*\784\xc4.*\783$)|
(?:^(.*)\xc5.*\785[\x00-\xc4].*$)|
(?:^([\x00-\xc4].*)\xc5.*\786$)|
(?:^((.*)[\x00-\xc4].*)\787*\788\xc5.*\787$)|
(?:^(.*)\xc6.*\789[\x00-\xc5].*$)|
(?:^([\x00-\xc5].*)\xc6.*\790$)|
(?:^((.*)[\x00-\xc5].*)\791*\792\xc6.*\791$)|
(?:^(.*)\xc7.*\793[\x00-\xc6].*$)|
(?:^([\x00-\xc6].*)\xc7.*\794$)|
(?:^((.*)[\x00-\xc6].*)\795*\796\xc7.*\795$)|
(?:^(.*)\xc8.*\797[\x00-\xc7].*$)|
(?:^([\x00-\xc7].*)\xc8.*\798$)|
(?:^((.*)[\x00-\xc7].*)\799*\800\xc8.*\799$)|
(?:^(.*)\xc9.*\801[\x00-\xc8].*$)|
(?:^([\x00-\xc8].*)\xc9.*\802$)|
(?:^((.*)[\x00-\xc8].*)\803*\804\xc9.*\803$)|
(?:^(.*)\xca.*\805[\x00-\xc9].*$)|
(?:^([\x00-\xc9].*)\xca.*\806$)|
(?:^((.*)[\x00-\xc9].*)\807*\808\xca.*\807$)|
(?:^(.*)\xcb.*\809[\x00-\xca].*$)|
(?:^([\x00-\xca].*)\xcb.*\810$)|
(?:^((.*)[\x00-\xca].*)\811*\812\xcb.*\811$)|
(?:^(.*)\xcc.*\813[\x00-\xcb].*$)|
(?:^([\x00-\xcb].*)\xcc.*\814$)|
(?:^((.*)[\x00-\xcb].*)\815*\816\xcc.*\815$)|
(?:^(.*)\xcd.*\817[\x00-\xcc].*$)|
(?:^([\x00-\xcc].*)\xcd.*\818$)|
(?:^((.*)[\x00-\xcc].*)\819*\820\xcd.*\819$)|
(?:^(.*)\xce.*\821[\x00-\xcd].*$)|
(?:^([\x00-\xcd].*)\xce.*\822$)|
(?:^((.*)[\x00-\xcd].*)\823*\824\xce.*\823$)|
(?:^(.*)\xcf.*\825[\x00-\xce].*$)|
(?:^([\x00-\xce].*)\xcf.*\826$)|
(?:^((.*)[\x00-\xce].*)\827*\828\xcf.*\827$)|
(?:^(.*)\xd0.*\829[\x00-\xcf].*$)|
(?:^([\x00-\xcf].*)\xd0.*\830$)|
(?:^((.*)[\x00-\xcf].*)\831*\832\xd0.*\831$)|
(?:^(.*)\xd1.*\833[\x00-\xd0].*$)|
(?:^([\x00-\xd0].*)\xd1.*\834$)|
(?:^((.*)[\x00-\xd0].*)\835*\836\xd1.*\835$)|
(?:^(.*)\xd2.*\837[\x00-\xd1].*$)|
(?:^([\x00-\xd1].*)\xd2.*\838$)|
(?:^((.*)[\x00-\xd1].*)\839*\840\xd2.*\839$)|
(?:^(.*)\xd3.*\841[\x00-\xd2].*$)|
(?:^([\x00-\xd2].*)\xd3.*\842$)|
(?:^((.*)[\x00-\xd2].*)\843*\844\xd3.*\843$)|
(?:^(.*)\xd4.*\845[\x00-\xd3].*$)|
(?:^([\x00-\xd3].*)\xd4.*\846$)|
(?:^((.*)[\x00-\xd3].*)\847*\848\xd4.*\847$)|
(?:^(.*)\xd5.*\849[\x00-\xd4].*$)|
(?:^([\x00-\xd4].*)\xd5.*\850$)|
(?:^((.*)[\x00-\xd4].*)\851*\852\xd5.*\851$)|
(?:^(.*)\xd6.*\853[\x00-\xd5].*$)|
(?:^([\x00-\xd5].*)\xd6.*\854$)|
(?:^((.*)[\x00-\xd5].*)\855*\856\xd6.*\855$)|
(?:^(.*)\xd7.*\857[\x00-\xd6].*$)|
(?:^([\x00-\xd6].*)\xd7.*\858$)|
(?:^((.*)[\x00-\xd6].*)\859*\860\xd7.*\859$)|
(?:^(.*)\xd8.*\861[\x00-\xd7].*$)|
(?:^([\x00-\xd7].*)\xd8.*\862$)|
(?:^((.*)[\x00-\xd7].*)\863*\864\xd8.*\863$)|
(?:^(.*)\xd9.*\865[\x00-\xd8].*$)|
(?:^([\x00-\xd8].*)\xd9.*\866$)|
(?:^((.*)[\x00-\xd8].*)\867*\868\xd9.*\867$)|
(?:^(.*)\xda.*\869[\x00-\xd9].*$)|
(?:^([\x00-\xd9].*)\xda.*\870$)|
(?:^((.*)[\x00-\xd9].*)\871*\872\xda.*\871$)|
(?:^(.*)\xdb.*\873[\x00-\xda].*$)|
(?:^([\x00-\xda].*)\xdb.*\874$)|
(?:^((.*)[\x00-\xda].*)\875*\876\xdb.*\875$)|
(?:^(.*)\xdc.*\877[\x00-\xdb].*$)|
(?:^([\x00-\xdb].*)\xdc.*\878$)|
(?:^((.*)[\x00-\xdb].*)\879*\880\xdc.*\879$)|
(?:^(.*)\xdd.*\881[\x00-\xdc].*$)|
(?:^([\x00-\xdc].*)\xdd.*\882$)|
(?:^((.*)[\x00-\xdc].*)\883*\884\xdd.*\883$)|
(?:^(.*)\xde.*\885[\x00-\xdd].*$)|
(?:^([\x00-\xdd].*)\xde.*\886$)|
(?:^((.*)[\x00-\xdd].*)\887*\888\xde.*\887$)|
(?:^(.*)\xdf.*\889[\x00-\xde].*$)|
(?:^([\x00-\xde].*)\xdf.*\890$)|
(?:^((.*)[\x00-\xde].*)\891*\892\xdf.*\891$)|
(?:^(.*)\xe0.*\893[\x00-\xdf].*$)|
(?:^([\x00-\xdf].*)\xe0.*\894$)|
(?:^((.*)[\x00-\xdf].*)\895*\896\xe0.*\895$)|
(?:^(.*)\xe1.*\897[\x00-\xe0].*$)|
(?:^([\x00-\xe0].*)\xe1.*\898$)|
(?:^((.*)[\x00-\xe0].*)\899*\900\xe1.*\899$)|
(?:^(.*)\xe2.*\901[\x00-\xe1].*$)|
(?:^([\x00-\xe1].*)\xe2.*\902$)|
(?:^((.*)[\x00-\xe1].*)\903*\904\xe2.*\903$)|
(?:^(.*)\xe3.*\905[\x00-\xe2].*$)|
(?:^([\x00-\xe2].*)\xe3.*\906$)|
(?:^((.*)[\x00-\xe2].*)\907*\908\xe3.*\907$)|
(?:^(.*)\xe4.*\909[\x00-\xe3].*$)|
(?:^([\x00-\xe3].*)\xe4.*\910$)|
(?:^((.*)[\x00-\xe3].*)\911*\912\xe4.*\911$)|
(?:^(.*)\xe5.*\913[\x00-\xe4].*$)|
(?:^([\x00-\xe4].*)\xe5.*\914$)|
(?:^((.*)[\x00-\xe4].*)\915*\916\xe5.*\915$)|
(?:^(.*)\xe6.*\917[\x00-\xe5].*$)|
(?:^([\x00-\xe5].*)\xe6.*\918$)|
(?:^((.*)[\x00-\xe5].*)\919*\920\xe6.*\919$)|
(?:^(.*)\xe7.*\921[\x00-\xe6].*$)|
(?:^([\x00-\xe6].*)\xe7.*\922$)|
(?:^((.*)[\x00-\xe6].*)\923*\924\xe7.*\923$)|
(?:^(.*)\xe8.*\925[\x00-\xe7].*$)|
(?:^([\x00-\xe7].*)\xe8.*\926$)|
(?:^((.*)[\x00-\xe7].*)\927*\928\xe8.*\927$)|
(?:^(.*)\xe9.*\929[\x00-\xe8].*$)|
(?:^([\x00-\xe8].*)\xe9.*\930$)|
(?:^((.*)[\x00-\xe8].*)\931*\932\xe9.*\931$)|
(?:^(.*)\xea.*\933[\x00-\xe9].*$)|
(?:^([\x00-\xe9].*)\xea.*\934$)|
(?:^((.*)[\x00-\xe9].*)\935*\936\xea.*\935$)|
(?:^(.*)\xeb.*\937[\x00-\xea].*$)|
(?:^([\x00-\xea].*)\xeb.*\938$)|
(?:^((.*)[\x00-\xea].*)\939*\940\xeb.*\939$)|
(?:^(.*)\xec.*\941[\x00-\xeb].*$)|
(?:^([\x00-\xeb].*)\xec.*\942$)|
(?:^((.*)[\x00-\xeb].*)\943*\944\xec.*\943$)|
(?:^(.*)\xed.*\945[\x00-\xec].*$)|
(?:^([\x00-\xec].*)\xed.*\946$)|
(?:^((.*)[\x00-\xec].*)\947*\948\xed.*\947$)|
(?:^(.*)\xee.*\949[\x00-\xed].*$)|
(?:^([\x00-\xed].*)\xee.*\950$)|
(?:^((.*)[\x00-\xed].*)\951*\952\xee.*\951$)|
(?:^(.*)\xef.*\953[\x00-\xee].*$)|
(?:^([\x00-\xee].*)\xef.*\954$)|
(?:^((.*)[\x00-\xee].*)\955*\956\xef.*\955$)|
(?:^(.*)\xf0.*\957[\x00-\xef].*$)|
(?:^([\x00-\xef].*)\xf0.*\958$)|
(?:^((.*)[\x00-\xef].*)\959*\960\xf0.*\959$)|
(?:^(.*)\xf1.*\961[\x00-\xf0].*$)|
(?:^([\x00-\xf0].*)\xf1.*\962$)|
(?:^((.*)[\x00-\xf0].*)\963*\964\xf1.*\963$)|
(?:^(.*)\xf2.*\965[\x00-\xf1].*$)|
(?:^([\x00-\xf1].*)\xf2.*\966$)|
(?:^((.*)[\x00-\xf1].*)\967*\968\xf2.*\967$)|
(?:^(.*)\xf3.*\969[\x00-\xf2].*$)|
(?:^([\x00-\xf2].*)\xf3.*\970$)|
(?:^((.*)[\x00-\xf2].*)\971*\972\xf3.*\971$)|
(?:^(.*)\xf4.*\973[\x00-\xf3].*$)|
(?:^([\x00-\xf3].*)\xf4.*\974$)|
(?:^((.*)[\x00-\xf3].*)\975*\976\xf4.*\975$)|
(?:^(.*)\xf5.*\977[\x00-\xf4].*$)|
(?:^([\x00-\xf4].*)\xf5.*\978$)|
(?:^((.*)[\x00-\xf4].*)\979*\980\xf5.*\979$)|
(?:^(.*)\xf6.*\981[\x00-\xf5].*$)|
(?:^([\x00-\xf5].*)\xf6.*\982$)|
(?:^((.*)[\x00-\xf5].*)\983*\984\xf6.*\983$)|
(?:^(.*)\xf7.*\985[\x00-\xf6].*$)|
(?:^([\x00-\xf6].*)\xf7.*\986$)|
(?:^((.*)[\x00-\xf6].*)\987*\988\xf7.*\987$)|
(?:^(.*)\xf8.*\989[\x00-\xf7].*$)|
(?:^([\x00-\xf7].*)\xf8.*\990$)|
(?:^((.*)[\x00-\xf7].*)\991*\992\xf8.*\991$)|
(?:^(.*)\xf9.*\993[\x00-\xf8].*$)|
(?:^([\x00-\xf8].*)\xf9.*\994$)|
(?:^((.*)[\x00-\xf8].*)\995*\996\xf9.*\995$)|
(?:^(.*)\xfa.*\997[\x00-\xf9].*$)|
(?:^([\x00-\xf9].*)\xfa.*\998$)|
(?:^((.*)[\x00-\xf9].*)\999*\1000\xfa.*\999$)|
(?:^(.*)\xfb.*\1001[\x00-\xfa].*$)|
(?:^([\x00-\xfa].*)\xfb.*\1002$)|
(?:^((.*)[\x00-\xfa].*)\1003*\1004\xfb.*\1003$)|
(?:^(.*)\xfc.*\1005[\x00-\xfb].*$)|
(?:^([\x00-\xfb].*)\xfc.*\1006$)|
(?:^((.*)[\x00-\xfb].*)\1007*\1008\xfc.*\1007$)|
(?:^(.*)\xfd.*\1009[\x00-\xfc].*$)|
(?:^([\x00-\xfc].*)\xfd.*\1010$)|
(?:^((.*)[\x00-\xfc].*)\1011*\1012\xfd.*\1011$)|
(?:^(.*)\xfe.*\1013[\x00-\xfd].*$)|
(?:^([\x00-\xfd].*)\xfe.*\1014$)|
(?:^((.*)[\x00-\xfd].*)\1015*\1016\xfe.*\1015$)|
(?:^(.*)\xff.*\1017[\x00-\xfe].*$)|
(?:^([\x00-\xfe].*)\xff.*\1018$)|
(?:^((.*)[\x00-\xfe].*)\1019*\1020\xff.*\1019$)/sx
Abigail