    {-# LANGUAGE CPP #-}

    -- | Word8 library to be used with Data.ByteString.
    -- All function assumes that 'Word8' is encoded in Latin-1 (ISO-8859-1).
    -- All utility functions are supposed to work as if
    -- those of 'Data.Char'. Exceptions are described in
    -- the function documentations.
    --
    -- Base library 4.7 (GHC 7.8) or earlier is based on Unicode 6.
    -- Base library 4.8 (GHC 7.10) or later is based on Unicode 7.
    -- 'isLower', 'isSymbol' and 'isPunctuation' behave differently.

    module Data.Word8 (
      -- * Re-exporting
        Word8
      -- * Character classification
      , isControl, isSpace, isLower, isUpper
      , isAlpha, isAlphaNum, isPrint, isDigit, isOctDigit, isHexDigit
      , isLetter, isMark, isNumber, isPunctuation, isSymbol, isSeparator
      -- * Subranges
      , isAscii, isLatin1, isAsciiUpper, isAsciiLower
      -- * Case conversion
      , toUpper, toLower, toTitle
      -- * ASCII charactors
      , _nul, _tab, _lf, _vt, _np, _cr
      , _space, _exclam, _quotedbl, _numbersign, _dollar, _percent, _ampersand, _quotesingle, _parenleft, _parenright, _asterisk, _plus, _comma, _hyphen, _period, _slash
      , _0, _1, _2, _3, _4, _5, _6, _7, _8, _9
      , _colon, _semicolon, _less, _equal, _greater, _question, _at
      , _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z
      , _bracketleft, _backslash, _bracketright, _circum, _underscore, _grave
      , _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z
      , _braceleft, _bar, _braceright, _tilde, _del
      -- * Some Latin-1 charactors
      , _nbsp
      , _ordfeminine, _softhyphen, _mu, _ordmasculine
      , _s2, _s3, _s1, _1'4, _1'2, _3'4
      , _Agrave, _Odieresis, _Oslash, _Thorn
      , _germandbls, _agrave, _odieresis, _oslash, _thorn, _ydieresis
      ) where

    import Data.Word (Word8)

    #ifndef MIN_VERSION_base
    #define MIN_VERSION_base(x,y,z) 1
    #endif

    ----------------------------------------------------------------

    isControl :: Word8 -> Bool
    isControl :: Word8 -> Bool
    isControl w :: Word8
    w = Word8
    _nul Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= 0x1f
               Bool -> Bool -> Bool
    || Word8
    _del Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= 0x9f

    isSpace :: Word8 -> Bool
    isSpace :: Word8 -> Bool
    isSpace w :: Word8
    w = Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _space
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _tab
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _lf
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _cr
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _np
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _vt
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _nbsp

    -- | This function returns 'True' for 170 and 186 in Unicode 6.
    --   But it returns 'False' in Unicode 7.
    isLower :: Word8 -> Bool
    isLower :: Word8 -> Bool
    isLower w :: Word8
    w = Word8 -> Bool
    isLower' Word8
    w
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _mu
    #if !MIN_VERSION_base(4,8,0)
             || w == _ordfeminine
             || w == _ordmasculine
    #endif

    isLowerCommon :: Word8 -> Bool
    isLowerCommon :: Word8 -> Bool
    isLowerCommon w :: Word8
    w = Word8 -> Bool
    isLower' Word8
    w
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _mu
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _ordfeminine
             Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _ordmasculine

    isLower' :: Word8 -> Bool
    isLower' :: Word8 -> Bool
    isLower' w :: Word8
    w = Word8 -> Bool
    isAsciiLower Word8
    w
              Bool -> Bool -> Bool
    || Word8
    _germandbls Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _odieresis
              Bool -> Bool -> Bool
    || Word8
    _oslash     Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _ydieresis

    isUpper :: Word8 -> Bool
    isUpper :: Word8 -> Bool
    isUpper w :: Word8
    w = Word8 -> Bool
    isAsciiUpper Word8
    w
             Bool -> Bool -> Bool
    || Word8
    _Agrave Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _Odieresis
             Bool -> Bool -> Bool
    || Word8
    _Oslash Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _Thorn

    isAlpha :: Word8 -> Bool
    isAlpha :: Word8 -> Bool
    isAlpha w :: Word8
    w = Word8 -> Bool
    isLowerCommon Word8
    w Bool -> Bool -> Bool
    || Word8 -> Bool
    isUpper Word8
    w

    isAlphaNum :: Word8 -> Bool
    isAlphaNum :: Word8 -> Bool
    isAlphaNum w :: Word8
    w = Word8 -> Bool
    isAlpha Word8
    w Bool -> Bool -> Bool
    || Word8 -> Bool
    isNumber Word8
    w

    isPrint :: Word8 -> Bool
    isPrint :: Word8 -> Bool
    isPrint w :: Word8
    w
      | Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _softhyphen = Bool
    False
    isPrint w :: Word8
    w = Word8
    _space Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _tilde
             Bool -> Bool -> Bool
    || Word8
    _nbsp  Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _ydieresis

    isDigit :: Word8 -> Bool
    isDigit :: Word8 -> Bool
    isDigit w :: Word8
    w = Word8
    _0 Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _9

    isOctDigit :: Word8 -> Bool
    isOctDigit :: Word8 -> Bool
    isOctDigit w :: Word8
    w = Word8
    _0 Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _7

    isHexDigit :: Word8 -> Bool
    isHexDigit :: Word8 -> Bool
    isHexDigit w :: Word8
    w = Word8 -> Bool
    isDigit Word8
    w
                Bool -> Bool -> Bool
    || Word8
    _A Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _F
                Bool -> Bool -> Bool
    || Word8
    _a Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _f

    isLetter :: Word8 -> Bool
    isLetter :: Word8 -> Bool
    isLetter w :: Word8
    w = Word8 -> Bool
    isLowerCommon Word8
    w Bool -> Bool -> Bool
    || Word8 -> Bool
    isUpper Word8
    w

    isMark :: Word8 -> Bool
    isMark :: Word8 -> Bool
    isMark _ = Bool
    False

    isNumber :: Word8 -> Bool
    isNumber :: Word8 -> Bool
    isNumber w :: Word8
    w = Word8 -> Bool
    isDigit Word8
    w
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _s1
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _s2
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _s3
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _1'4
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _1'2
              Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _3'4

    -- | This function returns 'False' for 167 and 182 in Unicode 6.
    --   But it returns 'True' in Unicode 7.
    isPunctuation :: Word8 -> Bool
    #if MIN_VERSION_base(4,8,0)
    isPunctuation :: Word8 -> Bool
    isPunctuation w :: Word8
    w = Word8
    w Word8 -> [Word8] -> Bool
    forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
    `elem` [0x21,0x22,0x23,0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x2e,0x2f,0x3a,0x3b,0x3f,0x40,0x5b,0x5c,0x5d,0x5f,0x7b,0x7d,0xa1,0xa7,0xab,0xb6,0xb7,0xbb,0xbf]
    #else
    isPunctuation w = w `elem` [0x21,0x22,0x23,0x25,0x26,0x27,0x28,0x29,0x2a,0x2c,0x2d,0x2e,0x2f,0x3a,0x3b,0x3f,0x40,0x5b,0x5c,0x5d,0x5f,0x7b,0x7d,0xa1,0xab,0xb7,0xbb,0xbf]
    #endif

    -- | This function returns 'True' for 167 and 182 in Unicode 6.
    --   But it returns 'False' in Unicode 7.
    isSymbol :: Word8 -> Bool
    #if MIN_VERSION_base(4,8,0)
    isSymbol :: Word8 -> Bool
    isSymbol w :: Word8
    w = Word8
    w Word8 -> [Word8] -> Bool
    forall (t :: * -> *) a. (Foldable t, Eq a) => a -> t a -> Bool
    `elem` [0x24,0x2b,0x3c,0x3d,0x3e,0x5e,0x60,0x7c,0x7e,0xa2,0xa3,0xa4,0xa5,0xa6,0xa8,0xa9,0xac,0xae,0xaf,0xb0,0xb1,0xb4,0xb8,0xd7,0xf7]
    #else
    isSymbol w = w `elem` [0x24,0x2b,0x3c,0x3d,0x3e,0x5e,0x60,0x7c,0x7e,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xac,0xae,0xaf,0xb0,0xb1,0xb4,0xb6,0xb8,0xd7,0xf7]
    #endif

    isSeparator :: Word8 -> Bool
    isSeparator :: Word8 -> Bool
    isSeparator w :: Word8
    w = Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _space
                 Bool -> Bool -> Bool
    || Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _nbsp

    ----------------------------------------------------------------

    isAscii :: Word8 -> Bool
    isAscii :: Word8 -> Bool
    isAscii w :: Word8
    w = Word8
    _nul Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _del

    isLatin1 :: Word8 -> Bool
    isLatin1 :: Word8 -> Bool
    isLatin1 _ = Bool
    True

    isAsciiUpper :: Word8 -> Bool
    isAsciiUpper :: Word8 -> Bool
    isAsciiUpper w :: Word8
    w = Word8
    _A Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _Z

    isAsciiLower :: Word8 -> Bool
    isAsciiLower :: Word8 -> Bool
    isAsciiLower w :: Word8
    w = Word8
    _a Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    w Bool -> Bool -> Bool
    && Word8
    w Word8 -> Word8 -> Bool
    forall a. Ord a => a -> a -> Bool
    <= Word8
    _z

    ----------------------------------------------------------------

    -- | Micro sign/mu (0xb5) and small letter Y with diaeresis (0xff) remain the same.
    toUpper :: Word8 -> Word8
    toUpper :: Word8 -> Word8
    toUpper w :: Word8
    w
      | Word8
    w Word8 -> Word8 -> Bool
    forall a. Eq a => a -> a -> Bool
    == Word8
    _germandbls = Word8
    w
      | Word8 -> Bool
    isLower' Word8
    w       = Word8
    w Word8 -> Word8 -> Word8
    forall a. Num a => a -> a -> a
    - Word8
    _space
      | Bool
    otherwise        = Word8
    w

    toLower :: Word8 -> Word8
    toLower :: Word8 -> Word8
    toLower w :: Word8
    w
      | Word8 -> Bool
    isUpper Word8
    w = Word8
    w Word8 -> Word8 -> Word8
    forall a. Num a => a -> a -> a
    + Word8
    _space
      | Bool
    otherwise = Word8
    w

    -- | Micro sign/mu (0xb5) and small letter Y with diaeresis (0xff) remain the same.
    toTitle :: Word8 -> Word8
    toTitle :: Word8 -> Word8
    toTitle = Word8 -> Word8
    toUpper

    ----------------------------------------------------------------

    _nul, _tab, _lf, _vt, _np, _cr :: Word8
    _nul :: Word8
    _nul = 0x00
    _tab :: Word8
    _tab = 0x09
    _lf :: Word8
    _lf  = 0x0a
    _vt :: Word8
    _vt  = 0x0b
    _np :: Word8
    _np  = 0x0c
    _cr :: Word8
    _cr  = 0x0d

    _space, _exclam, _quotedbl, _numbersign, _dollar, _percent, _ampersand, _quotesingle, _parenleft, _parenright, _asterisk, _plus, _comma, _hyphen, _period, _slash :: Word8
    _space :: Word8
    _space       = 0x20
    _exclam :: Word8
    _exclam      = 0x21
    _quotedbl :: Word8
    _quotedbl    = 0x22
    _numbersign :: Word8
    _numbersign  = 0x23
    _dollar :: Word8
    _dollar      = 0x24
    _percent :: Word8
    _percent     = 0x25
    _ampersand :: Word8
    _ampersand   = 0x26
    _quotesingle :: Word8
    _quotesingle = 0x27
    _parenleft :: Word8
    _parenleft   = 0x28
    _parenright :: Word8
    _parenright  = 0x29
    _asterisk :: Word8
    _asterisk    = 0x2a
    _plus :: Word8
    _plus        = 0x2b
    _comma :: Word8
    _comma       = 0x2c
    _hyphen :: Word8
    _hyphen      = 0x2d
    _period :: Word8
    _period      = 0x2e
    _slash :: Word8
    _slash       = 0x2f

    _0, _1, _2, _3, _4, _5, _6, _7, _8, _9 :: Word8
    _0 :: Word8
    _0 = 0x30
    _1 :: Word8
    _1 = 0x31
    _2 :: Word8
    _2 = 0x32
    _3 :: Word8
    _3 = 0x33
    _4 :: Word8
    _4 = 0x34
    _5 :: Word8
    _5 = 0x35
    _6 :: Word8
    _6 = 0x36
    _7 :: Word8
    _7 = 0x37
    _8 :: Word8
    _8 = 0x38
    _9 :: Word8
    _9 = 0x39

    _colon, _semicolon, _less, _equal, _greater, _question, _at :: Word8
    _colon :: Word8
    _colon      = 0x3a
    _semicolon :: Word8
    _semicolon  = 0x3b
    _less :: Word8
    _less       = 0x3c
    _equal :: Word8
    _equal      = 0x3d
    _greater :: Word8
    _greater    = 0x3e
    _question :: Word8
    _question   = 0x3f
    _at :: Word8
    _at         = 0x40

    _A, _B, _C, _D, _E, _F, _G, _H, _I, _J, _K, _L, _M, _N, _O, _P, _Q, _R, _S, _T, _U, _V, _W, _X, _Y, _Z :: Word8
    _A :: Word8
    _A = 0x41
    _B :: Word8
    _B = 0x42
    _C :: Word8
    _C = 0x43
    _D :: Word8
    _D = 0x44
    _E :: Word8
    _E = 0x45
    _F :: Word8
    _F = 0x46
    _G :: Word8
    _G = 0x47
    _H :: Word8
    _H = 0x48
    _I :: Word8
    _I = 0x49
    _J :: Word8
    _J = 0x4a
    _K :: Word8
    _K = 0x4b
    _L :: Word8
    _L = 0x4c
    _M :: Word8
    _M = 0x4d
    _N :: Word8
    _N = 0x4e
    _O :: Word8
    _O = 0x4f
    _P :: Word8
    _P = 0x50
    _Q :: Word8
    _Q = 0x51
    _R :: Word8
    _R = 0x52
    _S :: Word8
    _S = 0x53
    _T :: Word8
    _T = 0x54
    _U :: Word8
    _U = 0x55
    _V :: Word8
    _V = 0x56
    _W :: Word8
    _W = 0x57
    _X :: Word8
    _X = 0x58
    _Y :: Word8
    _Y = 0x59
    _Z :: Word8
    _Z = 0x5a

    _bracketleft, _backslash, _bracketright, _circum, _underscore, _grave :: Word8
    _bracketleft :: Word8
    _bracketleft   = 0x5b
    _backslash :: Word8
    _backslash    = 0x5c
    _bracketright :: Word8
    _bracketright = 0x5d
    _circum :: Word8
    _circum       = 0x5e
    _underscore :: Word8
    _underscore   = 0x5f
    _grave :: Word8
    _grave        = 0x60

    _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z :: Word8
    _a :: Word8
    _a = 0x61
    _b :: Word8
    _b = 0x62
    _c :: Word8
    _c = 0x63
    _d :: Word8
    _d = 0x64
    _e :: Word8
    _e = 0x65
    _f :: Word8
    _f = 0x66
    _g :: Word8
    _g = 0x67
    _h :: Word8
    _h = 0x68
    _i :: Word8
    _i = 0x69
    _j :: Word8
    _j = 0x6a
    _k :: Word8
    _k = 0x6b
    _l :: Word8
    _l = 0x6c
    _m :: Word8
    _m = 0x6d
    _n :: Word8
    _n = 0x6e
    _o :: Word8
    _o = 0x6f
    _p :: Word8
    _p = 0x70
    _q :: Word8
    _q = 0x71
    _r :: Word8
    _r = 0x72
    _s :: Word8
    _s = 0x73
    _t :: Word8
    _t = 0x74
    _u :: Word8
    _u = 0x75
    _v :: Word8
    _v = 0x76
    _w :: Word8
    _w = 0x77
    _x :: Word8
    _x = 0x78
    _y :: Word8
    _y = 0x79
    _z :: Word8
    _z = 0x7a

    _braceleft, _bar, _braceright, _tilde, _del :: Word8
    _braceleft :: Word8
    _braceleft  = 0x7b
    _bar :: Word8
    _bar        = 0x7c
    _braceright :: Word8
    _braceright = 0x7d
    _tilde :: Word8
    _tilde      = 0x7e
    _del :: Word8
    _del        = 0x7f

    _nbsp :: Word8
    _nbsp :: Word8
    _nbsp = 0xa0

    _ordfeminine, _softhyphen, _mu, _ordmasculine :: Word8
    _ordfeminine :: Word8
    _ordfeminine  = 0xaa
    _softhyphen :: Word8
    _softhyphen   = 0xad
    _mu :: Word8
    _mu           = 0xb5
    _ordmasculine :: Word8
    _ordmasculine = 0xba

    _s2, _s3, _s1, _1'4, _1'2, _3'4  :: Word8
    _s2 :: Word8
    _s2 = 0xb2
    _s3 :: Word8
    _s3 = 0xb3
    _s1 :: Word8
    _s1 = 0xb9
    _1'4 :: Word8
    _1'4 = 0xbc
    _1'2 :: Word8
    _1'2 = 0xbd
    _3'4 :: Word8
    _3'4 = 0xbe

    _Agrave, _Odieresis, _Oslash, _Thorn :: Word8
    _Agrave :: Word8
    _Agrave    = 0xc0
    _Odieresis :: Word8
    _Odieresis = 0xd6
    _Oslash :: Word8
    _Oslash    = 0xd8
    _Thorn :: Word8
    _Thorn     = 0xde

    _germandbls, _agrave, _odieresis, _oslash, _thorn, _ydieresis :: Word8
    _germandbls :: Word8
    _germandbls = 0xdf
    _agrave :: Word8
    _agrave     = 0xe0
    _odieresis :: Word8
    _odieresis  = 0xf6
    _oslash :: Word8
    _oslash     = 0xf8
    _thorn :: Word8
    _thorn      = 0xfe
    _ydieresis :: Word8
    _ydieresis  = 0xff