#!/usr/bin/perl

foreach (map {chr} 32 .. 126) {$charset_utf8{$_} = $_}
open CHARSET_UTF8, shift;
while (<CHARSET_UTF8>)
{
	$charset_utf8{$2} = $1
		if /^\t(\S+)\t(\S+)$/ && !exists $charset_utf8{$2};
}
close CHARSET_UTF8;

open UTF8_CHARSET, shift;
while (<UTF8_CHARSET>)
{
	@alt = split;
	$utf8 = shift @alt;
	next if exists $charset_utf8{$utf8};
	$jest = 0;
	foreach (@alt)
	{
		@znakiist = /[^\200-\377]|[\300-\377][\200-\277]+/g;
		s/\\\).*?$//;
		@znaki = /[^\200-\377]|[\300-\377][\200-\277]+/g;
		if (!grep {!exists $charset_utf8{$_}} @znakiist)
		{
			if (@znaki == 1 || /^\\[^!]$/)
			{
				$utf8_charset1{$utf8} = join "",
					map {$charset_utf8{$_}} @znaki
					if /[\300-\377]/
					|| $utf8 eq "\357\277\275";
				last;
			}
			elsif (!$jest)
			{
				$utf8_charset{$utf8} = join "",
					map {$charset_utf8{$_}} @znaki
					if /[\300-\377]/;
				$jest = 1;
			}
		}
	}
}
close UTF8_CHARSET;

$zastap = exists $charset_utf8{"\357\277\275"} ?
	$charset_utf8{"\357\277\275"}
:
	$utf8_charset1{"\357\277\275"};
delete $utf8_charset{"\357\277\275"};
delete $utf8_charset1{"\357\277\275"};

sub wypisz (\%)
{
	my ($utf8_charset) = @_;
	foreach $utf8 (sort keys %$utf8_charset)
	{
		$_ = "\t$utf8\t$$utf8_charset{$utf8}\n";
		s/'/'\\''/g;
		print;
	}
}

print "APPROX='\n";
wypisz %utf8_charset;
print "' APPROX1='\n";
wypisz %utf8_charset1;
$zastap =~ s/'/'\\''/g;
print "' REPLACE='${zastap}'";
