Marc-Andre Lemburg: Unicode encodings.
diff --git a/Lib/encodings/__init__.py b/Lib/encodings/__init__.py
new file mode 100644
index 0000000..c33b822
--- /dev/null
+++ b/Lib/encodings/__init__.py
@@ -0,0 +1,78 @@
+""" Standard "encodings" Package
+
+    Standard Python encoding modules are stored in this package
+    directory.
+
+    Codec modules must have names corresponding to standard lower-case
+    encoding names. Hyphens are automatically converted to
+    underscores, e.g. 'utf-8' is looked up as module utf_8.
+
+    Each codec module must export the following interface:
+
+    * getregentry() -> (encoder, decoder, stream_reader, stream_writer)
+    The getregentry() API must return callable objects which adhere to
+    the Python Codec Interface Standard.
+
+    In addition, a module may optionally also define the following
+    APIs which are then used by the package's codec search function:
+
+    * getaliases() -> sequence of encoding name strings to use as aliases
+
+    Alias names returned by getaliases() must be lower-case.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import string,codecs,aliases
+
+_cache = {}
+_unkown = '--unkown--'
+
+def search_function(encoding):
+    
+    # Cache lookup
+    entry = _cache.get(encoding,_unkown)
+    if entry is not _unkown:
+        return entry
+
+    # Import the module
+    modname = string.replace(encoding,'-','_')
+    modname = aliases.aliases.get(modname,modname)
+    try:
+        mod = __import__(modname,globals(),locals(),'*')
+    except ImportError,why:
+        _cache[encoding] = None
+        return None
+    
+    # Now ask the module for the registry entry
+    try:
+        entry = tuple(mod.getregentry())
+    except AttributeError:
+        entry = ()
+    if len(entry) != 4:
+        raise SystemError,\
+              'module "%s.%s" failed to register' % \
+              (__name__,modname)
+    for obj in entry:
+        if not callable(obj):
+            raise SystemError,\
+                  'incompatible codecs in module "%s.%s"' % \
+                  (__name__,modname)
+
+    # Cache the encoding and its aliases
+    _cache[encoding] = entry
+    try:
+        codecaliases = mod.getaliases()
+    except AttributeError:
+        pass
+    else:
+        for alias in codecaliases:
+            _cache[alias] = entry
+    return entry
+
+# Register the search_function in the Python codec registry
+codecs.register(search_function)
diff --git a/Lib/encodings/aliases.py b/Lib/encodings/aliases.py
new file mode 100644
index 0000000..386352f
--- /dev/null
+++ b/Lib/encodings/aliases.py
@@ -0,0 +1,57 @@
+""" Encoding Aliases Support
+
+    This module is used by the encodings package search function to
+    map encodings names to module names.
+
+    Note that the search function converts the encoding names to lower
+    case and replaces hyphens with underscores *before* performing the
+    lookup.
+
+"""
+aliases = {
+
+    # Latin-1
+    'latin': 'latin_1',
+    'latin1': 'latin_1',
+    
+    # UTF-8
+    'utf': 'utf_8',
+    'utf8': 'utf_8',
+    'u8': 'utf_8',
+    
+    # UTF-16
+    'utf16': 'utf_16',
+    'u16': 'utf_16',
+    'utf_16be': 'utf_16_be',
+    'utf_16le': 'utf_16_le',
+    'UnicodeBigUnmarked': 'utf_16_be',
+    'UnicodeLittleUnmarked': 'utf_16_le',
+
+    # ASCII
+    'us_ascii': 'ascii',
+
+    # ISO
+    'iso8859_1': 'latin_1',
+    'iso_8859_1': 'latin_1',
+    'iso_8859_10': 'iso8859_10',
+    'iso_8859_13': 'iso8859_13',
+    'iso_8859_14': 'iso8859_14',
+    'iso_8859_15': 'iso8859_15',
+    'iso_8859_2': 'iso8859_2',
+    'iso_8859_3': 'iso8859_3',
+    'iso_8859_4': 'iso8859_4',
+    'iso_8859_5': 'iso8859_5',
+    'iso_8859_6': 'iso8859_6',
+    'iso_8859_7': 'iso8859_7',
+    'iso_8859_8': 'iso8859_8',
+    'iso_8859_9': 'iso8859_9',
+
+    # Mac
+    'MacCentralEurope': 'mac_latin2',
+    'MacCyrillic': 'mac_cyrillic',
+    'MacGreek': 'mac_greek',
+    'MacIceland': 'mac_iceland',
+    'MacRoman': 'mac_roman',
+    'MacTurkish': 'mac_turkish',
+
+}
diff --git a/Lib/encodings/ascii.py b/Lib/encodings/ascii.py
new file mode 100644
index 0000000..b92ff5e
--- /dev/null
+++ b/Lib/encodings/ascii.py
@@ -0,0 +1,35 @@
+""" Python 'ascii' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.ascii_encode
+    decode = codecs.ascii_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+class StreamConverter(StreamWriter,StreamReader):
+
+    encode = codecs.ascii_decode
+    decode = codecs.ascii_encode
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
diff --git a/Lib/encodings/charmap.py b/Lib/encodings/charmap.py
new file mode 100644
index 0000000..f0bb4b9
--- /dev/null
+++ b/Lib/encodings/charmap.py
@@ -0,0 +1,51 @@
+""" Generic Python Character Mapping Codec.
+
+    Use this codec directly rather than through the automatic
+    conversion mechanisms supplied by unicode() and .encode().
+    
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.charmap_encode
+    decode = codecs.charmap_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+
+    def __init__(self,stream,errors='strict',mapping=None):
+
+        codecs.StreamWriter.__init__(self,strict,errors)
+        self.mapping = mapping
+
+    def encode(self,input,errors='strict'):
+
+        return Codec.encode(input,errors,self.mapping)
+        
+class StreamReader(Codec,codecs.StreamReader):
+
+    def __init__(self,stream,errors='strict',mapping=None):
+
+        codecs.StreamReader.__init__(self,strict,errors)
+        self.mapping = mapping
+
+    def decode(self,input,errors='strict'):
+
+        return Codec.decode(input,errors,self.mapping)
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
+
diff --git a/Lib/encodings/cp037.py b/Lib/encodings/cp037.py
new file mode 100644
index 0000000..d60504c
--- /dev/null
+++ b/Lib/encodings/cp037.py
@@ -0,0 +1,282 @@
+""" Python Character Mapping Codec generated from 'CP037.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0004: 0x009c,	# CONTROL
+	0x0005: 0x0009,	# HORIZONTAL TABULATION
+	0x0006: 0x0086,	# CONTROL
+	0x0007: 0x007f,	# DELETE
+	0x0008: 0x0097,	# CONTROL
+	0x0009: 0x008d,	# CONTROL
+	0x000a: 0x008e,	# CONTROL
+	0x0014: 0x009d,	# CONTROL
+	0x0015: 0x0085,	# CONTROL
+	0x0016: 0x0008,	# BACKSPACE
+	0x0017: 0x0087,	# CONTROL
+	0x001a: 0x0092,	# CONTROL
+	0x001b: 0x008f,	# CONTROL
+	0x0020: 0x0080,	# CONTROL
+	0x0021: 0x0081,	# CONTROL
+	0x0022: 0x0082,	# CONTROL
+	0x0023: 0x0083,	# CONTROL
+	0x0024: 0x0084,	# CONTROL
+	0x0025: 0x000a,	# LINE FEED
+	0x0026: 0x0017,	# END OF TRANSMISSION BLOCK
+	0x0027: 0x001b,	# ESCAPE
+	0x0028: 0x0088,	# CONTROL
+	0x0029: 0x0089,	# CONTROL
+	0x002a: 0x008a,	# CONTROL
+	0x002b: 0x008b,	# CONTROL
+	0x002c: 0x008c,	# CONTROL
+	0x002d: 0x0005,	# ENQUIRY
+	0x002e: 0x0006,	# ACKNOWLEDGE
+	0x002f: 0x0007,	# BELL
+	0x0030: 0x0090,	# CONTROL
+	0x0031: 0x0091,	# CONTROL
+	0x0032: 0x0016,	# SYNCHRONOUS IDLE
+	0x0033: 0x0093,	# CONTROL
+	0x0034: 0x0094,	# CONTROL
+	0x0035: 0x0095,	# CONTROL
+	0x0036: 0x0096,	# CONTROL
+	0x0037: 0x0004,	# END OF TRANSMISSION
+	0x0038: 0x0098,	# CONTROL
+	0x0039: 0x0099,	# CONTROL
+	0x003a: 0x009a,	# CONTROL
+	0x003b: 0x009b,	# CONTROL
+	0x003c: 0x0014,	# DEVICE CONTROL FOUR
+	0x003d: 0x0015,	# NEGATIVE ACKNOWLEDGE
+	0x003e: 0x009e,	# CONTROL
+	0x003f: 0x001a,	# SUBSTITUTE
+	0x0040: 0x0020,	# SPACE
+	0x0041: 0x00a0,	# NO-BREAK SPACE
+	0x0042: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0043: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0044: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0045: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0046: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x0047: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0048: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0049: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x004a: 0x00a2,	# CENT SIGN
+	0x004b: 0x002e,	# FULL STOP
+	0x004c: 0x003c,	# LESS-THAN SIGN
+	0x004d: 0x0028,	# LEFT PARENTHESIS
+	0x004e: 0x002b,	# PLUS SIGN
+	0x004f: 0x007c,	# VERTICAL LINE
+	0x0050: 0x0026,	# AMPERSAND
+	0x0051: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0052: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0053: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0054: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0055: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0056: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0057: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0058: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0059: 0x00df,	# LATIN SMALL LETTER SHARP S (GERMAN)
+	0x005a: 0x0021,	# EXCLAMATION MARK
+	0x005b: 0x0024,	# DOLLAR SIGN
+	0x005c: 0x002a,	# ASTERISK
+	0x005d: 0x0029,	# RIGHT PARENTHESIS
+	0x005e: 0x003b,	# SEMICOLON
+	0x005f: 0x00ac,	# NOT SIGN
+	0x0060: 0x002d,	# HYPHEN-MINUS
+	0x0061: 0x002f,	# SOLIDUS
+	0x0062: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x0063: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0064: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x0065: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x0066: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x0067: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0068: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0069: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x006a: 0x00a6,	# BROKEN BAR
+	0x006b: 0x002c,	# COMMA
+	0x006c: 0x0025,	# PERCENT SIGN
+	0x006d: 0x005f,	# LOW LINE
+	0x006e: 0x003e,	# GREATER-THAN SIGN
+	0x006f: 0x003f,	# QUESTION MARK
+	0x0070: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x0071: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0072: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x0073: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x0074: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x0075: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x0076: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x0077: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x0078: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x0079: 0x0060,	# GRAVE ACCENT
+	0x007a: 0x003a,	# COLON
+	0x007b: 0x0023,	# NUMBER SIGN
+	0x007c: 0x0040,	# COMMERCIAL AT
+	0x007d: 0x0027,	# APOSTROPHE
+	0x007e: 0x003d,	# EQUALS SIGN
+	0x007f: 0x0022,	# QUOTATION MARK
+	0x0080: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x0081: 0x0061,	# LATIN SMALL LETTER A
+	0x0082: 0x0062,	# LATIN SMALL LETTER B
+	0x0083: 0x0063,	# LATIN SMALL LETTER C
+	0x0084: 0x0064,	# LATIN SMALL LETTER D
+	0x0085: 0x0065,	# LATIN SMALL LETTER E
+	0x0086: 0x0066,	# LATIN SMALL LETTER F
+	0x0087: 0x0067,	# LATIN SMALL LETTER G
+	0x0088: 0x0068,	# LATIN SMALL LETTER H
+	0x0089: 0x0069,	# LATIN SMALL LETTER I
+	0x008a: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008b: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008c: 0x00f0,	# LATIN SMALL LETTER ETH (ICELANDIC)
+	0x008d: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x008e: 0x00fe,	# LATIN SMALL LETTER THORN (ICELANDIC)
+	0x008f: 0x00b1,	# PLUS-MINUS SIGN
+	0x0090: 0x00b0,	# DEGREE SIGN
+	0x0091: 0x006a,	# LATIN SMALL LETTER J
+	0x0092: 0x006b,	# LATIN SMALL LETTER K
+	0x0093: 0x006c,	# LATIN SMALL LETTER L
+	0x0094: 0x006d,	# LATIN SMALL LETTER M
+	0x0095: 0x006e,	# LATIN SMALL LETTER N
+	0x0096: 0x006f,	# LATIN SMALL LETTER O
+	0x0097: 0x0070,	# LATIN SMALL LETTER P
+	0x0098: 0x0071,	# LATIN SMALL LETTER Q
+	0x0099: 0x0072,	# LATIN SMALL LETTER R
+	0x009a: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x009b: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x009c: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x009d: 0x00b8,	# CEDILLA
+	0x009e: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x009f: 0x00a4,	# CURRENCY SIGN
+	0x00a0: 0x00b5,	# MICRO SIGN
+	0x00a1: 0x007e,	# TILDE
+	0x00a2: 0x0073,	# LATIN SMALL LETTER S
+	0x00a3: 0x0074,	# LATIN SMALL LETTER T
+	0x00a4: 0x0075,	# LATIN SMALL LETTER U
+	0x00a5: 0x0076,	# LATIN SMALL LETTER V
+	0x00a6: 0x0077,	# LATIN SMALL LETTER W
+	0x00a7: 0x0078,	# LATIN SMALL LETTER X
+	0x00a8: 0x0079,	# LATIN SMALL LETTER Y
+	0x00a9: 0x007a,	# LATIN SMALL LETTER Z
+	0x00aa: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ab: 0x00bf,	# INVERTED QUESTION MARK
+	0x00ac: 0x00d0,	# LATIN CAPITAL LETTER ETH (ICELANDIC)
+	0x00ad: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00ae: 0x00de,	# LATIN CAPITAL LETTER THORN (ICELANDIC)
+	0x00af: 0x00ae,	# REGISTERED SIGN
+	0x00b0: 0x005e,	# CIRCUMFLEX ACCENT
+	0x00b1: 0x00a3,	# POUND SIGN
+	0x00b2: 0x00a5,	# YEN SIGN
+	0x00b3: 0x00b7,	# MIDDLE DOT
+	0x00b4: 0x00a9,	# COPYRIGHT SIGN
+	0x00b5: 0x00a7,	# SECTION SIGN
+	0x00b7: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00b8: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00b9: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00ba: 0x005b,	# LEFT SQUARE BRACKET
+	0x00bb: 0x005d,	# RIGHT SQUARE BRACKET
+	0x00bc: 0x00af,	# MACRON
+	0x00bd: 0x00a8,	# DIAERESIS
+	0x00be: 0x00b4,	# ACUTE ACCENT
+	0x00bf: 0x00d7,	# MULTIPLICATION SIGN
+	0x00c0: 0x007b,	# LEFT CURLY BRACKET
+	0x00c1: 0x0041,	# LATIN CAPITAL LETTER A
+	0x00c2: 0x0042,	# LATIN CAPITAL LETTER B
+	0x00c3: 0x0043,	# LATIN CAPITAL LETTER C
+	0x00c4: 0x0044,	# LATIN CAPITAL LETTER D
+	0x00c5: 0x0045,	# LATIN CAPITAL LETTER E
+	0x00c6: 0x0046,	# LATIN CAPITAL LETTER F
+	0x00c7: 0x0047,	# LATIN CAPITAL LETTER G
+	0x00c8: 0x0048,	# LATIN CAPITAL LETTER H
+	0x00c9: 0x0049,	# LATIN CAPITAL LETTER I
+	0x00ca: 0x00ad,	# SOFT HYPHEN
+	0x00cb: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x00cc: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x00cd: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x00ce: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00cf: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00d0: 0x007d,	# RIGHT CURLY BRACKET
+	0x00d1: 0x004a,	# LATIN CAPITAL LETTER J
+	0x00d2: 0x004b,	# LATIN CAPITAL LETTER K
+	0x00d3: 0x004c,	# LATIN CAPITAL LETTER L
+	0x00d4: 0x004d,	# LATIN CAPITAL LETTER M
+	0x00d5: 0x004e,	# LATIN CAPITAL LETTER N
+	0x00d6: 0x004f,	# LATIN CAPITAL LETTER O
+	0x00d7: 0x0050,	# LATIN CAPITAL LETTER P
+	0x00d8: 0x0051,	# LATIN CAPITAL LETTER Q
+	0x00d9: 0x0052,	# LATIN CAPITAL LETTER R
+	0x00da: 0x00b9,	# SUPERSCRIPT ONE
+	0x00db: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x00dc: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00dd: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x00de: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00df: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00e0: 0x005c,	# REVERSE SOLIDUS
+	0x00e1: 0x00f7,	# DIVISION SIGN
+	0x00e2: 0x0053,	# LATIN CAPITAL LETTER S
+	0x00e3: 0x0054,	# LATIN CAPITAL LETTER T
+	0x00e4: 0x0055,	# LATIN CAPITAL LETTER U
+	0x00e5: 0x0056,	# LATIN CAPITAL LETTER V
+	0x00e6: 0x0057,	# LATIN CAPITAL LETTER W
+	0x00e7: 0x0058,	# LATIN CAPITAL LETTER X
+	0x00e8: 0x0059,	# LATIN CAPITAL LETTER Y
+	0x00e9: 0x005a,	# LATIN CAPITAL LETTER Z
+	0x00ea: 0x00b2,	# SUPERSCRIPT TWO
+	0x00eb: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00ec: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x00ed: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00f0: 0x0030,	# DIGIT ZERO
+	0x00f1: 0x0031,	# DIGIT ONE
+	0x00f2: 0x0032,	# DIGIT TWO
+	0x00f3: 0x0033,	# DIGIT THREE
+	0x00f4: 0x0034,	# DIGIT FOUR
+	0x00f5: 0x0035,	# DIGIT FIVE
+	0x00f6: 0x0036,	# DIGIT SIX
+	0x00f7: 0x0037,	# DIGIT SEVEN
+	0x00f8: 0x0038,	# DIGIT EIGHT
+	0x00f9: 0x0039,	# DIGIT NINE
+	0x00fa: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fb: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00fc: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ff: 0x009f,	# CONTROL
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1006.py b/Lib/encodings/cp1006.py
new file mode 100644
index 0000000..991feed
--- /dev/null
+++ b/Lib/encodings/cp1006.py
@@ -0,0 +1,140 @@
+""" Python Character Mapping Codec generated from 'CP1006.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x06f0,	# 	EXTENDED ARABIC-INDIC DIGIT ZERO
+	0x00a2: 0x06f1,	# 	EXTENDED ARABIC-INDIC DIGIT ONE
+	0x00a3: 0x06f2,	# 	EXTENDED ARABIC-INDIC DIGIT TWO
+	0x00a4: 0x06f3,	# 	EXTENDED ARABIC-INDIC DIGIT THREE
+	0x00a5: 0x06f4,	# 	EXTENDED ARABIC-INDIC DIGIT FOUR
+	0x00a6: 0x06f5,	# 	EXTENDED ARABIC-INDIC DIGIT FIVE
+	0x00a7: 0x06f6,	# 	EXTENDED ARABIC-INDIC DIGIT SIX
+	0x00a8: 0x06f7,	# 	EXTENDED ARABIC-INDIC DIGIT SEVEN
+	0x00a9: 0x06f8,	# 	EXTENDED ARABIC-INDIC DIGIT EIGHT
+	0x00aa: 0x06f9,	# 	EXTENDED ARABIC-INDIC DIGIT NINE
+	0x00ab: 0x060c,	# 	ARABIC COMMA
+	0x00ac: 0x061b,	# 	ARABIC SEMICOLON
+	0x00ae: 0x061f,	# 	ARABIC QUESTION MARK
+	0x00af: 0xfe81,	# 	ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+	0x00b0: 0xfe8d,	# 	ARABIC LETTER ALEF ISOLATED FORM
+	0x00b1: 0xfe8e,	# 	ARABIC LETTER ALEF FINAL FORM
+	0x00b2: 0xfe8e,	# 	ARABIC LETTER ALEF FINAL FORM
+	0x00b3: 0xfe8f,	# 	ARABIC LETTER BEH ISOLATED FORM
+	0x00b4: 0xfe91,	# 	ARABIC LETTER BEH INITIAL FORM
+	0x00b5: 0xfb56,	# 	ARABIC LETTER PEH ISOLATED FORM
+	0x00b6: 0xfb58,	# 	ARABIC LETTER PEH INITIAL FORM
+	0x00b7: 0xfe93,	# 	ARABIC LETTER TEH MARBUTA ISOLATED FORM
+	0x00b8: 0xfe95,	# 	ARABIC LETTER TEH ISOLATED FORM
+	0x00b9: 0xfe97,	# 	ARABIC LETTER TEH INITIAL FORM
+	0x00ba: 0xfb66,	# 	ARABIC LETTER TTEH ISOLATED FORM
+	0x00bb: 0xfb68,	# 	ARABIC LETTER TTEH INITIAL FORM
+	0x00bc: 0xfe99,	# 	ARABIC LETTER THEH ISOLATED FORM
+	0x00bd: 0xfe9b,	# 	ARABIC LETTER THEH INITIAL FORM
+	0x00be: 0xfe9d,	# 	ARABIC LETTER JEEM ISOLATED FORM
+	0x00bf: 0xfe9f,	# 	ARABIC LETTER JEEM INITIAL FORM
+	0x00c0: 0xfb7a,	# 	ARABIC LETTER TCHEH ISOLATED FORM
+	0x00c1: 0xfb7c,	# 	ARABIC LETTER TCHEH INITIAL FORM
+	0x00c2: 0xfea1,	# 	ARABIC LETTER HAH ISOLATED FORM
+	0x00c3: 0xfea3,	# 	ARABIC LETTER HAH INITIAL FORM
+	0x00c4: 0xfea5,	# 	ARABIC LETTER KHAH ISOLATED FORM
+	0x00c5: 0xfea7,	# 	ARABIC LETTER KHAH INITIAL FORM
+	0x00c6: 0xfea9,	# 	ARABIC LETTER DAL ISOLATED FORM
+	0x00c7: 0xfb84,	# 	ARABIC LETTER DAHAL ISOLATED FORMN
+	0x00c8: 0xfeab,	# 	ARABIC LETTER THAL ISOLATED FORM
+	0x00c9: 0xfead,	# 	ARABIC LETTER REH ISOLATED FORM
+	0x00ca: 0xfb8c,	# 	ARABIC LETTER RREH ISOLATED FORM
+	0x00cb: 0xfeaf,	# 	ARABIC LETTER ZAIN ISOLATED FORM
+	0x00cc: 0xfb8a,	# 	ARABIC LETTER JEH ISOLATED FORM
+	0x00cd: 0xfeb1,	# 	ARABIC LETTER SEEN ISOLATED FORM
+	0x00ce: 0xfeb3,	# 	ARABIC LETTER SEEN INITIAL FORM
+	0x00cf: 0xfeb5,	# 	ARABIC LETTER SHEEN ISOLATED FORM
+	0x00d0: 0xfeb7,	# 	ARABIC LETTER SHEEN INITIAL FORM
+	0x00d1: 0xfeb9,	# 	ARABIC LETTER SAD ISOLATED FORM
+	0x00d2: 0xfebb,	# 	ARABIC LETTER SAD INITIAL FORM
+	0x00d3: 0xfebd,	# 	ARABIC LETTER DAD ISOLATED FORM
+	0x00d4: 0xfebf,	# 	ARABIC LETTER DAD INITIAL FORM
+	0x00d5: 0xfec1,	# 	ARABIC LETTER TAH ISOLATED FORM
+	0x00d6: 0xfec5,	# 	ARABIC LETTER ZAH ISOLATED FORM
+	0x00d7: 0xfec9,	# 	ARABIC LETTER AIN ISOLATED FORM
+	0x00d8: 0xfeca,	# 	ARABIC LETTER AIN FINAL FORM
+	0x00d9: 0xfecb,	# 	ARABIC LETTER AIN INITIAL FORM
+	0x00da: 0xfecc,	# 	ARABIC LETTER AIN MEDIAL FORM
+	0x00db: 0xfecd,	# 	ARABIC LETTER GHAIN ISOLATED FORM
+	0x00dc: 0xfece,	# 	ARABIC LETTER GHAIN FINAL FORM
+	0x00dd: 0xfecf,	# 	ARABIC LETTER GHAIN INITIAL FORM
+	0x00de: 0xfed0,	# 	ARABIC LETTER GHAIN MEDIAL FORM
+	0x00df: 0xfed1,	# 	ARABIC LETTER FEH ISOLATED FORM
+	0x00e0: 0xfed3,	# 	ARABIC LETTER FEH INITIAL FORM
+	0x00e1: 0xfed5,	# 	ARABIC LETTER QAF ISOLATED FORM
+	0x00e2: 0xfed7,	# 	ARABIC LETTER QAF INITIAL FORM
+	0x00e3: 0xfed9,	# 	ARABIC LETTER KAF ISOLATED FORM
+	0x00e4: 0xfedb,	# 	ARABIC LETTER KAF INITIAL FORM
+	0x00e5: 0xfb92,	# 	ARABIC LETTER GAF ISOLATED FORM
+	0x00e6: 0xfb94,	# 	ARABIC LETTER GAF INITIAL FORM
+	0x00e7: 0xfedd,	# 	ARABIC LETTER LAM ISOLATED FORM
+	0x00e8: 0xfedf,	# 	ARABIC LETTER LAM INITIAL FORM
+	0x00e9: 0xfee0,	# 	ARABIC LETTER LAM MEDIAL FORM
+	0x00ea: 0xfee1,	# 	ARABIC LETTER MEEM ISOLATED FORM
+	0x00eb: 0xfee3,	# 	ARABIC LETTER MEEM INITIAL FORM
+	0x00ec: 0xfb9e,	# 	ARABIC LETTER NOON GHUNNA ISOLATED FORM
+	0x00ed: 0xfee5,	# 	ARABIC LETTER NOON ISOLATED FORM
+	0x00ee: 0xfee7,	# 	ARABIC LETTER NOON INITIAL FORM
+	0x00ef: 0xfe85,	# 	ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+	0x00f0: 0xfeed,	# 	ARABIC LETTER WAW ISOLATED FORM
+	0x00f1: 0xfba6,	# 	ARABIC LETTER HEH GOAL ISOLATED FORM
+	0x00f2: 0xfba8,	# 	ARABIC LETTER HEH GOAL INITIAL FORM
+	0x00f3: 0xfba9,	# 	ARABIC LETTER HEH GOAL MEDIAL FORM
+	0x00f4: 0xfbaa,	# 	ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM
+	0x00f5: 0xfe80,	# 	ARABIC LETTER HAMZA ISOLATED FORM
+	0x00f6: 0xfe89,	# 	ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM
+	0x00f7: 0xfe8a,	# 	ARABIC LETTER YEH WITH HAMZA ABOVE FINAL FORM
+	0x00f8: 0xfe8b,	# 	ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+	0x00f9: 0xfef1,	# 	ARABIC LETTER YEH ISOLATED FORM
+	0x00fa: 0xfef2,	# 	ARABIC LETTER YEH FINAL FORM
+	0x00fb: 0xfef3,	# 	ARABIC LETTER YEH INITIAL FORM
+	0x00fc: 0xfbb0,	# 	ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM
+	0x00fd: 0xfbae,	# 	ARABIC LETTER YEH BARREE ISOLATED FORM
+	0x00fe: 0xfe7c,	# 	ARABIC SHADDA ISOLATED FORM
+	0x00ff: 0xfe7d,	# 	ARABIC SHADDA MEDIAL FORM
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1026.py b/Lib/encodings/cp1026.py
new file mode 100644
index 0000000..ae8086f
--- /dev/null
+++ b/Lib/encodings/cp1026.py
@@ -0,0 +1,282 @@
+""" Python Character Mapping Codec generated from 'CP1026.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0004: 0x009c,	# CONTROL
+	0x0005: 0x0009,	# HORIZONTAL TABULATION
+	0x0006: 0x0086,	# CONTROL
+	0x0007: 0x007f,	# DELETE
+	0x0008: 0x0097,	# CONTROL
+	0x0009: 0x008d,	# CONTROL
+	0x000a: 0x008e,	# CONTROL
+	0x0014: 0x009d,	# CONTROL
+	0x0015: 0x0085,	# CONTROL
+	0x0016: 0x0008,	# BACKSPACE
+	0x0017: 0x0087,	# CONTROL
+	0x001a: 0x0092,	# CONTROL
+	0x001b: 0x008f,	# CONTROL
+	0x0020: 0x0080,	# CONTROL
+	0x0021: 0x0081,	# CONTROL
+	0x0022: 0x0082,	# CONTROL
+	0x0023: 0x0083,	# CONTROL
+	0x0024: 0x0084,	# CONTROL
+	0x0025: 0x000a,	# LINE FEED
+	0x0026: 0x0017,	# END OF TRANSMISSION BLOCK
+	0x0027: 0x001b,	# ESCAPE
+	0x0028: 0x0088,	# CONTROL
+	0x0029: 0x0089,	# CONTROL
+	0x002a: 0x008a,	# CONTROL
+	0x002b: 0x008b,	# CONTROL
+	0x002c: 0x008c,	# CONTROL
+	0x002d: 0x0005,	# ENQUIRY
+	0x002e: 0x0006,	# ACKNOWLEDGE
+	0x002f: 0x0007,	# BELL
+	0x0030: 0x0090,	# CONTROL
+	0x0031: 0x0091,	# CONTROL
+	0x0032: 0x0016,	# SYNCHRONOUS IDLE
+	0x0033: 0x0093,	# CONTROL
+	0x0034: 0x0094,	# CONTROL
+	0x0035: 0x0095,	# CONTROL
+	0x0036: 0x0096,	# CONTROL
+	0x0037: 0x0004,	# END OF TRANSMISSION
+	0x0038: 0x0098,	# CONTROL
+	0x0039: 0x0099,	# CONTROL
+	0x003a: 0x009a,	# CONTROL
+	0x003b: 0x009b,	# CONTROL
+	0x003c: 0x0014,	# DEVICE CONTROL FOUR
+	0x003d: 0x0015,	# NEGATIVE ACKNOWLEDGE
+	0x003e: 0x009e,	# CONTROL
+	0x003f: 0x001a,	# SUBSTITUTE
+	0x0040: 0x0020,	# SPACE
+	0x0041: 0x00a0,	# NO-BREAK SPACE
+	0x0042: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0043: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0044: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0045: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0046: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x0047: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0048: 0x007b,	# LEFT CURLY BRACKET
+	0x0049: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x004a: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x004b: 0x002e,	# FULL STOP
+	0x004c: 0x003c,	# LESS-THAN SIGN
+	0x004d: 0x0028,	# LEFT PARENTHESIS
+	0x004e: 0x002b,	# PLUS SIGN
+	0x004f: 0x0021,	# EXCLAMATION MARK
+	0x0050: 0x0026,	# AMPERSAND
+	0x0051: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0052: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0053: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0054: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0055: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0056: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0057: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0058: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0059: 0x00df,	# LATIN SMALL LETTER SHARP S (GERMAN)
+	0x005a: 0x011e,	# LATIN CAPITAL LETTER G WITH BREVE
+	0x005b: 0x0130,	# LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x005c: 0x002a,	# ASTERISK
+	0x005d: 0x0029,	# RIGHT PARENTHESIS
+	0x005e: 0x003b,	# SEMICOLON
+	0x005f: 0x005e,	# CIRCUMFLEX ACCENT
+	0x0060: 0x002d,	# HYPHEN-MINUS
+	0x0061: 0x002f,	# SOLIDUS
+	0x0062: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x0063: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0064: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x0065: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x0066: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x0067: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0068: 0x005b,	# LEFT SQUARE BRACKET
+	0x0069: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x006a: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+	0x006b: 0x002c,	# COMMA
+	0x006c: 0x0025,	# PERCENT SIGN
+	0x006d: 0x005f,	# LOW LINE
+	0x006e: 0x003e,	# GREATER-THAN SIGN
+	0x006f: 0x003f,	# QUESTION MARK
+	0x0070: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x0071: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0072: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x0073: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x0074: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x0075: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x0076: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x0077: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x0078: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x0079: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x007a: 0x003a,	# COLON
+	0x007b: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x007c: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x007d: 0x0027,	# APOSTROPHE
+	0x007e: 0x003d,	# EQUALS SIGN
+	0x007f: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0080: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x0081: 0x0061,	# LATIN SMALL LETTER A
+	0x0082: 0x0062,	# LATIN SMALL LETTER B
+	0x0083: 0x0063,	# LATIN SMALL LETTER C
+	0x0084: 0x0064,	# LATIN SMALL LETTER D
+	0x0085: 0x0065,	# LATIN SMALL LETTER E
+	0x0086: 0x0066,	# LATIN SMALL LETTER F
+	0x0087: 0x0067,	# LATIN SMALL LETTER G
+	0x0088: 0x0068,	# LATIN SMALL LETTER H
+	0x0089: 0x0069,	# LATIN SMALL LETTER I
+	0x008a: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008b: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008c: 0x007d,	# RIGHT CURLY BRACKET
+	0x008d: 0x0060,	# GRAVE ACCENT
+	0x008e: 0x00a6,	# BROKEN BAR
+	0x008f: 0x00b1,	# PLUS-MINUS SIGN
+	0x0090: 0x00b0,	# DEGREE SIGN
+	0x0091: 0x006a,	# LATIN SMALL LETTER J
+	0x0092: 0x006b,	# LATIN SMALL LETTER K
+	0x0093: 0x006c,	# LATIN SMALL LETTER L
+	0x0094: 0x006d,	# LATIN SMALL LETTER M
+	0x0095: 0x006e,	# LATIN SMALL LETTER N
+	0x0096: 0x006f,	# LATIN SMALL LETTER O
+	0x0097: 0x0070,	# LATIN SMALL LETTER P
+	0x0098: 0x0071,	# LATIN SMALL LETTER Q
+	0x0099: 0x0072,	# LATIN SMALL LETTER R
+	0x009a: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x009b: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x009c: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x009d: 0x00b8,	# CEDILLA
+	0x009e: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x009f: 0x00a4,	# CURRENCY SIGN
+	0x00a0: 0x00b5,	# MICRO SIGN
+	0x00a1: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x00a2: 0x0073,	# LATIN SMALL LETTER S
+	0x00a3: 0x0074,	# LATIN SMALL LETTER T
+	0x00a4: 0x0075,	# LATIN SMALL LETTER U
+	0x00a5: 0x0076,	# LATIN SMALL LETTER V
+	0x00a6: 0x0077,	# LATIN SMALL LETTER W
+	0x00a7: 0x0078,	# LATIN SMALL LETTER X
+	0x00a8: 0x0079,	# LATIN SMALL LETTER Y
+	0x00a9: 0x007a,	# LATIN SMALL LETTER Z
+	0x00aa: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ab: 0x00bf,	# INVERTED QUESTION MARK
+	0x00ac: 0x005d,	# RIGHT SQUARE BRACKET
+	0x00ad: 0x0024,	# DOLLAR SIGN
+	0x00ae: 0x0040,	# COMMERCIAL AT
+	0x00af: 0x00ae,	# REGISTERED SIGN
+	0x00b0: 0x00a2,	# CENT SIGN
+	0x00b1: 0x00a3,	# POUND SIGN
+	0x00b2: 0x00a5,	# YEN SIGN
+	0x00b3: 0x00b7,	# MIDDLE DOT
+	0x00b4: 0x00a9,	# COPYRIGHT SIGN
+	0x00b5: 0x00a7,	# SECTION SIGN
+	0x00b7: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00b8: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00b9: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00ba: 0x00ac,	# NOT SIGN
+	0x00bb: 0x007c,	# VERTICAL LINE
+	0x00bc: 0x00af,	# MACRON
+	0x00bd: 0x00a8,	# DIAERESIS
+	0x00be: 0x00b4,	# ACUTE ACCENT
+	0x00bf: 0x00d7,	# MULTIPLICATION SIGN
+	0x00c0: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x00c1: 0x0041,	# LATIN CAPITAL LETTER A
+	0x00c2: 0x0042,	# LATIN CAPITAL LETTER B
+	0x00c3: 0x0043,	# LATIN CAPITAL LETTER C
+	0x00c4: 0x0044,	# LATIN CAPITAL LETTER D
+	0x00c5: 0x0045,	# LATIN CAPITAL LETTER E
+	0x00c6: 0x0046,	# LATIN CAPITAL LETTER F
+	0x00c7: 0x0047,	# LATIN CAPITAL LETTER G
+	0x00c8: 0x0048,	# LATIN CAPITAL LETTER H
+	0x00c9: 0x0049,	# LATIN CAPITAL LETTER I
+	0x00ca: 0x00ad,	# SOFT HYPHEN
+	0x00cb: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x00cc: 0x007e,	# TILDE
+	0x00cd: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x00ce: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00cf: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00d0: 0x011f,	# LATIN SMALL LETTER G WITH BREVE
+	0x00d1: 0x004a,	# LATIN CAPITAL LETTER J
+	0x00d2: 0x004b,	# LATIN CAPITAL LETTER K
+	0x00d3: 0x004c,	# LATIN CAPITAL LETTER L
+	0x00d4: 0x004d,	# LATIN CAPITAL LETTER M
+	0x00d5: 0x004e,	# LATIN CAPITAL LETTER N
+	0x00d6: 0x004f,	# LATIN CAPITAL LETTER O
+	0x00d7: 0x0050,	# LATIN CAPITAL LETTER P
+	0x00d8: 0x0051,	# LATIN CAPITAL LETTER Q
+	0x00d9: 0x0052,	# LATIN CAPITAL LETTER R
+	0x00da: 0x00b9,	# SUPERSCRIPT ONE
+	0x00db: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x00dc: 0x005c,	# REVERSE SOLIDUS
+	0x00dd: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x00de: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00df: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00e0: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00e1: 0x00f7,	# DIVISION SIGN
+	0x00e2: 0x0053,	# LATIN CAPITAL LETTER S
+	0x00e3: 0x0054,	# LATIN CAPITAL LETTER T
+	0x00e4: 0x0055,	# LATIN CAPITAL LETTER U
+	0x00e5: 0x0056,	# LATIN CAPITAL LETTER V
+	0x00e6: 0x0057,	# LATIN CAPITAL LETTER W
+	0x00e7: 0x0058,	# LATIN CAPITAL LETTER X
+	0x00e8: 0x0059,	# LATIN CAPITAL LETTER Y
+	0x00e9: 0x005a,	# LATIN CAPITAL LETTER Z
+	0x00ea: 0x00b2,	# SUPERSCRIPT TWO
+	0x00eb: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00ec: 0x0023,	# NUMBER SIGN
+	0x00ed: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00f0: 0x0030,	# DIGIT ZERO
+	0x00f1: 0x0031,	# DIGIT ONE
+	0x00f2: 0x0032,	# DIGIT TWO
+	0x00f3: 0x0033,	# DIGIT THREE
+	0x00f4: 0x0034,	# DIGIT FOUR
+	0x00f5: 0x0035,	# DIGIT FIVE
+	0x00f6: 0x0036,	# DIGIT SIX
+	0x00f7: 0x0037,	# DIGIT SEVEN
+	0x00f8: 0x0038,	# DIGIT EIGHT
+	0x00f9: 0x0039,	# DIGIT NINE
+	0x00fa: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fb: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00fc: 0x0022,	# QUOTATION MARK
+	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ff: 0x009f,	# CONTROL
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1250.py b/Lib/encodings/cp1250.py
new file mode 100644
index 0000000..d1276c4
--- /dev/null
+++ b/Lib/encodings/cp1250.py
@@ -0,0 +1,125 @@
+""" Python Character Mapping Codec generated from 'CP1250.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: None,	# UNDEFINED
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: None,	# UNDEFINED
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x015a,	# LATIN CAPITAL LETTER S WITH ACUTE
+	0x008d: 0x0164,	# LATIN CAPITAL LETTER T WITH CARON
+	0x008e: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x008f: 0x0179,	# LATIN CAPITAL LETTER Z WITH ACUTE
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: None,	# UNDEFINED
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x015b,	# LATIN SMALL LETTER S WITH ACUTE
+	0x009d: 0x0165,	# LATIN SMALL LETTER T WITH CARON
+	0x009e: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x009f: 0x017a,	# LATIN SMALL LETTER Z WITH ACUTE
+	0x00a1: 0x02c7,	# CARON
+	0x00a2: 0x02d8,	# BREVE
+	0x00a3: 0x0141,	# LATIN CAPITAL LETTER L WITH STROKE
+	0x00a5: 0x0104,	# LATIN CAPITAL LETTER A WITH OGONEK
+	0x00aa: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00af: 0x017b,	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00b2: 0x02db,	# OGONEK
+	0x00b3: 0x0142,	# LATIN SMALL LETTER L WITH STROKE
+	0x00b9: 0x0105,	# LATIN SMALL LETTER A WITH OGONEK
+	0x00ba: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+	0x00bc: 0x013d,	# LATIN CAPITAL LETTER L WITH CARON
+	0x00bd: 0x02dd,	# DOUBLE ACUTE ACCENT
+	0x00be: 0x013e,	# LATIN SMALL LETTER L WITH CARON
+	0x00bf: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00c0: 0x0154,	# LATIN CAPITAL LETTER R WITH ACUTE
+	0x00c3: 0x0102,	# LATIN CAPITAL LETTER A WITH BREVE
+	0x00c5: 0x0139,	# LATIN CAPITAL LETTER L WITH ACUTE
+	0x00c6: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
+	0x00c8: 0x010c,	# LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0118,	# LATIN CAPITAL LETTER E WITH OGONEK
+	0x00cc: 0x011a,	# LATIN CAPITAL LETTER E WITH CARON
+	0x00cf: 0x010e,	# LATIN CAPITAL LETTER D WITH CARON
+	0x00d0: 0x0110,	# LATIN CAPITAL LETTER D WITH STROKE
+	0x00d1: 0x0143,	# LATIN CAPITAL LETTER N WITH ACUTE
+	0x00d2: 0x0147,	# LATIN CAPITAL LETTER N WITH CARON
+	0x00d5: 0x0150,	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+	0x00d8: 0x0158,	# LATIN CAPITAL LETTER R WITH CARON
+	0x00d9: 0x016e,	# LATIN CAPITAL LETTER U WITH RING ABOVE
+	0x00db: 0x0170,	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+	0x00de: 0x0162,	# LATIN CAPITAL LETTER T WITH CEDILLA
+	0x00e0: 0x0155,	# LATIN SMALL LETTER R WITH ACUTE
+	0x00e3: 0x0103,	# LATIN SMALL LETTER A WITH BREVE
+	0x00e5: 0x013a,	# LATIN SMALL LETTER L WITH ACUTE
+	0x00e6: 0x0107,	# LATIN SMALL LETTER C WITH ACUTE
+	0x00e8: 0x010d,	# LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x0119,	# LATIN SMALL LETTER E WITH OGONEK
+	0x00ec: 0x011b,	# LATIN SMALL LETTER E WITH CARON
+	0x00ef: 0x010f,	# LATIN SMALL LETTER D WITH CARON
+	0x00f0: 0x0111,	# LATIN SMALL LETTER D WITH STROKE
+	0x00f1: 0x0144,	# LATIN SMALL LETTER N WITH ACUTE
+	0x00f2: 0x0148,	# LATIN SMALL LETTER N WITH CARON
+	0x00f5: 0x0151,	# LATIN SMALL LETTER O WITH DOUBLE ACUTE
+	0x00f8: 0x0159,	# LATIN SMALL LETTER R WITH CARON
+	0x00f9: 0x016f,	# LATIN SMALL LETTER U WITH RING ABOVE
+	0x00fb: 0x0171,	# LATIN SMALL LETTER U WITH DOUBLE ACUTE
+	0x00fe: 0x0163,	# LATIN SMALL LETTER T WITH CEDILLA
+	0x00ff: 0x02d9,	# DOT ABOVE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1251.py b/Lib/encodings/cp1251.py
new file mode 100644
index 0000000..42921e4
--- /dev/null
+++ b/Lib/encodings/cp1251.py
@@ -0,0 +1,159 @@
+""" Python Character Mapping Codec generated from 'CP1251.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0402,	# CYRILLIC CAPITAL LETTER DJE
+	0x0081: 0x0403,	# CYRILLIC CAPITAL LETTER GJE
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0453,	# CYRILLIC SMALL LETTER GJE
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x20ac,	# EURO SIGN
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: 0x0409,	# CYRILLIC CAPITAL LETTER LJE
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x040a,	# CYRILLIC CAPITAL LETTER NJE
+	0x008d: 0x040c,	# CYRILLIC CAPITAL LETTER KJE
+	0x008e: 0x040b,	# CYRILLIC CAPITAL LETTER TSHE
+	0x008f: 0x040f,	# CYRILLIC CAPITAL LETTER DZHE
+	0x0090: 0x0452,	# CYRILLIC SMALL LETTER DJE
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: None,	# UNDEFINED
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: 0x0459,	# CYRILLIC SMALL LETTER LJE
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x045a,	# CYRILLIC SMALL LETTER NJE
+	0x009d: 0x045c,	# CYRILLIC SMALL LETTER KJE
+	0x009e: 0x045b,	# CYRILLIC SMALL LETTER TSHE
+	0x009f: 0x045f,	# CYRILLIC SMALL LETTER DZHE
+	0x00a1: 0x040e,	# CYRILLIC CAPITAL LETTER SHORT U
+	0x00a2: 0x045e,	# CYRILLIC SMALL LETTER SHORT U
+	0x00a3: 0x0408,	# CYRILLIC CAPITAL LETTER JE
+	0x00a5: 0x0490,	# CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+	0x00a8: 0x0401,	# CYRILLIC CAPITAL LETTER IO
+	0x00aa: 0x0404,	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x00af: 0x0407,	# CYRILLIC CAPITAL LETTER YI
+	0x00b2: 0x0406,	# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00b3: 0x0456,	# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00b4: 0x0491,	# CYRILLIC SMALL LETTER GHE WITH UPTURN
+	0x00b8: 0x0451,	# CYRILLIC SMALL LETTER IO
+	0x00b9: 0x2116,	# NUMERO SIGN
+	0x00ba: 0x0454,	# CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x00bc: 0x0458,	# CYRILLIC SMALL LETTER JE
+	0x00bd: 0x0405,	# CYRILLIC CAPITAL LETTER DZE
+	0x00be: 0x0455,	# CYRILLIC SMALL LETTER DZE
+	0x00bf: 0x0457,	# CYRILLIC SMALL LETTER YI
+	0x00c0: 0x0410,	# CYRILLIC CAPITAL LETTER A
+	0x00c1: 0x0411,	# CYRILLIC CAPITAL LETTER BE
+	0x00c2: 0x0412,	# CYRILLIC CAPITAL LETTER VE
+	0x00c3: 0x0413,	# CYRILLIC CAPITAL LETTER GHE
+	0x00c4: 0x0414,	# CYRILLIC CAPITAL LETTER DE
+	0x00c5: 0x0415,	# CYRILLIC CAPITAL LETTER IE
+	0x00c6: 0x0416,	# CYRILLIC CAPITAL LETTER ZHE
+	0x00c7: 0x0417,	# CYRILLIC CAPITAL LETTER ZE
+	0x00c8: 0x0418,	# CYRILLIC CAPITAL LETTER I
+	0x00c9: 0x0419,	# CYRILLIC CAPITAL LETTER SHORT I
+	0x00ca: 0x041a,	# CYRILLIC CAPITAL LETTER KA
+	0x00cb: 0x041b,	# CYRILLIC CAPITAL LETTER EL
+	0x00cc: 0x041c,	# CYRILLIC CAPITAL LETTER EM
+	0x00cd: 0x041d,	# CYRILLIC CAPITAL LETTER EN
+	0x00ce: 0x041e,	# CYRILLIC CAPITAL LETTER O
+	0x00cf: 0x041f,	# CYRILLIC CAPITAL LETTER PE
+	0x00d0: 0x0420,	# CYRILLIC CAPITAL LETTER ER
+	0x00d1: 0x0421,	# CYRILLIC CAPITAL LETTER ES
+	0x00d2: 0x0422,	# CYRILLIC CAPITAL LETTER TE
+	0x00d3: 0x0423,	# CYRILLIC CAPITAL LETTER U
+	0x00d4: 0x0424,	# CYRILLIC CAPITAL LETTER EF
+	0x00d5: 0x0425,	# CYRILLIC CAPITAL LETTER HA
+	0x00d6: 0x0426,	# CYRILLIC CAPITAL LETTER TSE
+	0x00d7: 0x0427,	# CYRILLIC CAPITAL LETTER CHE
+	0x00d8: 0x0428,	# CYRILLIC CAPITAL LETTER SHA
+	0x00d9: 0x0429,	# CYRILLIC CAPITAL LETTER SHCHA
+	0x00da: 0x042a,	# CYRILLIC CAPITAL LETTER HARD SIGN
+	0x00db: 0x042b,	# CYRILLIC CAPITAL LETTER YERU
+	0x00dc: 0x042c,	# CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x00dd: 0x042d,	# CYRILLIC CAPITAL LETTER E
+	0x00de: 0x042e,	# CYRILLIC CAPITAL LETTER YU
+	0x00df: 0x042f,	# CYRILLIC CAPITAL LETTER YA
+	0x00e0: 0x0430,	# CYRILLIC SMALL LETTER A
+	0x00e1: 0x0431,	# CYRILLIC SMALL LETTER BE
+	0x00e2: 0x0432,	# CYRILLIC SMALL LETTER VE
+	0x00e3: 0x0433,	# CYRILLIC SMALL LETTER GHE
+	0x00e4: 0x0434,	# CYRILLIC SMALL LETTER DE
+	0x00e5: 0x0435,	# CYRILLIC SMALL LETTER IE
+	0x00e6: 0x0436,	# CYRILLIC SMALL LETTER ZHE
+	0x00e7: 0x0437,	# CYRILLIC SMALL LETTER ZE
+	0x00e8: 0x0438,	# CYRILLIC SMALL LETTER I
+	0x00e9: 0x0439,	# CYRILLIC SMALL LETTER SHORT I
+	0x00ea: 0x043a,	# CYRILLIC SMALL LETTER KA
+	0x00eb: 0x043b,	# CYRILLIC SMALL LETTER EL
+	0x00ec: 0x043c,	# CYRILLIC SMALL LETTER EM
+	0x00ed: 0x043d,	# CYRILLIC SMALL LETTER EN
+	0x00ee: 0x043e,	# CYRILLIC SMALL LETTER O
+	0x00ef: 0x043f,	# CYRILLIC SMALL LETTER PE
+	0x00f0: 0x0440,	# CYRILLIC SMALL LETTER ER
+	0x00f1: 0x0441,	# CYRILLIC SMALL LETTER ES
+	0x00f2: 0x0442,	# CYRILLIC SMALL LETTER TE
+	0x00f3: 0x0443,	# CYRILLIC SMALL LETTER U
+	0x00f4: 0x0444,	# CYRILLIC SMALL LETTER EF
+	0x00f5: 0x0445,	# CYRILLIC SMALL LETTER HA
+	0x00f6: 0x0446,	# CYRILLIC SMALL LETTER TSE
+	0x00f7: 0x0447,	# CYRILLIC SMALL LETTER CHE
+	0x00f8: 0x0448,	# CYRILLIC SMALL LETTER SHA
+	0x00f9: 0x0449,	# CYRILLIC SMALL LETTER SHCHA
+	0x00fa: 0x044a,	# CYRILLIC SMALL LETTER HARD SIGN
+	0x00fb: 0x044b,	# CYRILLIC SMALL LETTER YERU
+	0x00fc: 0x044c,	# CYRILLIC SMALL LETTER SOFT SIGN
+	0x00fd: 0x044d,	# CYRILLIC SMALL LETTER E
+	0x00fe: 0x044e,	# CYRILLIC SMALL LETTER YU
+	0x00ff: 0x044f,	# CYRILLIC SMALL LETTER YA
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1252.py b/Lib/encodings/cp1252.py
new file mode 100644
index 0000000..07a5358
--- /dev/null
+++ b/Lib/encodings/cp1252.py
@@ -0,0 +1,78 @@
+""" Python Character Mapping Codec generated from 'CP1252.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x008d: None,	# UNDEFINED
+	0x008e: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: 0x02dc,	# SMALL TILDE
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x009d: None,	# UNDEFINED
+	0x009e: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x009f: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1253.py b/Lib/encodings/cp1253.py
new file mode 100644
index 0000000..c84808a
--- /dev/null
+++ b/Lib/encodings/cp1253.py
@@ -0,0 +1,153 @@
+""" Python Character Mapping Codec generated from 'CP1253.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: None,	# UNDEFINED
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: None,	# UNDEFINED
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: None,	# UNDEFINED
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: None,	# UNDEFINED
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: None,	# UNDEFINED
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: None,	# UNDEFINED
+	0x009d: None,	# UNDEFINED
+	0x009e: None,	# UNDEFINED
+	0x009f: None,	# UNDEFINED
+	0x00a1: 0x0385,	# GREEK DIALYTIKA TONOS
+	0x00a2: 0x0386,	# GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x00aa: None,	# UNDEFINED
+	0x00af: 0x2015,	# HORIZONTAL BAR
+	0x00b4: 0x0384,	# GREEK TONOS
+	0x00b8: 0x0388,	# GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x00b9: 0x0389,	# GREEK CAPITAL LETTER ETA WITH TONOS
+	0x00ba: 0x038a,	# GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x00bc: 0x038c,	# GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x00be: 0x038e,	# GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x00bf: 0x038f,	# GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x00c0: 0x0390,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x00c1: 0x0391,	# GREEK CAPITAL LETTER ALPHA
+	0x00c2: 0x0392,	# GREEK CAPITAL LETTER BETA
+	0x00c3: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00c4: 0x0394,	# GREEK CAPITAL LETTER DELTA
+	0x00c5: 0x0395,	# GREEK CAPITAL LETTER EPSILON
+	0x00c6: 0x0396,	# GREEK CAPITAL LETTER ZETA
+	0x00c7: 0x0397,	# GREEK CAPITAL LETTER ETA
+	0x00c8: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00c9: 0x0399,	# GREEK CAPITAL LETTER IOTA
+	0x00ca: 0x039a,	# GREEK CAPITAL LETTER KAPPA
+	0x00cb: 0x039b,	# GREEK CAPITAL LETTER LAMDA
+	0x00cc: 0x039c,	# GREEK CAPITAL LETTER MU
+	0x00cd: 0x039d,	# GREEK CAPITAL LETTER NU
+	0x00ce: 0x039e,	# GREEK CAPITAL LETTER XI
+	0x00cf: 0x039f,	# GREEK CAPITAL LETTER OMICRON
+	0x00d0: 0x03a0,	# GREEK CAPITAL LETTER PI
+	0x00d1: 0x03a1,	# GREEK CAPITAL LETTER RHO
+	0x00d2: None,	# UNDEFINED
+	0x00d3: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00d4: 0x03a4,	# GREEK CAPITAL LETTER TAU
+	0x00d5: 0x03a5,	# GREEK CAPITAL LETTER UPSILON
+	0x00d6: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00d7: 0x03a7,	# GREEK CAPITAL LETTER CHI
+	0x00d8: 0x03a8,	# GREEK CAPITAL LETTER PSI
+	0x00d9: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00da: 0x03aa,	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x00db: 0x03ab,	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x00dc: 0x03ac,	# GREEK SMALL LETTER ALPHA WITH TONOS
+	0x00dd: 0x03ad,	# GREEK SMALL LETTER EPSILON WITH TONOS
+	0x00de: 0x03ae,	# GREEK SMALL LETTER ETA WITH TONOS
+	0x00df: 0x03af,	# GREEK SMALL LETTER IOTA WITH TONOS
+	0x00e0: 0x03b0,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x00e1: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e2: 0x03b2,	# GREEK SMALL LETTER BETA
+	0x00e3: 0x03b3,	# GREEK SMALL LETTER GAMMA
+	0x00e4: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00e5: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00e6: 0x03b6,	# GREEK SMALL LETTER ZETA
+	0x00e7: 0x03b7,	# GREEK SMALL LETTER ETA
+	0x00e8: 0x03b8,	# GREEK SMALL LETTER THETA
+	0x00e9: 0x03b9,	# GREEK SMALL LETTER IOTA
+	0x00ea: 0x03ba,	# GREEK SMALL LETTER KAPPA
+	0x00eb: 0x03bb,	# GREEK SMALL LETTER LAMDA
+	0x00ec: 0x03bc,	# GREEK SMALL LETTER MU
+	0x00ed: 0x03bd,	# GREEK SMALL LETTER NU
+	0x00ee: 0x03be,	# GREEK SMALL LETTER XI
+	0x00ef: 0x03bf,	# GREEK SMALL LETTER OMICRON
+	0x00f0: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00f1: 0x03c1,	# GREEK SMALL LETTER RHO
+	0x00f2: 0x03c2,	# GREEK SMALL LETTER FINAL SIGMA
+	0x00f3: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00f4: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00f5: 0x03c5,	# GREEK SMALL LETTER UPSILON
+	0x00f6: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00f7: 0x03c7,	# GREEK SMALL LETTER CHI
+	0x00f8: 0x03c8,	# GREEK SMALL LETTER PSI
+	0x00f9: 0x03c9,	# GREEK SMALL LETTER OMEGA
+	0x00fa: 0x03ca,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00fb: 0x03cb,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00fc: 0x03cc,	# GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00fd: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00fe: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
+	0x00ff: None,	# UNDEFINED
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1254.py b/Lib/encodings/cp1254.py
new file mode 100644
index 0000000..9897ecf
--- /dev/null
+++ b/Lib/encodings/cp1254.py
@@ -0,0 +1,84 @@
+""" Python Character Mapping Codec generated from 'CP1254.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: 0x02dc,	# SMALL TILDE
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x009d: None,	# UNDEFINED
+	0x009e: None,	# UNDEFINED
+	0x009f: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00d0: 0x011e,	# LATIN CAPITAL LETTER G WITH BREVE
+	0x00dd: 0x0130,	# LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x00de: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00f0: 0x011f,	# LATIN SMALL LETTER G WITH BREVE
+	0x00fd: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x00fe: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1255.py b/Lib/encodings/cp1255.py
new file mode 100644
index 0000000..5404b46
--- /dev/null
+++ b/Lib/encodings/cp1255.py
@@ -0,0 +1,145 @@
+""" Python Character Mapping Codec generated from 'CP1255.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: None,	# UNDEFINED
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: None,	# UNDEFINED
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: 0x02dc,	# SMALL TILDE
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: None,	# UNDEFINED
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: None,	# UNDEFINED
+	0x009d: None,	# UNDEFINED
+	0x009e: None,	# UNDEFINED
+	0x009f: None,	# UNDEFINED
+	0x00a4: 0x20aa,	# NEW SHEQEL SIGN
+	0x00aa: 0x00d7,	# MULTIPLICATION SIGN
+	0x00ba: 0x00f7,	# DIVISION SIGN
+	0x00c0: 0x05b0,	# HEBREW POINT SHEVA
+	0x00c1: 0x05b1,	# HEBREW POINT HATAF SEGOL
+	0x00c2: 0x05b2,	# HEBREW POINT HATAF PATAH
+	0x00c3: 0x05b3,	# HEBREW POINT HATAF QAMATS
+	0x00c4: 0x05b4,	# HEBREW POINT HIRIQ
+	0x00c5: 0x05b5,	# HEBREW POINT TSERE
+	0x00c6: 0x05b6,	# HEBREW POINT SEGOL
+	0x00c7: 0x05b7,	# HEBREW POINT PATAH
+	0x00c8: 0x05b8,	# HEBREW POINT QAMATS
+	0x00c9: 0x05b9,	# HEBREW POINT HOLAM
+	0x00ca: None,	# UNDEFINED
+	0x00cb: 0x05bb,	# HEBREW POINT QUBUTS
+	0x00cc: 0x05bc,	# HEBREW POINT DAGESH OR MAPIQ
+	0x00cd: 0x05bd,	# HEBREW POINT METEG
+	0x00ce: 0x05be,	# HEBREW PUNCTUATION MAQAF
+	0x00cf: 0x05bf,	# HEBREW POINT RAFE
+	0x00d0: 0x05c0,	# HEBREW PUNCTUATION PASEQ
+	0x00d1: 0x05c1,	# HEBREW POINT SHIN DOT
+	0x00d2: 0x05c2,	# HEBREW POINT SIN DOT
+	0x00d3: 0x05c3,	# HEBREW PUNCTUATION SOF PASUQ
+	0x00d4: 0x05f0,	# HEBREW LIGATURE YIDDISH DOUBLE VAV
+	0x00d5: 0x05f1,	# HEBREW LIGATURE YIDDISH VAV YOD
+	0x00d6: 0x05f2,	# HEBREW LIGATURE YIDDISH DOUBLE YOD
+	0x00d7: 0x05f3,	# HEBREW PUNCTUATION GERESH
+	0x00d8: 0x05f4,	# HEBREW PUNCTUATION GERSHAYIM
+	0x00d9: None,	# UNDEFINED
+	0x00da: None,	# UNDEFINED
+	0x00db: None,	# UNDEFINED
+	0x00dc: None,	# UNDEFINED
+	0x00dd: None,	# UNDEFINED
+	0x00de: None,	# UNDEFINED
+	0x00df: None,	# UNDEFINED
+	0x00e0: 0x05d0,	# HEBREW LETTER ALEF
+	0x00e1: 0x05d1,	# HEBREW LETTER BET
+	0x00e2: 0x05d2,	# HEBREW LETTER GIMEL
+	0x00e3: 0x05d3,	# HEBREW LETTER DALET
+	0x00e4: 0x05d4,	# HEBREW LETTER HE
+	0x00e5: 0x05d5,	# HEBREW LETTER VAV
+	0x00e6: 0x05d6,	# HEBREW LETTER ZAYIN
+	0x00e7: 0x05d7,	# HEBREW LETTER HET
+	0x00e8: 0x05d8,	# HEBREW LETTER TET
+	0x00e9: 0x05d9,	# HEBREW LETTER YOD
+	0x00ea: 0x05da,	# HEBREW LETTER FINAL KAF
+	0x00eb: 0x05db,	# HEBREW LETTER KAF
+	0x00ec: 0x05dc,	# HEBREW LETTER LAMED
+	0x00ed: 0x05dd,	# HEBREW LETTER FINAL MEM
+	0x00ee: 0x05de,	# HEBREW LETTER MEM
+	0x00ef: 0x05df,	# HEBREW LETTER FINAL NUN
+	0x00f0: 0x05e0,	# HEBREW LETTER NUN
+	0x00f1: 0x05e1,	# HEBREW LETTER SAMEKH
+	0x00f2: 0x05e2,	# HEBREW LETTER AYIN
+	0x00f3: 0x05e3,	# HEBREW LETTER FINAL PE
+	0x00f4: 0x05e4,	# HEBREW LETTER PE
+	0x00f5: 0x05e5,	# HEBREW LETTER FINAL TSADI
+	0x00f6: 0x05e6,	# HEBREW LETTER TSADI
+	0x00f7: 0x05e7,	# HEBREW LETTER QOF
+	0x00f8: 0x05e8,	# HEBREW LETTER RESH
+	0x00f9: 0x05e9,	# HEBREW LETTER SHIN
+	0x00fa: 0x05ea,	# HEBREW LETTER TAV
+	0x00fb: None,	# UNDEFINED
+	0x00fc: None,	# UNDEFINED
+	0x00fd: 0x200e,	# LEFT-TO-RIGHT MARK
+	0x00fe: 0x200f,	# RIGHT-TO-LEFT MARK
+	0x00ff: None,	# UNDEFINED
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1256.py b/Lib/encodings/cp1256.py
new file mode 100644
index 0000000..6bb02dd
--- /dev/null
+++ b/Lib/encodings/cp1256.py
@@ -0,0 +1,131 @@
+""" Python Character Mapping Codec generated from 'CP1256.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: 0x067e,	# ARABIC LETTER PEH
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: 0x0679,	# ARABIC LETTER TTEH
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x008d: 0x0686,	# ARABIC LETTER TCHEH
+	0x008e: 0x0698,	# ARABIC LETTER JEH
+	0x008f: 0x0688,	# ARABIC LETTER DDAL
+	0x0090: 0x06af,	# ARABIC LETTER GAF
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: 0x06a9,	# ARABIC LETTER KEHEH
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: 0x0691,	# ARABIC LETTER RREH
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x009d: 0x200c,	# ZERO WIDTH NON-JOINER
+	0x009e: 0x200d,	# ZERO WIDTH JOINER
+	0x009f: 0x06ba,	# ARABIC LETTER NOON GHUNNA
+	0x00a1: 0x060c,	# ARABIC COMMA
+	0x00aa: 0x06be,	# ARABIC LETTER HEH DOACHASHMEE
+	0x00ba: 0x061b,	# ARABIC SEMICOLON
+	0x00bf: 0x061f,	# ARABIC QUESTION MARK
+	0x00c0: 0x06c1,	# ARABIC LETTER HEH GOAL
+	0x00c1: 0x0621,	# ARABIC LETTER HAMZA
+	0x00c2: 0x0622,	# ARABIC LETTER ALEF WITH MADDA ABOVE
+	0x00c3: 0x0623,	# ARABIC LETTER ALEF WITH HAMZA ABOVE
+	0x00c4: 0x0624,	# ARABIC LETTER WAW WITH HAMZA ABOVE
+	0x00c5: 0x0625,	# ARABIC LETTER ALEF WITH HAMZA BELOW
+	0x00c6: 0x0626,	# ARABIC LETTER YEH WITH HAMZA ABOVE
+	0x00c7: 0x0627,	# ARABIC LETTER ALEF
+	0x00c8: 0x0628,	# ARABIC LETTER BEH
+	0x00c9: 0x0629,	# ARABIC LETTER TEH MARBUTA
+	0x00ca: 0x062a,	# ARABIC LETTER TEH
+	0x00cb: 0x062b,	# ARABIC LETTER THEH
+	0x00cc: 0x062c,	# ARABIC LETTER JEEM
+	0x00cd: 0x062d,	# ARABIC LETTER HAH
+	0x00ce: 0x062e,	# ARABIC LETTER KHAH
+	0x00cf: 0x062f,	# ARABIC LETTER DAL
+	0x00d0: 0x0630,	# ARABIC LETTER THAL
+	0x00d1: 0x0631,	# ARABIC LETTER REH
+	0x00d2: 0x0632,	# ARABIC LETTER ZAIN
+	0x00d3: 0x0633,	# ARABIC LETTER SEEN
+	0x00d4: 0x0634,	# ARABIC LETTER SHEEN
+	0x00d5: 0x0635,	# ARABIC LETTER SAD
+	0x00d6: 0x0636,	# ARABIC LETTER DAD
+	0x00d8: 0x0637,	# ARABIC LETTER TAH
+	0x00d9: 0x0638,	# ARABIC LETTER ZAH
+	0x00da: 0x0639,	# ARABIC LETTER AIN
+	0x00db: 0x063a,	# ARABIC LETTER GHAIN
+	0x00dc: 0x0640,	# ARABIC TATWEEL
+	0x00dd: 0x0641,	# ARABIC LETTER FEH
+	0x00de: 0x0642,	# ARABIC LETTER QAF
+	0x00df: 0x0643,	# ARABIC LETTER KAF
+	0x00e1: 0x0644,	# ARABIC LETTER LAM
+	0x00e3: 0x0645,	# ARABIC LETTER MEEM
+	0x00e4: 0x0646,	# ARABIC LETTER NOON
+	0x00e5: 0x0647,	# ARABIC LETTER HEH
+	0x00e6: 0x0648,	# ARABIC LETTER WAW
+	0x00ec: 0x0649,	# ARABIC LETTER ALEF MAKSURA
+	0x00ed: 0x064a,	# ARABIC LETTER YEH
+	0x00f0: 0x064b,	# ARABIC FATHATAN
+	0x00f1: 0x064c,	# ARABIC DAMMATAN
+	0x00f2: 0x064d,	# ARABIC KASRATAN
+	0x00f3: 0x064e,	# ARABIC FATHA
+	0x00f5: 0x064f,	# ARABIC DAMMA
+	0x00f6: 0x0650,	# ARABIC KASRA
+	0x00f8: 0x0651,	# ARABIC SHADDA
+	0x00fa: 0x0652,	# ARABIC SUKUN
+	0x00fd: 0x200e,	# LEFT-TO-RIGHT MARK
+	0x00fe: 0x200f,	# RIGHT-TO-LEFT MARK
+	0x00ff: 0x06d2,	# ARABIC LETTER YEH BARREE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1257.py b/Lib/encodings/cp1257.py
new file mode 100644
index 0000000..ded826c
--- /dev/null
+++ b/Lib/encodings/cp1257.py
@@ -0,0 +1,133 @@
+""" Python Character Mapping Codec generated from 'CP1257.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: None,	# UNDEFINED
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: None,	# UNDEFINED
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: None,	# UNDEFINED
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: None,	# UNDEFINED
+	0x008d: 0x00a8,	# DIAERESIS
+	0x008e: 0x02c7,	# CARON
+	0x008f: 0x00b8,	# CEDILLA
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: None,	# UNDEFINED
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: None,	# UNDEFINED
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: None,	# UNDEFINED
+	0x009d: 0x00af,	# MACRON
+	0x009e: 0x02db,	# OGONEK
+	0x009f: None,	# UNDEFINED
+	0x00a1: None,	# UNDEFINED
+	0x00a5: None,	# UNDEFINED
+	0x00a8: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x00aa: 0x0156,	# LATIN CAPITAL LETTER R WITH CEDILLA
+	0x00af: 0x00c6,	# LATIN CAPITAL LETTER AE
+	0x00b8: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x00ba: 0x0157,	# LATIN SMALL LETTER R WITH CEDILLA
+	0x00bf: 0x00e6,	# LATIN SMALL LETTER AE
+	0x00c0: 0x0104,	# LATIN CAPITAL LETTER A WITH OGONEK
+	0x00c1: 0x012e,	# LATIN CAPITAL LETTER I WITH OGONEK
+	0x00c2: 0x0100,	# LATIN CAPITAL LETTER A WITH MACRON
+	0x00c3: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
+	0x00c6: 0x0118,	# LATIN CAPITAL LETTER E WITH OGONEK
+	0x00c7: 0x0112,	# LATIN CAPITAL LETTER E WITH MACRON
+	0x00c8: 0x010c,	# LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0179,	# LATIN CAPITAL LETTER Z WITH ACUTE
+	0x00cb: 0x0116,	# LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x00cc: 0x0122,	# LATIN CAPITAL LETTER G WITH CEDILLA
+	0x00cd: 0x0136,	# LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00ce: 0x012a,	# LATIN CAPITAL LETTER I WITH MACRON
+	0x00cf: 0x013b,	# LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00d0: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x00d1: 0x0143,	# LATIN CAPITAL LETTER N WITH ACUTE
+	0x00d2: 0x0145,	# LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00d4: 0x014c,	# LATIN CAPITAL LETTER O WITH MACRON
+	0x00d8: 0x0172,	# LATIN CAPITAL LETTER U WITH OGONEK
+	0x00d9: 0x0141,	# LATIN CAPITAL LETTER L WITH STROKE
+	0x00da: 0x015a,	# LATIN CAPITAL LETTER S WITH ACUTE
+	0x00db: 0x016a,	# LATIN CAPITAL LETTER U WITH MACRON
+	0x00dd: 0x017b,	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00de: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x00e0: 0x0105,	# LATIN SMALL LETTER A WITH OGONEK
+	0x00e1: 0x012f,	# LATIN SMALL LETTER I WITH OGONEK
+	0x00e2: 0x0101,	# LATIN SMALL LETTER A WITH MACRON
+	0x00e3: 0x0107,	# LATIN SMALL LETTER C WITH ACUTE
+	0x00e6: 0x0119,	# LATIN SMALL LETTER E WITH OGONEK
+	0x00e7: 0x0113,	# LATIN SMALL LETTER E WITH MACRON
+	0x00e8: 0x010d,	# LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x017a,	# LATIN SMALL LETTER Z WITH ACUTE
+	0x00eb: 0x0117,	# LATIN SMALL LETTER E WITH DOT ABOVE
+	0x00ec: 0x0123,	# LATIN SMALL LETTER G WITH CEDILLA
+	0x00ed: 0x0137,	# LATIN SMALL LETTER K WITH CEDILLA
+	0x00ee: 0x012b,	# LATIN SMALL LETTER I WITH MACRON
+	0x00ef: 0x013c,	# LATIN SMALL LETTER L WITH CEDILLA
+	0x00f0: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x00f1: 0x0144,	# LATIN SMALL LETTER N WITH ACUTE
+	0x00f2: 0x0146,	# LATIN SMALL LETTER N WITH CEDILLA
+	0x00f4: 0x014d,	# LATIN SMALL LETTER O WITH MACRON
+	0x00f8: 0x0173,	# LATIN SMALL LETTER U WITH OGONEK
+	0x00f9: 0x0142,	# LATIN SMALL LETTER L WITH STROKE
+	0x00fa: 0x015b,	# LATIN SMALL LETTER S WITH ACUTE
+	0x00fb: 0x016b,	# LATIN SMALL LETTER U WITH MACRON
+	0x00fd: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00fe: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x00ff: 0x02d9,	# DOT ABOVE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp1258.py b/Lib/encodings/cp1258.py
new file mode 100644
index 0000000..955253c
--- /dev/null
+++ b/Lib/encodings/cp1258.py
@@ -0,0 +1,92 @@
+""" Python Character Mapping Codec generated from 'CP1258.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x0083: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x0084: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: 0x2020,	# DAGGER
+	0x0087: 0x2021,	# DOUBLE DAGGER
+	0x0088: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x0089: 0x2030,	# PER MILLE SIGN
+	0x008a: None,	# UNDEFINED
+	0x008b: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x008c: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: 0x02dc,	# SMALL TILDE
+	0x0099: 0x2122,	# TRADE MARK SIGN
+	0x009a: None,	# UNDEFINED
+	0x009b: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x009c: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x009d: None,	# UNDEFINED
+	0x009e: None,	# UNDEFINED
+	0x009f: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00c3: 0x0102,	# LATIN CAPITAL LETTER A WITH BREVE
+	0x00cc: 0x0300,	# COMBINING GRAVE ACCENT
+	0x00d0: 0x0110,	# LATIN CAPITAL LETTER D WITH STROKE
+	0x00d2: 0x0309,	# COMBINING HOOK ABOVE
+	0x00d5: 0x01a0,	# LATIN CAPITAL LETTER O WITH HORN
+	0x00dd: 0x01af,	# LATIN CAPITAL LETTER U WITH HORN
+	0x00de: 0x0303,	# COMBINING TILDE
+	0x00e3: 0x0103,	# LATIN SMALL LETTER A WITH BREVE
+	0x00ec: 0x0301,	# COMBINING ACUTE ACCENT
+	0x00f0: 0x0111,	# LATIN SMALL LETTER D WITH STROKE
+	0x00f2: 0x0323,	# COMBINING DOT BELOW
+	0x00f5: 0x01a1,	# LATIN SMALL LETTER O WITH HORN
+	0x00fd: 0x01b0,	# LATIN SMALL LETTER U WITH HORN
+	0x00fe: 0x20ab,	# DONG SIGN
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp424.py b/Lib/encodings/cp424.py
new file mode 100644
index 0000000..c4abaec
--- /dev/null
+++ b/Lib/encodings/cp424.py
@@ -0,0 +1,282 @@
+""" Python Character Mapping Codec generated from 'CP424.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0004: 0x009c,	# SELECT
+	0x0005: 0x0009,	# HORIZONTAL TABULATION
+	0x0006: 0x0086,	# REQUIRED NEW LINE
+	0x0007: 0x007f,	# DELETE
+	0x0008: 0x0097,	# GRAPHIC ESCAPE
+	0x0009: 0x008d,	# SUPERSCRIPT
+	0x000a: 0x008e,	# REPEAT
+	0x0014: 0x009d,	# RESTORE/ENABLE PRESENTATION
+	0x0015: 0x0085,	# NEW LINE
+	0x0016: 0x0008,	# BACKSPACE
+	0x0017: 0x0087,	# PROGRAM OPERATOR COMMUNICATION
+	0x001a: 0x0092,	# UNIT BACK SPACE
+	0x001b: 0x008f,	# CUSTOMER USE ONE
+	0x0020: 0x0080,	# DIGIT SELECT
+	0x0021: 0x0081,	# START OF SIGNIFICANCE
+	0x0022: 0x0082,	# FIELD SEPARATOR
+	0x0023: 0x0083,	# WORD UNDERSCORE
+	0x0024: 0x0084,	# BYPASS OR INHIBIT PRESENTATION
+	0x0025: 0x000a,	# LINE FEED
+	0x0026: 0x0017,	# END OF TRANSMISSION BLOCK
+	0x0027: 0x001b,	# ESCAPE
+	0x0028: 0x0088,	# SET ATTRIBUTE
+	0x0029: 0x0089,	# START FIELD EXTENDED
+	0x002a: 0x008a,	# SET MODE OR SWITCH
+	0x002b: 0x008b,	# CONTROL SEQUENCE PREFIX
+	0x002c: 0x008c,	# MODIFY FIELD ATTRIBUTE
+	0x002d: 0x0005,	# ENQUIRY
+	0x002e: 0x0006,	# ACKNOWLEDGE
+	0x002f: 0x0007,	# BELL
+	0x0030: 0x0090,	# <reserved>
+	0x0031: 0x0091,	# <reserved>
+	0x0032: 0x0016,	# SYNCHRONOUS IDLE
+	0x0033: 0x0093,	# INDEX RETURN
+	0x0034: 0x0094,	# PRESENTATION POSITION
+	0x0035: 0x0095,	# TRANSPARENT
+	0x0036: 0x0096,	# NUMERIC BACKSPACE
+	0x0037: 0x0004,	# END OF TRANSMISSION
+	0x0038: 0x0098,	# SUBSCRIPT
+	0x0039: 0x0099,	# INDENT TABULATION
+	0x003a: 0x009a,	# REVERSE FORM FEED
+	0x003b: 0x009b,	# CUSTOMER USE THREE
+	0x003c: 0x0014,	# DEVICE CONTROL FOUR
+	0x003d: 0x0015,	# NEGATIVE ACKNOWLEDGE
+	0x003e: 0x009e,	# <reserved>
+	0x003f: 0x001a,	# SUBSTITUTE
+	0x0040: 0x0020,	# SPACE
+	0x0041: 0x05d0,	# HEBREW LETTER ALEF
+	0x0042: 0x05d1,	# HEBREW LETTER BET
+	0x0043: 0x05d2,	# HEBREW LETTER GIMEL
+	0x0044: 0x05d3,	# HEBREW LETTER DALET
+	0x0045: 0x05d4,	# HEBREW LETTER HE
+	0x0046: 0x05d5,	# HEBREW LETTER VAV
+	0x0047: 0x05d6,	# HEBREW LETTER ZAYIN
+	0x0048: 0x05d7,	# HEBREW LETTER HET
+	0x0049: 0x05d8,	# HEBREW LETTER TET
+	0x004a: 0x00a2,	# CENT SIGN
+	0x004b: 0x002e,	# FULL STOP
+	0x004c: 0x003c,	# LESS-THAN SIGN
+	0x004d: 0x0028,	# LEFT PARENTHESIS
+	0x004e: 0x002b,	# PLUS SIGN
+	0x004f: 0x007c,	# VERTICAL LINE
+	0x0050: 0x0026,	# AMPERSAND
+	0x0051: 0x05d9,	# HEBREW LETTER YOD
+	0x0052: 0x05da,	# HEBREW LETTER FINAL KAF
+	0x0053: 0x05db,	# HEBREW LETTER KAF
+	0x0054: 0x05dc,	# HEBREW LETTER LAMED
+	0x0055: 0x05dd,	# HEBREW LETTER FINAL MEM
+	0x0056: 0x05de,	# HEBREW LETTER MEM
+	0x0057: 0x05df,	# HEBREW LETTER FINAL NUN
+	0x0058: 0x05e0,	# HEBREW LETTER NUN
+	0x0059: 0x05e1,	# HEBREW LETTER SAMEKH
+	0x005a: 0x0021,	# EXCLAMATION MARK
+	0x005b: 0x0024,	# DOLLAR SIGN
+	0x005c: 0x002a,	# ASTERISK
+	0x005d: 0x0029,	# RIGHT PARENTHESIS
+	0x005e: 0x003b,	# SEMICOLON
+	0x005f: 0x00ac,	# NOT SIGN
+	0x0060: 0x002d,	# HYPHEN-MINUS
+	0x0061: 0x002f,	# SOLIDUS
+	0x0062: 0x05e2,	# HEBREW LETTER AYIN
+	0x0063: 0x05e3,	# HEBREW LETTER FINAL PE
+	0x0064: 0x05e4,	# HEBREW LETTER PE
+	0x0065: 0x05e5,	# HEBREW LETTER FINAL TSADI
+	0x0066: 0x05e6,	# HEBREW LETTER TSADI
+	0x0067: 0x05e7,	# HEBREW LETTER QOF
+	0x0068: 0x05e8,	# HEBREW LETTER RESH
+	0x0069: 0x05e9,	# HEBREW LETTER SHIN
+	0x006a: 0x00a6,	# BROKEN BAR
+	0x006b: 0x002c,	# COMMA
+	0x006c: 0x0025,	# PERCENT SIGN
+	0x006d: 0x005f,	# LOW LINE
+	0x006e: 0x003e,	# GREATER-THAN SIGN
+	0x006f: 0x003f,	# QUESTION MARK
+	0x0070: None,	# UNDEFINED
+	0x0071: 0x05ea,	# HEBREW LETTER TAV
+	0x0072: None,	# UNDEFINED
+	0x0073: None,	# UNDEFINED
+	0x0074: 0x00a0,	# NO-BREAK SPACE
+	0x0075: None,	# UNDEFINED
+	0x0076: None,	# UNDEFINED
+	0x0077: None,	# UNDEFINED
+	0x0078: 0x2017,	# DOUBLE LOW LINE
+	0x0079: 0x0060,	# GRAVE ACCENT
+	0x007a: 0x003a,	# COLON
+	0x007b: 0x0023,	# NUMBER SIGN
+	0x007c: 0x0040,	# COMMERCIAL AT
+	0x007d: 0x0027,	# APOSTROPHE
+	0x007e: 0x003d,	# EQUALS SIGN
+	0x007f: 0x0022,	# QUOTATION MARK
+	0x0080: None,	# UNDEFINED
+	0x0081: 0x0061,	# LATIN SMALL LETTER A
+	0x0082: 0x0062,	# LATIN SMALL LETTER B
+	0x0083: 0x0063,	# LATIN SMALL LETTER C
+	0x0084: 0x0064,	# LATIN SMALL LETTER D
+	0x0085: 0x0065,	# LATIN SMALL LETTER E
+	0x0086: 0x0066,	# LATIN SMALL LETTER F
+	0x0087: 0x0067,	# LATIN SMALL LETTER G
+	0x0088: 0x0068,	# LATIN SMALL LETTER H
+	0x0089: 0x0069,	# LATIN SMALL LETTER I
+	0x008a: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008b: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008c: None,	# UNDEFINED
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: 0x00b1,	# PLUS-MINUS SIGN
+	0x0090: 0x00b0,	# DEGREE SIGN
+	0x0091: 0x006a,	# LATIN SMALL LETTER J
+	0x0092: 0x006b,	# LATIN SMALL LETTER K
+	0x0093: 0x006c,	# LATIN SMALL LETTER L
+	0x0094: 0x006d,	# LATIN SMALL LETTER M
+	0x0095: 0x006e,	# LATIN SMALL LETTER N
+	0x0096: 0x006f,	# LATIN SMALL LETTER O
+	0x0097: 0x0070,	# LATIN SMALL LETTER P
+	0x0098: 0x0071,	# LATIN SMALL LETTER Q
+	0x0099: 0x0072,	# LATIN SMALL LETTER R
+	0x009a: None,	# UNDEFINED
+	0x009b: None,	# UNDEFINED
+	0x009c: None,	# UNDEFINED
+	0x009d: 0x00b8,	# CEDILLA
+	0x009e: None,	# UNDEFINED
+	0x009f: 0x00a4,	# CURRENCY SIGN
+	0x00a0: 0x00b5,	# MICRO SIGN
+	0x00a1: 0x007e,	# TILDE
+	0x00a2: 0x0073,	# LATIN SMALL LETTER S
+	0x00a3: 0x0074,	# LATIN SMALL LETTER T
+	0x00a4: 0x0075,	# LATIN SMALL LETTER U
+	0x00a5: 0x0076,	# LATIN SMALL LETTER V
+	0x00a6: 0x0077,	# LATIN SMALL LETTER W
+	0x00a7: 0x0078,	# LATIN SMALL LETTER X
+	0x00a8: 0x0079,	# LATIN SMALL LETTER Y
+	0x00a9: 0x007a,	# LATIN SMALL LETTER Z
+	0x00aa: None,	# UNDEFINED
+	0x00ab: None,	# UNDEFINED
+	0x00ac: None,	# UNDEFINED
+	0x00ad: None,	# UNDEFINED
+	0x00ae: None,	# UNDEFINED
+	0x00af: 0x00ae,	# REGISTERED SIGN
+	0x00b0: 0x005e,	# CIRCUMFLEX ACCENT
+	0x00b1: 0x00a3,	# POUND SIGN
+	0x00b2: 0x00a5,	# YEN SIGN
+	0x00b3: 0x00b7,	# MIDDLE DOT
+	0x00b4: 0x00a9,	# COPYRIGHT SIGN
+	0x00b5: 0x00a7,	# SECTION SIGN
+	0x00b7: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00b8: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00b9: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00ba: 0x005b,	# LEFT SQUARE BRACKET
+	0x00bb: 0x005d,	# RIGHT SQUARE BRACKET
+	0x00bc: 0x00af,	# MACRON
+	0x00bd: 0x00a8,	# DIAERESIS
+	0x00be: 0x00b4,	# ACUTE ACCENT
+	0x00bf: 0x00d7,	# MULTIPLICATION SIGN
+	0x00c0: 0x007b,	# LEFT CURLY BRACKET
+	0x00c1: 0x0041,	# LATIN CAPITAL LETTER A
+	0x00c2: 0x0042,	# LATIN CAPITAL LETTER B
+	0x00c3: 0x0043,	# LATIN CAPITAL LETTER C
+	0x00c4: 0x0044,	# LATIN CAPITAL LETTER D
+	0x00c5: 0x0045,	# LATIN CAPITAL LETTER E
+	0x00c6: 0x0046,	# LATIN CAPITAL LETTER F
+	0x00c7: 0x0047,	# LATIN CAPITAL LETTER G
+	0x00c8: 0x0048,	# LATIN CAPITAL LETTER H
+	0x00c9: 0x0049,	# LATIN CAPITAL LETTER I
+	0x00ca: 0x00ad,	# SOFT HYPHEN
+	0x00cb: None,	# UNDEFINED
+	0x00cc: None,	# UNDEFINED
+	0x00cd: None,	# UNDEFINED
+	0x00ce: None,	# UNDEFINED
+	0x00cf: None,	# UNDEFINED
+	0x00d0: 0x007d,	# RIGHT CURLY BRACKET
+	0x00d1: 0x004a,	# LATIN CAPITAL LETTER J
+	0x00d2: 0x004b,	# LATIN CAPITAL LETTER K
+	0x00d3: 0x004c,	# LATIN CAPITAL LETTER L
+	0x00d4: 0x004d,	# LATIN CAPITAL LETTER M
+	0x00d5: 0x004e,	# LATIN CAPITAL LETTER N
+	0x00d6: 0x004f,	# LATIN CAPITAL LETTER O
+	0x00d7: 0x0050,	# LATIN CAPITAL LETTER P
+	0x00d8: 0x0051,	# LATIN CAPITAL LETTER Q
+	0x00d9: 0x0052,	# LATIN CAPITAL LETTER R
+	0x00da: 0x00b9,	# SUPERSCRIPT ONE
+	0x00db: None,	# UNDEFINED
+	0x00dc: None,	# UNDEFINED
+	0x00dd: None,	# UNDEFINED
+	0x00de: None,	# UNDEFINED
+	0x00df: None,	# UNDEFINED
+	0x00e0: 0x005c,	# REVERSE SOLIDUS
+	0x00e1: 0x00f7,	# DIVISION SIGN
+	0x00e2: 0x0053,	# LATIN CAPITAL LETTER S
+	0x00e3: 0x0054,	# LATIN CAPITAL LETTER T
+	0x00e4: 0x0055,	# LATIN CAPITAL LETTER U
+	0x00e5: 0x0056,	# LATIN CAPITAL LETTER V
+	0x00e6: 0x0057,	# LATIN CAPITAL LETTER W
+	0x00e7: 0x0058,	# LATIN CAPITAL LETTER X
+	0x00e8: 0x0059,	# LATIN CAPITAL LETTER Y
+	0x00e9: 0x005a,	# LATIN CAPITAL LETTER Z
+	0x00ea: 0x00b2,	# SUPERSCRIPT TWO
+	0x00eb: None,	# UNDEFINED
+	0x00ec: None,	# UNDEFINED
+	0x00ed: None,	# UNDEFINED
+	0x00ee: None,	# UNDEFINED
+	0x00ef: None,	# UNDEFINED
+	0x00f0: 0x0030,	# DIGIT ZERO
+	0x00f1: 0x0031,	# DIGIT ONE
+	0x00f2: 0x0032,	# DIGIT TWO
+	0x00f3: 0x0033,	# DIGIT THREE
+	0x00f4: 0x0034,	# DIGIT FOUR
+	0x00f5: 0x0035,	# DIGIT FIVE
+	0x00f6: 0x0036,	# DIGIT SIX
+	0x00f7: 0x0037,	# DIGIT SEVEN
+	0x00f8: 0x0038,	# DIGIT EIGHT
+	0x00f9: 0x0039,	# DIGIT NINE
+	0x00fa: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fb: None,	# UNDEFINED
+	0x00fc: None,	# UNDEFINED
+	0x00fd: None,	# UNDEFINED
+	0x00fe: None,	# UNDEFINED
+	0x00ff: 0x009f,	# EIGHT ONES
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp437.py b/Lib/encodings/cp437.py
new file mode 100644
index 0000000..ca7d90e
--- /dev/null
+++ b/Lib/encodings/cp437.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP437.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00a2,	# CENT SIGN
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00a5,	# YEN SIGN
+	0x009e: 0x20a7,	# PESETA SIGN
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00a7: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x2310,	# REVERSED NOT SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp500.py b/Lib/encodings/cp500.py
new file mode 100644
index 0000000..33d6fed
--- /dev/null
+++ b/Lib/encodings/cp500.py
@@ -0,0 +1,282 @@
+""" Python Character Mapping Codec generated from 'CP500.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0004: 0x009c,	# CONTROL
+	0x0005: 0x0009,	# HORIZONTAL TABULATION
+	0x0006: 0x0086,	# CONTROL
+	0x0007: 0x007f,	# DELETE
+	0x0008: 0x0097,	# CONTROL
+	0x0009: 0x008d,	# CONTROL
+	0x000a: 0x008e,	# CONTROL
+	0x0014: 0x009d,	# CONTROL
+	0x0015: 0x0085,	# CONTROL
+	0x0016: 0x0008,	# BACKSPACE
+	0x0017: 0x0087,	# CONTROL
+	0x001a: 0x0092,	# CONTROL
+	0x001b: 0x008f,	# CONTROL
+	0x0020: 0x0080,	# CONTROL
+	0x0021: 0x0081,	# CONTROL
+	0x0022: 0x0082,	# CONTROL
+	0x0023: 0x0083,	# CONTROL
+	0x0024: 0x0084,	# CONTROL
+	0x0025: 0x000a,	# LINE FEED
+	0x0026: 0x0017,	# END OF TRANSMISSION BLOCK
+	0x0027: 0x001b,	# ESCAPE
+	0x0028: 0x0088,	# CONTROL
+	0x0029: 0x0089,	# CONTROL
+	0x002a: 0x008a,	# CONTROL
+	0x002b: 0x008b,	# CONTROL
+	0x002c: 0x008c,	# CONTROL
+	0x002d: 0x0005,	# ENQUIRY
+	0x002e: 0x0006,	# ACKNOWLEDGE
+	0x002f: 0x0007,	# BELL
+	0x0030: 0x0090,	# CONTROL
+	0x0031: 0x0091,	# CONTROL
+	0x0032: 0x0016,	# SYNCHRONOUS IDLE
+	0x0033: 0x0093,	# CONTROL
+	0x0034: 0x0094,	# CONTROL
+	0x0035: 0x0095,	# CONTROL
+	0x0036: 0x0096,	# CONTROL
+	0x0037: 0x0004,	# END OF TRANSMISSION
+	0x0038: 0x0098,	# CONTROL
+	0x0039: 0x0099,	# CONTROL
+	0x003a: 0x009a,	# CONTROL
+	0x003b: 0x009b,	# CONTROL
+	0x003c: 0x0014,	# DEVICE CONTROL FOUR
+	0x003d: 0x0015,	# NEGATIVE ACKNOWLEDGE
+	0x003e: 0x009e,	# CONTROL
+	0x003f: 0x001a,	# SUBSTITUTE
+	0x0040: 0x0020,	# SPACE
+	0x0041: 0x00a0,	# NO-BREAK SPACE
+	0x0042: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0043: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0044: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0045: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0046: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x0047: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0048: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0049: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x004a: 0x005b,	# LEFT SQUARE BRACKET
+	0x004b: 0x002e,	# FULL STOP
+	0x004c: 0x003c,	# LESS-THAN SIGN
+	0x004d: 0x0028,	# LEFT PARENTHESIS
+	0x004e: 0x002b,	# PLUS SIGN
+	0x004f: 0x0021,	# EXCLAMATION MARK
+	0x0050: 0x0026,	# AMPERSAND
+	0x0051: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0052: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0053: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0054: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0055: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0056: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0057: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0058: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0059: 0x00df,	# LATIN SMALL LETTER SHARP S (GERMAN)
+	0x005a: 0x005d,	# RIGHT SQUARE BRACKET
+	0x005b: 0x0024,	# DOLLAR SIGN
+	0x005c: 0x002a,	# ASTERISK
+	0x005d: 0x0029,	# RIGHT PARENTHESIS
+	0x005e: 0x003b,	# SEMICOLON
+	0x005f: 0x005e,	# CIRCUMFLEX ACCENT
+	0x0060: 0x002d,	# HYPHEN-MINUS
+	0x0061: 0x002f,	# SOLIDUS
+	0x0062: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x0063: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0064: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x0065: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x0066: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x0067: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0068: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0069: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x006a: 0x00a6,	# BROKEN BAR
+	0x006b: 0x002c,	# COMMA
+	0x006c: 0x0025,	# PERCENT SIGN
+	0x006d: 0x005f,	# LOW LINE
+	0x006e: 0x003e,	# GREATER-THAN SIGN
+	0x006f: 0x003f,	# QUESTION MARK
+	0x0070: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x0071: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0072: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x0073: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x0074: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x0075: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x0076: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x0077: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x0078: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x0079: 0x0060,	# GRAVE ACCENT
+	0x007a: 0x003a,	# COLON
+	0x007b: 0x0023,	# NUMBER SIGN
+	0x007c: 0x0040,	# COMMERCIAL AT
+	0x007d: 0x0027,	# APOSTROPHE
+	0x007e: 0x003d,	# EQUALS SIGN
+	0x007f: 0x0022,	# QUOTATION MARK
+	0x0080: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x0081: 0x0061,	# LATIN SMALL LETTER A
+	0x0082: 0x0062,	# LATIN SMALL LETTER B
+	0x0083: 0x0063,	# LATIN SMALL LETTER C
+	0x0084: 0x0064,	# LATIN SMALL LETTER D
+	0x0085: 0x0065,	# LATIN SMALL LETTER E
+	0x0086: 0x0066,	# LATIN SMALL LETTER F
+	0x0087: 0x0067,	# LATIN SMALL LETTER G
+	0x0088: 0x0068,	# LATIN SMALL LETTER H
+	0x0089: 0x0069,	# LATIN SMALL LETTER I
+	0x008a: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008b: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x008c: 0x00f0,	# LATIN SMALL LETTER ETH (ICELANDIC)
+	0x008d: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x008e: 0x00fe,	# LATIN SMALL LETTER THORN (ICELANDIC)
+	0x008f: 0x00b1,	# PLUS-MINUS SIGN
+	0x0090: 0x00b0,	# DEGREE SIGN
+	0x0091: 0x006a,	# LATIN SMALL LETTER J
+	0x0092: 0x006b,	# LATIN SMALL LETTER K
+	0x0093: 0x006c,	# LATIN SMALL LETTER L
+	0x0094: 0x006d,	# LATIN SMALL LETTER M
+	0x0095: 0x006e,	# LATIN SMALL LETTER N
+	0x0096: 0x006f,	# LATIN SMALL LETTER O
+	0x0097: 0x0070,	# LATIN SMALL LETTER P
+	0x0098: 0x0071,	# LATIN SMALL LETTER Q
+	0x0099: 0x0072,	# LATIN SMALL LETTER R
+	0x009a: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x009b: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x009c: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x009d: 0x00b8,	# CEDILLA
+	0x009e: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x009f: 0x00a4,	# CURRENCY SIGN
+	0x00a0: 0x00b5,	# MICRO SIGN
+	0x00a1: 0x007e,	# TILDE
+	0x00a2: 0x0073,	# LATIN SMALL LETTER S
+	0x00a3: 0x0074,	# LATIN SMALL LETTER T
+	0x00a4: 0x0075,	# LATIN SMALL LETTER U
+	0x00a5: 0x0076,	# LATIN SMALL LETTER V
+	0x00a6: 0x0077,	# LATIN SMALL LETTER W
+	0x00a7: 0x0078,	# LATIN SMALL LETTER X
+	0x00a8: 0x0079,	# LATIN SMALL LETTER Y
+	0x00a9: 0x007a,	# LATIN SMALL LETTER Z
+	0x00aa: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ab: 0x00bf,	# INVERTED QUESTION MARK
+	0x00ac: 0x00d0,	# LATIN CAPITAL LETTER ETH (ICELANDIC)
+	0x00ad: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00ae: 0x00de,	# LATIN CAPITAL LETTER THORN (ICELANDIC)
+	0x00af: 0x00ae,	# REGISTERED SIGN
+	0x00b0: 0x00a2,	# CENT SIGN
+	0x00b1: 0x00a3,	# POUND SIGN
+	0x00b2: 0x00a5,	# YEN SIGN
+	0x00b3: 0x00b7,	# MIDDLE DOT
+	0x00b4: 0x00a9,	# COPYRIGHT SIGN
+	0x00b5: 0x00a7,	# SECTION SIGN
+	0x00b7: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00b8: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00b9: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00ba: 0x00ac,	# NOT SIGN
+	0x00bb: 0x007c,	# VERTICAL LINE
+	0x00bc: 0x00af,	# MACRON
+	0x00bd: 0x00a8,	# DIAERESIS
+	0x00be: 0x00b4,	# ACUTE ACCENT
+	0x00bf: 0x00d7,	# MULTIPLICATION SIGN
+	0x00c0: 0x007b,	# LEFT CURLY BRACKET
+	0x00c1: 0x0041,	# LATIN CAPITAL LETTER A
+	0x00c2: 0x0042,	# LATIN CAPITAL LETTER B
+	0x00c3: 0x0043,	# LATIN CAPITAL LETTER C
+	0x00c4: 0x0044,	# LATIN CAPITAL LETTER D
+	0x00c5: 0x0045,	# LATIN CAPITAL LETTER E
+	0x00c6: 0x0046,	# LATIN CAPITAL LETTER F
+	0x00c7: 0x0047,	# LATIN CAPITAL LETTER G
+	0x00c8: 0x0048,	# LATIN CAPITAL LETTER H
+	0x00c9: 0x0049,	# LATIN CAPITAL LETTER I
+	0x00ca: 0x00ad,	# SOFT HYPHEN
+	0x00cb: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x00cc: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x00cd: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x00ce: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00cf: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00d0: 0x007d,	# RIGHT CURLY BRACKET
+	0x00d1: 0x004a,	# LATIN CAPITAL LETTER J
+	0x00d2: 0x004b,	# LATIN CAPITAL LETTER K
+	0x00d3: 0x004c,	# LATIN CAPITAL LETTER L
+	0x00d4: 0x004d,	# LATIN CAPITAL LETTER M
+	0x00d5: 0x004e,	# LATIN CAPITAL LETTER N
+	0x00d6: 0x004f,	# LATIN CAPITAL LETTER O
+	0x00d7: 0x0050,	# LATIN CAPITAL LETTER P
+	0x00d8: 0x0051,	# LATIN CAPITAL LETTER Q
+	0x00d9: 0x0052,	# LATIN CAPITAL LETTER R
+	0x00da: 0x00b9,	# SUPERSCRIPT ONE
+	0x00db: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x00dc: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00dd: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x00de: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00df: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00e0: 0x005c,	# REVERSE SOLIDUS
+	0x00e1: 0x00f7,	# DIVISION SIGN
+	0x00e2: 0x0053,	# LATIN CAPITAL LETTER S
+	0x00e3: 0x0054,	# LATIN CAPITAL LETTER T
+	0x00e4: 0x0055,	# LATIN CAPITAL LETTER U
+	0x00e5: 0x0056,	# LATIN CAPITAL LETTER V
+	0x00e6: 0x0057,	# LATIN CAPITAL LETTER W
+	0x00e7: 0x0058,	# LATIN CAPITAL LETTER X
+	0x00e8: 0x0059,	# LATIN CAPITAL LETTER Y
+	0x00e9: 0x005a,	# LATIN CAPITAL LETTER Z
+	0x00ea: 0x00b2,	# SUPERSCRIPT TWO
+	0x00eb: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00ec: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x00ed: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00f0: 0x0030,	# DIGIT ZERO
+	0x00f1: 0x0031,	# DIGIT ONE
+	0x00f2: 0x0032,	# DIGIT TWO
+	0x00f3: 0x0033,	# DIGIT THREE
+	0x00f4: 0x0034,	# DIGIT FOUR
+	0x00f5: 0x0035,	# DIGIT FIVE
+	0x00f6: 0x0036,	# DIGIT SIX
+	0x00f7: 0x0037,	# DIGIT SEVEN
+	0x00f8: 0x0038,	# DIGIT EIGHT
+	0x00f9: 0x0039,	# DIGIT NINE
+	0x00fa: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fb: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00fc: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x00fd: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00fe: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ff: 0x009f,	# CONTROL
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp737.py b/Lib/encodings/cp737.py
new file mode 100644
index 0000000..e55b3dd
--- /dev/null
+++ b/Lib/encodings/cp737.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP737.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0391,	# GREEK CAPITAL LETTER ALPHA
+	0x0081: 0x0392,	# GREEK CAPITAL LETTER BETA
+	0x0082: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x0083: 0x0394,	# GREEK CAPITAL LETTER DELTA
+	0x0084: 0x0395,	# GREEK CAPITAL LETTER EPSILON
+	0x0085: 0x0396,	# GREEK CAPITAL LETTER ZETA
+	0x0086: 0x0397,	# GREEK CAPITAL LETTER ETA
+	0x0087: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x0088: 0x0399,	# GREEK CAPITAL LETTER IOTA
+	0x0089: 0x039a,	# GREEK CAPITAL LETTER KAPPA
+	0x008a: 0x039b,	# GREEK CAPITAL LETTER LAMDA
+	0x008b: 0x039c,	# GREEK CAPITAL LETTER MU
+	0x008c: 0x039d,	# GREEK CAPITAL LETTER NU
+	0x008d: 0x039e,	# GREEK CAPITAL LETTER XI
+	0x008e: 0x039f,	# GREEK CAPITAL LETTER OMICRON
+	0x008f: 0x03a0,	# GREEK CAPITAL LETTER PI
+	0x0090: 0x03a1,	# GREEK CAPITAL LETTER RHO
+	0x0091: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x0092: 0x03a4,	# GREEK CAPITAL LETTER TAU
+	0x0093: 0x03a5,	# GREEK CAPITAL LETTER UPSILON
+	0x0094: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x0095: 0x03a7,	# GREEK CAPITAL LETTER CHI
+	0x0096: 0x03a8,	# GREEK CAPITAL LETTER PSI
+	0x0097: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x0098: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x0099: 0x03b2,	# GREEK SMALL LETTER BETA
+	0x009a: 0x03b3,	# GREEK SMALL LETTER GAMMA
+	0x009b: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x009c: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x009d: 0x03b6,	# GREEK SMALL LETTER ZETA
+	0x009e: 0x03b7,	# GREEK SMALL LETTER ETA
+	0x009f: 0x03b8,	# GREEK SMALL LETTER THETA
+	0x00a0: 0x03b9,	# GREEK SMALL LETTER IOTA
+	0x00a1: 0x03ba,	# GREEK SMALL LETTER KAPPA
+	0x00a2: 0x03bb,	# GREEK SMALL LETTER LAMDA
+	0x00a3: 0x03bc,	# GREEK SMALL LETTER MU
+	0x00a4: 0x03bd,	# GREEK SMALL LETTER NU
+	0x00a5: 0x03be,	# GREEK SMALL LETTER XI
+	0x00a6: 0x03bf,	# GREEK SMALL LETTER OMICRON
+	0x00a7: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00a8: 0x03c1,	# GREEK SMALL LETTER RHO
+	0x00a9: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00aa: 0x03c2,	# GREEK SMALL LETTER FINAL SIGMA
+	0x00ab: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00ac: 0x03c5,	# GREEK SMALL LETTER UPSILON
+	0x00ad: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ae: 0x03c7,	# GREEK SMALL LETTER CHI
+	0x00af: 0x03c8,	# GREEK SMALL LETTER PSI
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03c9,	# GREEK SMALL LETTER OMEGA
+	0x00e1: 0x03ac,	# GREEK SMALL LETTER ALPHA WITH TONOS
+	0x00e2: 0x03ad,	# GREEK SMALL LETTER EPSILON WITH TONOS
+	0x00e3: 0x03ae,	# GREEK SMALL LETTER ETA WITH TONOS
+	0x00e4: 0x03ca,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00e5: 0x03af,	# GREEK SMALL LETTER IOTA WITH TONOS
+	0x00e6: 0x03cc,	# GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00e7: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00e8: 0x03cb,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00e9: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
+	0x00ea: 0x0386,	# GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x00eb: 0x0388,	# GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x00ec: 0x0389,	# GREEK CAPITAL LETTER ETA WITH TONOS
+	0x00ed: 0x038a,	# GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x00ee: 0x038c,	# GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x00ef: 0x038e,	# GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x00f0: 0x038f,	# GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x03aa,	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x00f5: 0x03ab,	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp775.py b/Lib/encodings/cp775.py
new file mode 100644
index 0000000..e43ce2d
--- /dev/null
+++ b/Lib/encodings/cp775.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP775.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x0101,	# LATIN SMALL LETTER A WITH MACRON
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x0123,	# LATIN SMALL LETTER G WITH CEDILLA
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x0107,	# LATIN SMALL LETTER C WITH ACUTE
+	0x0088: 0x0142,	# LATIN SMALL LETTER L WITH STROKE
+	0x0089: 0x0113,	# LATIN SMALL LETTER E WITH MACRON
+	0x008a: 0x0156,	# LATIN CAPITAL LETTER R WITH CEDILLA
+	0x008b: 0x0157,	# LATIN SMALL LETTER R WITH CEDILLA
+	0x008c: 0x012b,	# LATIN SMALL LETTER I WITH MACRON
+	0x008d: 0x0179,	# LATIN CAPITAL LETTER Z WITH ACUTE
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x014d,	# LATIN SMALL LETTER O WITH MACRON
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x0122,	# LATIN CAPITAL LETTER G WITH CEDILLA
+	0x0096: 0x00a2,	# CENT SIGN
+	0x0097: 0x015a,	# LATIN CAPITAL LETTER S WITH ACUTE
+	0x0098: 0x015b,	# LATIN SMALL LETTER S WITH ACUTE
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x009e: 0x00d7,	# MULTIPLICATION SIGN
+	0x009f: 0x00a4,	# CURRENCY SIGN
+	0x00a0: 0x0100,	# LATIN CAPITAL LETTER A WITH MACRON
+	0x00a1: 0x012a,	# LATIN CAPITAL LETTER I WITH MACRON
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x017b,	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00a4: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00a5: 0x017a,	# LATIN SMALL LETTER Z WITH ACUTE
+	0x00a6: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00a7: 0x00a6,	# BROKEN BAR
+	0x00a8: 0x00a9,	# COPYRIGHT SIGN
+	0x00a9: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x0141,	# LATIN CAPITAL LETTER L WITH STROKE
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x0104,	# LATIN CAPITAL LETTER A WITH OGONEK
+	0x00b6: 0x010c,	# LATIN CAPITAL LETTER C WITH CARON
+	0x00b7: 0x0118,	# LATIN CAPITAL LETTER E WITH OGONEK
+	0x00b8: 0x0116,	# LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x012e,	# LATIN CAPITAL LETTER I WITH OGONEK
+	0x00be: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x0172,	# LATIN CAPITAL LETTER U WITH OGONEK
+	0x00c7: 0x016a,	# LATIN CAPITAL LETTER U WITH MACRON
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x00d0: 0x0105,	# LATIN SMALL LETTER A WITH OGONEK
+	0x00d1: 0x010d,	# LATIN SMALL LETTER C WITH CARON
+	0x00d2: 0x0119,	# LATIN SMALL LETTER E WITH OGONEK
+	0x00d3: 0x0117,	# LATIN SMALL LETTER E WITH DOT ABOVE
+	0x00d4: 0x012f,	# LATIN SMALL LETTER I WITH OGONEK
+	0x00d5: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x00d6: 0x0173,	# LATIN SMALL LETTER U WITH OGONEK
+	0x00d7: 0x016b,	# LATIN SMALL LETTER U WITH MACRON
+	0x00d8: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S (GERMAN)
+	0x00e2: 0x014c,	# LATIN CAPITAL LETTER O WITH MACRON
+	0x00e3: 0x0143,	# LATIN CAPITAL LETTER N WITH ACUTE
+	0x00e4: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00e5: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x0144,	# LATIN SMALL LETTER N WITH ACUTE
+	0x00e8: 0x0136,	# LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00e9: 0x0137,	# LATIN SMALL LETTER K WITH CEDILLA
+	0x00ea: 0x013b,	# LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00eb: 0x013c,	# LATIN SMALL LETTER L WITH CEDILLA
+	0x00ec: 0x0146,	# LATIN SMALL LETTER N WITH CEDILLA
+	0x00ed: 0x0112,	# LATIN CAPITAL LETTER E WITH MACRON
+	0x00ee: 0x0145,	# LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00ef: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00f3: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00f4: 0x00b6,	# PILCROW SIGN
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x00b9,	# SUPERSCRIPT ONE
+	0x00fc: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp850.py b/Lib/encodings/cp850.py
new file mode 100644
index 0000000..cb0918c
--- /dev/null
+++ b/Lib/encodings/cp850.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP850.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x009e: 0x00d7,	# MULTIPLICATION SIGN
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00a7: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00b6: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00b7: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x00b8: 0x00a9,	# COPYRIGHT SIGN
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x00a2,	# CENT SIGN
+	0x00be: 0x00a5,	# YEN SIGN
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x00c7: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x00a4,	# CURRENCY SIGN
+	0x00d0: 0x00f0,	# LATIN SMALL LETTER ETH
+	0x00d1: 0x00d0,	# LATIN CAPITAL LETTER ETH
+	0x00d2: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00d3: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00d4: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x00d5: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x00d6: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00d7: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00d8: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x00a6,	# BROKEN BAR
+	0x00de: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00e3: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00e4: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00e5: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x00fe,	# LATIN SMALL LETTER THORN
+	0x00e8: 0x00de,	# LATIN CAPITAL LETTER THORN
+	0x00e9: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ea: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00eb: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00ec: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x00ed: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00ee: 0x00af,	# MACRON
+	0x00ef: 0x00b4,	# ACUTE ACCENT
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2017,	# DOUBLE LOW LINE
+	0x00f3: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00f4: 0x00b6,	# PILCROW SIGN
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x00b8,	# CEDILLA
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x00a8,	# DIAERESIS
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x00b9,	# SUPERSCRIPT ONE
+	0x00fc: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp852.py b/Lib/encodings/cp852.py
new file mode 100644
index 0000000..ba4f142
--- /dev/null
+++ b/Lib/encodings/cp852.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP852.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x016f,	# LATIN SMALL LETTER U WITH RING ABOVE
+	0x0086: 0x0107,	# LATIN SMALL LETTER C WITH ACUTE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x0142,	# LATIN SMALL LETTER L WITH STROKE
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x0150,	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+	0x008b: 0x0151,	# LATIN SMALL LETTER O WITH DOUBLE ACUTE
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x0179,	# LATIN CAPITAL LETTER Z WITH ACUTE
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x0139,	# LATIN CAPITAL LETTER L WITH ACUTE
+	0x0092: 0x013a,	# LATIN SMALL LETTER L WITH ACUTE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x013d,	# LATIN CAPITAL LETTER L WITH CARON
+	0x0096: 0x013e,	# LATIN SMALL LETTER L WITH CARON
+	0x0097: 0x015a,	# LATIN CAPITAL LETTER S WITH ACUTE
+	0x0098: 0x015b,	# LATIN SMALL LETTER S WITH ACUTE
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x0164,	# LATIN CAPITAL LETTER T WITH CARON
+	0x009c: 0x0165,	# LATIN SMALL LETTER T WITH CARON
+	0x009d: 0x0141,	# LATIN CAPITAL LETTER L WITH STROKE
+	0x009e: 0x00d7,	# MULTIPLICATION SIGN
+	0x009f: 0x010d,	# LATIN SMALL LETTER C WITH CARON
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x0104,	# LATIN CAPITAL LETTER A WITH OGONEK
+	0x00a5: 0x0105,	# LATIN SMALL LETTER A WITH OGONEK
+	0x00a6: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x00a7: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x00a8: 0x0118,	# LATIN CAPITAL LETTER E WITH OGONEK
+	0x00a9: 0x0119,	# LATIN SMALL LETTER E WITH OGONEK
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x017a,	# LATIN SMALL LETTER Z WITH ACUTE
+	0x00ac: 0x010c,	# LATIN CAPITAL LETTER C WITH CARON
+	0x00ad: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00b6: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00b7: 0x011a,	# LATIN CAPITAL LETTER E WITH CARON
+	0x00b8: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x017b,	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00be: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x0102,	# LATIN CAPITAL LETTER A WITH BREVE
+	0x00c7: 0x0103,	# LATIN SMALL LETTER A WITH BREVE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x00a4,	# CURRENCY SIGN
+	0x00d0: 0x0111,	# LATIN SMALL LETTER D WITH STROKE
+	0x00d1: 0x0110,	# LATIN CAPITAL LETTER D WITH STROKE
+	0x00d2: 0x010e,	# LATIN CAPITAL LETTER D WITH CARON
+	0x00d3: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00d4: 0x010f,	# LATIN SMALL LETTER D WITH CARON
+	0x00d5: 0x0147,	# LATIN CAPITAL LETTER N WITH CARON
+	0x00d6: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00d7: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00d8: 0x011b,	# LATIN SMALL LETTER E WITH CARON
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x0162,	# LATIN CAPITAL LETTER T WITH CEDILLA
+	0x00de: 0x016e,	# LATIN CAPITAL LETTER U WITH RING ABOVE
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00e3: 0x0143,	# LATIN CAPITAL LETTER N WITH ACUTE
+	0x00e4: 0x0144,	# LATIN SMALL LETTER N WITH ACUTE
+	0x00e5: 0x0148,	# LATIN SMALL LETTER N WITH CARON
+	0x00e6: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x00e7: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x00e8: 0x0154,	# LATIN CAPITAL LETTER R WITH ACUTE
+	0x00e9: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ea: 0x0155,	# LATIN SMALL LETTER R WITH ACUTE
+	0x00eb: 0x0170,	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+	0x00ec: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x00ed: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00ee: 0x0163,	# LATIN SMALL LETTER T WITH CEDILLA
+	0x00ef: 0x00b4,	# ACUTE ACCENT
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x02dd,	# DOUBLE ACUTE ACCENT
+	0x00f2: 0x02db,	# OGONEK
+	0x00f3: 0x02c7,	# CARON
+	0x00f4: 0x02d8,	# BREVE
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x00b8,	# CEDILLA
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x00a8,	# DIAERESIS
+	0x00fa: 0x02d9,	# DOT ABOVE
+	0x00fb: 0x0171,	# LATIN SMALL LETTER U WITH DOUBLE ACUTE
+	0x00fc: 0x0158,	# LATIN CAPITAL LETTER R WITH CARON
+	0x00fd: 0x0159,	# LATIN SMALL LETTER R WITH CARON
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp855.py b/Lib/encodings/cp855.py
new file mode 100644
index 0000000..c967bcf
--- /dev/null
+++ b/Lib/encodings/cp855.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP855.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0452,	# CYRILLIC SMALL LETTER DJE
+	0x0081: 0x0402,	# CYRILLIC CAPITAL LETTER DJE
+	0x0082: 0x0453,	# CYRILLIC SMALL LETTER GJE
+	0x0083: 0x0403,	# CYRILLIC CAPITAL LETTER GJE
+	0x0084: 0x0451,	# CYRILLIC SMALL LETTER IO
+	0x0085: 0x0401,	# CYRILLIC CAPITAL LETTER IO
+	0x0086: 0x0454,	# CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x0087: 0x0404,	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x0088: 0x0455,	# CYRILLIC SMALL LETTER DZE
+	0x0089: 0x0405,	# CYRILLIC CAPITAL LETTER DZE
+	0x008a: 0x0456,	# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x008b: 0x0406,	# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x008c: 0x0457,	# CYRILLIC SMALL LETTER YI
+	0x008d: 0x0407,	# CYRILLIC CAPITAL LETTER YI
+	0x008e: 0x0458,	# CYRILLIC SMALL LETTER JE
+	0x008f: 0x0408,	# CYRILLIC CAPITAL LETTER JE
+	0x0090: 0x0459,	# CYRILLIC SMALL LETTER LJE
+	0x0091: 0x0409,	# CYRILLIC CAPITAL LETTER LJE
+	0x0092: 0x045a,	# CYRILLIC SMALL LETTER NJE
+	0x0093: 0x040a,	# CYRILLIC CAPITAL LETTER NJE
+	0x0094: 0x045b,	# CYRILLIC SMALL LETTER TSHE
+	0x0095: 0x040b,	# CYRILLIC CAPITAL LETTER TSHE
+	0x0096: 0x045c,	# CYRILLIC SMALL LETTER KJE
+	0x0097: 0x040c,	# CYRILLIC CAPITAL LETTER KJE
+	0x0098: 0x045e,	# CYRILLIC SMALL LETTER SHORT U
+	0x0099: 0x040e,	# CYRILLIC CAPITAL LETTER SHORT U
+	0x009a: 0x045f,	# CYRILLIC SMALL LETTER DZHE
+	0x009b: 0x040f,	# CYRILLIC CAPITAL LETTER DZHE
+	0x009c: 0x044e,	# CYRILLIC SMALL LETTER YU
+	0x009d: 0x042e,	# CYRILLIC CAPITAL LETTER YU
+	0x009e: 0x044a,	# CYRILLIC SMALL LETTER HARD SIGN
+	0x009f: 0x042a,	# CYRILLIC CAPITAL LETTER HARD SIGN
+	0x00a0: 0x0430,	# CYRILLIC SMALL LETTER A
+	0x00a1: 0x0410,	# CYRILLIC CAPITAL LETTER A
+	0x00a2: 0x0431,	# CYRILLIC SMALL LETTER BE
+	0x00a3: 0x0411,	# CYRILLIC CAPITAL LETTER BE
+	0x00a4: 0x0446,	# CYRILLIC SMALL LETTER TSE
+	0x00a5: 0x0426,	# CYRILLIC CAPITAL LETTER TSE
+	0x00a6: 0x0434,	# CYRILLIC SMALL LETTER DE
+	0x00a7: 0x0414,	# CYRILLIC CAPITAL LETTER DE
+	0x00a8: 0x0435,	# CYRILLIC SMALL LETTER IE
+	0x00a9: 0x0415,	# CYRILLIC CAPITAL LETTER IE
+	0x00aa: 0x0444,	# CYRILLIC SMALL LETTER EF
+	0x00ab: 0x0424,	# CYRILLIC CAPITAL LETTER EF
+	0x00ac: 0x0433,	# CYRILLIC SMALL LETTER GHE
+	0x00ad: 0x0413,	# CYRILLIC CAPITAL LETTER GHE
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x0445,	# CYRILLIC SMALL LETTER HA
+	0x00b6: 0x0425,	# CYRILLIC CAPITAL LETTER HA
+	0x00b7: 0x0438,	# CYRILLIC SMALL LETTER I
+	0x00b8: 0x0418,	# CYRILLIC CAPITAL LETTER I
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x0439,	# CYRILLIC SMALL LETTER SHORT I
+	0x00be: 0x0419,	# CYRILLIC CAPITAL LETTER SHORT I
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x043a,	# CYRILLIC SMALL LETTER KA
+	0x00c7: 0x041a,	# CYRILLIC CAPITAL LETTER KA
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x00a4,	# CURRENCY SIGN
+	0x00d0: 0x043b,	# CYRILLIC SMALL LETTER EL
+	0x00d1: 0x041b,	# CYRILLIC CAPITAL LETTER EL
+	0x00d2: 0x043c,	# CYRILLIC SMALL LETTER EM
+	0x00d3: 0x041c,	# CYRILLIC CAPITAL LETTER EM
+	0x00d4: 0x043d,	# CYRILLIC SMALL LETTER EN
+	0x00d5: 0x041d,	# CYRILLIC CAPITAL LETTER EN
+	0x00d6: 0x043e,	# CYRILLIC SMALL LETTER O
+	0x00d7: 0x041e,	# CYRILLIC CAPITAL LETTER O
+	0x00d8: 0x043f,	# CYRILLIC SMALL LETTER PE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x041f,	# CYRILLIC CAPITAL LETTER PE
+	0x00de: 0x044f,	# CYRILLIC SMALL LETTER YA
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x042f,	# CYRILLIC CAPITAL LETTER YA
+	0x00e1: 0x0440,	# CYRILLIC SMALL LETTER ER
+	0x00e2: 0x0420,	# CYRILLIC CAPITAL LETTER ER
+	0x00e3: 0x0441,	# CYRILLIC SMALL LETTER ES
+	0x00e4: 0x0421,	# CYRILLIC CAPITAL LETTER ES
+	0x00e5: 0x0442,	# CYRILLIC SMALL LETTER TE
+	0x00e6: 0x0422,	# CYRILLIC CAPITAL LETTER TE
+	0x00e7: 0x0443,	# CYRILLIC SMALL LETTER U
+	0x00e8: 0x0423,	# CYRILLIC CAPITAL LETTER U
+	0x00e9: 0x0436,	# CYRILLIC SMALL LETTER ZHE
+	0x00ea: 0x0416,	# CYRILLIC CAPITAL LETTER ZHE
+	0x00eb: 0x0432,	# CYRILLIC SMALL LETTER VE
+	0x00ec: 0x0412,	# CYRILLIC CAPITAL LETTER VE
+	0x00ed: 0x044c,	# CYRILLIC SMALL LETTER SOFT SIGN
+	0x00ee: 0x042c,	# CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x00ef: 0x2116,	# NUMERO SIGN
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x044b,	# CYRILLIC SMALL LETTER YERU
+	0x00f2: 0x042b,	# CYRILLIC CAPITAL LETTER YERU
+	0x00f3: 0x0437,	# CYRILLIC SMALL LETTER ZE
+	0x00f4: 0x0417,	# CYRILLIC CAPITAL LETTER ZE
+	0x00f5: 0x0448,	# CYRILLIC SMALL LETTER SHA
+	0x00f6: 0x0428,	# CYRILLIC CAPITAL LETTER SHA
+	0x00f7: 0x044d,	# CYRILLIC SMALL LETTER E
+	0x00f8: 0x042d,	# CYRILLIC CAPITAL LETTER E
+	0x00f9: 0x0449,	# CYRILLIC SMALL LETTER SHCHA
+	0x00fa: 0x0429,	# CYRILLIC CAPITAL LETTER SHCHA
+	0x00fb: 0x0447,	# CYRILLIC SMALL LETTER CHE
+	0x00fc: 0x0427,	# CYRILLIC CAPITAL LETTER CHE
+	0x00fd: 0x00a7,	# SECTION SIGN
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp856.py b/Lib/encodings/cp856.py
new file mode 100644
index 0000000..a0aa4c1
--- /dev/null
+++ b/Lib/encodings/cp856.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP856.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x05d0,	# HEBREW LETTER ALEF
+	0x0081: 0x05d1,	# HEBREW LETTER BET
+	0x0082: 0x05d2,	# HEBREW LETTER GIMEL
+	0x0083: 0x05d3,	# HEBREW LETTER DALET
+	0x0084: 0x05d4,	# HEBREW LETTER HE
+	0x0085: 0x05d5,	# HEBREW LETTER VAV
+	0x0086: 0x05d6,	# HEBREW LETTER ZAYIN
+	0x0087: 0x05d7,	# HEBREW LETTER HET
+	0x0088: 0x05d8,	# HEBREW LETTER TET
+	0x0089: 0x05d9,	# HEBREW LETTER YOD
+	0x008a: 0x05da,	# HEBREW LETTER FINAL KAF
+	0x008b: 0x05db,	# HEBREW LETTER KAF
+	0x008c: 0x05dc,	# HEBREW LETTER LAMED
+	0x008d: 0x05dd,	# HEBREW LETTER FINAL MEM
+	0x008e: 0x05de,	# HEBREW LETTER MEM
+	0x008f: 0x05df,	# HEBREW LETTER FINAL NUN
+	0x0090: 0x05e0,	# HEBREW LETTER NUN
+	0x0091: 0x05e1,	# HEBREW LETTER SAMEKH
+	0x0092: 0x05e2,	# HEBREW LETTER AYIN
+	0x0093: 0x05e3,	# HEBREW LETTER FINAL PE
+	0x0094: 0x05e4,	# HEBREW LETTER PE
+	0x0095: 0x05e5,	# HEBREW LETTER FINAL TSADI
+	0x0096: 0x05e6,	# HEBREW LETTER TSADI
+	0x0097: 0x05e7,	# HEBREW LETTER QOF
+	0x0098: 0x05e8,	# HEBREW LETTER RESH
+	0x0099: 0x05e9,	# HEBREW LETTER SHIN
+	0x009a: 0x05ea,	# HEBREW LETTER TAV
+	0x009b: None,	# UNDEFINED
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: None,	# UNDEFINED
+	0x009e: 0x00d7,	# MULTIPLICATION SIGN
+	0x009f: None,	# UNDEFINED
+	0x00a0: None,	# UNDEFINED
+	0x00a1: None,	# UNDEFINED
+	0x00a2: None,	# UNDEFINED
+	0x00a3: None,	# UNDEFINED
+	0x00a4: None,	# UNDEFINED
+	0x00a5: None,	# UNDEFINED
+	0x00a6: None,	# UNDEFINED
+	0x00a7: None,	# UNDEFINED
+	0x00a8: None,	# UNDEFINED
+	0x00a9: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: None,	# UNDEFINED
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: None,	# UNDEFINED
+	0x00b6: None,	# UNDEFINED
+	0x00b7: None,	# UNDEFINED
+	0x00b8: 0x00a9,	# COPYRIGHT SIGN
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x00a2,	# CENT SIGN
+	0x00be: 0x00a5,	# YEN SIGN
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: None,	# UNDEFINED
+	0x00c7: None,	# UNDEFINED
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x00a4,	# CURRENCY SIGN
+	0x00d0: None,	# UNDEFINED
+	0x00d1: None,	# UNDEFINED
+	0x00d2: None,	# UNDEFINED
+	0x00d3: None,	# UNDEFINEDS
+	0x00d4: None,	# UNDEFINED
+	0x00d5: None,	# UNDEFINED
+	0x00d6: None,	# UNDEFINEDE
+	0x00d7: None,	# UNDEFINED
+	0x00d8: None,	# UNDEFINED
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x00a6,	# BROKEN BAR
+	0x00de: None,	# UNDEFINED
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: None,	# UNDEFINED
+	0x00e1: None,	# UNDEFINED
+	0x00e2: None,	# UNDEFINED
+	0x00e3: None,	# UNDEFINED
+	0x00e4: None,	# UNDEFINED
+	0x00e5: None,	# UNDEFINED
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: None,	# UNDEFINED
+	0x00e8: None,	# UNDEFINED
+	0x00e9: None,	# UNDEFINED
+	0x00ea: None,	# UNDEFINED
+	0x00eb: None,	# UNDEFINED
+	0x00ec: None,	# UNDEFINED
+	0x00ed: None,	# UNDEFINED
+	0x00ee: 0x00af,	# MACRON
+	0x00ef: 0x00b4,	# ACUTE ACCENT
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2017,	# DOUBLE LOW LINE
+	0x00f3: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00f4: 0x00b6,	# PILCROW SIGN
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x00b8,	# CEDILLA
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x00a8,	# DIAERESIS
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x00b9,	# SUPERSCRIPT ONE
+	0x00fc: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp857.py b/Lib/encodings/cp857.py
new file mode 100644
index 0000000..49cc685
--- /dev/null
+++ b/Lib/encodings/cp857.py
@@ -0,0 +1,173 @@
+""" Python Character Mapping Codec generated from 'CP857.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x0130,	# LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x009e: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x009f: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x011e,	# LATIN CAPITAL LETTER G WITH BREVE
+	0x00a7: 0x011f,	# LATIN SMALL LETTER G WITH BREVE
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00b6: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00b7: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x00b8: 0x00a9,	# COPYRIGHT SIGN
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x00a2,	# CENT SIGN
+	0x00be: 0x00a5,	# YEN SIGN
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x00c7: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x00a4,	# CURRENCY SIGN
+	0x00d0: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00d1: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00d2: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00d3: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00d4: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x00d5: None,	# UNDEFINED
+	0x00d6: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00d7: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00d8: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x00a6,	# BROKEN BAR
+	0x00de: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00e3: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00e4: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x00e5: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: None,	# UNDEFINED
+	0x00e8: 0x00d7,	# MULTIPLICATION SIGN
+	0x00e9: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00ea: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00eb: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00ed: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00ee: 0x00af,	# MACRON
+	0x00ef: 0x00b4,	# ACUTE ACCENT
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: None,	# UNDEFINED
+	0x00f3: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00f4: 0x00b6,	# PILCROW SIGN
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x00b8,	# CEDILLA
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x00a8,	# DIAERESIS
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x00b9,	# SUPERSCRIPT ONE
+	0x00fc: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp860.py b/Lib/encodings/cp860.py
new file mode 100644
index 0000000..3b9a15d
--- /dev/null
+++ b/Lib/encodings/cp860.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP860.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x008c: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x008d: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x008e: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x008f: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x0092: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x0095: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0096: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x0099: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00a2,	# CENT SIGN
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x009e: 0x20a7,	# PESETA SIGN
+	0x009f: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00a7: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp861.py b/Lib/encodings/cp861.py
new file mode 100644
index 0000000..3f07fba
--- /dev/null
+++ b/Lib/encodings/cp861.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP861.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00d0,	# LATIN CAPITAL LETTER ETH
+	0x008c: 0x00f0,	# LATIN SMALL LETTER ETH
+	0x008d: 0x00de,	# LATIN CAPITAL LETTER THORN
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x00fe,	# LATIN SMALL LETTER THORN
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x0098: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x009e: 0x20a7,	# PESETA SIGN
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00a5: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00a6: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00a7: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x2310,	# REVERSED NOT SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp862.py b/Lib/encodings/cp862.py
new file mode 100644
index 0000000..4bc1cbe
--- /dev/null
+++ b/Lib/encodings/cp862.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP862.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x05d0,	# HEBREW LETTER ALEF
+	0x0081: 0x05d1,	# HEBREW LETTER BET
+	0x0082: 0x05d2,	# HEBREW LETTER GIMEL
+	0x0083: 0x05d3,	# HEBREW LETTER DALET
+	0x0084: 0x05d4,	# HEBREW LETTER HE
+	0x0085: 0x05d5,	# HEBREW LETTER VAV
+	0x0086: 0x05d6,	# HEBREW LETTER ZAYIN
+	0x0087: 0x05d7,	# HEBREW LETTER HET
+	0x0088: 0x05d8,	# HEBREW LETTER TET
+	0x0089: 0x05d9,	# HEBREW LETTER YOD
+	0x008a: 0x05da,	# HEBREW LETTER FINAL KAF
+	0x008b: 0x05db,	# HEBREW LETTER KAF
+	0x008c: 0x05dc,	# HEBREW LETTER LAMED
+	0x008d: 0x05dd,	# HEBREW LETTER FINAL MEM
+	0x008e: 0x05de,	# HEBREW LETTER MEM
+	0x008f: 0x05df,	# HEBREW LETTER FINAL NUN
+	0x0090: 0x05e0,	# HEBREW LETTER NUN
+	0x0091: 0x05e1,	# HEBREW LETTER SAMEKH
+	0x0092: 0x05e2,	# HEBREW LETTER AYIN
+	0x0093: 0x05e3,	# HEBREW LETTER FINAL PE
+	0x0094: 0x05e4,	# HEBREW LETTER PE
+	0x0095: 0x05e5,	# HEBREW LETTER FINAL TSADI
+	0x0096: 0x05e6,	# HEBREW LETTER TSADI
+	0x0097: 0x05e7,	# HEBREW LETTER QOF
+	0x0098: 0x05e8,	# HEBREW LETTER RESH
+	0x0099: 0x05e9,	# HEBREW LETTER SHIN
+	0x009a: 0x05ea,	# HEBREW LETTER TAV
+	0x009b: 0x00a2,	# CENT SIGN
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00a5,	# YEN SIGN
+	0x009e: 0x20a7,	# PESETA SIGN
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00a7: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x2310,	# REVERSED NOT SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S (GERMAN)
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp863.py b/Lib/encodings/cp863.py
new file mode 100644
index 0000000..3e6103f
--- /dev/null
+++ b/Lib/encodings/cp863.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP863.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00b6,	# PILCROW SIGN
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x2017,	# DOUBLE LOW LINE
+	0x008e: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x008f: 0x00a7,	# SECTION SIGN
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x0092: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x0095: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x00a4,	# CURRENCY SIGN
+	0x0099: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00a2,	# CENT SIGN
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x009e: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00a6,	# BROKEN BAR
+	0x00a1: 0x00b4,	# ACUTE ACCENT
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00a8,	# DIAERESIS
+	0x00a5: 0x00b8,	# CEDILLA
+	0x00a6: 0x00b3,	# SUPERSCRIPT THREE
+	0x00a7: 0x00af,	# MACRON
+	0x00a8: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00a9: 0x2310,	# REVERSED NOT SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00be,	# VULGAR FRACTION THREE QUARTERS
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp864.py b/Lib/encodings/cp864.py
new file mode 100644
index 0000000..8193278
--- /dev/null
+++ b/Lib/encodings/cp864.py
@@ -0,0 +1,172 @@
+""" Python Character Mapping Codec generated from 'CP864.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0025: 0x066a,	# ARABIC PERCENT SIGN
+	0x0080: 0x00b0,	# DEGREE SIGN
+	0x0081: 0x00b7,	# MIDDLE DOT
+	0x0082: 0x2219,	# BULLET OPERATOR
+	0x0083: 0x221a,	# SQUARE ROOT
+	0x0084: 0x2592,	# MEDIUM SHADE
+	0x0085: 0x2500,	# FORMS LIGHT HORIZONTAL
+	0x0086: 0x2502,	# FORMS LIGHT VERTICAL
+	0x0087: 0x253c,	# FORMS LIGHT VERTICAL AND HORIZONTAL
+	0x0088: 0x2524,	# FORMS LIGHT VERTICAL AND LEFT
+	0x0089: 0x252c,	# FORMS LIGHT DOWN AND HORIZONTAL
+	0x008a: 0x251c,	# FORMS LIGHT VERTICAL AND RIGHT
+	0x008b: 0x2534,	# FORMS LIGHT UP AND HORIZONTAL
+	0x008c: 0x2510,	# FORMS LIGHT DOWN AND LEFT
+	0x008d: 0x250c,	# FORMS LIGHT DOWN AND RIGHT
+	0x008e: 0x2514,	# FORMS LIGHT UP AND RIGHT
+	0x008f: 0x2518,	# FORMS LIGHT UP AND LEFT
+	0x0090: 0x03b2,	# GREEK SMALL BETA
+	0x0091: 0x221e,	# INFINITY
+	0x0092: 0x03c6,	# GREEK SMALL PHI
+	0x0093: 0x00b1,	# PLUS-OR-MINUS SIGN
+	0x0094: 0x00bd,	# FRACTION 1/2
+	0x0095: 0x00bc,	# FRACTION 1/4
+	0x0096: 0x2248,	# ALMOST EQUAL TO
+	0x0097: 0x00ab,	# LEFT POINTING GUILLEMET
+	0x0098: 0x00bb,	# RIGHT POINTING GUILLEMET
+	0x0099: 0xfef7,	# ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM
+	0x009a: 0xfef8,	# ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+	0x009b: None,	# UNDEFINED
+	0x009c: None,	# UNDEFINED
+	0x009d: 0xfefb,	# ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM
+	0x009e: 0xfefc,	# ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+	0x009f: None,	# UNDEFINED
+	0x00a1: 0x00ad,	# SOFT HYPHEN
+	0x00a2: 0xfe82,	# ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+	0x00a5: 0xfe84,	# ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+	0x00a6: None,	# UNDEFINED
+	0x00a7: None,	# UNDEFINED
+	0x00a8: 0xfe8e,	# ARABIC LETTER ALEF FINAL FORM
+	0x00a9: 0xfe8f,	# ARABIC LETTER BEH ISOLATED FORM
+	0x00aa: 0xfe95,	# ARABIC LETTER TEH ISOLATED FORM
+	0x00ab: 0xfe99,	# ARABIC LETTER THEH ISOLATED FORM
+	0x00ac: 0x060c,	# ARABIC COMMA
+	0x00ad: 0xfe9d,	# ARABIC LETTER JEEM ISOLATED FORM
+	0x00ae: 0xfea1,	# ARABIC LETTER HAH ISOLATED FORM
+	0x00af: 0xfea5,	# ARABIC LETTER KHAH ISOLATED FORM
+	0x00b0: 0x0660,	# ARABIC-INDIC DIGIT ZERO
+	0x00b1: 0x0661,	# ARABIC-INDIC DIGIT ONE
+	0x00b2: 0x0662,	# ARABIC-INDIC DIGIT TWO
+	0x00b3: 0x0663,	# ARABIC-INDIC DIGIT THREE
+	0x00b4: 0x0664,	# ARABIC-INDIC DIGIT FOUR
+	0x00b5: 0x0665,	# ARABIC-INDIC DIGIT FIVE
+	0x00b6: 0x0666,	# ARABIC-INDIC DIGIT SIX
+	0x00b7: 0x0667,	# ARABIC-INDIC DIGIT SEVEN
+	0x00b8: 0x0668,	# ARABIC-INDIC DIGIT EIGHT
+	0x00b9: 0x0669,	# ARABIC-INDIC DIGIT NINE
+	0x00ba: 0xfed1,	# ARABIC LETTER FEH ISOLATED FORM
+	0x00bb: 0x061b,	# ARABIC SEMICOLON
+	0x00bc: 0xfeb1,	# ARABIC LETTER SEEN ISOLATED FORM
+	0x00bd: 0xfeb5,	# ARABIC LETTER SHEEN ISOLATED FORM
+	0x00be: 0xfeb9,	# ARABIC LETTER SAD ISOLATED FORM
+	0x00bf: 0x061f,	# ARABIC QUESTION MARK
+	0x00c0: 0x00a2,	# CENT SIGN
+	0x00c1: 0xfe80,	# ARABIC LETTER HAMZA ISOLATED FORM
+	0x00c2: 0xfe81,	# ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM
+	0x00c3: 0xfe83,	# ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM
+	0x00c4: 0xfe85,	# ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM
+	0x00c5: 0xfeca,	# ARABIC LETTER AIN FINAL FORM
+	0x00c6: 0xfe8b,	# ARABIC LETTER YEH WITH HAMZA ABOVE INITIAL FORM
+	0x00c7: 0xfe8d,	# ARABIC LETTER ALEF ISOLATED FORM
+	0x00c8: 0xfe91,	# ARABIC LETTER BEH INITIAL FORM
+	0x00c9: 0xfe93,	# ARABIC LETTER TEH MARBUTA ISOLATED FORM
+	0x00ca: 0xfe97,	# ARABIC LETTER TEH INITIAL FORM
+	0x00cb: 0xfe9b,	# ARABIC LETTER THEH INITIAL FORM
+	0x00cc: 0xfe9f,	# ARABIC LETTER JEEM INITIAL FORM
+	0x00cd: 0xfea3,	# ARABIC LETTER HAH INITIAL FORM
+	0x00ce: 0xfea7,	# ARABIC LETTER KHAH INITIAL FORM
+	0x00cf: 0xfea9,	# ARABIC LETTER DAL ISOLATED FORM
+	0x00d0: 0xfeab,	# ARABIC LETTER THAL ISOLATED FORM
+	0x00d1: 0xfead,	# ARABIC LETTER REH ISOLATED FORM
+	0x00d2: 0xfeaf,	# ARABIC LETTER ZAIN ISOLATED FORM
+	0x00d3: 0xfeb3,	# ARABIC LETTER SEEN INITIAL FORM
+	0x00d4: 0xfeb7,	# ARABIC LETTER SHEEN INITIAL FORM
+	0x00d5: 0xfebb,	# ARABIC LETTER SAD INITIAL FORM
+	0x00d6: 0xfebf,	# ARABIC LETTER DAD INITIAL FORM
+	0x00d7: 0xfec1,	# ARABIC LETTER TAH ISOLATED FORM
+	0x00d8: 0xfec5,	# ARABIC LETTER ZAH ISOLATED FORM
+	0x00d9: 0xfecb,	# ARABIC LETTER AIN INITIAL FORM
+	0x00da: 0xfecf,	# ARABIC LETTER GHAIN INITIAL FORM
+	0x00db: 0x00a6,	# BROKEN VERTICAL BAR
+	0x00dc: 0x00ac,	# NOT SIGN
+	0x00dd: 0x00f7,	# DIVISION SIGN
+	0x00de: 0x00d7,	# MULTIPLICATION SIGN
+	0x00df: 0xfec9,	# ARABIC LETTER AIN ISOLATED FORM
+	0x00e0: 0x0640,	# ARABIC TATWEEL
+	0x00e1: 0xfed3,	# ARABIC LETTER FEH INITIAL FORM
+	0x00e2: 0xfed7,	# ARABIC LETTER QAF INITIAL FORM
+	0x00e3: 0xfedb,	# ARABIC LETTER KAF INITIAL FORM
+	0x00e4: 0xfedf,	# ARABIC LETTER LAM INITIAL FORM
+	0x00e5: 0xfee3,	# ARABIC LETTER MEEM INITIAL FORM
+	0x00e6: 0xfee7,	# ARABIC LETTER NOON INITIAL FORM
+	0x00e7: 0xfeeb,	# ARABIC LETTER HEH INITIAL FORM
+	0x00e8: 0xfeed,	# ARABIC LETTER WAW ISOLATED FORM
+	0x00e9: 0xfeef,	# ARABIC LETTER ALEF MAKSURA ISOLATED FORM
+	0x00ea: 0xfef3,	# ARABIC LETTER YEH INITIAL FORM
+	0x00eb: 0xfebd,	# ARABIC LETTER DAD ISOLATED FORM
+	0x00ec: 0xfecc,	# ARABIC LETTER AIN MEDIAL FORM
+	0x00ed: 0xfece,	# ARABIC LETTER GHAIN FINAL FORM
+	0x00ee: 0xfecd,	# ARABIC LETTER GHAIN ISOLATED FORM
+	0x00ef: 0xfee1,	# ARABIC LETTER MEEM ISOLATED FORM
+	0x00f0: 0xfe7d,	# ARABIC SHADDA MEDIAL FORM
+	0x00f1: 0x0651,	# ARABIC SHADDAH
+	0x00f2: 0xfee5,	# ARABIC LETTER NOON ISOLATED FORM
+	0x00f3: 0xfee9,	# ARABIC LETTER HEH ISOLATED FORM
+	0x00f4: 0xfeec,	# ARABIC LETTER HEH MEDIAL FORM
+	0x00f5: 0xfef0,	# ARABIC LETTER ALEF MAKSURA FINAL FORM
+	0x00f6: 0xfef2,	# ARABIC LETTER YEH FINAL FORM
+	0x00f7: 0xfed0,	# ARABIC LETTER GHAIN MEDIAL FORM
+	0x00f8: 0xfed5,	# ARABIC LETTER QAF ISOLATED FORM
+	0x00f9: 0xfef5,	# ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM
+	0x00fa: 0xfef6,	# ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+	0x00fb: 0xfedd,	# ARABIC LETTER LAM ISOLATED FORM
+	0x00fc: 0xfed9,	# ARABIC LETTER KAF ISOLATED FORM
+	0x00fd: 0xfef1,	# ARABIC LETTER YEH ISOLATED FORM
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: None,	# UNDEFINED
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp865.py b/Lib/encodings/cp865.py
new file mode 100644
index 0000000..eaed7a9
--- /dev/null
+++ b/Lib/encodings/cp865.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP865.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0081: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x0082: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x0083: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x0084: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x0085: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0086: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x0087: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x0088: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0089: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x008a: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x008b: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x008c: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x008d: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x008e: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x008f: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0090: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0091: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x0092: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x0093: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x0094: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x0095: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0096: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x0097: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x0098: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x0099: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x009a: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x009b: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x009e: 0x20a7,	# PESETA SIGN
+	0x009f: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00a0: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x00a1: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x00a2: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x00a3: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x00a4: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x00a5: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x00a6: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00a7: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00a8: 0x00bf,	# INVERTED QUESTION MARK
+	0x00a9: 0x2310,	# REVERSED NOT SIGN
+	0x00aa: 0x00ac,	# NOT SIGN
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x00bc,	# VULGAR FRACTION ONE QUARTER
+	0x00ad: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00a4,	# CURRENCY SIGN
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e1: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00e2: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00e3: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00e4: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00e5: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00e6: 0x00b5,	# MICRO SIGN
+	0x00e7: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00e8: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00e9: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ea: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00eb: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00ec: 0x221e,	# INFINITY
+	0x00ed: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00ee: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00ef: 0x2229,	# INTERSECTION
+	0x00f0: 0x2261,	# IDENTICAL TO
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00f3: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00f4: 0x2320,	# TOP HALF INTEGRAL
+	0x00f5: 0x2321,	# BOTTOM HALF INTEGRAL
+	0x00f6: 0x00f7,	# DIVISION SIGN
+	0x00f7: 0x2248,	# ALMOST EQUAL TO
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x207f,	# SUPERSCRIPT LATIN SMALL LETTER N
+	0x00fd: 0x00b2,	# SUPERSCRIPT TWO
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp866.py b/Lib/encodings/cp866.py
new file mode 100644
index 0000000..25e1a50
--- /dev/null
+++ b/Lib/encodings/cp866.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP866.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0410,	# CYRILLIC CAPITAL LETTER A
+	0x0081: 0x0411,	# CYRILLIC CAPITAL LETTER BE
+	0x0082: 0x0412,	# CYRILLIC CAPITAL LETTER VE
+	0x0083: 0x0413,	# CYRILLIC CAPITAL LETTER GHE
+	0x0084: 0x0414,	# CYRILLIC CAPITAL LETTER DE
+	0x0085: 0x0415,	# CYRILLIC CAPITAL LETTER IE
+	0x0086: 0x0416,	# CYRILLIC CAPITAL LETTER ZHE
+	0x0087: 0x0417,	# CYRILLIC CAPITAL LETTER ZE
+	0x0088: 0x0418,	# CYRILLIC CAPITAL LETTER I
+	0x0089: 0x0419,	# CYRILLIC CAPITAL LETTER SHORT I
+	0x008a: 0x041a,	# CYRILLIC CAPITAL LETTER KA
+	0x008b: 0x041b,	# CYRILLIC CAPITAL LETTER EL
+	0x008c: 0x041c,	# CYRILLIC CAPITAL LETTER EM
+	0x008d: 0x041d,	# CYRILLIC CAPITAL LETTER EN
+	0x008e: 0x041e,	# CYRILLIC CAPITAL LETTER O
+	0x008f: 0x041f,	# CYRILLIC CAPITAL LETTER PE
+	0x0090: 0x0420,	# CYRILLIC CAPITAL LETTER ER
+	0x0091: 0x0421,	# CYRILLIC CAPITAL LETTER ES
+	0x0092: 0x0422,	# CYRILLIC CAPITAL LETTER TE
+	0x0093: 0x0423,	# CYRILLIC CAPITAL LETTER U
+	0x0094: 0x0424,	# CYRILLIC CAPITAL LETTER EF
+	0x0095: 0x0425,	# CYRILLIC CAPITAL LETTER HA
+	0x0096: 0x0426,	# CYRILLIC CAPITAL LETTER TSE
+	0x0097: 0x0427,	# CYRILLIC CAPITAL LETTER CHE
+	0x0098: 0x0428,	# CYRILLIC CAPITAL LETTER SHA
+	0x0099: 0x0429,	# CYRILLIC CAPITAL LETTER SHCHA
+	0x009a: 0x042a,	# CYRILLIC CAPITAL LETTER HARD SIGN
+	0x009b: 0x042b,	# CYRILLIC CAPITAL LETTER YERU
+	0x009c: 0x042c,	# CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x009d: 0x042d,	# CYRILLIC CAPITAL LETTER E
+	0x009e: 0x042e,	# CYRILLIC CAPITAL LETTER YU
+	0x009f: 0x042f,	# CYRILLIC CAPITAL LETTER YA
+	0x00a0: 0x0430,	# CYRILLIC SMALL LETTER A
+	0x00a1: 0x0431,	# CYRILLIC SMALL LETTER BE
+	0x00a2: 0x0432,	# CYRILLIC SMALL LETTER VE
+	0x00a3: 0x0433,	# CYRILLIC SMALL LETTER GHE
+	0x00a4: 0x0434,	# CYRILLIC SMALL LETTER DE
+	0x00a5: 0x0435,	# CYRILLIC SMALL LETTER IE
+	0x00a6: 0x0436,	# CYRILLIC SMALL LETTER ZHE
+	0x00a7: 0x0437,	# CYRILLIC SMALL LETTER ZE
+	0x00a8: 0x0438,	# CYRILLIC SMALL LETTER I
+	0x00a9: 0x0439,	# CYRILLIC SMALL LETTER SHORT I
+	0x00aa: 0x043a,	# CYRILLIC SMALL LETTER KA
+	0x00ab: 0x043b,	# CYRILLIC SMALL LETTER EL
+	0x00ac: 0x043c,	# CYRILLIC SMALL LETTER EM
+	0x00ad: 0x043d,	# CYRILLIC SMALL LETTER EN
+	0x00ae: 0x043e,	# CYRILLIC SMALL LETTER O
+	0x00af: 0x043f,	# CYRILLIC SMALL LETTER PE
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x2561,	# BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b6: 0x2562,	# BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b7: 0x2556,	# BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00b8: 0x2555,	# BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x255c,	# BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00be: 0x255b,	# BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x255e,	# BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00c7: 0x255f,	# BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x2567,	# BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00d0: 0x2568,	# BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00d1: 0x2564,	# BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00d2: 0x2565,	# BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00d3: 0x2559,	# BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00d4: 0x2558,	# BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00d5: 0x2552,	# BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00d6: 0x2553,	# BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00d7: 0x256b,	# BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00d8: 0x256a,	# BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x258c,	# LEFT HALF BLOCK
+	0x00de: 0x2590,	# RIGHT HALF BLOCK
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x0440,	# CYRILLIC SMALL LETTER ER
+	0x00e1: 0x0441,	# CYRILLIC SMALL LETTER ES
+	0x00e2: 0x0442,	# CYRILLIC SMALL LETTER TE
+	0x00e3: 0x0443,	# CYRILLIC SMALL LETTER U
+	0x00e4: 0x0444,	# CYRILLIC SMALL LETTER EF
+	0x00e5: 0x0445,	# CYRILLIC SMALL LETTER HA
+	0x00e6: 0x0446,	# CYRILLIC SMALL LETTER TSE
+	0x00e7: 0x0447,	# CYRILLIC SMALL LETTER CHE
+	0x00e8: 0x0448,	# CYRILLIC SMALL LETTER SHA
+	0x00e9: 0x0449,	# CYRILLIC SMALL LETTER SHCHA
+	0x00ea: 0x044a,	# CYRILLIC SMALL LETTER HARD SIGN
+	0x00eb: 0x044b,	# CYRILLIC SMALL LETTER YERU
+	0x00ec: 0x044c,	# CYRILLIC SMALL LETTER SOFT SIGN
+	0x00ed: 0x044d,	# CYRILLIC SMALL LETTER E
+	0x00ee: 0x044e,	# CYRILLIC SMALL LETTER YU
+	0x00ef: 0x044f,	# CYRILLIC SMALL LETTER YA
+	0x00f0: 0x0401,	# CYRILLIC CAPITAL LETTER IO
+	0x00f1: 0x0451,	# CYRILLIC SMALL LETTER IO
+	0x00f2: 0x0404,	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x00f3: 0x0454,	# CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x00f4: 0x0407,	# CYRILLIC CAPITAL LETTER YI
+	0x00f5: 0x0457,	# CYRILLIC SMALL LETTER YI
+	0x00f6: 0x040e,	# CYRILLIC CAPITAL LETTER SHORT U
+	0x00f7: 0x045e,	# CYRILLIC SMALL LETTER SHORT U
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x2219,	# BULLET OPERATOR
+	0x00fa: 0x00b7,	# MIDDLE DOT
+	0x00fb: 0x221a,	# SQUARE ROOT
+	0x00fc: 0x2116,	# NUMERO SIGN
+	0x00fd: 0x00a4,	# CURRENCY SIGN
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp869.py b/Lib/encodings/cp869.py
new file mode 100644
index 0000000..840335f
--- /dev/null
+++ b/Lib/encodings/cp869.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'CP869.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: None,	# UNDEFINED
+	0x0081: None,	# UNDEFINED
+	0x0082: None,	# UNDEFINED
+	0x0083: None,	# UNDEFINED
+	0x0084: None,	# UNDEFINED
+	0x0085: None,	# UNDEFINED
+	0x0086: 0x0386,	# GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x0087: None,	# UNDEFINED
+	0x0088: 0x00b7,	# MIDDLE DOT
+	0x0089: 0x00ac,	# NOT SIGN
+	0x008a: 0x00a6,	# BROKEN BAR
+	0x008b: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x008c: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x008d: 0x0388,	# GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x008e: 0x2015,	# HORIZONTAL BAR
+	0x008f: 0x0389,	# GREEK CAPITAL LETTER ETA WITH TONOS
+	0x0090: 0x038a,	# GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x0091: 0x03aa,	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x0092: 0x038c,	# GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x0093: None,	# UNDEFINED
+	0x0094: None,	# UNDEFINED
+	0x0095: 0x038e,	# GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x0096: 0x03ab,	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x0097: 0x00a9,	# COPYRIGHT SIGN
+	0x0098: 0x038f,	# GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x0099: 0x00b2,	# SUPERSCRIPT TWO
+	0x009a: 0x00b3,	# SUPERSCRIPT THREE
+	0x009b: 0x03ac,	# GREEK SMALL LETTER ALPHA WITH TONOS
+	0x009c: 0x00a3,	# POUND SIGN
+	0x009d: 0x03ad,	# GREEK SMALL LETTER EPSILON WITH TONOS
+	0x009e: 0x03ae,	# GREEK SMALL LETTER ETA WITH TONOS
+	0x009f: 0x03af,	# GREEK SMALL LETTER IOTA WITH TONOS
+	0x00a0: 0x03ca,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00a1: 0x0390,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x00a2: 0x03cc,	# GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00a3: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00a4: 0x0391,	# GREEK CAPITAL LETTER ALPHA
+	0x00a5: 0x0392,	# GREEK CAPITAL LETTER BETA
+	0x00a6: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00a7: 0x0394,	# GREEK CAPITAL LETTER DELTA
+	0x00a8: 0x0395,	# GREEK CAPITAL LETTER EPSILON
+	0x00a9: 0x0396,	# GREEK CAPITAL LETTER ZETA
+	0x00aa: 0x0397,	# GREEK CAPITAL LETTER ETA
+	0x00ab: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00ac: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00ad: 0x0399,	# GREEK CAPITAL LETTER IOTA
+	0x00ae: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00af: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00b0: 0x2591,	# LIGHT SHADE
+	0x00b1: 0x2592,	# MEDIUM SHADE
+	0x00b2: 0x2593,	# DARK SHADE
+	0x00b3: 0x2502,	# BOX DRAWINGS LIGHT VERTICAL
+	0x00b4: 0x2524,	# BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x00b5: 0x039a,	# GREEK CAPITAL LETTER KAPPA
+	0x00b6: 0x039b,	# GREEK CAPITAL LETTER LAMDA
+	0x00b7: 0x039c,	# GREEK CAPITAL LETTER MU
+	0x00b8: 0x039d,	# GREEK CAPITAL LETTER NU
+	0x00b9: 0x2563,	# BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00ba: 0x2551,	# BOX DRAWINGS DOUBLE VERTICAL
+	0x00bb: 0x2557,	# BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00bc: 0x255d,	# BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00bd: 0x039e,	# GREEK CAPITAL LETTER XI
+	0x00be: 0x039f,	# GREEK CAPITAL LETTER OMICRON
+	0x00bf: 0x2510,	# BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x00c0: 0x2514,	# BOX DRAWINGS LIGHT UP AND RIGHT
+	0x00c1: 0x2534,	# BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x00c2: 0x252c,	# BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x00c3: 0x251c,	# BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x00c4: 0x2500,	# BOX DRAWINGS LIGHT HORIZONTAL
+	0x00c5: 0x253c,	# BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x00c6: 0x03a0,	# GREEK CAPITAL LETTER PI
+	0x00c7: 0x03a1,	# GREEK CAPITAL LETTER RHO
+	0x00c8: 0x255a,	# BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00c9: 0x2554,	# BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00ca: 0x2569,	# BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00cb: 0x2566,	# BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00cc: 0x2560,	# BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00cd: 0x2550,	# BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00ce: 0x256c,	# BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00cf: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00d0: 0x03a4,	# GREEK CAPITAL LETTER TAU
+	0x00d1: 0x03a5,	# GREEK CAPITAL LETTER UPSILON
+	0x00d2: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00d3: 0x03a7,	# GREEK CAPITAL LETTER CHI
+	0x00d4: 0x03a8,	# GREEK CAPITAL LETTER PSI
+	0x00d5: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00d6: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00d7: 0x03b2,	# GREEK SMALL LETTER BETA
+	0x00d8: 0x03b3,	# GREEK SMALL LETTER GAMMA
+	0x00d9: 0x2518,	# BOX DRAWINGS LIGHT UP AND LEFT
+	0x00da: 0x250c,	# BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x00db: 0x2588,	# FULL BLOCK
+	0x00dc: 0x2584,	# LOWER HALF BLOCK
+	0x00dd: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00de: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00df: 0x2580,	# UPPER HALF BLOCK
+	0x00e0: 0x03b6,	# GREEK SMALL LETTER ZETA
+	0x00e1: 0x03b7,	# GREEK SMALL LETTER ETA
+	0x00e2: 0x03b8,	# GREEK SMALL LETTER THETA
+	0x00e3: 0x03b9,	# GREEK SMALL LETTER IOTA
+	0x00e4: 0x03ba,	# GREEK SMALL LETTER KAPPA
+	0x00e5: 0x03bb,	# GREEK SMALL LETTER LAMDA
+	0x00e6: 0x03bc,	# GREEK SMALL LETTER MU
+	0x00e7: 0x03bd,	# GREEK SMALL LETTER NU
+	0x00e8: 0x03be,	# GREEK SMALL LETTER XI
+	0x00e9: 0x03bf,	# GREEK SMALL LETTER OMICRON
+	0x00ea: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00eb: 0x03c1,	# GREEK SMALL LETTER RHO
+	0x00ec: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00ed: 0x03c2,	# GREEK SMALL LETTER FINAL SIGMA
+	0x00ee: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00ef: 0x0384,	# GREEK TONOS
+	0x00f0: 0x00ad,	# SOFT HYPHEN
+	0x00f1: 0x00b1,	# PLUS-MINUS SIGN
+	0x00f2: 0x03c5,	# GREEK SMALL LETTER UPSILON
+	0x00f3: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00f4: 0x03c7,	# GREEK SMALL LETTER CHI
+	0x00f5: 0x00a7,	# SECTION SIGN
+	0x00f6: 0x03c8,	# GREEK SMALL LETTER PSI
+	0x00f7: 0x0385,	# GREEK DIALYTIKA TONOS
+	0x00f8: 0x00b0,	# DEGREE SIGN
+	0x00f9: 0x00a8,	# DIAERESIS
+	0x00fa: 0x03c9,	# GREEK SMALL LETTER OMEGA
+	0x00fb: 0x03cb,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00fc: 0x03b0,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x00fd: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
+	0x00fe: 0x25a0,	# BLACK SQUARE
+	0x00ff: 0x00a0,	# NO-BREAK SPACE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp874.py b/Lib/encodings/cp874.py
new file mode 100644
index 0000000..0231c7a
--- /dev/null
+++ b/Lib/encodings/cp874.py
@@ -0,0 +1,173 @@
+""" Python Character Mapping Codec generated from 'CP874.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x20ac,	# EURO SIGN
+	0x0081: None,	# UNDEFINED
+	0x0082: None,	# UNDEFINED
+	0x0083: None,	# UNDEFINED
+	0x0084: None,	# UNDEFINED
+	0x0085: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x0086: None,	# UNDEFINED
+	0x0087: None,	# UNDEFINED
+	0x0088: None,	# UNDEFINED
+	0x0089: None,	# UNDEFINED
+	0x008a: None,	# UNDEFINED
+	0x008b: None,	# UNDEFINED
+	0x008c: None,	# UNDEFINED
+	0x008d: None,	# UNDEFINED
+	0x008e: None,	# UNDEFINED
+	0x008f: None,	# UNDEFINED
+	0x0090: None,	# UNDEFINED
+	0x0091: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x0092: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x0093: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x0094: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x0095: 0x2022,	# BULLET
+	0x0096: 0x2013,	# EN DASH
+	0x0097: 0x2014,	# EM DASH
+	0x0098: None,	# UNDEFINED
+	0x0099: None,	# UNDEFINED
+	0x009a: None,	# UNDEFINED
+	0x009b: None,	# UNDEFINED
+	0x009c: None,	# UNDEFINED
+	0x009d: None,	# UNDEFINED
+	0x009e: None,	# UNDEFINED
+	0x009f: None,	# UNDEFINED
+	0x00a1: 0x0e01,	# THAI CHARACTER KO KAI
+	0x00a2: 0x0e02,	# THAI CHARACTER KHO KHAI
+	0x00a3: 0x0e03,	# THAI CHARACTER KHO KHUAT
+	0x00a4: 0x0e04,	# THAI CHARACTER KHO KHWAI
+	0x00a5: 0x0e05,	# THAI CHARACTER KHO KHON
+	0x00a6: 0x0e06,	# THAI CHARACTER KHO RAKHANG
+	0x00a7: 0x0e07,	# THAI CHARACTER NGO NGU
+	0x00a8: 0x0e08,	# THAI CHARACTER CHO CHAN
+	0x00a9: 0x0e09,	# THAI CHARACTER CHO CHING
+	0x00aa: 0x0e0a,	# THAI CHARACTER CHO CHANG
+	0x00ab: 0x0e0b,	# THAI CHARACTER SO SO
+	0x00ac: 0x0e0c,	# THAI CHARACTER CHO CHOE
+	0x00ad: 0x0e0d,	# THAI CHARACTER YO YING
+	0x00ae: 0x0e0e,	# THAI CHARACTER DO CHADA
+	0x00af: 0x0e0f,	# THAI CHARACTER TO PATAK
+	0x00b0: 0x0e10,	# THAI CHARACTER THO THAN
+	0x00b1: 0x0e11,	# THAI CHARACTER THO NANGMONTHO
+	0x00b2: 0x0e12,	# THAI CHARACTER THO PHUTHAO
+	0x00b3: 0x0e13,	# THAI CHARACTER NO NEN
+	0x00b4: 0x0e14,	# THAI CHARACTER DO DEK
+	0x00b5: 0x0e15,	# THAI CHARACTER TO TAO
+	0x00b6: 0x0e16,	# THAI CHARACTER THO THUNG
+	0x00b7: 0x0e17,	# THAI CHARACTER THO THAHAN
+	0x00b8: 0x0e18,	# THAI CHARACTER THO THONG
+	0x00b9: 0x0e19,	# THAI CHARACTER NO NU
+	0x00ba: 0x0e1a,	# THAI CHARACTER BO BAIMAI
+	0x00bb: 0x0e1b,	# THAI CHARACTER PO PLA
+	0x00bc: 0x0e1c,	# THAI CHARACTER PHO PHUNG
+	0x00bd: 0x0e1d,	# THAI CHARACTER FO FA
+	0x00be: 0x0e1e,	# THAI CHARACTER PHO PHAN
+	0x00bf: 0x0e1f,	# THAI CHARACTER FO FAN
+	0x00c0: 0x0e20,	# THAI CHARACTER PHO SAMPHAO
+	0x00c1: 0x0e21,	# THAI CHARACTER MO MA
+	0x00c2: 0x0e22,	# THAI CHARACTER YO YAK
+	0x00c3: 0x0e23,	# THAI CHARACTER RO RUA
+	0x00c4: 0x0e24,	# THAI CHARACTER RU
+	0x00c5: 0x0e25,	# THAI CHARACTER LO LING
+	0x00c6: 0x0e26,	# THAI CHARACTER LU
+	0x00c7: 0x0e27,	# THAI CHARACTER WO WAEN
+	0x00c8: 0x0e28,	# THAI CHARACTER SO SALA
+	0x00c9: 0x0e29,	# THAI CHARACTER SO RUSI
+	0x00ca: 0x0e2a,	# THAI CHARACTER SO SUA
+	0x00cb: 0x0e2b,	# THAI CHARACTER HO HIP
+	0x00cc: 0x0e2c,	# THAI CHARACTER LO CHULA
+	0x00cd: 0x0e2d,	# THAI CHARACTER O ANG
+	0x00ce: 0x0e2e,	# THAI CHARACTER HO NOKHUK
+	0x00cf: 0x0e2f,	# THAI CHARACTER PAIYANNOI
+	0x00d0: 0x0e30,	# THAI CHARACTER SARA A
+	0x00d1: 0x0e31,	# THAI CHARACTER MAI HAN-AKAT
+	0x00d2: 0x0e32,	# THAI CHARACTER SARA AA
+	0x00d3: 0x0e33,	# THAI CHARACTER SARA AM
+	0x00d4: 0x0e34,	# THAI CHARACTER SARA I
+	0x00d5: 0x0e35,	# THAI CHARACTER SARA II
+	0x00d6: 0x0e36,	# THAI CHARACTER SARA UE
+	0x00d7: 0x0e37,	# THAI CHARACTER SARA UEE
+	0x00d8: 0x0e38,	# THAI CHARACTER SARA U
+	0x00d9: 0x0e39,	# THAI CHARACTER SARA UU
+	0x00da: 0x0e3a,	# THAI CHARACTER PHINTHU
+	0x00db: None,	# UNDEFINED
+	0x00dc: None,	# UNDEFINED
+	0x00dd: None,	# UNDEFINED
+	0x00de: None,	# UNDEFINED
+	0x00df: 0x0e3f,	# THAI CURRENCY SYMBOL BAHT
+	0x00e0: 0x0e40,	# THAI CHARACTER SARA E
+	0x00e1: 0x0e41,	# THAI CHARACTER SARA AE
+	0x00e2: 0x0e42,	# THAI CHARACTER SARA O
+	0x00e3: 0x0e43,	# THAI CHARACTER SARA AI MAIMUAN
+	0x00e4: 0x0e44,	# THAI CHARACTER SARA AI MAIMALAI
+	0x00e5: 0x0e45,	# THAI CHARACTER LAKKHANGYAO
+	0x00e6: 0x0e46,	# THAI CHARACTER MAIYAMOK
+	0x00e7: 0x0e47,	# THAI CHARACTER MAITAIKHU
+	0x00e8: 0x0e48,	# THAI CHARACTER MAI EK
+	0x00e9: 0x0e49,	# THAI CHARACTER MAI THO
+	0x00ea: 0x0e4a,	# THAI CHARACTER MAI TRI
+	0x00eb: 0x0e4b,	# THAI CHARACTER MAI CHATTAWA
+	0x00ec: 0x0e4c,	# THAI CHARACTER THANTHAKHAT
+	0x00ed: 0x0e4d,	# THAI CHARACTER NIKHAHIT
+	0x00ee: 0x0e4e,	# THAI CHARACTER YAMAKKAN
+	0x00ef: 0x0e4f,	# THAI CHARACTER FONGMAN
+	0x00f0: 0x0e50,	# THAI DIGIT ZERO
+	0x00f1: 0x0e51,	# THAI DIGIT ONE
+	0x00f2: 0x0e52,	# THAI DIGIT TWO
+	0x00f3: 0x0e53,	# THAI DIGIT THREE
+	0x00f4: 0x0e54,	# THAI DIGIT FOUR
+	0x00f5: 0x0e55,	# THAI DIGIT FIVE
+	0x00f6: 0x0e56,	# THAI DIGIT SIX
+	0x00f7: 0x0e57,	# THAI DIGIT SEVEN
+	0x00f8: 0x0e58,	# THAI DIGIT EIGHT
+	0x00f9: 0x0e59,	# THAI DIGIT NINE
+	0x00fa: 0x0e5a,	# THAI CHARACTER ANGKHANKHU
+	0x00fb: 0x0e5b,	# THAI CHARACTER KHOMUT
+	0x00fc: None,	# UNDEFINED
+	0x00fd: None,	# UNDEFINED
+	0x00fe: None,	# UNDEFINED
+	0x00ff: None,	# UNDEFINED
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/cp875.py b/Lib/encodings/cp875.py
new file mode 100644
index 0000000..924c0a0
--- /dev/null
+++ b/Lib/encodings/cp875.py
@@ -0,0 +1,283 @@
+""" Python Character Mapping Codec generated from 'CP875.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0004: 0x009c,	# CONTROL
+	0x0005: 0x0009,	# HORIZONTAL TABULATION
+	0x0006: 0x0086,	# CONTROL
+	0x0007: 0x007f,	# DELETE
+	0x0008: 0x0097,	# CONTROL
+	0x0009: 0x008d,	# CONTROL
+	0x000a: 0x008e,	# CONTROL
+	0x0014: 0x009d,	# CONTROL
+	0x0015: 0x0085,	# CONTROL
+	0x0016: 0x0008,	# BACKSPACE
+	0x0017: 0x0087,	# CONTROL
+	0x001a: 0x0092,	# CONTROL
+	0x001b: 0x008f,	# CONTROL
+	0x0020: 0x0080,	# CONTROL
+	0x0021: 0x0081,	# CONTROL
+	0x0022: 0x0082,	# CONTROL
+	0x0023: 0x0083,	# CONTROL
+	0x0024: 0x0084,	# CONTROL
+	0x0025: 0x000a,	# LINE FEED
+	0x0026: 0x0017,	# END OF TRANSMISSION BLOCK
+	0x0027: 0x001b,	# ESCAPE
+	0x0028: 0x0088,	# CONTROL
+	0x0029: 0x0089,	# CONTROL
+	0x002a: 0x008a,	# CONTROL
+	0x002b: 0x008b,	# CONTROL
+	0x002c: 0x008c,	# CONTROL
+	0x002d: 0x0005,	# ENQUIRY
+	0x002e: 0x0006,	# ACKNOWLEDGE
+	0x002f: 0x0007,	# BELL
+	0x0030: 0x0090,	# CONTROL
+	0x0031: 0x0091,	# CONTROL
+	0x0032: 0x0016,	# SYNCHRONOUS IDLE
+	0x0033: 0x0093,	# CONTROL
+	0x0034: 0x0094,	# CONTROL
+	0x0035: 0x0095,	# CONTROL
+	0x0036: 0x0096,	# CONTROL
+	0x0037: 0x0004,	# END OF TRANSMISSION
+	0x0038: 0x0098,	# CONTROL
+	0x0039: 0x0099,	# CONTROL
+	0x003a: 0x009a,	# CONTROL
+	0x003b: 0x009b,	# CONTROL
+	0x003c: 0x0014,	# DEVICE CONTROL FOUR
+	0x003d: 0x0015,	# NEGATIVE ACKNOWLEDGE
+	0x003e: 0x009e,	# CONTROL
+	0x003f: 0x001a,	# SUBSTITUTE
+	0x0040: 0x0020,	# SPACE
+	0x0041: 0x0391,	# GREEK CAPITAL LETTER ALPHA
+	0x0042: 0x0392,	# GREEK CAPITAL LETTER BETA
+	0x0043: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x0044: 0x0394,	# GREEK CAPITAL LETTER DELTA
+	0x0045: 0x0395,	# GREEK CAPITAL LETTER EPSILON
+	0x0046: 0x0396,	# GREEK CAPITAL LETTER ZETA
+	0x0047: 0x0397,	# GREEK CAPITAL LETTER ETA
+	0x0048: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x0049: 0x0399,	# GREEK CAPITAL LETTER IOTA
+	0x004a: 0x005b,	# LEFT SQUARE BRACKET
+	0x004b: 0x002e,	# FULL STOP
+	0x004c: 0x003c,	# LESS-THAN SIGN
+	0x004d: 0x0028,	# LEFT PARENTHESIS
+	0x004e: 0x002b,	# PLUS SIGN
+	0x004f: 0x0021,	# EXCLAMATION MARK
+	0x0050: 0x0026,	# AMPERSAND
+	0x0051: 0x039a,	# GREEK CAPITAL LETTER KAPPA
+	0x0052: 0x039b,	# GREEK CAPITAL LETTER LAMDA
+	0x0053: 0x039c,	# GREEK CAPITAL LETTER MU
+	0x0054: 0x039d,	# GREEK CAPITAL LETTER NU
+	0x0055: 0x039e,	# GREEK CAPITAL LETTER XI
+	0x0056: 0x039f,	# GREEK CAPITAL LETTER OMICRON
+	0x0057: 0x03a0,	# GREEK CAPITAL LETTER PI
+	0x0058: 0x03a1,	# GREEK CAPITAL LETTER RHO
+	0x0059: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x005a: 0x005d,	# RIGHT SQUARE BRACKET
+	0x005b: 0x0024,	# DOLLAR SIGN
+	0x005c: 0x002a,	# ASTERISK
+	0x005d: 0x0029,	# RIGHT PARENTHESIS
+	0x005e: 0x003b,	# SEMICOLON
+	0x005f: 0x005e,	# CIRCUMFLEX ACCENT
+	0x0060: 0x002d,	# HYPHEN-MINUS
+	0x0061: 0x002f,	# SOLIDUS
+	0x0062: 0x03a4,	# GREEK CAPITAL LETTER TAU
+	0x0063: 0x03a5,	# GREEK CAPITAL LETTER UPSILON
+	0x0064: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x0065: 0x03a7,	# GREEK CAPITAL LETTER CHI
+	0x0066: 0x03a8,	# GREEK CAPITAL LETTER PSI
+	0x0067: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x0068: 0x03aa,	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x0069: 0x03ab,	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x006a: 0x007c,	# VERTICAL LINE
+	0x006b: 0x002c,	# COMMA
+	0x006c: 0x0025,	# PERCENT SIGN
+	0x006d: 0x005f,	# LOW LINE
+	0x006e: 0x003e,	# GREATER-THAN SIGN
+	0x006f: 0x003f,	# QUESTION MARK
+	0x0070: 0x00a8,	# DIAERESIS
+	0x0071: 0x0386,	# GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x0072: 0x0388,	# GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x0073: 0x0389,	# GREEK CAPITAL LETTER ETA WITH TONOS
+	0x0074: 0x00a0,	# NO-BREAK SPACE
+	0x0075: 0x038a,	# GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x0076: 0x038c,	# GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x0077: 0x038e,	# GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x0078: 0x038f,	# GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x0079: 0x0060,	# GRAVE ACCENT
+	0x007a: 0x003a,	# COLON
+	0x007b: 0x0023,	# NUMBER SIGN
+	0x007c: 0x0040,	# COMMERCIAL AT
+	0x007d: 0x0027,	# APOSTROPHE
+	0x007e: 0x003d,	# EQUALS SIGN
+	0x007f: 0x0022,	# QUOTATION MARK
+	0x0080: 0x0385,	# GREEK DIALYTIKA TONOS
+	0x0081: 0x0061,	# LATIN SMALL LETTER A
+	0x0082: 0x0062,	# LATIN SMALL LETTER B
+	0x0083: 0x0063,	# LATIN SMALL LETTER C
+	0x0084: 0x0064,	# LATIN SMALL LETTER D
+	0x0085: 0x0065,	# LATIN SMALL LETTER E
+	0x0086: 0x0066,	# LATIN SMALL LETTER F
+	0x0087: 0x0067,	# LATIN SMALL LETTER G
+	0x0088: 0x0068,	# LATIN SMALL LETTER H
+	0x0089: 0x0069,	# LATIN SMALL LETTER I
+	0x008a: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x008b: 0x03b2,	# GREEK SMALL LETTER BETA
+	0x008c: 0x03b3,	# GREEK SMALL LETTER GAMMA
+	0x008d: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x008e: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x008f: 0x03b6,	# GREEK SMALL LETTER ZETA
+	0x0090: 0x00b0,	# DEGREE SIGN
+	0x0091: 0x006a,	# LATIN SMALL LETTER J
+	0x0092: 0x006b,	# LATIN SMALL LETTER K
+	0x0093: 0x006c,	# LATIN SMALL LETTER L
+	0x0094: 0x006d,	# LATIN SMALL LETTER M
+	0x0095: 0x006e,	# LATIN SMALL LETTER N
+	0x0096: 0x006f,	# LATIN SMALL LETTER O
+	0x0097: 0x0070,	# LATIN SMALL LETTER P
+	0x0098: 0x0071,	# LATIN SMALL LETTER Q
+	0x0099: 0x0072,	# LATIN SMALL LETTER R
+	0x009a: 0x03b7,	# GREEK SMALL LETTER ETA
+	0x009b: 0x03b8,	# GREEK SMALL LETTER THETA
+	0x009c: 0x03b9,	# GREEK SMALL LETTER IOTA
+	0x009d: 0x03ba,	# GREEK SMALL LETTER KAPPA
+	0x009e: 0x03bb,	# GREEK SMALL LETTER LAMDA
+	0x009f: 0x03bc,	# GREEK SMALL LETTER MU
+	0x00a0: 0x00b4,	# ACUTE ACCENT
+	0x00a1: 0x007e,	# TILDE
+	0x00a2: 0x0073,	# LATIN SMALL LETTER S
+	0x00a3: 0x0074,	# LATIN SMALL LETTER T
+	0x00a4: 0x0075,	# LATIN SMALL LETTER U
+	0x00a5: 0x0076,	# LATIN SMALL LETTER V
+	0x00a6: 0x0077,	# LATIN SMALL LETTER W
+	0x00a7: 0x0078,	# LATIN SMALL LETTER X
+	0x00a8: 0x0079,	# LATIN SMALL LETTER Y
+	0x00a9: 0x007a,	# LATIN SMALL LETTER Z
+	0x00aa: 0x03bd,	# GREEK SMALL LETTER NU
+	0x00ab: 0x03be,	# GREEK SMALL LETTER XI
+	0x00ac: 0x03bf,	# GREEK SMALL LETTER OMICRON
+	0x00ad: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00ae: 0x03c1,	# GREEK SMALL LETTER RHO
+	0x00af: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00b0: 0x00a3,	# POUND SIGN
+	0x00b1: 0x03ac,	# GREEK SMALL LETTER ALPHA WITH TONOS
+	0x00b2: 0x03ad,	# GREEK SMALL LETTER EPSILON WITH TONOS
+	0x00b3: 0x03ae,	# GREEK SMALL LETTER ETA WITH TONOS
+	0x00b4: 0x03ca,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00b5: 0x03af,	# GREEK SMALL LETTER IOTA WITH TONOS
+	0x00b6: 0x03cc,	# GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00b7: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00b8: 0x03cb,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00b9: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
+	0x00ba: 0x03c2,	# GREEK SMALL LETTER FINAL SIGMA
+	0x00bb: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00bc: 0x03c5,	# GREEK SMALL LETTER UPSILON
+	0x00bd: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00be: 0x03c7,	# GREEK SMALL LETTER CHI
+	0x00bf: 0x03c8,	# GREEK SMALL LETTER PSI
+	0x00c0: 0x007b,	# LEFT CURLY BRACKET
+	0x00c1: 0x0041,	# LATIN CAPITAL LETTER A
+	0x00c2: 0x0042,	# LATIN CAPITAL LETTER B
+	0x00c3: 0x0043,	# LATIN CAPITAL LETTER C
+	0x00c4: 0x0044,	# LATIN CAPITAL LETTER D
+	0x00c5: 0x0045,	# LATIN CAPITAL LETTER E
+	0x00c6: 0x0046,	# LATIN CAPITAL LETTER F
+	0x00c7: 0x0047,	# LATIN CAPITAL LETTER G
+	0x00c8: 0x0048,	# LATIN CAPITAL LETTER H
+	0x00c9: 0x0049,	# LATIN CAPITAL LETTER I
+	0x00ca: 0x00ad,	# SOFT HYPHEN
+	0x00cb: 0x03c9,	# GREEK SMALL LETTER OMEGA
+	0x00cc: 0x0390,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x00cd: 0x03b0,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x00ce: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00cf: 0x2015,	# HORIZONTAL BAR
+	0x00d0: 0x007d,	# RIGHT CURLY BRACKET
+	0x00d1: 0x004a,	# LATIN CAPITAL LETTER J
+	0x00d2: 0x004b,	# LATIN CAPITAL LETTER K
+	0x00d3: 0x004c,	# LATIN CAPITAL LETTER L
+	0x00d4: 0x004d,	# LATIN CAPITAL LETTER M
+	0x00d5: 0x004e,	# LATIN CAPITAL LETTER N
+	0x00d6: 0x004f,	# LATIN CAPITAL LETTER O
+	0x00d7: 0x0050,	# LATIN CAPITAL LETTER P
+	0x00d8: 0x0051,	# LATIN CAPITAL LETTER Q
+	0x00d9: 0x0052,	# LATIN CAPITAL LETTER R
+	0x00da: 0x00b1,	# PLUS-MINUS SIGN
+	0x00db: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x00dc: 0x001a,	# SUBSTITUTE
+	0x00dd: 0x0387,	# GREEK ANO TELEIA
+	0x00de: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00df: 0x00a6,	# BROKEN BAR
+	0x00e0: 0x005c,	# REVERSE SOLIDUS
+	0x00e1: 0x001a,	# SUBSTITUTE
+	0x00e2: 0x0053,	# LATIN CAPITAL LETTER S
+	0x00e3: 0x0054,	# LATIN CAPITAL LETTER T
+	0x00e4: 0x0055,	# LATIN CAPITAL LETTER U
+	0x00e5: 0x0056,	# LATIN CAPITAL LETTER V
+	0x00e6: 0x0057,	# LATIN CAPITAL LETTER W
+	0x00e7: 0x0058,	# LATIN CAPITAL LETTER X
+	0x00e8: 0x0059,	# LATIN CAPITAL LETTER Y
+	0x00e9: 0x005a,	# LATIN CAPITAL LETTER Z
+	0x00ea: 0x00b2,	# SUPERSCRIPT TWO
+	0x00eb: 0x00a7,	# SECTION SIGN
+	0x00ec: 0x001a,	# SUBSTITUTE
+	0x00ed: 0x001a,	# SUBSTITUTE
+	0x00ee: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00ef: 0x00ac,	# NOT SIGN
+	0x00f0: 0x0030,	# DIGIT ZERO
+	0x00f1: 0x0031,	# DIGIT ONE
+	0x00f2: 0x0032,	# DIGIT TWO
+	0x00f3: 0x0033,	# DIGIT THREE
+	0x00f4: 0x0034,	# DIGIT FOUR
+	0x00f5: 0x0035,	# DIGIT FIVE
+	0x00f6: 0x0036,	# DIGIT SIX
+	0x00f7: 0x0037,	# DIGIT SEVEN
+	0x00f8: 0x0038,	# DIGIT EIGHT
+	0x00f9: 0x0039,	# DIGIT NINE
+	0x00fa: 0x00b3,	# SUPERSCRIPT THREE
+	0x00fb: 0x00a9,	# COPYRIGHT SIGN
+	0x00fc: 0x001a,	# SUBSTITUTE
+	0x00fd: 0x001a,	# SUBSTITUTE
+	0x00fe: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00ff: 0x009f,	# CONTROL
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_1.py b/Lib/encodings/iso8859_1.py
new file mode 100644
index 0000000..7355853
--- /dev/null
+++ b/Lib/encodings/iso8859_1.py
@@ -0,0 +1,49 @@
+""" Python Character Mapping Codec generated from '8859-1.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+
+    def __init__(self,stream,errors='strict'):
+
+        codecs.StreamWriter.__init__(self,strict,errors)
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_10.py b/Lib/encodings/iso8859_10.py
new file mode 100644
index 0000000..96b435c
--- /dev/null
+++ b/Lib/encodings/iso8859_10.py
@@ -0,0 +1,92 @@
+""" Python Character Mapping Codec generated from '8859-10.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
+	0x00a2: 0x0112,	# 	LATIN CAPITAL LETTER E WITH MACRON
+	0x00a3: 0x0122,	# 	LATIN CAPITAL LETTER G WITH CEDILLA
+	0x00a4: 0x012a,	# 	LATIN CAPITAL LETTER I WITH MACRON
+	0x00a5: 0x0128,	# 	LATIN CAPITAL LETTER I WITH TILDE
+	0x00a6: 0x0136,	# 	LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00a8: 0x013b,	# 	LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00a9: 0x0110,	# 	LATIN CAPITAL LETTER D WITH STROKE
+	0x00aa: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
+	0x00ab: 0x0166,	# 	LATIN CAPITAL LETTER T WITH STROKE
+	0x00ac: 0x017d,	# 	LATIN CAPITAL LETTER Z WITH CARON
+	0x00ae: 0x016a,	# 	LATIN CAPITAL LETTER U WITH MACRON
+	0x00af: 0x014a,	# 	LATIN CAPITAL LETTER ENG
+	0x00b1: 0x0105,	# 	LATIN SMALL LETTER A WITH OGONEK
+	0x00b2: 0x0113,	# 	LATIN SMALL LETTER E WITH MACRON
+	0x00b3: 0x0123,	# 	LATIN SMALL LETTER G WITH CEDILLA
+	0x00b4: 0x012b,	# 	LATIN SMALL LETTER I WITH MACRON
+	0x00b5: 0x0129,	# 	LATIN SMALL LETTER I WITH TILDE
+	0x00b6: 0x0137,	# 	LATIN SMALL LETTER K WITH CEDILLA
+	0x00b8: 0x013c,	# 	LATIN SMALL LETTER L WITH CEDILLA
+	0x00b9: 0x0111,	# 	LATIN SMALL LETTER D WITH STROKE
+	0x00ba: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
+	0x00bb: 0x0167,	# 	LATIN SMALL LETTER T WITH STROKE
+	0x00bc: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
+	0x00bd: 0x2015,	# 	HORIZONTAL BAR
+	0x00be: 0x016b,	# 	LATIN SMALL LETTER U WITH MACRON
+	0x00bf: 0x014b,	# 	LATIN SMALL LETTER ENG
+	0x00c0: 0x0100,	# 	LATIN CAPITAL LETTER A WITH MACRON
+	0x00c7: 0x012e,	# 	LATIN CAPITAL LETTER I WITH OGONEK
+	0x00c8: 0x010c,	# 	LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0118,	# 	LATIN CAPITAL LETTER E WITH OGONEK
+	0x00cc: 0x0116,	# 	LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x00d1: 0x0145,	# 	LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00d2: 0x014c,	# 	LATIN CAPITAL LETTER O WITH MACRON
+	0x00d7: 0x0168,	# 	LATIN CAPITAL LETTER U WITH TILDE
+	0x00d9: 0x0172,	# 	LATIN CAPITAL LETTER U WITH OGONEK
+	0x00e0: 0x0101,	# 	LATIN SMALL LETTER A WITH MACRON
+	0x00e7: 0x012f,	# 	LATIN SMALL LETTER I WITH OGONEK
+	0x00e8: 0x010d,	# 	LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x0119,	# 	LATIN SMALL LETTER E WITH OGONEK
+	0x00ec: 0x0117,	# 	LATIN SMALL LETTER E WITH DOT ABOVE
+	0x00f1: 0x0146,	# 	LATIN SMALL LETTER N WITH CEDILLA
+	0x00f2: 0x014d,	# 	LATIN SMALL LETTER O WITH MACRON
+	0x00f7: 0x0169,	# 	LATIN SMALL LETTER U WITH TILDE
+	0x00f9: 0x0173,	# 	LATIN SMALL LETTER U WITH OGONEK
+	0x00ff: 0x0138,	# 	LATIN SMALL LETTER KRA
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_13.py b/Lib/encodings/iso8859_13.py
new file mode 100644
index 0000000..d8b2230
--- /dev/null
+++ b/Lib/encodings/iso8859_13.py
@@ -0,0 +1,102 @@
+""" Python Character Mapping Codec generated from '8859-13.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x201d,	# 	RIGHT DOUBLE QUOTATION MARK
+	0x00a5: 0x201e,	# 	DOUBLE LOW-9 QUOTATION MARK
+	0x00a8: 0x00d8,	# 	LATIN CAPITAL LETTER O WITH STROKE
+	0x00aa: 0x0156,	# 	LATIN CAPITAL LETTER R WITH CEDILLA
+	0x00af: 0x00c6,	# 	LATIN CAPITAL LETTER AE
+	0x00b4: 0x201c,	# 	LEFT DOUBLE QUOTATION MARK
+	0x00b8: 0x00f8,	# 	LATIN SMALL LETTER O WITH STROKE
+	0x00ba: 0x0157,	# 	LATIN SMALL LETTER R WITH CEDILLA
+	0x00bf: 0x00e6,	# 	LATIN SMALL LETTER AE
+	0x00c0: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
+	0x00c1: 0x012e,	# 	LATIN CAPITAL LETTER I WITH OGONEK
+	0x00c2: 0x0100,	# 	LATIN CAPITAL LETTER A WITH MACRON
+	0x00c3: 0x0106,	# 	LATIN CAPITAL LETTER C WITH ACUTE
+	0x00c6: 0x0118,	# 	LATIN CAPITAL LETTER E WITH OGONEK
+	0x00c7: 0x0112,	# 	LATIN CAPITAL LETTER E WITH MACRON
+	0x00c8: 0x010c,	# 	LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0179,	# 	LATIN CAPITAL LETTER Z WITH ACUTE
+	0x00cb: 0x0116,	# 	LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x00cc: 0x0122,	# 	LATIN CAPITAL LETTER G WITH CEDILLA
+	0x00cd: 0x0136,	# 	LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00ce: 0x012a,	# 	LATIN CAPITAL LETTER I WITH MACRON
+	0x00cf: 0x013b,	# 	LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00d0: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
+	0x00d1: 0x0143,	# 	LATIN CAPITAL LETTER N WITH ACUTE
+	0x00d2: 0x0145,	# 	LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00d4: 0x014c,	# 	LATIN CAPITAL LETTER O WITH MACRON
+	0x00d8: 0x0172,	# 	LATIN CAPITAL LETTER U WITH OGONEK
+	0x00d9: 0x0141,	# 	LATIN CAPITAL LETTER L WITH STROKE
+	0x00da: 0x015a,	# 	LATIN CAPITAL LETTER S WITH ACUTE
+	0x00db: 0x016a,	# 	LATIN CAPITAL LETTER U WITH MACRON
+	0x00dd: 0x017b,	# 	LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00de: 0x017d,	# 	LATIN CAPITAL LETTER Z WITH CARON
+	0x00e0: 0x0105,	# 	LATIN SMALL LETTER A WITH OGONEK
+	0x00e1: 0x012f,	# 	LATIN SMALL LETTER I WITH OGONEK
+	0x00e2: 0x0101,	# 	LATIN SMALL LETTER A WITH MACRON
+	0x00e3: 0x0107,	# 	LATIN SMALL LETTER C WITH ACUTE
+	0x00e6: 0x0119,	# 	LATIN SMALL LETTER E WITH OGONEK
+	0x00e7: 0x0113,	# 	LATIN SMALL LETTER E WITH MACRON
+	0x00e8: 0x010d,	# 	LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x017a,	# 	LATIN SMALL LETTER Z WITH ACUTE
+	0x00eb: 0x0117,	# 	LATIN SMALL LETTER E WITH DOT ABOVE
+	0x00ec: 0x0123,	# 	LATIN SMALL LETTER G WITH CEDILLA
+	0x00ed: 0x0137,	# 	LATIN SMALL LETTER K WITH CEDILLA
+	0x00ee: 0x012b,	# 	LATIN SMALL LETTER I WITH MACRON
+	0x00ef: 0x013c,	# 	LATIN SMALL LETTER L WITH CEDILLA
+	0x00f0: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
+	0x00f1: 0x0144,	# 	LATIN SMALL LETTER N WITH ACUTE
+	0x00f2: 0x0146,	# 	LATIN SMALL LETTER N WITH CEDILLA
+	0x00f4: 0x014d,	# 	LATIN SMALL LETTER O WITH MACRON
+	0x00f8: 0x0173,	# 	LATIN SMALL LETTER U WITH OGONEK
+	0x00f9: 0x0142,	# 	LATIN SMALL LETTER L WITH STROKE
+	0x00fa: 0x015b,	# 	LATIN SMALL LETTER S WITH ACUTE
+	0x00fb: 0x016b,	# 	LATIN SMALL LETTER U WITH MACRON
+	0x00fd: 0x017c,	# 	LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00fe: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
+	0x00ff: 0x2019,	# 	RIGHT SINGLE QUOTATION MARK
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_14.py b/Lib/encodings/iso8859_14.py
new file mode 100644
index 0000000..8ee0aa9
--- /dev/null
+++ b/Lib/encodings/iso8859_14.py
@@ -0,0 +1,77 @@
+""" Python Character Mapping Codec generated from '8859-14.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x1e02,	# 	LATIN CAPITAL LETTER B WITH DOT ABOVE
+	0x00a2: 0x1e03,	# 	LATIN SMALL LETTER B WITH DOT ABOVE
+	0x00a4: 0x010a,	# 	LATIN CAPITAL LETTER C WITH DOT ABOVE
+	0x00a5: 0x010b,	# 	LATIN SMALL LETTER C WITH DOT ABOVE
+	0x00a6: 0x1e0a,	# 	LATIN CAPITAL LETTER D WITH DOT ABOVE
+	0x00a8: 0x1e80,	# 	LATIN CAPITAL LETTER W WITH GRAVE
+	0x00aa: 0x1e82,	# 	LATIN CAPITAL LETTER W WITH ACUTE
+	0x00ab: 0x1e0b,	# 	LATIN SMALL LETTER D WITH DOT ABOVE
+	0x00ac: 0x1ef2,	# 	LATIN CAPITAL LETTER Y WITH GRAVE
+	0x00af: 0x0178,	# 	LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00b0: 0x1e1e,	# 	LATIN CAPITAL LETTER F WITH DOT ABOVE
+	0x00b1: 0x1e1f,	# 	LATIN SMALL LETTER F WITH DOT ABOVE
+	0x00b2: 0x0120,	# 	LATIN CAPITAL LETTER G WITH DOT ABOVE
+	0x00b3: 0x0121,	# 	LATIN SMALL LETTER G WITH DOT ABOVE
+	0x00b4: 0x1e40,	# 	LATIN CAPITAL LETTER M WITH DOT ABOVE
+	0x00b5: 0x1e41,	# 	LATIN SMALL LETTER M WITH DOT ABOVE
+	0x00b7: 0x1e56,	# 	LATIN CAPITAL LETTER P WITH DOT ABOVE
+	0x00b8: 0x1e81,	# 	LATIN SMALL LETTER W WITH GRAVE
+	0x00b9: 0x1e57,	# 	LATIN SMALL LETTER P WITH DOT ABOVE
+	0x00ba: 0x1e83,	# 	LATIN SMALL LETTER W WITH ACUTE
+	0x00bb: 0x1e60,	# 	LATIN CAPITAL LETTER S WITH DOT ABOVE
+	0x00bc: 0x1ef3,	# 	LATIN SMALL LETTER Y WITH GRAVE
+	0x00bd: 0x1e84,	# 	LATIN CAPITAL LETTER W WITH DIAERESIS
+	0x00be: 0x1e85,	# 	LATIN SMALL LETTER W WITH DIAERESIS
+	0x00bf: 0x1e61,	# 	LATIN SMALL LETTER S WITH DOT ABOVE
+	0x00d0: 0x0174,	# 	LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+	0x00d7: 0x1e6a,	# 	LATIN CAPITAL LETTER T WITH DOT ABOVE
+	0x00de: 0x0176,	# 	LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+	0x00f0: 0x0175,	# 	LATIN SMALL LETTER W WITH CIRCUMFLEX
+	0x00f7: 0x1e6b,	# 	LATIN SMALL LETTER T WITH DOT ABOVE
+	0x00fe: 0x0177,	# 	LATIN SMALL LETTER Y WITH CIRCUMFLEX
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_15.py b/Lib/encodings/iso8859_15.py
new file mode 100644
index 0000000..862ff28
--- /dev/null
+++ b/Lib/encodings/iso8859_15.py
@@ -0,0 +1,54 @@
+""" Python Character Mapping Codec generated from '8859-15.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a4: 0x20ac,	# 	EURO SIGN
+	0x00a6: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
+	0x00a8: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
+	0x00b4: 0x017d,	# 	LATIN CAPITAL LETTER Z WITH CARON
+	0x00b8: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
+	0x00bc: 0x0152,	# 	LATIN CAPITAL LIGATURE OE
+	0x00bd: 0x0153,	# 	LATIN SMALL LIGATURE OE
+	0x00be: 0x0178,	# 	LATIN CAPITAL LETTER Y WITH DIAERESIS
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_2.py b/Lib/encodings/iso8859_2.py
new file mode 100644
index 0000000..034001a
--- /dev/null
+++ b/Lib/encodings/iso8859_2.py
@@ -0,0 +1,103 @@
+""" Python Character Mapping Codec generated from '8859-2.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
+	0x00a2: 0x02d8,	# 	BREVE
+	0x00a3: 0x0141,	# 	LATIN CAPITAL LETTER L WITH STROKE
+	0x00a5: 0x013d,	# 	LATIN CAPITAL LETTER L WITH CARON
+	0x00a6: 0x015a,	# 	LATIN CAPITAL LETTER S WITH ACUTE
+	0x00a9: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
+	0x00aa: 0x015e,	# 	LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00ab: 0x0164,	# 	LATIN CAPITAL LETTER T WITH CARON
+	0x00ac: 0x0179,	# 	LATIN CAPITAL LETTER Z WITH ACUTE
+	0x00ae: 0x017d,	# 	LATIN CAPITAL LETTER Z WITH CARON
+	0x00af: 0x017b,	# 	LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00b1: 0x0105,	# 	LATIN SMALL LETTER A WITH OGONEK
+	0x00b2: 0x02db,	# 	OGONEK
+	0x00b3: 0x0142,	# 	LATIN SMALL LETTER L WITH STROKE
+	0x00b5: 0x013e,	# 	LATIN SMALL LETTER L WITH CARON
+	0x00b6: 0x015b,	# 	LATIN SMALL LETTER S WITH ACUTE
+	0x00b7: 0x02c7,	# 	CARON
+	0x00b9: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
+	0x00ba: 0x015f,	# 	LATIN SMALL LETTER S WITH CEDILLA
+	0x00bb: 0x0165,	# 	LATIN SMALL LETTER T WITH CARON
+	0x00bc: 0x017a,	# 	LATIN SMALL LETTER Z WITH ACUTE
+	0x00bd: 0x02dd,	# 	DOUBLE ACUTE ACCENT
+	0x00be: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
+	0x00bf: 0x017c,	# 	LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00c0: 0x0154,	# 	LATIN CAPITAL LETTER R WITH ACUTE
+	0x00c3: 0x0102,	# 	LATIN CAPITAL LETTER A WITH BREVE
+	0x00c5: 0x0139,	# 	LATIN CAPITAL LETTER L WITH ACUTE
+	0x00c6: 0x0106,	# 	LATIN CAPITAL LETTER C WITH ACUTE
+	0x00c8: 0x010c,	# 	LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0118,	# 	LATIN CAPITAL LETTER E WITH OGONEK
+	0x00cc: 0x011a,	# 	LATIN CAPITAL LETTER E WITH CARON
+	0x00cf: 0x010e,	# 	LATIN CAPITAL LETTER D WITH CARON
+	0x00d0: 0x0110,	# 	LATIN CAPITAL LETTER D WITH STROKE
+	0x00d1: 0x0143,	# 	LATIN CAPITAL LETTER N WITH ACUTE
+	0x00d2: 0x0147,	# 	LATIN CAPITAL LETTER N WITH CARON
+	0x00d5: 0x0150,	# 	LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+	0x00d8: 0x0158,	# 	LATIN CAPITAL LETTER R WITH CARON
+	0x00d9: 0x016e,	# 	LATIN CAPITAL LETTER U WITH RING ABOVE
+	0x00db: 0x0170,	# 	LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+	0x00de: 0x0162,	# 	LATIN CAPITAL LETTER T WITH CEDILLA
+	0x00e0: 0x0155,	# 	LATIN SMALL LETTER R WITH ACUTE
+	0x00e3: 0x0103,	# 	LATIN SMALL LETTER A WITH BREVE
+	0x00e5: 0x013a,	# 	LATIN SMALL LETTER L WITH ACUTE
+	0x00e6: 0x0107,	# 	LATIN SMALL LETTER C WITH ACUTE
+	0x00e8: 0x010d,	# 	LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x0119,	# 	LATIN SMALL LETTER E WITH OGONEK
+	0x00ec: 0x011b,	# 	LATIN SMALL LETTER E WITH CARON
+	0x00ef: 0x010f,	# 	LATIN SMALL LETTER D WITH CARON
+	0x00f0: 0x0111,	# 	LATIN SMALL LETTER D WITH STROKE
+	0x00f1: 0x0144,	# 	LATIN SMALL LETTER N WITH ACUTE
+	0x00f2: 0x0148,	# 	LATIN SMALL LETTER N WITH CARON
+	0x00f5: 0x0151,	# 	LATIN SMALL LETTER O WITH DOUBLE ACUTE
+	0x00f8: 0x0159,	# 	LATIN SMALL LETTER R WITH CARON
+	0x00f9: 0x016f,	# 	LATIN SMALL LETTER U WITH RING ABOVE
+	0x00fb: 0x0171,	# 	LATIN SMALL LETTER U WITH DOUBLE ACUTE
+	0x00fe: 0x0163,	# 	LATIN SMALL LETTER T WITH CEDILLA
+	0x00ff: 0x02d9,	# 	DOT ABOVE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_3.py b/Lib/encodings/iso8859_3.py
new file mode 100644
index 0000000..f262767
--- /dev/null
+++ b/Lib/encodings/iso8859_3.py
@@ -0,0 +1,74 @@
+""" Python Character Mapping Codec generated from '8859-3.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x0126,	# 	LATIN CAPITAL LETTER H WITH STROKE
+	0x00a2: 0x02d8,	# 	BREVE
+	0x00a6: 0x0124,	# 	LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+	0x00a9: 0x0130,	# 	LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x00aa: 0x015e,	# 	LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00ab: 0x011e,	# 	LATIN CAPITAL LETTER G WITH BREVE
+	0x00ac: 0x0134,	# 	LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+	0x00af: 0x017b,	# 	LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00b1: 0x0127,	# 	LATIN SMALL LETTER H WITH STROKE
+	0x00b6: 0x0125,	# 	LATIN SMALL LETTER H WITH CIRCUMFLEX
+	0x00b9: 0x0131,	# 	LATIN SMALL LETTER DOTLESS I
+	0x00ba: 0x015f,	# 	LATIN SMALL LETTER S WITH CEDILLA
+	0x00bb: 0x011f,	# 	LATIN SMALL LETTER G WITH BREVE
+	0x00bc: 0x0135,	# 	LATIN SMALL LETTER J WITH CIRCUMFLEX
+	0x00bf: 0x017c,	# 	LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00c5: 0x010a,	# 	LATIN CAPITAL LETTER C WITH DOT ABOVE
+	0x00c6: 0x0108,	# 	LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+	0x00d5: 0x0120,	# 	LATIN CAPITAL LETTER G WITH DOT ABOVE
+	0x00d8: 0x011c,	# 	LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+	0x00dd: 0x016c,	# 	LATIN CAPITAL LETTER U WITH BREVE
+	0x00de: 0x015c,	# 	LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+	0x00e5: 0x010b,	# 	LATIN SMALL LETTER C WITH DOT ABOVE
+	0x00e6: 0x0109,	# 	LATIN SMALL LETTER C WITH CIRCUMFLEX
+	0x00f5: 0x0121,	# 	LATIN SMALL LETTER G WITH DOT ABOVE
+	0x00f8: 0x011d,	# 	LATIN SMALL LETTER G WITH CIRCUMFLEX
+	0x00fd: 0x016d,	# 	LATIN SMALL LETTER U WITH BREVE
+	0x00fe: 0x015d,	# 	LATIN SMALL LETTER S WITH CIRCUMFLEX
+	0x00ff: 0x02d9,	# 	DOT ABOVE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_4.py b/Lib/encodings/iso8859_4.py
new file mode 100644
index 0000000..29f9fd3
--- /dev/null
+++ b/Lib/encodings/iso8859_4.py
@@ -0,0 +1,96 @@
+""" Python Character Mapping Codec generated from '8859-4.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x0104,	# 	LATIN CAPITAL LETTER A WITH OGONEK
+	0x00a2: 0x0138,	# 	LATIN SMALL LETTER KRA
+	0x00a3: 0x0156,	# 	LATIN CAPITAL LETTER R WITH CEDILLA
+	0x00a5: 0x0128,	# 	LATIN CAPITAL LETTER I WITH TILDE
+	0x00a6: 0x013b,	# 	LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00a9: 0x0160,	# 	LATIN CAPITAL LETTER S WITH CARON
+	0x00aa: 0x0112,	# 	LATIN CAPITAL LETTER E WITH MACRON
+	0x00ab: 0x0122,	# 	LATIN CAPITAL LETTER G WITH CEDILLA
+	0x00ac: 0x0166,	# 	LATIN CAPITAL LETTER T WITH STROKE
+	0x00ae: 0x017d,	# 	LATIN CAPITAL LETTER Z WITH CARON
+	0x00b1: 0x0105,	# 	LATIN SMALL LETTER A WITH OGONEK
+	0x00b2: 0x02db,	# 	OGONEK
+	0x00b3: 0x0157,	# 	LATIN SMALL LETTER R WITH CEDILLA
+	0x00b5: 0x0129,	# 	LATIN SMALL LETTER I WITH TILDE
+	0x00b6: 0x013c,	# 	LATIN SMALL LETTER L WITH CEDILLA
+	0x00b7: 0x02c7,	# 	CARON
+	0x00b9: 0x0161,	# 	LATIN SMALL LETTER S WITH CARON
+	0x00ba: 0x0113,	# 	LATIN SMALL LETTER E WITH MACRON
+	0x00bb: 0x0123,	# 	LATIN SMALL LETTER G WITH CEDILLA
+	0x00bc: 0x0167,	# 	LATIN SMALL LETTER T WITH STROKE
+	0x00bd: 0x014a,	# 	LATIN CAPITAL LETTER ENG
+	0x00be: 0x017e,	# 	LATIN SMALL LETTER Z WITH CARON
+	0x00bf: 0x014b,	# 	LATIN SMALL LETTER ENG
+	0x00c0: 0x0100,	# 	LATIN CAPITAL LETTER A WITH MACRON
+	0x00c7: 0x012e,	# 	LATIN CAPITAL LETTER I WITH OGONEK
+	0x00c8: 0x010c,	# 	LATIN CAPITAL LETTER C WITH CARON
+	0x00ca: 0x0118,	# 	LATIN CAPITAL LETTER E WITH OGONEK
+	0x00cc: 0x0116,	# 	LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x00cf: 0x012a,	# 	LATIN CAPITAL LETTER I WITH MACRON
+	0x00d0: 0x0110,	# 	LATIN CAPITAL LETTER D WITH STROKE
+	0x00d1: 0x0145,	# 	LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00d2: 0x014c,	# 	LATIN CAPITAL LETTER O WITH MACRON
+	0x00d3: 0x0136,	# 	LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00d9: 0x0172,	# 	LATIN CAPITAL LETTER U WITH OGONEK
+	0x00dd: 0x0168,	# 	LATIN CAPITAL LETTER U WITH TILDE
+	0x00de: 0x016a,	# 	LATIN CAPITAL LETTER U WITH MACRON
+	0x00e0: 0x0101,	# 	LATIN SMALL LETTER A WITH MACRON
+	0x00e7: 0x012f,	# 	LATIN SMALL LETTER I WITH OGONEK
+	0x00e8: 0x010d,	# 	LATIN SMALL LETTER C WITH CARON
+	0x00ea: 0x0119,	# 	LATIN SMALL LETTER E WITH OGONEK
+	0x00ec: 0x0117,	# 	LATIN SMALL LETTER E WITH DOT ABOVE
+	0x00ef: 0x012b,	# 	LATIN SMALL LETTER I WITH MACRON
+	0x00f0: 0x0111,	# 	LATIN SMALL LETTER D WITH STROKE
+	0x00f1: 0x0146,	# 	LATIN SMALL LETTER N WITH CEDILLA
+	0x00f2: 0x014d,	# 	LATIN SMALL LETTER O WITH MACRON
+	0x00f3: 0x0137,	# 	LATIN SMALL LETTER K WITH CEDILLA
+	0x00f9: 0x0173,	# 	LATIN SMALL LETTER U WITH OGONEK
+	0x00fd: 0x0169,	# 	LATIN SMALL LETTER U WITH TILDE
+	0x00fe: 0x016b,	# 	LATIN SMALL LETTER U WITH MACRON
+	0x00ff: 0x02d9,	# 	DOT ABOVE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_5.py b/Lib/encodings/iso8859_5.py
new file mode 100644
index 0000000..d71c15f
--- /dev/null
+++ b/Lib/encodings/iso8859_5.py
@@ -0,0 +1,140 @@
+""" Python Character Mapping Codec generated from '8859-5.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x0401,	# 	CYRILLIC CAPITAL LETTER IO
+	0x00a2: 0x0402,	# 	CYRILLIC CAPITAL LETTER DJE
+	0x00a3: 0x0403,	# 	CYRILLIC CAPITAL LETTER GJE
+	0x00a4: 0x0404,	# 	CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x00a5: 0x0405,	# 	CYRILLIC CAPITAL LETTER DZE
+	0x00a6: 0x0406,	# 	CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00a7: 0x0407,	# 	CYRILLIC CAPITAL LETTER YI
+	0x00a8: 0x0408,	# 	CYRILLIC CAPITAL LETTER JE
+	0x00a9: 0x0409,	# 	CYRILLIC CAPITAL LETTER LJE
+	0x00aa: 0x040a,	# 	CYRILLIC CAPITAL LETTER NJE
+	0x00ab: 0x040b,	# 	CYRILLIC CAPITAL LETTER TSHE
+	0x00ac: 0x040c,	# 	CYRILLIC CAPITAL LETTER KJE
+	0x00ae: 0x040e,	# 	CYRILLIC CAPITAL LETTER SHORT U
+	0x00af: 0x040f,	# 	CYRILLIC CAPITAL LETTER DZHE
+	0x00b0: 0x0410,	# 	CYRILLIC CAPITAL LETTER A
+	0x00b1: 0x0411,	# 	CYRILLIC CAPITAL LETTER BE
+	0x00b2: 0x0412,	# 	CYRILLIC CAPITAL LETTER VE
+	0x00b3: 0x0413,	# 	CYRILLIC CAPITAL LETTER GHE
+	0x00b4: 0x0414,	# 	CYRILLIC CAPITAL LETTER DE
+	0x00b5: 0x0415,	# 	CYRILLIC CAPITAL LETTER IE
+	0x00b6: 0x0416,	# 	CYRILLIC CAPITAL LETTER ZHE
+	0x00b7: 0x0417,	# 	CYRILLIC CAPITAL LETTER ZE
+	0x00b8: 0x0418,	# 	CYRILLIC CAPITAL LETTER I
+	0x00b9: 0x0419,	# 	CYRILLIC CAPITAL LETTER SHORT I
+	0x00ba: 0x041a,	# 	CYRILLIC CAPITAL LETTER KA
+	0x00bb: 0x041b,	# 	CYRILLIC CAPITAL LETTER EL
+	0x00bc: 0x041c,	# 	CYRILLIC CAPITAL LETTER EM
+	0x00bd: 0x041d,	# 	CYRILLIC CAPITAL LETTER EN
+	0x00be: 0x041e,	# 	CYRILLIC CAPITAL LETTER O
+	0x00bf: 0x041f,	# 	CYRILLIC CAPITAL LETTER PE
+	0x00c0: 0x0420,	# 	CYRILLIC CAPITAL LETTER ER
+	0x00c1: 0x0421,	# 	CYRILLIC CAPITAL LETTER ES
+	0x00c2: 0x0422,	# 	CYRILLIC CAPITAL LETTER TE
+	0x00c3: 0x0423,	# 	CYRILLIC CAPITAL LETTER U
+	0x00c4: 0x0424,	# 	CYRILLIC CAPITAL LETTER EF
+	0x00c5: 0x0425,	# 	CYRILLIC CAPITAL LETTER HA
+	0x00c6: 0x0426,	# 	CYRILLIC CAPITAL LETTER TSE
+	0x00c7: 0x0427,	# 	CYRILLIC CAPITAL LETTER CHE
+	0x00c8: 0x0428,	# 	CYRILLIC CAPITAL LETTER SHA
+	0x00c9: 0x0429,	# 	CYRILLIC CAPITAL LETTER SHCHA
+	0x00ca: 0x042a,	# 	CYRILLIC CAPITAL LETTER HARD SIGN
+	0x00cb: 0x042b,	# 	CYRILLIC CAPITAL LETTER YERU
+	0x00cc: 0x042c,	# 	CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x00cd: 0x042d,	# 	CYRILLIC CAPITAL LETTER E
+	0x00ce: 0x042e,	# 	CYRILLIC CAPITAL LETTER YU
+	0x00cf: 0x042f,	# 	CYRILLIC CAPITAL LETTER YA
+	0x00d0: 0x0430,	# 	CYRILLIC SMALL LETTER A
+	0x00d1: 0x0431,	# 	CYRILLIC SMALL LETTER BE
+	0x00d2: 0x0432,	# 	CYRILLIC SMALL LETTER VE
+	0x00d3: 0x0433,	# 	CYRILLIC SMALL LETTER GHE
+	0x00d4: 0x0434,	# 	CYRILLIC SMALL LETTER DE
+	0x00d5: 0x0435,	# 	CYRILLIC SMALL LETTER IE
+	0x00d6: 0x0436,	# 	CYRILLIC SMALL LETTER ZHE
+	0x00d7: 0x0437,	# 	CYRILLIC SMALL LETTER ZE
+	0x00d8: 0x0438,	# 	CYRILLIC SMALL LETTER I
+	0x00d9: 0x0439,	# 	CYRILLIC SMALL LETTER SHORT I
+	0x00da: 0x043a,	# 	CYRILLIC SMALL LETTER KA
+	0x00db: 0x043b,	# 	CYRILLIC SMALL LETTER EL
+	0x00dc: 0x043c,	# 	CYRILLIC SMALL LETTER EM
+	0x00dd: 0x043d,	# 	CYRILLIC SMALL LETTER EN
+	0x00de: 0x043e,	# 	CYRILLIC SMALL LETTER O
+	0x00df: 0x043f,	# 	CYRILLIC SMALL LETTER PE
+	0x00e0: 0x0440,	# 	CYRILLIC SMALL LETTER ER
+	0x00e1: 0x0441,	# 	CYRILLIC SMALL LETTER ES
+	0x00e2: 0x0442,	# 	CYRILLIC SMALL LETTER TE
+	0x00e3: 0x0443,	# 	CYRILLIC SMALL LETTER U
+	0x00e4: 0x0444,	# 	CYRILLIC SMALL LETTER EF
+	0x00e5: 0x0445,	# 	CYRILLIC SMALL LETTER HA
+	0x00e6: 0x0446,	# 	CYRILLIC SMALL LETTER TSE
+	0x00e7: 0x0447,	# 	CYRILLIC SMALL LETTER CHE
+	0x00e8: 0x0448,	# 	CYRILLIC SMALL LETTER SHA
+	0x00e9: 0x0449,	# 	CYRILLIC SMALL LETTER SHCHA
+	0x00ea: 0x044a,	# 	CYRILLIC SMALL LETTER HARD SIGN
+	0x00eb: 0x044b,	# 	CYRILLIC SMALL LETTER YERU
+	0x00ec: 0x044c,	# 	CYRILLIC SMALL LETTER SOFT SIGN
+	0x00ed: 0x044d,	# 	CYRILLIC SMALL LETTER E
+	0x00ee: 0x044e,	# 	CYRILLIC SMALL LETTER YU
+	0x00ef: 0x044f,	# 	CYRILLIC SMALL LETTER YA
+	0x00f0: 0x2116,	# 	NUMERO SIGN
+	0x00f1: 0x0451,	# 	CYRILLIC SMALL LETTER IO
+	0x00f2: 0x0452,	# 	CYRILLIC SMALL LETTER DJE
+	0x00f3: 0x0453,	# 	CYRILLIC SMALL LETTER GJE
+	0x00f4: 0x0454,	# 	CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x00f5: 0x0455,	# 	CYRILLIC SMALL LETTER DZE
+	0x00f6: 0x0456,	# 	CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00f7: 0x0457,	# 	CYRILLIC SMALL LETTER YI
+	0x00f8: 0x0458,	# 	CYRILLIC SMALL LETTER JE
+	0x00f9: 0x0459,	# 	CYRILLIC SMALL LETTER LJE
+	0x00fa: 0x045a,	# 	CYRILLIC SMALL LETTER NJE
+	0x00fb: 0x045b,	# 	CYRILLIC SMALL LETTER TSHE
+	0x00fc: 0x045c,	# 	CYRILLIC SMALL LETTER KJE
+	0x00fd: 0x00a7,	# 	SECTION SIGN
+	0x00fe: 0x045e,	# 	CYRILLIC SMALL LETTER SHORT U
+	0x00ff: 0x045f,	# 	CYRILLIC SMALL LETTER DZHE
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_6.py b/Lib/encodings/iso8859_6.py
new file mode 100644
index 0000000..b4d4315
--- /dev/null
+++ b/Lib/encodings/iso8859_6.py
@@ -0,0 +1,94 @@
+""" Python Character Mapping Codec generated from '8859-6.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00ac: 0x060c,	# 	ARABIC COMMA
+	0x00bb: 0x061b,	# 	ARABIC SEMICOLON
+	0x00bf: 0x061f,	# 	ARABIC QUESTION MARK
+	0x00c1: 0x0621,	# 	ARABIC LETTER HAMZA
+	0x00c2: 0x0622,	# 	ARABIC LETTER ALEF WITH MADDA ABOVE
+	0x00c3: 0x0623,	# 	ARABIC LETTER ALEF WITH HAMZA ABOVE
+	0x00c4: 0x0624,	# 	ARABIC LETTER WAW WITH HAMZA ABOVE
+	0x00c5: 0x0625,	# 	ARABIC LETTER ALEF WITH HAMZA BELOW
+	0x00c6: 0x0626,	# 	ARABIC LETTER YEH WITH HAMZA ABOVE
+	0x00c7: 0x0627,	# 	ARABIC LETTER ALEF
+	0x00c8: 0x0628,	# 	ARABIC LETTER BEH
+	0x00c9: 0x0629,	# 	ARABIC LETTER TEH MARBUTA
+	0x00ca: 0x062a,	# 	ARABIC LETTER TEH
+	0x00cb: 0x062b,	# 	ARABIC LETTER THEH
+	0x00cc: 0x062c,	# 	ARABIC LETTER JEEM
+	0x00cd: 0x062d,	# 	ARABIC LETTER HAH
+	0x00ce: 0x062e,	# 	ARABIC LETTER KHAH
+	0x00cf: 0x062f,	# 	ARABIC LETTER DAL
+	0x00d0: 0x0630,	# 	ARABIC LETTER THAL
+	0x00d1: 0x0631,	# 	ARABIC LETTER REH
+	0x00d2: 0x0632,	# 	ARABIC LETTER ZAIN
+	0x00d3: 0x0633,	# 	ARABIC LETTER SEEN
+	0x00d4: 0x0634,	# 	ARABIC LETTER SHEEN
+	0x00d5: 0x0635,	# 	ARABIC LETTER SAD
+	0x00d6: 0x0636,	# 	ARABIC LETTER DAD
+	0x00d7: 0x0637,	# 	ARABIC LETTER TAH
+	0x00d8: 0x0638,	# 	ARABIC LETTER ZAH
+	0x00d9: 0x0639,	# 	ARABIC LETTER AIN
+	0x00da: 0x063a,	# 	ARABIC LETTER GHAIN
+	0x00e0: 0x0640,	# 	ARABIC TATWEEL
+	0x00e1: 0x0641,	# 	ARABIC LETTER FEH
+	0x00e2: 0x0642,	# 	ARABIC LETTER QAF
+	0x00e3: 0x0643,	# 	ARABIC LETTER KAF
+	0x00e4: 0x0644,	# 	ARABIC LETTER LAM
+	0x00e5: 0x0645,	# 	ARABIC LETTER MEEM
+	0x00e6: 0x0646,	# 	ARABIC LETTER NOON
+	0x00e7: 0x0647,	# 	ARABIC LETTER HEH
+	0x00e8: 0x0648,	# 	ARABIC LETTER WAW
+	0x00e9: 0x0649,	# 	ARABIC LETTER ALEF MAKSURA
+	0x00ea: 0x064a,	# 	ARABIC LETTER YEH
+	0x00eb: 0x064b,	# 	ARABIC FATHATAN
+	0x00ec: 0x064c,	# 	ARABIC DAMMATAN
+	0x00ed: 0x064d,	# 	ARABIC KASRATAN
+	0x00ee: 0x064e,	# 	ARABIC FATHA
+	0x00ef: 0x064f,	# 	ARABIC DAMMA
+	0x00f0: 0x0650,	# 	ARABIC KASRA
+	0x00f1: 0x0651,	# 	ARABIC SHADDA
+	0x00f2: 0x0652,	# 	ARABIC SUKUN
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_7.py b/Lib/encodings/iso8859_7.py
new file mode 100644
index 0000000..c847610
--- /dev/null
+++ b/Lib/encodings/iso8859_7.py
@@ -0,0 +1,120 @@
+""" Python Character Mapping Codec generated from '8859-7.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00a1: 0x2018,	# 	LEFT SINGLE QUOTATION MARK
+	0x00a2: 0x2019,	# 	RIGHT SINGLE QUOTATION MARK
+	0x00af: 0x2015,	# 	HORIZONTAL BAR
+	0x00b4: 0x0384,	# 	GREEK TONOS
+	0x00b5: 0x0385,	# 	GREEK DIALYTIKA TONOS
+	0x00b6: 0x0386,	# 	GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x00b8: 0x0388,	# 	GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x00b9: 0x0389,	# 	GREEK CAPITAL LETTER ETA WITH TONOS
+	0x00ba: 0x038a,	# 	GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x00bc: 0x038c,	# 	GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x00be: 0x038e,	# 	GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x00bf: 0x038f,	# 	GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x00c0: 0x0390,	# 	GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x00c1: 0x0391,	# 	GREEK CAPITAL LETTER ALPHA
+	0x00c2: 0x0392,	# 	GREEK CAPITAL LETTER BETA
+	0x00c3: 0x0393,	# 	GREEK CAPITAL LETTER GAMMA
+	0x00c4: 0x0394,	# 	GREEK CAPITAL LETTER DELTA
+	0x00c5: 0x0395,	# 	GREEK CAPITAL LETTER EPSILON
+	0x00c6: 0x0396,	# 	GREEK CAPITAL LETTER ZETA
+	0x00c7: 0x0397,	# 	GREEK CAPITAL LETTER ETA
+	0x00c8: 0x0398,	# 	GREEK CAPITAL LETTER THETA
+	0x00c9: 0x0399,	# 	GREEK CAPITAL LETTER IOTA
+	0x00ca: 0x039a,	# 	GREEK CAPITAL LETTER KAPPA
+	0x00cb: 0x039b,	# 	GREEK CAPITAL LETTER LAMDA
+	0x00cc: 0x039c,	# 	GREEK CAPITAL LETTER MU
+	0x00cd: 0x039d,	# 	GREEK CAPITAL LETTER NU
+	0x00ce: 0x039e,	# 	GREEK CAPITAL LETTER XI
+	0x00cf: 0x039f,	# 	GREEK CAPITAL LETTER OMICRON
+	0x00d0: 0x03a0,	# 	GREEK CAPITAL LETTER PI
+	0x00d1: 0x03a1,	# 	GREEK CAPITAL LETTER RHO
+	0x00d3: 0x03a3,	# 	GREEK CAPITAL LETTER SIGMA
+	0x00d4: 0x03a4,	# 	GREEK CAPITAL LETTER TAU
+	0x00d5: 0x03a5,	# 	GREEK CAPITAL LETTER UPSILON
+	0x00d6: 0x03a6,	# 	GREEK CAPITAL LETTER PHI
+	0x00d7: 0x03a7,	# 	GREEK CAPITAL LETTER CHI
+	0x00d8: 0x03a8,	# 	GREEK CAPITAL LETTER PSI
+	0x00d9: 0x03a9,	# 	GREEK CAPITAL LETTER OMEGA
+	0x00da: 0x03aa,	# 	GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x00db: 0x03ab,	# 	GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x00dc: 0x03ac,	# 	GREEK SMALL LETTER ALPHA WITH TONOS
+	0x00dd: 0x03ad,	# 	GREEK SMALL LETTER EPSILON WITH TONOS
+	0x00de: 0x03ae,	# 	GREEK SMALL LETTER ETA WITH TONOS
+	0x00df: 0x03af,	# 	GREEK SMALL LETTER IOTA WITH TONOS
+	0x00e0: 0x03b0,	# 	GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x00e1: 0x03b1,	# 	GREEK SMALL LETTER ALPHA
+	0x00e2: 0x03b2,	# 	GREEK SMALL LETTER BETA
+	0x00e3: 0x03b3,	# 	GREEK SMALL LETTER GAMMA
+	0x00e4: 0x03b4,	# 	GREEK SMALL LETTER DELTA
+	0x00e5: 0x03b5,	# 	GREEK SMALL LETTER EPSILON
+	0x00e6: 0x03b6,	# 	GREEK SMALL LETTER ZETA
+	0x00e7: 0x03b7,	# 	GREEK SMALL LETTER ETA
+	0x00e8: 0x03b8,	# 	GREEK SMALL LETTER THETA
+	0x00e9: 0x03b9,	# 	GREEK SMALL LETTER IOTA
+	0x00ea: 0x03ba,	# 	GREEK SMALL LETTER KAPPA
+	0x00eb: 0x03bb,	# 	GREEK SMALL LETTER LAMDA
+	0x00ec: 0x03bc,	# 	GREEK SMALL LETTER MU
+	0x00ed: 0x03bd,	# 	GREEK SMALL LETTER NU
+	0x00ee: 0x03be,	# 	GREEK SMALL LETTER XI
+	0x00ef: 0x03bf,	# 	GREEK SMALL LETTER OMICRON
+	0x00f0: 0x03c0,	# 	GREEK SMALL LETTER PI
+	0x00f1: 0x03c1,	# 	GREEK SMALL LETTER RHO
+	0x00f2: 0x03c2,	# 	GREEK SMALL LETTER FINAL SIGMA
+	0x00f3: 0x03c3,	# 	GREEK SMALL LETTER SIGMA
+	0x00f4: 0x03c4,	# 	GREEK SMALL LETTER TAU
+	0x00f5: 0x03c5,	# 	GREEK SMALL LETTER UPSILON
+	0x00f6: 0x03c6,	# 	GREEK SMALL LETTER PHI
+	0x00f7: 0x03c7,	# 	GREEK SMALL LETTER CHI
+	0x00f8: 0x03c8,	# 	GREEK SMALL LETTER PSI
+	0x00f9: 0x03c9,	# 	GREEK SMALL LETTER OMEGA
+	0x00fa: 0x03ca,	# 	GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00fb: 0x03cb,	# 	GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00fc: 0x03cc,	# 	GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00fd: 0x03cd,	# 	GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00fe: 0x03ce,	# 	GREEK SMALL LETTER OMEGA WITH TONOS
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_8.py b/Lib/encodings/iso8859_8.py
new file mode 100644
index 0000000..72b783b
--- /dev/null
+++ b/Lib/encodings/iso8859_8.py
@@ -0,0 +1,77 @@
+""" Python Character Mapping Codec generated from '8859-8.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00aa: 0x00d7,	# 	MULTIPLICATION SIGN
+	0x00af: 0x203e,	# 	OVERLINE
+	0x00ba: 0x00f7,	# 	DIVISION SIGN
+	0x00df: 0x2017,	# 	DOUBLE LOW LINE
+	0x00e0: 0x05d0,	# 	HEBREW LETTER ALEF
+	0x00e1: 0x05d1,	# 	HEBREW LETTER BET
+	0x00e2: 0x05d2,	# 	HEBREW LETTER GIMEL
+	0x00e3: 0x05d3,	# 	HEBREW LETTER DALET
+	0x00e4: 0x05d4,	# 	HEBREW LETTER HE
+	0x00e5: 0x05d5,	# 	HEBREW LETTER VAV
+	0x00e6: 0x05d6,	# 	HEBREW LETTER ZAYIN
+	0x00e7: 0x05d7,	# 	HEBREW LETTER HET
+	0x00e8: 0x05d8,	# 	HEBREW LETTER TET
+	0x00e9: 0x05d9,	# 	HEBREW LETTER YOD
+	0x00ea: 0x05da,	# 	HEBREW LETTER FINAL KAF
+	0x00eb: 0x05db,	# 	HEBREW LETTER KAF
+	0x00ec: 0x05dc,	# 	HEBREW LETTER LAMED
+	0x00ed: 0x05dd,	# 	HEBREW LETTER FINAL MEM
+	0x00ee: 0x05de,	# 	HEBREW LETTER MEM
+	0x00ef: 0x05df,	# 	HEBREW LETTER FINAL NUN
+	0x00f0: 0x05e0,	# 	HEBREW LETTER NUN
+	0x00f1: 0x05e1,	# 	HEBREW LETTER SAMEKH
+	0x00f2: 0x05e2,	# 	HEBREW LETTER AYIN
+	0x00f3: 0x05e3,	# 	HEBREW LETTER FINAL PE
+	0x00f4: 0x05e4,	# 	HEBREW LETTER PE
+	0x00f5: 0x05e5,	# 	HEBREW LETTER FINAL TSADI
+	0x00f6: 0x05e6,	# 	HEBREW LETTER TSADI
+	0x00f7: 0x05e7,	# 	HEBREW LETTER QOF
+	0x00f8: 0x05e8,	# 	HEBREW LETTER RESH
+	0x00f9: 0x05e9,	# 	HEBREW LETTER SHIN
+	0x00fa: 0x05ea,	# 	HEBREW LETTER TAV
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/iso8859_9.py b/Lib/encodings/iso8859_9.py
new file mode 100644
index 0000000..3f91d32
--- /dev/null
+++ b/Lib/encodings/iso8859_9.py
@@ -0,0 +1,52 @@
+""" Python Character Mapping Codec generated from '8859-9.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x00d0: 0x011e,	# 	LATIN CAPITAL LETTER G WITH BREVE
+	0x00dd: 0x0130,	# 	LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x00de: 0x015e,	# 	LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00f0: 0x011f,	# 	LATIN SMALL LETTER G WITH BREVE
+	0x00fd: 0x0131,	# 	LATIN SMALL LETTER DOTLESS I
+	0x00fe: 0x015f,	# 	LATIN SMALL LETTER S WITH CEDILLA
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/koi8_r.py b/Lib/encodings/koi8_r.py
new file mode 100644
index 0000000..0e1c15b
--- /dev/null
+++ b/Lib/encodings/koi8_r.py
@@ -0,0 +1,174 @@
+""" Python Character Mapping Codec generated from 'KOI8-R.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x2500,	# 	BOX DRAWINGS LIGHT HORIZONTAL
+	0x0081: 0x2502,	# 	BOX DRAWINGS LIGHT VERTICAL
+	0x0082: 0x250c,	# 	BOX DRAWINGS LIGHT DOWN AND RIGHT
+	0x0083: 0x2510,	# 	BOX DRAWINGS LIGHT DOWN AND LEFT
+	0x0084: 0x2514,	# 	BOX DRAWINGS LIGHT UP AND RIGHT
+	0x0085: 0x2518,	# 	BOX DRAWINGS LIGHT UP AND LEFT
+	0x0086: 0x251c,	# 	BOX DRAWINGS LIGHT VERTICAL AND RIGHT
+	0x0087: 0x2524,	# 	BOX DRAWINGS LIGHT VERTICAL AND LEFT
+	0x0088: 0x252c,	# 	BOX DRAWINGS LIGHT DOWN AND HORIZONTAL
+	0x0089: 0x2534,	# 	BOX DRAWINGS LIGHT UP AND HORIZONTAL
+	0x008a: 0x253c,	# 	BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL
+	0x008b: 0x2580,	# 	UPPER HALF BLOCK
+	0x008c: 0x2584,	# 	LOWER HALF BLOCK
+	0x008d: 0x2588,	# 	FULL BLOCK
+	0x008e: 0x258c,	# 	LEFT HALF BLOCK
+	0x008f: 0x2590,	# 	RIGHT HALF BLOCK
+	0x0090: 0x2591,	# 	LIGHT SHADE
+	0x0091: 0x2592,	# 	MEDIUM SHADE
+	0x0092: 0x2593,	# 	DARK SHADE
+	0x0093: 0x2320,	# 	TOP HALF INTEGRAL
+	0x0094: 0x25a0,	# 	BLACK SQUARE
+	0x0095: 0x2219,	# 	BULLET OPERATOR
+	0x0096: 0x221a,	# 	SQUARE ROOT
+	0x0097: 0x2248,	# 	ALMOST EQUAL TO
+	0x0098: 0x2264,	# 	LESS-THAN OR EQUAL TO
+	0x0099: 0x2265,	# 	GREATER-THAN OR EQUAL TO
+	0x009a: 0x00a0,	# 	NO-BREAK SPACE
+	0x009b: 0x2321,	# 	BOTTOM HALF INTEGRAL
+	0x009c: 0x00b0,	# 	DEGREE SIGN
+	0x009d: 0x00b2,	# 	SUPERSCRIPT TWO
+	0x009e: 0x00b7,	# 	MIDDLE DOT
+	0x009f: 0x00f7,	# 	DIVISION SIGN
+	0x00a0: 0x2550,	# 	BOX DRAWINGS DOUBLE HORIZONTAL
+	0x00a1: 0x2551,	# 	BOX DRAWINGS DOUBLE VERTICAL
+	0x00a2: 0x2552,	# 	BOX DRAWINGS DOWN SINGLE AND RIGHT DOUBLE
+	0x00a3: 0x0451,	# 	CYRILLIC SMALL LETTER IO
+	0x00a4: 0x2553,	# 	BOX DRAWINGS DOWN DOUBLE AND RIGHT SINGLE
+	0x00a5: 0x2554,	# 	BOX DRAWINGS DOUBLE DOWN AND RIGHT
+	0x00a6: 0x2555,	# 	BOX DRAWINGS DOWN SINGLE AND LEFT DOUBLE
+	0x00a7: 0x2556,	# 	BOX DRAWINGS DOWN DOUBLE AND LEFT SINGLE
+	0x00a8: 0x2557,	# 	BOX DRAWINGS DOUBLE DOWN AND LEFT
+	0x00a9: 0x2558,	# 	BOX DRAWINGS UP SINGLE AND RIGHT DOUBLE
+	0x00aa: 0x2559,	# 	BOX DRAWINGS UP DOUBLE AND RIGHT SINGLE
+	0x00ab: 0x255a,	# 	BOX DRAWINGS DOUBLE UP AND RIGHT
+	0x00ac: 0x255b,	# 	BOX DRAWINGS UP SINGLE AND LEFT DOUBLE
+	0x00ad: 0x255c,	# 	BOX DRAWINGS UP DOUBLE AND LEFT SINGLE
+	0x00ae: 0x255d,	# 	BOX DRAWINGS DOUBLE UP AND LEFT
+	0x00af: 0x255e,	# 	BOX DRAWINGS VERTICAL SINGLE AND RIGHT DOUBLE
+	0x00b0: 0x255f,	# 	BOX DRAWINGS VERTICAL DOUBLE AND RIGHT SINGLE
+	0x00b1: 0x2560,	# 	BOX DRAWINGS DOUBLE VERTICAL AND RIGHT
+	0x00b2: 0x2561,	# 	BOX DRAWINGS VERTICAL SINGLE AND LEFT DOUBLE
+	0x00b3: 0x0401,	# 	CYRILLIC CAPITAL LETTER IO
+	0x00b4: 0x2562,	# 	BOX DRAWINGS VERTICAL DOUBLE AND LEFT SINGLE
+	0x00b5: 0x2563,	# 	BOX DRAWINGS DOUBLE VERTICAL AND LEFT
+	0x00b6: 0x2564,	# 	BOX DRAWINGS DOWN SINGLE AND HORIZONTAL DOUBLE
+	0x00b7: 0x2565,	# 	BOX DRAWINGS DOWN DOUBLE AND HORIZONTAL SINGLE
+	0x00b8: 0x2566,	# 	BOX DRAWINGS DOUBLE DOWN AND HORIZONTAL
+	0x00b9: 0x2567,	# 	BOX DRAWINGS UP SINGLE AND HORIZONTAL DOUBLE
+	0x00ba: 0x2568,	# 	BOX DRAWINGS UP DOUBLE AND HORIZONTAL SINGLE
+	0x00bb: 0x2569,	# 	BOX DRAWINGS DOUBLE UP AND HORIZONTAL
+	0x00bc: 0x256a,	# 	BOX DRAWINGS VERTICAL SINGLE AND HORIZONTAL DOUBLE
+	0x00bd: 0x256b,	# 	BOX DRAWINGS VERTICAL DOUBLE AND HORIZONTAL SINGLE
+	0x00be: 0x256c,	# 	BOX DRAWINGS DOUBLE VERTICAL AND HORIZONTAL
+	0x00bf: 0x00a9,	# 	COPYRIGHT SIGN
+	0x00c0: 0x044e,	# 	CYRILLIC SMALL LETTER YU
+	0x00c1: 0x0430,	# 	CYRILLIC SMALL LETTER A
+	0x00c2: 0x0431,	# 	CYRILLIC SMALL LETTER BE
+	0x00c3: 0x0446,	# 	CYRILLIC SMALL LETTER TSE
+	0x00c4: 0x0434,	# 	CYRILLIC SMALL LETTER DE
+	0x00c5: 0x0435,	# 	CYRILLIC SMALL LETTER IE
+	0x00c6: 0x0444,	# 	CYRILLIC SMALL LETTER EF
+	0x00c7: 0x0433,	# 	CYRILLIC SMALL LETTER GHE
+	0x00c8: 0x0445,	# 	CYRILLIC SMALL LETTER HA
+	0x00c9: 0x0438,	# 	CYRILLIC SMALL LETTER I
+	0x00ca: 0x0439,	# 	CYRILLIC SMALL LETTER SHORT I
+	0x00cb: 0x043a,	# 	CYRILLIC SMALL LETTER KA
+	0x00cc: 0x043b,	# 	CYRILLIC SMALL LETTER EL
+	0x00cd: 0x043c,	# 	CYRILLIC SMALL LETTER EM
+	0x00ce: 0x043d,	# 	CYRILLIC SMALL LETTER EN
+	0x00cf: 0x043e,	# 	CYRILLIC SMALL LETTER O
+	0x00d0: 0x043f,	# 	CYRILLIC SMALL LETTER PE
+	0x00d1: 0x044f,	# 	CYRILLIC SMALL LETTER YA
+	0x00d2: 0x0440,	# 	CYRILLIC SMALL LETTER ER
+	0x00d3: 0x0441,	# 	CYRILLIC SMALL LETTER ES
+	0x00d4: 0x0442,	# 	CYRILLIC SMALL LETTER TE
+	0x00d5: 0x0443,	# 	CYRILLIC SMALL LETTER U
+	0x00d6: 0x0436,	# 	CYRILLIC SMALL LETTER ZHE
+	0x00d7: 0x0432,	# 	CYRILLIC SMALL LETTER VE
+	0x00d8: 0x044c,	# 	CYRILLIC SMALL LETTER SOFT SIGN
+	0x00d9: 0x044b,	# 	CYRILLIC SMALL LETTER YERU
+	0x00da: 0x0437,	# 	CYRILLIC SMALL LETTER ZE
+	0x00db: 0x0448,	# 	CYRILLIC SMALL LETTER SHA
+	0x00dc: 0x044d,	# 	CYRILLIC SMALL LETTER E
+	0x00dd: 0x0449,	# 	CYRILLIC SMALL LETTER SHCHA
+	0x00de: 0x0447,	# 	CYRILLIC SMALL LETTER CHE
+	0x00df: 0x044a,	# 	CYRILLIC SMALL LETTER HARD SIGN
+	0x00e0: 0x042e,	# 	CYRILLIC CAPITAL LETTER YU
+	0x00e1: 0x0410,	# 	CYRILLIC CAPITAL LETTER A
+	0x00e2: 0x0411,	# 	CYRILLIC CAPITAL LETTER BE
+	0x00e3: 0x0426,	# 	CYRILLIC CAPITAL LETTER TSE
+	0x00e4: 0x0414,	# 	CYRILLIC CAPITAL LETTER DE
+	0x00e5: 0x0415,	# 	CYRILLIC CAPITAL LETTER IE
+	0x00e6: 0x0424,	# 	CYRILLIC CAPITAL LETTER EF
+	0x00e7: 0x0413,	# 	CYRILLIC CAPITAL LETTER GHE
+	0x00e8: 0x0425,	# 	CYRILLIC CAPITAL LETTER HA
+	0x00e9: 0x0418,	# 	CYRILLIC CAPITAL LETTER I
+	0x00ea: 0x0419,	# 	CYRILLIC CAPITAL LETTER SHORT I
+	0x00eb: 0x041a,	# 	CYRILLIC CAPITAL LETTER KA
+	0x00ec: 0x041b,	# 	CYRILLIC CAPITAL LETTER EL
+	0x00ed: 0x041c,	# 	CYRILLIC CAPITAL LETTER EM
+	0x00ee: 0x041d,	# 	CYRILLIC CAPITAL LETTER EN
+	0x00ef: 0x041e,	# 	CYRILLIC CAPITAL LETTER O
+	0x00f0: 0x041f,	# 	CYRILLIC CAPITAL LETTER PE
+	0x00f1: 0x042f,	# 	CYRILLIC CAPITAL LETTER YA
+	0x00f2: 0x0420,	# 	CYRILLIC CAPITAL LETTER ER
+	0x00f3: 0x0421,	# 	CYRILLIC CAPITAL LETTER ES
+	0x00f4: 0x0422,	# 	CYRILLIC CAPITAL LETTER TE
+	0x00f5: 0x0423,	# 	CYRILLIC CAPITAL LETTER U
+	0x00f6: 0x0416,	# 	CYRILLIC CAPITAL LETTER ZHE
+	0x00f7: 0x0412,	# 	CYRILLIC CAPITAL LETTER VE
+	0x00f8: 0x042c,	# 	CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x00f9: 0x042b,	# 	CYRILLIC CAPITAL LETTER YERU
+	0x00fa: 0x0417,	# 	CYRILLIC CAPITAL LETTER ZE
+	0x00fb: 0x0428,	# 	CYRILLIC CAPITAL LETTER SHA
+	0x00fc: 0x042d,	# 	CYRILLIC CAPITAL LETTER E
+	0x00fd: 0x0429,	# 	CYRILLIC CAPITAL LETTER SHCHA
+	0x00fe: 0x0427,	# 	CYRILLIC CAPITAL LETTER CHE
+	0x00ff: 0x042a,	# 	CYRILLIC CAPITAL LETTER HARD SIGN
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/latin_1.py b/Lib/encodings/latin_1.py
new file mode 100644
index 0000000..ebca9fb
--- /dev/null
+++ b/Lib/encodings/latin_1.py
@@ -0,0 +1,35 @@
+""" Python 'latin-1' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.latin_1_encode
+    decode = codecs.latin_1_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+class StreamConverter(StreamWriter,StreamReader):
+
+    encode = codecs.latin_1_decode
+    decode = codecs.latin_1_encode
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
diff --git a/Lib/encodings/mac_cyrillic.py b/Lib/encodings/mac_cyrillic.py
new file mode 100644
index 0000000..1314836
--- /dev/null
+++ b/Lib/encodings/mac_cyrillic.py
@@ -0,0 +1,169 @@
+""" Python Character Mapping Codec generated from 'CYRILLIC.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x0410,	# CYRILLIC CAPITAL LETTER A
+	0x0081: 0x0411,	# CYRILLIC CAPITAL LETTER BE
+	0x0082: 0x0412,	# CYRILLIC CAPITAL LETTER VE
+	0x0083: 0x0413,	# CYRILLIC CAPITAL LETTER GHE
+	0x0084: 0x0414,	# CYRILLIC CAPITAL LETTER DE
+	0x0085: 0x0415,	# CYRILLIC CAPITAL LETTER IE
+	0x0086: 0x0416,	# CYRILLIC CAPITAL LETTER ZHE
+	0x0087: 0x0417,	# CYRILLIC CAPITAL LETTER ZE
+	0x0088: 0x0418,	# CYRILLIC CAPITAL LETTER I
+	0x0089: 0x0419,	# CYRILLIC CAPITAL LETTER SHORT I
+	0x008a: 0x041a,	# CYRILLIC CAPITAL LETTER KA
+	0x008b: 0x041b,	# CYRILLIC CAPITAL LETTER EL
+	0x008c: 0x041c,	# CYRILLIC CAPITAL LETTER EM
+	0x008d: 0x041d,	# CYRILLIC CAPITAL LETTER EN
+	0x008e: 0x041e,	# CYRILLIC CAPITAL LETTER O
+	0x008f: 0x041f,	# CYRILLIC CAPITAL LETTER PE
+	0x0090: 0x0420,	# CYRILLIC CAPITAL LETTER ER
+	0x0091: 0x0421,	# CYRILLIC CAPITAL LETTER ES
+	0x0092: 0x0422,	# CYRILLIC CAPITAL LETTER TE
+	0x0093: 0x0423,	# CYRILLIC CAPITAL LETTER U
+	0x0094: 0x0424,	# CYRILLIC CAPITAL LETTER EF
+	0x0095: 0x0425,	# CYRILLIC CAPITAL LETTER HA
+	0x0096: 0x0426,	# CYRILLIC CAPITAL LETTER TSE
+	0x0097: 0x0427,	# CYRILLIC CAPITAL LETTER CHE
+	0x0098: 0x0428,	# CYRILLIC CAPITAL LETTER SHA
+	0x0099: 0x0429,	# CYRILLIC CAPITAL LETTER SHCHA
+	0x009a: 0x042a,	# CYRILLIC CAPITAL LETTER HARD SIGN
+	0x009b: 0x042b,	# CYRILLIC CAPITAL LETTER YERU
+	0x009c: 0x042c,	# CYRILLIC CAPITAL LETTER SOFT SIGN
+	0x009d: 0x042d,	# CYRILLIC CAPITAL LETTER E
+	0x009e: 0x042e,	# CYRILLIC CAPITAL LETTER YU
+	0x009f: 0x042f,	# CYRILLIC CAPITAL LETTER YA
+	0x00a0: 0x2020,	# DAGGER
+	0x00a1: 0x00b0,	# DEGREE SIGN
+	0x00a4: 0x00a7,	# SECTION SIGN
+	0x00a5: 0x2022,	# BULLET
+	0x00a6: 0x00b6,	# PILCROW SIGN
+	0x00a7: 0x0406,	# CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x2122,	# TRADE MARK SIGN
+	0x00ab: 0x0402,	# CYRILLIC CAPITAL LETTER DJE
+	0x00ac: 0x0452,	# CYRILLIC SMALL LETTER DJE
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x0403,	# CYRILLIC CAPITAL LETTER GJE
+	0x00af: 0x0453,	# CYRILLIC SMALL LETTER GJE
+	0x00b0: 0x221e,	# INFINITY
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x0456,	# CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+	0x00b6: 0x2202,	# PARTIAL DIFFERENTIAL
+	0x00b7: 0x0408,	# CYRILLIC CAPITAL LETTER JE
+	0x00b8: 0x0404,	# CYRILLIC CAPITAL LETTER UKRAINIAN IE
+	0x00b9: 0x0454,	# CYRILLIC SMALL LETTER UKRAINIAN IE
+	0x00ba: 0x0407,	# CYRILLIC CAPITAL LETTER YI
+	0x00bb: 0x0457,	# CYRILLIC SMALL LETTER YI
+	0x00bc: 0x0409,	# CYRILLIC CAPITAL LETTER LJE
+	0x00bd: 0x0459,	# CYRILLIC SMALL LETTER LJE
+	0x00be: 0x040a,	# CYRILLIC CAPITAL LETTER NJE
+	0x00bf: 0x045a,	# CYRILLIC SMALL LETTER NJE
+	0x00c0: 0x0458,	# CYRILLIC SMALL LETTER JE
+	0x00c1: 0x0405,	# CYRILLIC CAPITAL LETTER DZE
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x221a,	# SQUARE ROOT
+	0x00c4: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00c5: 0x2248,	# ALMOST EQUAL TO
+	0x00c6: 0x2206,	# INCREMENT
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x040b,	# CYRILLIC CAPITAL LETTER TSHE
+	0x00cc: 0x045b,	# CYRILLIC SMALL LETTER TSHE
+	0x00cd: 0x040c,	# CYRILLIC CAPITAL LETTER KJE
+	0x00ce: 0x045c,	# CYRILLIC SMALL LETTER KJE
+	0x00cf: 0x0455,	# CYRILLIC SMALL LETTER DZE
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2014,	# EM DASH
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00d8: 0x040e,	# CYRILLIC CAPITAL LETTER SHORT U
+	0x00d9: 0x045e,	# CYRILLIC SMALL LETTER SHORT U
+	0x00da: 0x040f,	# CYRILLIC CAPITAL LETTER DZHE
+	0x00db: 0x045f,	# CYRILLIC SMALL LETTER DZHE
+	0x00dc: 0x2116,	# NUMERO SIGN
+	0x00dd: 0x0401,	# CYRILLIC CAPITAL LETTER IO
+	0x00de: 0x0451,	# CYRILLIC SMALL LETTER IO
+	0x00df: 0x044f,	# CYRILLIC SMALL LETTER YA
+	0x00e0: 0x0430,	# CYRILLIC SMALL LETTER A
+	0x00e1: 0x0431,	# CYRILLIC SMALL LETTER BE
+	0x00e2: 0x0432,	# CYRILLIC SMALL LETTER VE
+	0x00e3: 0x0433,	# CYRILLIC SMALL LETTER GHE
+	0x00e4: 0x0434,	# CYRILLIC SMALL LETTER DE
+	0x00e5: 0x0435,	# CYRILLIC SMALL LETTER IE
+	0x00e6: 0x0436,	# CYRILLIC SMALL LETTER ZHE
+	0x00e7: 0x0437,	# CYRILLIC SMALL LETTER ZE
+	0x00e8: 0x0438,	# CYRILLIC SMALL LETTER I
+	0x00e9: 0x0439,	# CYRILLIC SMALL LETTER SHORT I
+	0x00ea: 0x043a,	# CYRILLIC SMALL LETTER KA
+	0x00eb: 0x043b,	# CYRILLIC SMALL LETTER EL
+	0x00ec: 0x043c,	# CYRILLIC SMALL LETTER EM
+	0x00ed: 0x043d,	# CYRILLIC SMALL LETTER EN
+	0x00ee: 0x043e,	# CYRILLIC SMALL LETTER O
+	0x00ef: 0x043f,	# CYRILLIC SMALL LETTER PE
+	0x00f0: 0x0440,	# CYRILLIC SMALL LETTER ER
+	0x00f1: 0x0441,	# CYRILLIC SMALL LETTER ES
+	0x00f2: 0x0442,	# CYRILLIC SMALL LETTER TE
+	0x00f3: 0x0443,	# CYRILLIC SMALL LETTER U
+	0x00f4: 0x0444,	# CYRILLIC SMALL LETTER EF
+	0x00f5: 0x0445,	# CYRILLIC SMALL LETTER HA
+	0x00f6: 0x0446,	# CYRILLIC SMALL LETTER TSE
+	0x00f7: 0x0447,	# CYRILLIC SMALL LETTER CHE
+	0x00f8: 0x0448,	# CYRILLIC SMALL LETTER SHA
+	0x00f9: 0x0449,	# CYRILLIC SMALL LETTER SHCHA
+	0x00fa: 0x044a,	# CYRILLIC SMALL LETTER HARD SIGN
+	0x00fb: 0x044b,	# CYRILLIC SMALL LETTER YERU
+	0x00fc: 0x044c,	# CYRILLIC SMALL LETTER SOFT SIGN
+	0x00fd: 0x044d,	# CYRILLIC SMALL LETTER E
+	0x00fe: 0x044e,	# CYRILLIC SMALL LETTER YU
+	0x00ff: 0x00a4,	# CURRENCY SIGN
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/mac_greek.py b/Lib/encodings/mac_greek.py
new file mode 100644
index 0000000..7673b83
--- /dev/null
+++ b/Lib/encodings/mac_greek.py
@@ -0,0 +1,172 @@
+""" Python Character Mapping Codec generated from 'GREEK.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0081: 0x00b9,	# SUPERSCRIPT ONE
+	0x0082: 0x00b2,	# SUPERSCRIPT TWO
+	0x0083: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0084: 0x00b3,	# SUPERSCRIPT THREE
+	0x0085: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x0086: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0087: 0x0385,	# GREEK DIALYTIKA TONOS
+	0x0088: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0089: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x008a: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x008b: 0x0384,	# GREEK TONOS
+	0x008c: 0x00a8,	# DIAERESIS
+	0x008d: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x008e: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x008f: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0090: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0091: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0092: 0x00a3,	# POUND SIGN
+	0x0093: 0x2122,	# TRADE MARK SIGN
+	0x0094: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0095: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0096: 0x2022,	# BULLET
+	0x0097: 0x00bd,	# VULGAR FRACTION ONE HALF
+	0x0098: 0x2030,	# PER MILLE SIGN
+	0x0099: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x009b: 0x00a6,	# BROKEN BAR
+	0x009c: 0x00ad,	# SOFT HYPHEN
+	0x009d: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x009e: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x009f: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00a0: 0x2020,	# DAGGER
+	0x00a1: 0x0393,	# GREEK CAPITAL LETTER GAMMA
+	0x00a2: 0x0394,	# GREEK CAPITAL LETTER DELTA
+	0x00a3: 0x0398,	# GREEK CAPITAL LETTER THETA
+	0x00a4: 0x039b,	# GREEK CAPITAL LETTER LAMBDA
+	0x00a5: 0x039e,	# GREEK CAPITAL LETTER XI
+	0x00a6: 0x03a0,	# GREEK CAPITAL LETTER PI
+	0x00a7: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x03a3,	# GREEK CAPITAL LETTER SIGMA
+	0x00ab: 0x03aa,	# GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+	0x00ac: 0x00a7,	# SECTION SIGN
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x00b0,	# DEGREE SIGN
+	0x00af: 0x0387,	# GREEK ANO TELEIA
+	0x00b0: 0x0391,	# GREEK CAPITAL LETTER ALPHA
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x00a5,	# YEN SIGN
+	0x00b5: 0x0392,	# GREEK CAPITAL LETTER BETA
+	0x00b6: 0x0395,	# GREEK CAPITAL LETTER EPSILON
+	0x00b7: 0x0396,	# GREEK CAPITAL LETTER ZETA
+	0x00b8: 0x0397,	# GREEK CAPITAL LETTER ETA
+	0x00b9: 0x0399,	# GREEK CAPITAL LETTER IOTA
+	0x00ba: 0x039a,	# GREEK CAPITAL LETTER KAPPA
+	0x00bb: 0x039c,	# GREEK CAPITAL LETTER MU
+	0x00bc: 0x03a6,	# GREEK CAPITAL LETTER PHI
+	0x00bd: 0x03ab,	# GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+	0x00be: 0x03a8,	# GREEK CAPITAL LETTER PSI
+	0x00bf: 0x03a9,	# GREEK CAPITAL LETTER OMEGA
+	0x00c0: 0x03ac,	# GREEK SMALL LETTER ALPHA WITH TONOS
+	0x00c1: 0x039d,	# GREEK CAPITAL LETTER NU
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x039f,	# GREEK CAPITAL LETTER OMICRON
+	0x00c4: 0x03a1,	# GREEK CAPITAL LETTER RHO
+	0x00c5: 0x2248,	# ALMOST EQUAL TO
+	0x00c6: 0x03a4,	# GREEK CAPITAL LETTER TAU
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x03a5,	# GREEK CAPITAL LETTER UPSILON
+	0x00cc: 0x03a7,	# GREEK CAPITAL LETTER CHI
+	0x00cd: 0x0386,	# GREEK CAPITAL LETTER ALPHA WITH TONOS
+	0x00ce: 0x0388,	# GREEK CAPITAL LETTER EPSILON WITH TONOS
+	0x00cf: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2015,	# HORIZONTAL BAR
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x0389,	# GREEK CAPITAL LETTER ETA WITH TONOS
+	0x00d8: 0x038a,	# GREEK CAPITAL LETTER IOTA WITH TONOS
+	0x00d9: 0x038c,	# GREEK CAPITAL LETTER OMICRON WITH TONOS
+	0x00da: 0x038e,	# GREEK CAPITAL LETTER UPSILON WITH TONOS
+	0x00db: 0x03ad,	# GREEK SMALL LETTER EPSILON WITH TONOS
+	0x00dc: 0x03ae,	# GREEK SMALL LETTER ETA WITH TONOS
+	0x00dd: 0x03af,	# GREEK SMALL LETTER IOTA WITH TONOS
+	0x00de: 0x03cc,	# GREEK SMALL LETTER OMICRON WITH TONOS
+	0x00df: 0x038f,	# GREEK CAPITAL LETTER OMEGA WITH TONOS
+	0x00e0: 0x03cd,	# GREEK SMALL LETTER UPSILON WITH TONOS
+	0x00e1: 0x03b1,	# GREEK SMALL LETTER ALPHA
+	0x00e2: 0x03b2,	# GREEK SMALL LETTER BETA
+	0x00e3: 0x03c8,	# GREEK SMALL LETTER PSI
+	0x00e4: 0x03b4,	# GREEK SMALL LETTER DELTA
+	0x00e5: 0x03b5,	# GREEK SMALL LETTER EPSILON
+	0x00e6: 0x03c6,	# GREEK SMALL LETTER PHI
+	0x00e7: 0x03b3,	# GREEK SMALL LETTER GAMMA
+	0x00e8: 0x03b7,	# GREEK SMALL LETTER ETA
+	0x00e9: 0x03b9,	# GREEK SMALL LETTER IOTA
+	0x00ea: 0x03be,	# GREEK SMALL LETTER XI
+	0x00eb: 0x03ba,	# GREEK SMALL LETTER KAPPA
+	0x00ec: 0x03bb,	# GREEK SMALL LETTER LAMBDA
+	0x00ed: 0x03bc,	# GREEK SMALL LETTER MU
+	0x00ee: 0x03bd,	# GREEK SMALL LETTER NU
+	0x00ef: 0x03bf,	# GREEK SMALL LETTER OMICRON
+	0x00f0: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00f1: 0x03ce,	# GREEK SMALL LETTER OMEGA WITH TONOS
+	0x00f2: 0x03c1,	# GREEK SMALL LETTER RHO
+	0x00f3: 0x03c3,	# GREEK SMALL LETTER SIGMA
+	0x00f4: 0x03c4,	# GREEK SMALL LETTER TAU
+	0x00f5: 0x03b8,	# GREEK SMALL LETTER THETA
+	0x00f6: 0x03c9,	# GREEK SMALL LETTER OMEGA
+	0x00f7: 0x03c2,	# GREEK SMALL LETTER FINAL SIGMA
+	0x00f8: 0x03c7,	# GREEK SMALL LETTER CHI
+	0x00f9: 0x03c5,	# GREEK SMALL LETTER UPSILON
+	0x00fa: 0x03b6,	# GREEK SMALL LETTER ZETA
+	0x00fb: 0x03ca,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA
+	0x00fc: 0x03cb,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA
+	0x00fd: 0x0390,	# GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+	0x00fe: 0x03b0,	# GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+	0x00ff: None,	# UNDEFINED
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/mac_iceland.py b/Lib/encodings/mac_iceland.py
new file mode 100644
index 0000000..62e1f63
--- /dev/null
+++ b/Lib/encodings/mac_iceland.py
@@ -0,0 +1,168 @@
+""" Python Character Mapping Codec generated from 'ICELAND.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0083: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0084: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x0085: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x0086: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0087: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0088: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0089: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x008a: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x008b: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x008c: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x008d: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x008e: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x008f: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0090: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0091: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0092: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0093: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0094: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0095: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0096: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x0097: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x0098: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0099: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x009b: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x009c: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x009d: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x009e: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x009f: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00a0: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00a1: 0x00b0,	# DEGREE SIGN
+	0x00a4: 0x00a7,	# SECTION SIGN
+	0x00a5: 0x2022,	# BULLET
+	0x00a6: 0x00b6,	# PILCROW SIGN
+	0x00a7: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x2122,	# TRADE MARK SIGN
+	0x00ab: 0x00b4,	# ACUTE ACCENT
+	0x00ac: 0x00a8,	# DIAERESIS
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x00af: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x00b0: 0x221e,	# INFINITY
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x00a5,	# YEN SIGN
+	0x00b6: 0x2202,	# PARTIAL DIFFERENTIAL
+	0x00b7: 0x2211,	# N-ARY SUMMATION
+	0x00b8: 0x220f,	# N-ARY PRODUCT
+	0x00b9: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00ba: 0x222b,	# INTEGRAL
+	0x00bb: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00bc: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00bd: 0x2126,	# OHM SIGN
+	0x00be: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x00bf: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x00c0: 0x00bf,	# INVERTED QUESTION MARK
+	0x00c1: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x221a,	# SQUARE ROOT
+	0x00c4: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00c5: 0x2248,	# ALMOST EQUAL TO
+	0x00c6: 0x2206,	# INCREMENT
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x00cc: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x00cd: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00ce: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x00cf: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2014,	# EM DASH
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x25ca,	# LOZENGE
+	0x00d8: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00d9: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00da: 0x2044,	# FRACTION SLASH
+	0x00db: 0x00a4,	# CURRENCY SIGN
+	0x00dc: 0x00d0,	# LATIN CAPITAL LETTER ETH
+	0x00dd: 0x00f0,	# LATIN SMALL LETTER ETH
+	0x00df: 0x00fe,	# LATIN SMALL LETTER THORN
+	0x00e0: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x00e1: 0x00b7,	# MIDDLE DOT
+	0x00e2: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x00e3: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00e4: 0x2030,	# PER MILLE SIGN
+	0x00e5: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00e6: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00e7: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00e8: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00e9: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x00ea: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00eb: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00ec: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00ed: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00f0: None,	# UNDEFINED
+	0x00f1: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00f2: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00f3: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00f4: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00f5: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x00f6: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x00f7: 0x02dc,	# SMALL TILDE
+	0x00f8: 0x00af,	# MACRON
+	0x00f9: 0x02d8,	# BREVE
+	0x00fa: 0x02d9,	# DOT ABOVE
+	0x00fb: 0x02da,	# RING ABOVE
+	0x00fc: 0x00b8,	# CEDILLA
+	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
+	0x00fe: 0x02db,	# OGONEK
+	0x00ff: 0x02c7,	# CARON
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/mac_latin2.py b/Lib/encodings/mac_latin2.py
new file mode 100644
index 0000000..7e64959
--- /dev/null
+++ b/Lib/encodings/mac_latin2.py
@@ -0,0 +1,172 @@
+""" Python Character Mapping Codec generated from 'LATIN2.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0081: 0x0100,	# LATIN CAPITAL LETTER A WITH MACRON
+	0x0082: 0x0101,	# LATIN SMALL LETTER A WITH MACRON
+	0x0083: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0084: 0x0104,	# LATIN CAPITAL LETTER A WITH OGONEK
+	0x0085: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x0086: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0087: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0088: 0x0105,	# LATIN SMALL LETTER A WITH OGONEK
+	0x0089: 0x010c,	# LATIN CAPITAL LETTER C WITH CARON
+	0x008a: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x008b: 0x010d,	# LATIN SMALL LETTER C WITH CARON
+	0x008c: 0x0106,	# LATIN CAPITAL LETTER C WITH ACUTE
+	0x008d: 0x0107,	# LATIN SMALL LETTER C WITH ACUTE
+	0x008e: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x008f: 0x0179,	# LATIN CAPITAL LETTER Z WITH ACUTE
+	0x0090: 0x017a,	# LATIN SMALL LETTER Z WITH ACUTE
+	0x0091: 0x010e,	# LATIN CAPITAL LETTER D WITH CARON
+	0x0092: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0093: 0x010f,	# LATIN SMALL LETTER D WITH CARON
+	0x0094: 0x0112,	# LATIN CAPITAL LETTER E WITH MACRON
+	0x0095: 0x0113,	# LATIN SMALL LETTER E WITH MACRON
+	0x0096: 0x0116,	# LATIN CAPITAL LETTER E WITH DOT ABOVE
+	0x0097: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x0098: 0x0117,	# LATIN SMALL LETTER E WITH DOT ABOVE
+	0x0099: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x009b: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x009c: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x009d: 0x011a,	# LATIN CAPITAL LETTER E WITH CARON
+	0x009e: 0x011b,	# LATIN SMALL LETTER E WITH CARON
+	0x009f: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00a0: 0x2020,	# DAGGER
+	0x00a1: 0x00b0,	# DEGREE SIGN
+	0x00a2: 0x0118,	# LATIN CAPITAL LETTER E WITH OGONEK
+	0x00a4: 0x00a7,	# SECTION SIGN
+	0x00a5: 0x2022,	# BULLET
+	0x00a6: 0x00b6,	# PILCROW SIGN
+	0x00a7: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x2122,	# TRADE MARK SIGN
+	0x00ab: 0x0119,	# LATIN SMALL LETTER E WITH OGONEK
+	0x00ac: 0x00a8,	# DIAERESIS
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x0123,	# LATIN SMALL LETTER G WITH CEDILLA
+	0x00af: 0x012e,	# LATIN CAPITAL LETTER I WITH OGONEK
+	0x00b0: 0x012f,	# LATIN SMALL LETTER I WITH OGONEK
+	0x00b1: 0x012a,	# LATIN CAPITAL LETTER I WITH MACRON
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x012b,	# LATIN SMALL LETTER I WITH MACRON
+	0x00b5: 0x0136,	# LATIN CAPITAL LETTER K WITH CEDILLA
+	0x00b6: 0x2202,	# PARTIAL DIFFERENTIAL
+	0x00b7: 0x2211,	# N-ARY SUMMATION
+	0x00b8: 0x0142,	# LATIN SMALL LETTER L WITH STROKE
+	0x00b9: 0x013b,	# LATIN CAPITAL LETTER L WITH CEDILLA
+	0x00ba: 0x013c,	# LATIN SMALL LETTER L WITH CEDILLA
+	0x00bb: 0x013d,	# LATIN CAPITAL LETTER L WITH CARON
+	0x00bc: 0x013e,	# LATIN SMALL LETTER L WITH CARON
+	0x00bd: 0x0139,	# LATIN CAPITAL LETTER L WITH ACUTE
+	0x00be: 0x013a,	# LATIN SMALL LETTER L WITH ACUTE
+	0x00bf: 0x0145,	# LATIN CAPITAL LETTER N WITH CEDILLA
+	0x00c0: 0x0146,	# LATIN SMALL LETTER N WITH CEDILLA
+	0x00c1: 0x0143,	# LATIN CAPITAL LETTER N WITH ACUTE
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x221a,	# SQUARE ROOT
+	0x00c4: 0x0144,	# LATIN SMALL LETTER N WITH ACUTE
+	0x00c5: 0x0147,	# LATIN CAPITAL LETTER N WITH CARON
+	0x00c6: 0x2206,	# INCREMENT
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x0148,	# LATIN SMALL LETTER N WITH CARON
+	0x00cc: 0x0150,	# LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+	0x00cd: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00ce: 0x0151,	# LATIN SMALL LETTER O WITH DOUBLE ACUTE
+	0x00cf: 0x014c,	# LATIN CAPITAL LETTER O WITH MACRON
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2014,	# EM DASH
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x25ca,	# LOZENGE
+	0x00d8: 0x014d,	# LATIN SMALL LETTER O WITH MACRON
+	0x00d9: 0x0154,	# LATIN CAPITAL LETTER R WITH ACUTE
+	0x00da: 0x0155,	# LATIN SMALL LETTER R WITH ACUTE
+	0x00db: 0x0158,	# LATIN CAPITAL LETTER R WITH CARON
+	0x00dc: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x00dd: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x00de: 0x0159,	# LATIN SMALL LETTER R WITH CARON
+	0x00df: 0x0156,	# LATIN CAPITAL LETTER R WITH CEDILLA
+	0x00e0: 0x0157,	# LATIN SMALL LETTER R WITH CEDILLA
+	0x00e1: 0x0160,	# LATIN CAPITAL LETTER S WITH CARON
+	0x00e2: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x00e3: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00e4: 0x0161,	# LATIN SMALL LETTER S WITH CARON
+	0x00e5: 0x015a,	# LATIN CAPITAL LETTER S WITH ACUTE
+	0x00e6: 0x015b,	# LATIN SMALL LETTER S WITH ACUTE
+	0x00e7: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00e8: 0x0164,	# LATIN CAPITAL LETTER T WITH CARON
+	0x00e9: 0x0165,	# LATIN SMALL LETTER T WITH CARON
+	0x00ea: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00eb: 0x017d,	# LATIN CAPITAL LETTER Z WITH CARON
+	0x00ec: 0x017e,	# LATIN SMALL LETTER Z WITH CARON
+	0x00ed: 0x016a,	# LATIN CAPITAL LETTER U WITH MACRON
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00f0: 0x016b,	# LATIN SMALL LETTER U WITH MACRON
+	0x00f1: 0x016e,	# LATIN CAPITAL LETTER U WITH RING ABOVE
+	0x00f2: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00f3: 0x016f,	# LATIN SMALL LETTER U WITH RING ABOVE
+	0x00f4: 0x0170,	# LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+	0x00f5: 0x0171,	# LATIN SMALL LETTER U WITH DOUBLE ACUTE
+	0x00f6: 0x0172,	# LATIN CAPITAL LETTER U WITH OGONEK
+	0x00f7: 0x0173,	# LATIN SMALL LETTER U WITH OGONEK
+	0x00f8: 0x00dd,	# LATIN CAPITAL LETTER Y WITH ACUTE
+	0x00f9: 0x00fd,	# LATIN SMALL LETTER Y WITH ACUTE
+	0x00fa: 0x0137,	# LATIN SMALL LETTER K WITH CEDILLA
+	0x00fb: 0x017b,	# LATIN CAPITAL LETTER Z WITH DOT ABOVE
+	0x00fc: 0x0141,	# LATIN CAPITAL LETTER L WITH STROKE
+	0x00fd: 0x017c,	# LATIN SMALL LETTER Z WITH DOT ABOVE
+	0x00fe: 0x0122,	# LATIN CAPITAL LETTER G WITH CEDILLA
+	0x00ff: 0x02c7,	# CARON
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/mac_roman.py b/Lib/encodings/mac_roman.py
new file mode 100644
index 0000000..9147e93
--- /dev/null
+++ b/Lib/encodings/mac_roman.py
@@ -0,0 +1,169 @@
+""" Python Character Mapping Codec generated from 'ROMAN.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0083: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0084: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x0085: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x0086: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0087: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0088: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0089: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x008a: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x008b: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x008c: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x008d: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x008e: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x008f: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0090: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0091: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0092: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0093: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0094: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0095: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0096: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x0097: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x0098: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0099: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x009b: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x009c: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x009d: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x009e: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x009f: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00a0: 0x2020,	# DAGGER
+	0x00a1: 0x00b0,	# DEGREE SIGN
+	0x00a4: 0x00a7,	# SECTION SIGN
+	0x00a5: 0x2022,	# BULLET
+	0x00a6: 0x00b6,	# PILCROW SIGN
+	0x00a7: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x2122,	# TRADE MARK SIGN
+	0x00ab: 0x00b4,	# ACUTE ACCENT
+	0x00ac: 0x00a8,	# DIAERESIS
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x00af: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x00b0: 0x221e,	# INFINITY
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x00a5,	# YEN SIGN
+	0x00b6: 0x2202,	# PARTIAL DIFFERENTIAL
+	0x00b7: 0x2211,	# N-ARY SUMMATION
+	0x00b8: 0x220f,	# N-ARY PRODUCT
+	0x00b9: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00ba: 0x222b,	# INTEGRAL
+	0x00bb: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00bc: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00bd: 0x2126,	# OHM SIGN
+	0x00be: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x00bf: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x00c0: 0x00bf,	# INVERTED QUESTION MARK
+	0x00c1: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x221a,	# SQUARE ROOT
+	0x00c4: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00c5: 0x2248,	# ALMOST EQUAL TO
+	0x00c6: 0x2206,	# INCREMENT
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x00cc: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x00cd: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00ce: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x00cf: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2014,	# EM DASH
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x25ca,	# LOZENGE
+	0x00d8: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00d9: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00da: 0x2044,	# FRACTION SLASH
+	0x00db: 0x00a4,	# CURRENCY SIGN
+	0x00dc: 0x2039,	# SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+	0x00dd: 0x203a,	# SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+	0x00de: 0xfb01,	# LATIN SMALL LIGATURE FI
+	0x00df: 0xfb02,	# LATIN SMALL LIGATURE FL
+	0x00e0: 0x2021,	# DOUBLE DAGGER
+	0x00e1: 0x00b7,	# MIDDLE DOT
+	0x00e2: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x00e3: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00e4: 0x2030,	# PER MILLE SIGN
+	0x00e5: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00e6: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00e7: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00e8: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00e9: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x00ea: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00eb: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00ec: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00ed: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00f0: None,	# UNDEFINED
+	0x00f1: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00f2: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00f3: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00f4: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00f5: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x00f6: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x00f7: 0x02dc,	# SMALL TILDE
+	0x00f8: 0x00af,	# MACRON
+	0x00f9: 0x02d8,	# BREVE
+	0x00fa: 0x02d9,	# DOT ABOVE
+	0x00fb: 0x02da,	# RING ABOVE
+	0x00fc: 0x00b8,	# CEDILLA
+	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
+	0x00fe: 0x02db,	# OGONEK
+	0x00ff: 0x02c7,	# CARON
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/mac_turkish.py b/Lib/encodings/mac_turkish.py
new file mode 100644
index 0000000..76b6bbe
--- /dev/null
+++ b/Lib/encodings/mac_turkish.py
@@ -0,0 +1,169 @@
+""" Python Character Mapping Codec generated from 'TURKISH.TXT'.
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""#"
+
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    def encode(self,input,errors='strict'):
+
+        return codecs.charmap_encode(input,errors,encoding_map)
+        
+    def decode(self,input,errors='strict'):
+
+        return codecs.charmap_decode(input,errors,decoding_map)
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec().encode,Codec().decode,StreamReader,StreamWriter)
+
+### Decoding Map
+
+decoding_map = {
+
+	0x0080: 0x00c4,	# LATIN CAPITAL LETTER A WITH DIAERESIS
+	0x0081: 0x00c5,	# LATIN CAPITAL LETTER A WITH RING ABOVE
+	0x0082: 0x00c7,	# LATIN CAPITAL LETTER C WITH CEDILLA
+	0x0083: 0x00c9,	# LATIN CAPITAL LETTER E WITH ACUTE
+	0x0084: 0x00d1,	# LATIN CAPITAL LETTER N WITH TILDE
+	0x0085: 0x00d6,	# LATIN CAPITAL LETTER O WITH DIAERESIS
+	0x0086: 0x00dc,	# LATIN CAPITAL LETTER U WITH DIAERESIS
+	0x0087: 0x00e1,	# LATIN SMALL LETTER A WITH ACUTE
+	0x0088: 0x00e0,	# LATIN SMALL LETTER A WITH GRAVE
+	0x0089: 0x00e2,	# LATIN SMALL LETTER A WITH CIRCUMFLEX
+	0x008a: 0x00e4,	# LATIN SMALL LETTER A WITH DIAERESIS
+	0x008b: 0x00e3,	# LATIN SMALL LETTER A WITH TILDE
+	0x008c: 0x00e5,	# LATIN SMALL LETTER A WITH RING ABOVE
+	0x008d: 0x00e7,	# LATIN SMALL LETTER C WITH CEDILLA
+	0x008e: 0x00e9,	# LATIN SMALL LETTER E WITH ACUTE
+	0x008f: 0x00e8,	# LATIN SMALL LETTER E WITH GRAVE
+	0x0090: 0x00ea,	# LATIN SMALL LETTER E WITH CIRCUMFLEX
+	0x0091: 0x00eb,	# LATIN SMALL LETTER E WITH DIAERESIS
+	0x0092: 0x00ed,	# LATIN SMALL LETTER I WITH ACUTE
+	0x0093: 0x00ec,	# LATIN SMALL LETTER I WITH GRAVE
+	0x0094: 0x00ee,	# LATIN SMALL LETTER I WITH CIRCUMFLEX
+	0x0095: 0x00ef,	# LATIN SMALL LETTER I WITH DIAERESIS
+	0x0096: 0x00f1,	# LATIN SMALL LETTER N WITH TILDE
+	0x0097: 0x00f3,	# LATIN SMALL LETTER O WITH ACUTE
+	0x0098: 0x00f2,	# LATIN SMALL LETTER O WITH GRAVE
+	0x0099: 0x00f4,	# LATIN SMALL LETTER O WITH CIRCUMFLEX
+	0x009a: 0x00f6,	# LATIN SMALL LETTER O WITH DIAERESIS
+	0x009b: 0x00f5,	# LATIN SMALL LETTER O WITH TILDE
+	0x009c: 0x00fa,	# LATIN SMALL LETTER U WITH ACUTE
+	0x009d: 0x00f9,	# LATIN SMALL LETTER U WITH GRAVE
+	0x009e: 0x00fb,	# LATIN SMALL LETTER U WITH CIRCUMFLEX
+	0x009f: 0x00fc,	# LATIN SMALL LETTER U WITH DIAERESIS
+	0x00a0: 0x2020,	# DAGGER
+	0x00a1: 0x00b0,	# DEGREE SIGN
+	0x00a4: 0x00a7,	# SECTION SIGN
+	0x00a5: 0x2022,	# BULLET
+	0x00a6: 0x00b6,	# PILCROW SIGN
+	0x00a7: 0x00df,	# LATIN SMALL LETTER SHARP S
+	0x00a8: 0x00ae,	# REGISTERED SIGN
+	0x00aa: 0x2122,	# TRADE MARK SIGN
+	0x00ab: 0x00b4,	# ACUTE ACCENT
+	0x00ac: 0x00a8,	# DIAERESIS
+	0x00ad: 0x2260,	# NOT EQUAL TO
+	0x00ae: 0x00c6,	# LATIN CAPITAL LIGATURE AE
+	0x00af: 0x00d8,	# LATIN CAPITAL LETTER O WITH STROKE
+	0x00b0: 0x221e,	# INFINITY
+	0x00b2: 0x2264,	# LESS-THAN OR EQUAL TO
+	0x00b3: 0x2265,	# GREATER-THAN OR EQUAL TO
+	0x00b4: 0x00a5,	# YEN SIGN
+	0x00b6: 0x2202,	# PARTIAL DIFFERENTIAL
+	0x00b7: 0x2211,	# N-ARY SUMMATION
+	0x00b8: 0x220f,	# N-ARY PRODUCT
+	0x00b9: 0x03c0,	# GREEK SMALL LETTER PI
+	0x00ba: 0x222b,	# INTEGRAL
+	0x00bb: 0x00aa,	# FEMININE ORDINAL INDICATOR
+	0x00bc: 0x00ba,	# MASCULINE ORDINAL INDICATOR
+	0x00bd: 0x2126,	# OHM SIGN
+	0x00be: 0x00e6,	# LATIN SMALL LIGATURE AE
+	0x00bf: 0x00f8,	# LATIN SMALL LETTER O WITH STROKE
+	0x00c0: 0x00bf,	# INVERTED QUESTION MARK
+	0x00c1: 0x00a1,	# INVERTED EXCLAMATION MARK
+	0x00c2: 0x00ac,	# NOT SIGN
+	0x00c3: 0x221a,	# SQUARE ROOT
+	0x00c4: 0x0192,	# LATIN SMALL LETTER F WITH HOOK
+	0x00c5: 0x2248,	# ALMOST EQUAL TO
+	0x00c6: 0x2206,	# INCREMENT
+	0x00c7: 0x00ab,	# LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c8: 0x00bb,	# RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+	0x00c9: 0x2026,	# HORIZONTAL ELLIPSIS
+	0x00ca: 0x00a0,	# NO-BREAK SPACE
+	0x00cb: 0x00c0,	# LATIN CAPITAL LETTER A WITH GRAVE
+	0x00cc: 0x00c3,	# LATIN CAPITAL LETTER A WITH TILDE
+	0x00cd: 0x00d5,	# LATIN CAPITAL LETTER O WITH TILDE
+	0x00ce: 0x0152,	# LATIN CAPITAL LIGATURE OE
+	0x00cf: 0x0153,	# LATIN SMALL LIGATURE OE
+	0x00d0: 0x2013,	# EN DASH
+	0x00d1: 0x2014,	# EM DASH
+	0x00d2: 0x201c,	# LEFT DOUBLE QUOTATION MARK
+	0x00d3: 0x201d,	# RIGHT DOUBLE QUOTATION MARK
+	0x00d4: 0x2018,	# LEFT SINGLE QUOTATION MARK
+	0x00d5: 0x2019,	# RIGHT SINGLE QUOTATION MARK
+	0x00d6: 0x00f7,	# DIVISION SIGN
+	0x00d7: 0x25ca,	# LOZENGE
+	0x00d8: 0x00ff,	# LATIN SMALL LETTER Y WITH DIAERESIS
+	0x00d9: 0x0178,	# LATIN CAPITAL LETTER Y WITH DIAERESIS
+	0x00da: 0x011e,	# LATIN CAPITAL LETTER G WITH BREVE
+	0x00db: 0x011f,	# LATIN SMALL LETTER G WITH BREVE
+	0x00dc: 0x0130,	# LATIN CAPITAL LETTER I WITH DOT ABOVE
+	0x00dd: 0x0131,	# LATIN SMALL LETTER DOTLESS I
+	0x00de: 0x015e,	# LATIN CAPITAL LETTER S WITH CEDILLA
+	0x00df: 0x015f,	# LATIN SMALL LETTER S WITH CEDILLA
+	0x00e0: 0x2021,	# DOUBLE DAGGER
+	0x00e1: 0x00b7,	# MIDDLE DOT
+	0x00e2: 0x201a,	# SINGLE LOW-9 QUOTATION MARK
+	0x00e3: 0x201e,	# DOUBLE LOW-9 QUOTATION MARK
+	0x00e4: 0x2030,	# PER MILLE SIGN
+	0x00e5: 0x00c2,	# LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+	0x00e6: 0x00ca,	# LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+	0x00e7: 0x00c1,	# LATIN CAPITAL LETTER A WITH ACUTE
+	0x00e8: 0x00cb,	# LATIN CAPITAL LETTER E WITH DIAERESIS
+	0x00e9: 0x00c8,	# LATIN CAPITAL LETTER E WITH GRAVE
+	0x00ea: 0x00cd,	# LATIN CAPITAL LETTER I WITH ACUTE
+	0x00eb: 0x00ce,	# LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+	0x00ec: 0x00cf,	# LATIN CAPITAL LETTER I WITH DIAERESIS
+	0x00ed: 0x00cc,	# LATIN CAPITAL LETTER I WITH GRAVE
+	0x00ee: 0x00d3,	# LATIN CAPITAL LETTER O WITH ACUTE
+	0x00ef: 0x00d4,	# LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+	0x00f0: None,	# UNDEFINED
+	0x00f1: 0x00d2,	# LATIN CAPITAL LETTER O WITH GRAVE
+	0x00f2: 0x00da,	# LATIN CAPITAL LETTER U WITH ACUTE
+	0x00f3: 0x00db,	# LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+	0x00f4: 0x00d9,	# LATIN CAPITAL LETTER U WITH GRAVE
+	0x00f5: None,	# UNDEFINED
+	0x00f6: 0x02c6,	# MODIFIER LETTER CIRCUMFLEX ACCENT
+	0x00f7: 0x02dc,	# SMALL TILDE
+	0x00f8: 0x00af,	# MACRON
+	0x00f9: 0x02d8,	# BREVE
+	0x00fa: 0x02d9,	# DOT ABOVE
+	0x00fb: 0x02da,	# RING ABOVE
+	0x00fc: 0x00b8,	# CEDILLA
+	0x00fd: 0x02dd,	# DOUBLE ACUTE ACCENT
+	0x00fe: 0x02db,	# OGONEK
+	0x00ff: 0x02c7,	# CARON
+}
+
+### Encoding Map
+
+encoding_map = {}
+for k,v in decoding_map.items():
+    encoding_map[v] = k
diff --git a/Lib/encodings/raw_unicode_escape.py b/Lib/encodings/raw_unicode_escape.py
new file mode 100644
index 0000000..e142846
--- /dev/null
+++ b/Lib/encodings/raw_unicode_escape.py
@@ -0,0 +1,30 @@
+""" Python 'raw-unicode-escape' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.raw_unicode_escape_encode
+    decode = codecs.raw_unicode_escape_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
diff --git a/Lib/encodings/unicode_escape.py b/Lib/encodings/unicode_escape.py
new file mode 100644
index 0000000..841651b
--- /dev/null
+++ b/Lib/encodings/unicode_escape.py
@@ -0,0 +1,30 @@
+""" Python 'unicode-escape' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.unicode_escape_encode
+    decode = codecs.unicode_escape_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
diff --git a/Lib/encodings/unicode_internal.py b/Lib/encodings/unicode_internal.py
new file mode 100644
index 0000000..4a0f4c1
--- /dev/null
+++ b/Lib/encodings/unicode_internal.py
@@ -0,0 +1,30 @@
+""" Python 'unicode-internal' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.unicode_internal_encode
+    decode = codecs.unicode_internal_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
diff --git a/Lib/encodings/utf_16.py b/Lib/encodings/utf_16.py
new file mode 100644
index 0000000..c034a97
--- /dev/null
+++ b/Lib/encodings/utf_16.py
@@ -0,0 +1,31 @@
+""" Python 'utf-16' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.utf_16_encode
+    decode = codecs.utf_16_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
+
diff --git a/Lib/encodings/utf_16_be.py b/Lib/encodings/utf_16_be.py
new file mode 100644
index 0000000..2fd28da
--- /dev/null
+++ b/Lib/encodings/utf_16_be.py
@@ -0,0 +1,31 @@
+""" Python 'utf-16-be' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.utf_16_be_encode
+    decode = codecs.utf_16_be_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
+
diff --git a/Lib/encodings/utf_16_le.py b/Lib/encodings/utf_16_le.py
new file mode 100644
index 0000000..fea9122
--- /dev/null
+++ b/Lib/encodings/utf_16_le.py
@@ -0,0 +1,31 @@
+""" Python 'utf-16-le' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.utf_16_le_encode
+    decode = codecs.utf_16_le_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
+
diff --git a/Lib/encodings/utf_8.py b/Lib/encodings/utf_8.py
new file mode 100644
index 0000000..a745f5b
--- /dev/null
+++ b/Lib/encodings/utf_8.py
@@ -0,0 +1,31 @@
+""" Python 'utf-8' Codec
+
+
+Written by Marc-Andre Lemburg (mal@lemburg.com).
+
+(c) Copyright CNRI, All Rights Reserved. NO WARRANTY.
+
+"""
+import codecs
+
+### Codec APIs
+
+class Codec(codecs.Codec):
+
+    # Note: Binding these as C functions will result in the class not
+    # converting them to methods. This is intended.
+    encode = codecs.utf_8_encode
+    decode = codecs.utf_8_decode
+
+class StreamWriter(Codec,codecs.StreamWriter):
+    pass
+        
+class StreamReader(Codec,codecs.StreamReader):
+    pass
+
+### encodings module API
+
+def getregentry():
+
+    return (Codec.encode,Codec.decode,StreamReader,StreamWriter)
+