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

{- |
   Module     : Data.Char.Properties.UnicodeBlocks
   Copyright  : Copyright (C) 2010- Uwe Schmidt
   License    : MIT

   Maintainer : Uwe Schmidt (uwe@fh-wedel.de)
   Stability  : stable
   Portability: portable

   Unicode Code Blocks

   don't edit this module
   it's generated from 'http:\/\/www.unicode.org\/Public\/UNIDATA\/Blocks.txt'
-}

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

module Data.Char.Properties.UnicodeBlocks
  ( codeBlocks
  , elemCodeBlock
  , versionUnicode
  , isBasicLatin
  , isLatin1Supplement
  , isLatinExtendedA
  , isLatinExtendedB
  , isIPAExtensions
  , isSpacingModifierLetters
  , isCombiningDiacriticalMarks
  , isGreekandCoptic
  , isCyrillic
  , isCyrillicSupplement
  , isArmenian
  , isHebrew
  , isArabic
  , isSyriac
  , isArabicSupplement
  , isThaana
  , isNKo
  , isSamaritan
  , isMandaic
  , isArabicExtendedA
  , isDevanagari
  , isBengali
  , isGurmukhi
  , isGujarati
  , isOriya
  , isTamil
  , isTelugu
  , isKannada
  , isMalayalam
  , isSinhala
  , isThai
  , isLao
  , isTibetan
  , isMyanmar
  , isGeorgian
  , isHangulJamo
  , isEthiopic
  , isEthiopicSupplement
  , isCherokee
  , isUnifiedCanadianAboriginalSyllabics
  , isOgham
  , isRunic
  , isTagalog
  , isHanunoo
  , isBuhid
  , isTagbanwa
  , isKhmer
  , isMongolian
  , isUnifiedCanadianAboriginalSyllabicsExtended
  , isLimbu
  , isTaiLe
  , isNewTaiLue
  , isKhmerSymbols
  , isBuginese
  , isTaiTham
  , isCombiningDiacriticalMarksExtended
  , isBalinese
  , isSundanese
  , isBatak
  , isLepcha
  , isOlChiki
  , isSundaneseSupplement
  , isVedicExtensions
  , isPhoneticExtensions
  , isPhoneticExtensionsSupplement
  , isCombiningDiacriticalMarksSupplement
  , isLatinExtendedAdditional
  , isGreekExtended
  , isGeneralPunctuation
  , isSuperscriptsandSubscripts
  , isCurrencySymbols
  , isCombiningDiacriticalMarksforSymbols
  , isLetterlikeSymbols
  , isNumberForms
  , isArrows
  , isMathematicalOperators
  , isMiscellaneousTechnical
  , isControlPictures
  , isOpticalCharacterRecognition
  , isEnclosedAlphanumerics
  , isBoxDrawing
  , isBlockElements
  , isGeometricShapes
  , isMiscellaneousSymbols
  , isDingbats
  , isMiscellaneousMathematicalSymbolsA
  , isSupplementalArrowsA
  , isBraillePatterns
  , isSupplementalArrowsB
  , isMiscellaneousMathematicalSymbolsB
  , isSupplementalMathematicalOperators
  , isMiscellaneousSymbolsandArrows
  , isGlagolitic
  , isLatinExtendedC
  , isCoptic
  , isGeorgianSupplement
  , isTifinagh
  , isEthiopicExtended
  , isCyrillicExtendedA
  , isSupplementalPunctuation
  , isCJKRadicalsSupplement
  , isKangxiRadicals
  , isIdeographicDescriptionCharacters
  , isCJKSymbolsandPunctuation
  , isHiragana
  , isKatakana
  , isBopomofo
  , isHangulCompatibilityJamo
  , isKanbun
  , isBopomofoExtended
  , isCJKStrokes
  , isKatakanaPhoneticExtensions
  , isEnclosedCJKLettersandMonths
  , isCJKCompatibility
  , isCJKUnifiedIdeographsExtensionA
  , isYijingHexagramSymbols
  , isCJKUnifiedIdeographs
  , isYiSyllables
  , isYiRadicals
  , isLisu
  , isVai
  , isCyrillicExtendedB
  , isBamum
  , isModifierToneLetters
  , isLatinExtendedD
  , isSylotiNagri
  , isCommonIndicNumberForms
  , isPhagspa
  , isSaurashtra
  , isDevanagariExtended
  , isKayahLi
  , isRejang
  , isHangulJamoExtendedA
  , isJavanese
  , isMyanmarExtendedB
  , isCham
  , isMyanmarExtendedA
  , isTaiViet
  , isMeeteiMayekExtensions
  , isEthiopicExtendedA
  , isLatinExtendedE
  , isMeeteiMayek
  , isHangulSyllables
  , isHangulJamoExtendedB
  , isHighSurrogates
  , isHighPrivateUseSurrogates
  , isLowSurrogates
  , isPrivateUseArea
  , isCJKCompatibilityIdeographs
  , isAlphabeticPresentationForms
  , isArabicPresentationFormsA
  , isVariationSelectors
  , isVerticalForms
  , isCombiningHalfMarks
  , isCJKCompatibilityForms
  , isSmallFormVariants
  , isArabicPresentationFormsB
  , isHalfwidthandFullwidthForms
  , isSpecials
  , isLinearBSyllabary
  , isLinearBIdeograms
  , isAegeanNumbers
  , isAncientGreekNumbers
  , isAncientSymbols
  , isPhaistosDisc
  , isLycian
  , isCarian
  , isCopticEpactNumbers
  , isOldItalic
  , isGothic
  , isOldPermic
  , isUgaritic
  , isOldPersian
  , isDeseret
  , isShavian
  , isOsmanya
  , isElbasan
  , isCaucasianAlbanian
  , isLinearA
  , isCypriotSyllabary
  , isImperialAramaic
  , isPalmyrene
  , isNabataean
  , isPhoenician
  , isLydian
  , isMeroiticHieroglyphs
  , isMeroiticCursive
  , isKharoshthi
  , isOldSouthArabian
  , isOldNorthArabian
  , isManichaean
  , isAvestan
  , isInscriptionalParthian
  , isInscriptionalPahlavi
  , isPsalterPahlavi
  , isOldTurkic
  , isRumiNumeralSymbols
  , isBrahmi
  , isKaithi
  , isSoraSompeng
  , isChakma
  , isMahajani
  , isSharada
  , isSinhalaArchaicNumbers
  , isKhojki
  , isKhudawadi
  , isGrantha
  , isTirhuta
  , isSiddham
  , isModi
  , isTakri
  , isWarangCiti
  , isPauCinHau
  , isCuneiform
  , isCuneiformNumbersandPunctuation
  , isEgyptianHieroglyphs
  , isBamumSupplement
  , isMro
  , isBassaVah
  , isPahawhHmong
  , isMiao
  , isKanaSupplement
  , isDuployan
  , isShorthandFormatControls
  , isByzantineMusicalSymbols
  , isMusicalSymbols
  , isAncientGreekMusicalNotation
  , isTaiXuanJingSymbols
  , isCountingRodNumerals
  , isMathematicalAlphanumericSymbols
  , isMendeKikakui
  , isArabicMathematicalAlphabeticSymbols
  , isMahjongTiles
  , isDominoTiles
  , isPlayingCards
  , isEnclosedAlphanumericSupplement
  , isEnclosedIdeographicSupplement
  , isMiscellaneousSymbolsandPictographs
  , isEmoticons
  , isOrnamentalDingbats
  , isTransportandMapSymbols
  , isAlchemicalSymbols
  , isGeometricShapesExtended
  , isSupplementalArrowsC
  , isCJKUnifiedIdeographsExtensionB
  , isCJKUnifiedIdeographsExtensionC
  , isCJKUnifiedIdeographsExtensionD
  , isCJKCompatibilityIdeographsSupplement
  , isTags
  , isVariationSelectorsSupplement
  , isSupplementaryPrivateUseAreaA
  , isSupplementaryPrivateUseAreaB
  )
where

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

versionUnicode :: String
versionUnicode = "7.0.0"

elemCodeBlock     :: Char -> String -> Bool
elemCodeBlock c b = maybe False (\ (lb, ub) -> c >= lb && c <= ub) $ lookup b codeBlocks

codeBlocks        :: [(String, (Char, Char))]
codeBlocks =
    [ ( "BasicLatin", ( '\x0000', '\x007F') )
    , ( "Latin-1Supplement", ( '\x0080', '\x00FF') )
    , ( "LatinExtended-A", ( '\x0100', '\x017F') )
    , ( "LatinExtended-B", ( '\x0180', '\x024F') )
    , ( "IPAExtensions", ( '\x0250', '\x02AF') )
    , ( "SpacingModifierLetters", ( '\x02B0', '\x02FF') )
    , ( "CombiningDiacriticalMarks", ( '\x0300', '\x036F') )
    , ( "GreekandCoptic", ( '\x0370', '\x03FF') )
    , ( "Cyrillic", ( '\x0400', '\x04FF') )
    , ( "CyrillicSupplement", ( '\x0500', '\x052F') )
    , ( "Armenian", ( '\x0530', '\x058F') )
    , ( "Hebrew", ( '\x0590', '\x05FF') )
    , ( "Arabic", ( '\x0600', '\x06FF') )
    , ( "Syriac", ( '\x0700', '\x074F') )
    , ( "ArabicSupplement", ( '\x0750', '\x077F') )
    , ( "Thaana", ( '\x0780', '\x07BF') )
    , ( "NKo", ( '\x07C0', '\x07FF') )
    , ( "Samaritan", ( '\x0800', '\x083F') )
    , ( "Mandaic", ( '\x0840', '\x085F') )
    , ( "ArabicExtended-A", ( '\x08A0', '\x08FF') )
    , ( "Devanagari", ( '\x0900', '\x097F') )
    , ( "Bengali", ( '\x0980', '\x09FF') )
    , ( "Gurmukhi", ( '\x0A00', '\x0A7F') )
    , ( "Gujarati", ( '\x0A80', '\x0AFF') )
    , ( "Oriya", ( '\x0B00', '\x0B7F') )
    , ( "Tamil", ( '\x0B80', '\x0BFF') )
    , ( "Telugu", ( '\x0C00', '\x0C7F') )
    , ( "Kannada", ( '\x0C80', '\x0CFF') )
    , ( "Malayalam", ( '\x0D00', '\x0D7F') )
    , ( "Sinhala", ( '\x0D80', '\x0DFF') )
    , ( "Thai", ( '\x0E00', '\x0E7F') )
    , ( "Lao", ( '\x0E80', '\x0EFF') )
    , ( "Tibetan", ( '\x0F00', '\x0FFF') )
    , ( "Myanmar", ( '\x1000', '\x109F') )
    , ( "Georgian", ( '\x10A0', '\x10FF') )
    , ( "HangulJamo", ( '\x1100', '\x11FF') )
    , ( "Ethiopic", ( '\x1200', '\x137F') )
    , ( "EthiopicSupplement", ( '\x1380', '\x139F') )
    , ( "Cherokee", ( '\x13A0', '\x13FF') )
    , ( "UnifiedCanadianAboriginalSyllabics", ( '\x1400', '\x167F') )
    , ( "Ogham", ( '\x1680', '\x169F') )
    , ( "Runic", ( '\x16A0', '\x16FF') )
    , ( "Tagalog", ( '\x1700', '\x171F') )
    , ( "Hanunoo", ( '\x1720', '\x173F') )
    , ( "Buhid", ( '\x1740', '\x175F') )
    , ( "Tagbanwa", ( '\x1760', '\x177F') )
    , ( "Khmer", ( '\x1780', '\x17FF') )
    , ( "Mongolian", ( '\x1800', '\x18AF') )
    , ( "UnifiedCanadianAboriginalSyllabicsExtended", ( '\x18B0', '\x18FF') )
    , ( "Limbu", ( '\x1900', '\x194F') )
    , ( "TaiLe", ( '\x1950', '\x197F') )
    , ( "NewTaiLue", ( '\x1980', '\x19DF') )
    , ( "KhmerSymbols", ( '\x19E0', '\x19FF') )
    , ( "Buginese", ( '\x1A00', '\x1A1F') )
    , ( "TaiTham", ( '\x1A20', '\x1AAF') )
    , ( "CombiningDiacriticalMarksExtended", ( '\x1AB0', '\x1AFF') )
    , ( "Balinese", ( '\x1B00', '\x1B7F') )
    , ( "Sundanese", ( '\x1B80', '\x1BBF') )
    , ( "Batak", ( '\x1BC0', '\x1BFF') )
    , ( "Lepcha", ( '\x1C00', '\x1C4F') )
    , ( "OlChiki", ( '\x1C50', '\x1C7F') )
    , ( "SundaneseSupplement", ( '\x1CC0', '\x1CCF') )
    , ( "VedicExtensions", ( '\x1CD0', '\x1CFF') )
    , ( "PhoneticExtensions", ( '\x1D00', '\x1D7F') )
    , ( "PhoneticExtensionsSupplement", ( '\x1D80', '\x1DBF') )
    , ( "CombiningDiacriticalMarksSupplement", ( '\x1DC0', '\x1DFF') )
    , ( "LatinExtendedAdditional", ( '\x1E00', '\x1EFF') )
    , ( "GreekExtended", ( '\x1F00', '\x1FFF') )
    , ( "GeneralPunctuation", ( '\x2000', '\x206F') )
    , ( "SuperscriptsandSubscripts", ( '\x2070', '\x209F') )
    , ( "CurrencySymbols", ( '\x20A0', '\x20CF') )
    , ( "CombiningDiacriticalMarksforSymbols", ( '\x20D0', '\x20FF') )
    , ( "LetterlikeSymbols", ( '\x2100', '\x214F') )
    , ( "NumberForms", ( '\x2150', '\x218F') )
    , ( "Arrows", ( '\x2190', '\x21FF') )
    , ( "MathematicalOperators", ( '\x2200', '\x22FF') )
    , ( "MiscellaneousTechnical", ( '\x2300', '\x23FF') )
    , ( "ControlPictures", ( '\x2400', '\x243F') )
    , ( "OpticalCharacterRecognition", ( '\x2440', '\x245F') )
    , ( "EnclosedAlphanumerics", ( '\x2460', '\x24FF') )
    , ( "BoxDrawing", ( '\x2500', '\x257F') )
    , ( "BlockElements", ( '\x2580', '\x259F') )
    , ( "GeometricShapes", ( '\x25A0', '\x25FF') )
    , ( "MiscellaneousSymbols", ( '\x2600', '\x26FF') )
    , ( "Dingbats", ( '\x2700', '\x27BF') )
    , ( "MiscellaneousMathematicalSymbols-A", ( '\x27C0', '\x27EF') )
    , ( "SupplementalArrows-A", ( '\x27F0', '\x27FF') )
    , ( "BraillePatterns", ( '\x2800', '\x28FF') )
    , ( "SupplementalArrows-B", ( '\x2900', '\x297F') )
    , ( "MiscellaneousMathematicalSymbols-B", ( '\x2980', '\x29FF') )
    , ( "SupplementalMathematicalOperators", ( '\x2A00', '\x2AFF') )
    , ( "MiscellaneousSymbolsandArrows", ( '\x2B00', '\x2BFF') )
    , ( "Glagolitic", ( '\x2C00', '\x2C5F') )
    , ( "LatinExtended-C", ( '\x2C60', '\x2C7F') )
    , ( "Coptic", ( '\x2C80', '\x2CFF') )
    , ( "GeorgianSupplement", ( '\x2D00', '\x2D2F') )
    , ( "Tifinagh", ( '\x2D30', '\x2D7F') )
    , ( "EthiopicExtended", ( '\x2D80', '\x2DDF') )
    , ( "CyrillicExtended-A", ( '\x2DE0', '\x2DFF') )
    , ( "SupplementalPunctuation", ( '\x2E00', '\x2E7F') )
    , ( "CJKRadicalsSupplement", ( '\x2E80', '\x2EFF') )
    , ( "KangxiRadicals", ( '\x2F00', '\x2FDF') )
    , ( "IdeographicDescriptionCharacters", ( '\x2FF0', '\x2FFF') )
    , ( "CJKSymbolsandPunctuation", ( '\x3000', '\x303F') )
    , ( "Hiragana", ( '\x3040', '\x309F') )
    , ( "Katakana", ( '\x30A0', '\x30FF') )
    , ( "Bopomofo", ( '\x3100', '\x312F') )
    , ( "HangulCompatibilityJamo", ( '\x3130', '\x318F') )
    , ( "Kanbun", ( '\x3190', '\x319F') )
    , ( "BopomofoExtended", ( '\x31A0', '\x31BF') )
    , ( "CJKStrokes", ( '\x31C0', '\x31EF') )
    , ( "KatakanaPhoneticExtensions", ( '\x31F0', '\x31FF') )
    , ( "EnclosedCJKLettersandMonths", ( '\x3200', '\x32FF') )
    , ( "CJKCompatibility", ( '\x3300', '\x33FF') )
    , ( "CJKUnifiedIdeographsExtensionA", ( '\x3400', '\x4DBF') )
    , ( "YijingHexagramSymbols", ( '\x4DC0', '\x4DFF') )
    , ( "CJKUnifiedIdeographs", ( '\x4E00', '\x9FFF') )
    , ( "YiSyllables", ( '\xA000', '\xA48F') )
    , ( "YiRadicals", ( '\xA490', '\xA4CF') )
    , ( "Lisu", ( '\xA4D0', '\xA4FF') )
    , ( "Vai", ( '\xA500', '\xA63F') )
    , ( "CyrillicExtended-B", ( '\xA640', '\xA69F') )
    , ( "Bamum", ( '\xA6A0', '\xA6FF') )
    , ( "ModifierToneLetters", ( '\xA700', '\xA71F') )
    , ( "LatinExtended-D", ( '\xA720', '\xA7FF') )
    , ( "SylotiNagri", ( '\xA800', '\xA82F') )
    , ( "CommonIndicNumberForms", ( '\xA830', '\xA83F') )
    , ( "Phags-pa", ( '\xA840', '\xA87F') )
    , ( "Saurashtra", ( '\xA880', '\xA8DF') )
    , ( "DevanagariExtended", ( '\xA8E0', '\xA8FF') )
    , ( "KayahLi", ( '\xA900', '\xA92F') )
    , ( "Rejang", ( '\xA930', '\xA95F') )
    , ( "HangulJamoExtended-A", ( '\xA960', '\xA97F') )
    , ( "Javanese", ( '\xA980', '\xA9DF') )
    , ( "MyanmarExtended-B", ( '\xA9E0', '\xA9FF') )
    , ( "Cham", ( '\xAA00', '\xAA5F') )
    , ( "MyanmarExtended-A", ( '\xAA60', '\xAA7F') )
    , ( "TaiViet", ( '\xAA80', '\xAADF') )
    , ( "MeeteiMayekExtensions", ( '\xAAE0', '\xAAFF') )
    , ( "EthiopicExtended-A", ( '\xAB00', '\xAB2F') )
    , ( "LatinExtended-E", ( '\xAB30', '\xAB6F') )
    , ( "MeeteiMayek", ( '\xABC0', '\xABFF') )
    , ( "HangulSyllables", ( '\xAC00', '\xD7AF') )
    , ( "HangulJamoExtended-B", ( '\xD7B0', '\xD7FF') )
    , ( "HighSurrogates", ( '\xD800', '\xDB7F') )
    , ( "HighPrivateUseSurrogates", ( '\xDB80', '\xDBFF') )
    , ( "LowSurrogates", ( '\xDC00', '\xDFFF') )
    , ( "PrivateUseArea", ( '\xE000', '\xF8FF') )
    , ( "CJKCompatibilityIdeographs", ( '\xF900', '\xFAFF') )
    , ( "AlphabeticPresentationForms", ( '\xFB00', '\xFB4F') )
    , ( "ArabicPresentationForms-A", ( '\xFB50', '\xFDFF') )
    , ( "VariationSelectors", ( '\xFE00', '\xFE0F') )
    , ( "VerticalForms", ( '\xFE10', '\xFE1F') )
    , ( "CombiningHalfMarks", ( '\xFE20', '\xFE2F') )
    , ( "CJKCompatibilityForms", ( '\xFE30', '\xFE4F') )
    , ( "SmallFormVariants", ( '\xFE50', '\xFE6F') )
    , ( "ArabicPresentationForms-B", ( '\xFE70', '\xFEFF') )
    , ( "HalfwidthandFullwidthForms", ( '\xFF00', '\xFFEF') )
    , ( "Specials", ( '\xFFF0', '\xFFFF') )
    , ( "LinearBSyllabary", ( '\x10000', '\x1007F') )
    , ( "LinearBIdeograms", ( '\x10080', '\x100FF') )
    , ( "AegeanNumbers", ( '\x10100', '\x1013F') )
    , ( "AncientGreekNumbers", ( '\x10140', '\x1018F') )
    , ( "AncientSymbols", ( '\x10190', '\x101CF') )
    , ( "PhaistosDisc", ( '\x101D0', '\x101FF') )
    , ( "Lycian", ( '\x10280', '\x1029F') )
    , ( "Carian", ( '\x102A0', '\x102DF') )
    , ( "CopticEpactNumbers", ( '\x102E0', '\x102FF') )
    , ( "OldItalic", ( '\x10300', '\x1032F') )
    , ( "Gothic", ( '\x10330', '\x1034F') )
    , ( "OldPermic", ( '\x10350', '\x1037F') )
    , ( "Ugaritic", ( '\x10380', '\x1039F') )
    , ( "OldPersian", ( '\x103A0', '\x103DF') )
    , ( "Deseret", ( '\x10400', '\x1044F') )
    , ( "Shavian", ( '\x10450', '\x1047F') )
    , ( "Osmanya", ( '\x10480', '\x104AF') )
    , ( "Elbasan", ( '\x10500', '\x1052F') )
    , ( "CaucasianAlbanian", ( '\x10530', '\x1056F') )
    , ( "LinearA", ( '\x10600', '\x1077F') )
    , ( "CypriotSyllabary", ( '\x10800', '\x1083F') )
    , ( "ImperialAramaic", ( '\x10840', '\x1085F') )
    , ( "Palmyrene", ( '\x10860', '\x1087F') )
    , ( "Nabataean", ( '\x10880', '\x108AF') )
    , ( "Phoenician", ( '\x10900', '\x1091F') )
    , ( "Lydian", ( '\x10920', '\x1093F') )
    , ( "MeroiticHieroglyphs", ( '\x10980', '\x1099F') )
    , ( "MeroiticCursive", ( '\x109A0', '\x109FF') )
    , ( "Kharoshthi", ( '\x10A00', '\x10A5F') )
    , ( "OldSouthArabian", ( '\x10A60', '\x10A7F') )
    , ( "OldNorthArabian", ( '\x10A80', '\x10A9F') )
    , ( "Manichaean", ( '\x10AC0', '\x10AFF') )
    , ( "Avestan", ( '\x10B00', '\x10B3F') )
    , ( "InscriptionalParthian", ( '\x10B40', '\x10B5F') )
    , ( "InscriptionalPahlavi", ( '\x10B60', '\x10B7F') )
    , ( "PsalterPahlavi", ( '\x10B80', '\x10BAF') )
    , ( "OldTurkic", ( '\x10C00', '\x10C4F') )
    , ( "RumiNumeralSymbols", ( '\x10E60', '\x10E7F') )
    , ( "Brahmi", ( '\x11000', '\x1107F') )
    , ( "Kaithi", ( '\x11080', '\x110CF') )
    , ( "SoraSompeng", ( '\x110D0', '\x110FF') )
    , ( "Chakma", ( '\x11100', '\x1114F') )
    , ( "Mahajani", ( '\x11150', '\x1117F') )
    , ( "Sharada", ( '\x11180', '\x111DF') )
    , ( "SinhalaArchaicNumbers", ( '\x111E0', '\x111FF') )
    , ( "Khojki", ( '\x11200', '\x1124F') )
    , ( "Khudawadi", ( '\x112B0', '\x112FF') )
    , ( "Grantha", ( '\x11300', '\x1137F') )
    , ( "Tirhuta", ( '\x11480', '\x114DF') )
    , ( "Siddham", ( '\x11580', '\x115FF') )
    , ( "Modi", ( '\x11600', '\x1165F') )
    , ( "Takri", ( '\x11680', '\x116CF') )
    , ( "WarangCiti", ( '\x118A0', '\x118FF') )
    , ( "PauCinHau", ( '\x11AC0', '\x11AFF') )
    , ( "Cuneiform", ( '\x12000', '\x123FF') )
    , ( "CuneiformNumbersandPunctuation", ( '\x12400', '\x1247F') )
    , ( "EgyptianHieroglyphs", ( '\x13000', '\x1342F') )
    , ( "BamumSupplement", ( '\x16800', '\x16A3F') )
    , ( "Mro", ( '\x16A40', '\x16A6F') )
    , ( "BassaVah", ( '\x16AD0', '\x16AFF') )
    , ( "PahawhHmong", ( '\x16B00', '\x16B8F') )
    , ( "Miao", ( '\x16F00', '\x16F9F') )
    , ( "KanaSupplement", ( '\x1B000', '\x1B0FF') )
    , ( "Duployan", ( '\x1BC00', '\x1BC9F') )
    , ( "ShorthandFormatControls", ( '\x1BCA0', '\x1BCAF') )
    , ( "ByzantineMusicalSymbols", ( '\x1D000', '\x1D0FF') )
    , ( "MusicalSymbols", ( '\x1D100', '\x1D1FF') )
    , ( "AncientGreekMusicalNotation", ( '\x1D200', '\x1D24F') )
    , ( "TaiXuanJingSymbols", ( '\x1D300', '\x1D35F') )
    , ( "CountingRodNumerals", ( '\x1D360', '\x1D37F') )
    , ( "MathematicalAlphanumericSymbols", ( '\x1D400', '\x1D7FF') )
    , ( "MendeKikakui", ( '\x1E800', '\x1E8DF') )
    , ( "ArabicMathematicalAlphabeticSymbols", ( '\x1EE00', '\x1EEFF') )
    , ( "MahjongTiles", ( '\x1F000', '\x1F02F') )
    , ( "DominoTiles", ( '\x1F030', '\x1F09F') )
    , ( "PlayingCards", ( '\x1F0A0', '\x1F0FF') )
    , ( "EnclosedAlphanumericSupplement", ( '\x1F100', '\x1F1FF') )
    , ( "EnclosedIdeographicSupplement", ( '\x1F200', '\x1F2FF') )
    , ( "MiscellaneousSymbolsandPictographs", ( '\x1F300', '\x1F5FF') )
    , ( "Emoticons", ( '\x1F600', '\x1F64F') )
    , ( "OrnamentalDingbats", ( '\x1F650', '\x1F67F') )
    , ( "TransportandMapSymbols", ( '\x1F680', '\x1F6FF') )
    , ( "AlchemicalSymbols", ( '\x1F700', '\x1F77F') )
    , ( "GeometricShapesExtended", ( '\x1F780', '\x1F7FF') )
    , ( "SupplementalArrows-C", ( '\x1F800', '\x1F8FF') )
    , ( "CJKUnifiedIdeographsExtensionB", ( '\x20000', '\x2A6DF') )
    , ( "CJKUnifiedIdeographsExtensionC", ( '\x2A700', '\x2B73F') )
    , ( "CJKUnifiedIdeographsExtensionD", ( '\x2B740', '\x2B81F') )
    , ( "CJKCompatibilityIdeographsSupplement", ( '\x2F800', '\x2FA1F') )
    , ( "Tags", ( '\xE0000', '\xE007F') )
    , ( "VariationSelectorsSupplement", ( '\xE0100', '\xE01EF') )
    , ( "SupplementaryPrivateUseArea-A", ( '\xF0000', '\xFFFFF') )
    , ( "SupplementaryPrivateUseArea-B", ( '\x100000', '\x10FFFF') )
    ]

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

isBasicLatin   :: Char -> Bool
isBasicLatin c = c >= '\x0000' && c <= '\x007F'

isLatin1Supplement   :: Char -> Bool
isLatin1Supplement c = c >= '\x0080' && c <= '\x00FF'

isLatinExtendedA   :: Char -> Bool
isLatinExtendedA c = c >= '\x0100' && c <= '\x017F'

isLatinExtendedB   :: Char -> Bool
isLatinExtendedB c = c >= '\x0180' && c <= '\x024F'

isIPAExtensions   :: Char -> Bool
isIPAExtensions c = c >= '\x0250' && c <= '\x02AF'

isSpacingModifierLetters   :: Char -> Bool
isSpacingModifierLetters c = c >= '\x02B0' && c <= '\x02FF'

isCombiningDiacriticalMarks   :: Char -> Bool
isCombiningDiacriticalMarks c = c >= '\x0300' && c <= '\x036F'

isGreekandCoptic   :: Char -> Bool
isGreekandCoptic c = c >= '\x0370' && c <= '\x03FF'

isCyrillic   :: Char -> Bool
isCyrillic c = c >= '\x0400' && c <= '\x04FF'

isCyrillicSupplement   :: Char -> Bool
isCyrillicSupplement c = c >= '\x0500' && c <= '\x052F'

isArmenian   :: Char -> Bool
isArmenian c = c >= '\x0530' && c <= '\x058F'

isHebrew   :: Char -> Bool
isHebrew c = c >= '\x0590' && c <= '\x05FF'

isArabic   :: Char -> Bool
isArabic c = c >= '\x0600' && c <= '\x06FF'

isSyriac   :: Char -> Bool
isSyriac c = c >= '\x0700' && c <= '\x074F'

isArabicSupplement   :: Char -> Bool
isArabicSupplement c = c >= '\x0750' && c <= '\x077F'

isThaana   :: Char -> Bool
isThaana c = c >= '\x0780' && c <= '\x07BF'

isNKo   :: Char -> Bool
isNKo c = c >= '\x07C0' && c <= '\x07FF'

isSamaritan   :: Char -> Bool
isSamaritan c = c >= '\x0800' && c <= '\x083F'

isMandaic   :: Char -> Bool
isMandaic c = c >= '\x0840' && c <= '\x085F'

isArabicExtendedA   :: Char -> Bool
isArabicExtendedA c = c >= '\x08A0' && c <= '\x08FF'

isDevanagari   :: Char -> Bool
isDevanagari c = c >= '\x0900' && c <= '\x097F'

isBengali   :: Char -> Bool
isBengali c = c >= '\x0980' && c <= '\x09FF'

isGurmukhi   :: Char -> Bool
isGurmukhi c = c >= '\x0A00' && c <= '\x0A7F'

isGujarati   :: Char -> Bool
isGujarati c = c >= '\x0A80' && c <= '\x0AFF'

isOriya   :: Char -> Bool
isOriya c = c >= '\x0B00' && c <= '\x0B7F'

isTamil   :: Char -> Bool
isTamil c = c >= '\x0B80' && c <= '\x0BFF'

isTelugu   :: Char -> Bool
isTelugu c = c >= '\x0C00' && c <= '\x0C7F'

isKannada   :: Char -> Bool
isKannada c = c >= '\x0C80' && c <= '\x0CFF'

isMalayalam   :: Char -> Bool
isMalayalam c = c >= '\x0D00' && c <= '\x0D7F'

isSinhala   :: Char -> Bool
isSinhala c = c >= '\x0D80' && c <= '\x0DFF'

isThai   :: Char -> Bool
isThai c = c >= '\x0E00' && c <= '\x0E7F'

isLao   :: Char -> Bool
isLao c = c >= '\x0E80' && c <= '\x0EFF'

isTibetan   :: Char -> Bool
isTibetan c = c >= '\x0F00' && c <= '\x0FFF'

isMyanmar   :: Char -> Bool
isMyanmar c = c >= '\x1000' && c <= '\x109F'

isGeorgian   :: Char -> Bool
isGeorgian c = c >= '\x10A0' && c <= '\x10FF'

isHangulJamo   :: Char -> Bool
isHangulJamo c = c >= '\x1100' && c <= '\x11FF'

isEthiopic   :: Char -> Bool
isEthiopic c = c >= '\x1200' && c <= '\x137F'

isEthiopicSupplement   :: Char -> Bool
isEthiopicSupplement c = c >= '\x1380' && c <= '\x139F'

isCherokee   :: Char -> Bool
isCherokee c = c >= '\x13A0' && c <= '\x13FF'

isUnifiedCanadianAboriginalSyllabics   :: Char -> Bool
isUnifiedCanadianAboriginalSyllabics c = c >= '\x1400' && c <= '\x167F'

isOgham   :: Char -> Bool
isOgham c = c >= '\x1680' && c <= '\x169F'

isRunic   :: Char -> Bool
isRunic c = c >= '\x16A0' && c <= '\x16FF'

isTagalog   :: Char -> Bool
isTagalog c = c >= '\x1700' && c <= '\x171F'

isHanunoo   :: Char -> Bool
isHanunoo c = c >= '\x1720' && c <= '\x173F'

isBuhid   :: Char -> Bool
isBuhid c = c >= '\x1740' && c <= '\x175F'

isTagbanwa   :: Char -> Bool
isTagbanwa c = c >= '\x1760' && c <= '\x177F'

isKhmer   :: Char -> Bool
isKhmer c = c >= '\x1780' && c <= '\x17FF'

isMongolian   :: Char -> Bool
isMongolian c = c >= '\x1800' && c <= '\x18AF'

isUnifiedCanadianAboriginalSyllabicsExtended   :: Char -> Bool
isUnifiedCanadianAboriginalSyllabicsExtended c = c >= '\x18B0' && c <= '\x18FF'

isLimbu   :: Char -> Bool
isLimbu c = c >= '\x1900' && c <= '\x194F'

isTaiLe   :: Char -> Bool
isTaiLe c = c >= '\x1950' && c <= '\x197F'

isNewTaiLue   :: Char -> Bool
isNewTaiLue c = c >= '\x1980' && c <= '\x19DF'

isKhmerSymbols   :: Char -> Bool
isKhmerSymbols c = c >= '\x19E0' && c <= '\x19FF'

isBuginese   :: Char -> Bool
isBuginese c = c >= '\x1A00' && c <= '\x1A1F'

isTaiTham   :: Char -> Bool
isTaiTham c = c >= '\x1A20' && c <= '\x1AAF'

isCombiningDiacriticalMarksExtended   :: Char -> Bool
isCombiningDiacriticalMarksExtended c = c >= '\x1AB0' && c <= '\x1AFF'

isBalinese   :: Char -> Bool
isBalinese c = c >= '\x1B00' && c <= '\x1B7F'

isSundanese   :: Char -> Bool
isSundanese c = c >= '\x1B80' && c <= '\x1BBF'

isBatak   :: Char -> Bool
isBatak c = c >= '\x1BC0' && c <= '\x1BFF'

isLepcha   :: Char -> Bool
isLepcha c = c >= '\x1C00' && c <= '\x1C4F'

isOlChiki   :: Char -> Bool
isOlChiki c = c >= '\x1C50' && c <= '\x1C7F'

isSundaneseSupplement   :: Char -> Bool
isSundaneseSupplement c = c >= '\x1CC0' && c <= '\x1CCF'

isVedicExtensions   :: Char -> Bool
isVedicExtensions c = c >= '\x1CD0' && c <= '\x1CFF'

isPhoneticExtensions   :: Char -> Bool
isPhoneticExtensions c = c >= '\x1D00' && c <= '\x1D7F'

isPhoneticExtensionsSupplement   :: Char -> Bool
isPhoneticExtensionsSupplement c = c >= '\x1D80' && c <= '\x1DBF'

isCombiningDiacriticalMarksSupplement   :: Char -> Bool
isCombiningDiacriticalMarksSupplement c = c >= '\x1DC0' && c <= '\x1DFF'

isLatinExtendedAdditional   :: Char -> Bool
isLatinExtendedAdditional c = c >= '\x1E00' && c <= '\x1EFF'

isGreekExtended   :: Char -> Bool
isGreekExtended c = c >= '\x1F00' && c <= '\x1FFF'

isGeneralPunctuation   :: Char -> Bool
isGeneralPunctuation c = c >= '\x2000' && c <= '\x206F'

isSuperscriptsandSubscripts   :: Char -> Bool
isSuperscriptsandSubscripts c = c >= '\x2070' && c <= '\x209F'

isCurrencySymbols   :: Char -> Bool
isCurrencySymbols c = c >= '\x20A0' && c <= '\x20CF'

isCombiningDiacriticalMarksforSymbols   :: Char -> Bool
isCombiningDiacriticalMarksforSymbols c = c >= '\x20D0' && c <= '\x20FF'

isLetterlikeSymbols   :: Char -> Bool
isLetterlikeSymbols c = c >= '\x2100' && c <= '\x214F'

isNumberForms   :: Char -> Bool
isNumberForms c = c >= '\x2150' && c <= '\x218F'

isArrows   :: Char -> Bool
isArrows c = c >= '\x2190' && c <= '\x21FF'

isMathematicalOperators   :: Char -> Bool
isMathematicalOperators c = c >= '\x2200' && c <= '\x22FF'

isMiscellaneousTechnical   :: Char -> Bool
isMiscellaneousTechnical c = c >= '\x2300' && c <= '\x23FF'

isControlPictures   :: Char -> Bool
isControlPictures c = c >= '\x2400' && c <= '\x243F'

isOpticalCharacterRecognition   :: Char -> Bool
isOpticalCharacterRecognition c = c >= '\x2440' && c <= '\x245F'

isEnclosedAlphanumerics   :: Char -> Bool
isEnclosedAlphanumerics c = c >= '\x2460' && c <= '\x24FF'

isBoxDrawing   :: Char -> Bool
isBoxDrawing c = c >= '\x2500' && c <= '\x257F'

isBlockElements   :: Char -> Bool
isBlockElements c = c >= '\x2580' && c <= '\x259F'

isGeometricShapes   :: Char -> Bool
isGeometricShapes c = c >= '\x25A0' && c <= '\x25FF'

isMiscellaneousSymbols   :: Char -> Bool
isMiscellaneousSymbols c = c >= '\x2600' && c <= '\x26FF'

isDingbats   :: Char -> Bool
isDingbats c = c >= '\x2700' && c <= '\x27BF'

isMiscellaneousMathematicalSymbolsA   :: Char -> Bool
isMiscellaneousMathematicalSymbolsA c = c >= '\x27C0' && c <= '\x27EF'

isSupplementalArrowsA   :: Char -> Bool
isSupplementalArrowsA c = c >= '\x27F0' && c <= '\x27FF'

isBraillePatterns   :: Char -> Bool
isBraillePatterns c = c >= '\x2800' && c <= '\x28FF'

isSupplementalArrowsB   :: Char -> Bool
isSupplementalArrowsB c = c >= '\x2900' && c <= '\x297F'

isMiscellaneousMathematicalSymbolsB   :: Char -> Bool
isMiscellaneousMathematicalSymbolsB c = c >= '\x2980' && c <= '\x29FF'

isSupplementalMathematicalOperators   :: Char -> Bool
isSupplementalMathematicalOperators c = c >= '\x2A00' && c <= '\x2AFF'

isMiscellaneousSymbolsandArrows   :: Char -> Bool
isMiscellaneousSymbolsandArrows c = c >= '\x2B00' && c <= '\x2BFF'

isGlagolitic   :: Char -> Bool
isGlagolitic c = c >= '\x2C00' && c <= '\x2C5F'

isLatinExtendedC   :: Char -> Bool
isLatinExtendedC c = c >= '\x2C60' && c <= '\x2C7F'

isCoptic   :: Char -> Bool
isCoptic c = c >= '\x2C80' && c <= '\x2CFF'

isGeorgianSupplement   :: Char -> Bool
isGeorgianSupplement c = c >= '\x2D00' && c <= '\x2D2F'

isTifinagh   :: Char -> Bool
isTifinagh c = c >= '\x2D30' && c <= '\x2D7F'

isEthiopicExtended   :: Char -> Bool
isEthiopicExtended c = c >= '\x2D80' && c <= '\x2DDF'

isCyrillicExtendedA   :: Char -> Bool
isCyrillicExtendedA c = c >= '\x2DE0' && c <= '\x2DFF'

isSupplementalPunctuation   :: Char -> Bool
isSupplementalPunctuation c = c >= '\x2E00' && c <= '\x2E7F'

isCJKRadicalsSupplement   :: Char -> Bool
isCJKRadicalsSupplement c = c >= '\x2E80' && c <= '\x2EFF'

isKangxiRadicals   :: Char -> Bool
isKangxiRadicals c = c >= '\x2F00' && c <= '\x2FDF'

isIdeographicDescriptionCharacters   :: Char -> Bool
isIdeographicDescriptionCharacters c = c >= '\x2FF0' && c <= '\x2FFF'

isCJKSymbolsandPunctuation   :: Char -> Bool
isCJKSymbolsandPunctuation c = c >= '\x3000' && c <= '\x303F'

isHiragana   :: Char -> Bool
isHiragana c = c >= '\x3040' && c <= '\x309F'

isKatakana   :: Char -> Bool
isKatakana c = c >= '\x30A0' && c <= '\x30FF'

isBopomofo   :: Char -> Bool
isBopomofo c = c >= '\x3100' && c <= '\x312F'

isHangulCompatibilityJamo   :: Char -> Bool
isHangulCompatibilityJamo c = c >= '\x3130' && c <= '\x318F'

isKanbun   :: Char -> Bool
isKanbun c = c >= '\x3190' && c <= '\x319F'

isBopomofoExtended   :: Char -> Bool
isBopomofoExtended c = c >= '\x31A0' && c <= '\x31BF'

isCJKStrokes   :: Char -> Bool
isCJKStrokes c = c >= '\x31C0' && c <= '\x31EF'

isKatakanaPhoneticExtensions   :: Char -> Bool
isKatakanaPhoneticExtensions c = c >= '\x31F0' && c <= '\x31FF'

isEnclosedCJKLettersandMonths   :: Char -> Bool
isEnclosedCJKLettersandMonths c = c >= '\x3200' && c <= '\x32FF'

isCJKCompatibility   :: Char -> Bool
isCJKCompatibility c = c >= '\x3300' && c <= '\x33FF'

isCJKUnifiedIdeographsExtensionA   :: Char -> Bool
isCJKUnifiedIdeographsExtensionA c = c >= '\x3400' && c <= '\x4DBF'

isYijingHexagramSymbols   :: Char -> Bool
isYijingHexagramSymbols c = c >= '\x4DC0' && c <= '\x4DFF'

isCJKUnifiedIdeographs   :: Char -> Bool
isCJKUnifiedIdeographs c = c >= '\x4E00' && c <= '\x9FFF'

isYiSyllables   :: Char -> Bool
isYiSyllables c = c >= '\xA000' && c <= '\xA48F'

isYiRadicals   :: Char -> Bool
isYiRadicals c = c >= '\xA490' && c <= '\xA4CF'

isLisu   :: Char -> Bool
isLisu c = c >= '\xA4D0' && c <= '\xA4FF'

isVai   :: Char -> Bool
isVai c = c >= '\xA500' && c <= '\xA63F'

isCyrillicExtendedB   :: Char -> Bool
isCyrillicExtendedB c = c >= '\xA640' && c <= '\xA69F'

isBamum   :: Char -> Bool
isBamum c = c >= '\xA6A0' && c <= '\xA6FF'

isModifierToneLetters   :: Char -> Bool
isModifierToneLetters c = c >= '\xA700' && c <= '\xA71F'

isLatinExtendedD   :: Char -> Bool
isLatinExtendedD c = c >= '\xA720' && c <= '\xA7FF'

isSylotiNagri   :: Char -> Bool
isSylotiNagri c = c >= '\xA800' && c <= '\xA82F'

isCommonIndicNumberForms   :: Char -> Bool
isCommonIndicNumberForms c = c >= '\xA830' && c <= '\xA83F'

isPhagspa   :: Char -> Bool
isPhagspa c = c >= '\xA840' && c <= '\xA87F'

isSaurashtra   :: Char -> Bool
isSaurashtra c = c >= '\xA880' && c <= '\xA8DF'

isDevanagariExtended   :: Char -> Bool
isDevanagariExtended c = c >= '\xA8E0' && c <= '\xA8FF'

isKayahLi   :: Char -> Bool
isKayahLi c = c >= '\xA900' && c <= '\xA92F'

isRejang   :: Char -> Bool
isRejang c = c >= '\xA930' && c <= '\xA95F'

isHangulJamoExtendedA   :: Char -> Bool
isHangulJamoExtendedA c = c >= '\xA960' && c <= '\xA97F'

isJavanese   :: Char -> Bool
isJavanese c = c >= '\xA980' && c <= '\xA9DF'

isMyanmarExtendedB   :: Char -> Bool
isMyanmarExtendedB c = c >= '\xA9E0' && c <= '\xA9FF'

isCham   :: Char -> Bool
isCham c = c >= '\xAA00' && c <= '\xAA5F'

isMyanmarExtendedA   :: Char -> Bool
isMyanmarExtendedA c = c >= '\xAA60' && c <= '\xAA7F'

isTaiViet   :: Char -> Bool
isTaiViet c = c >= '\xAA80' && c <= '\xAADF'

isMeeteiMayekExtensions   :: Char -> Bool
isMeeteiMayekExtensions c = c >= '\xAAE0' && c <= '\xAAFF'

isEthiopicExtendedA   :: Char -> Bool
isEthiopicExtendedA c = c >= '\xAB00' && c <= '\xAB2F'

isLatinExtendedE   :: Char -> Bool
isLatinExtendedE c = c >= '\xAB30' && c <= '\xAB6F'

isMeeteiMayek   :: Char -> Bool
isMeeteiMayek c = c >= '\xABC0' && c <= '\xABFF'

isHangulSyllables   :: Char -> Bool
isHangulSyllables c = c >= '\xAC00' && c <= '\xD7AF'

isHangulJamoExtendedB   :: Char -> Bool
isHangulJamoExtendedB c = c >= '\xD7B0' && c <= '\xD7FF'

isHighSurrogates   :: Char -> Bool
isHighSurrogates c = c >= '\xD800' && c <= '\xDB7F'

isHighPrivateUseSurrogates   :: Char -> Bool
isHighPrivateUseSurrogates c = c >= '\xDB80' && c <= '\xDBFF'

isLowSurrogates   :: Char -> Bool
isLowSurrogates c = c >= '\xDC00' && c <= '\xDFFF'

isPrivateUseArea   :: Char -> Bool
isPrivateUseArea c = c >= '\xE000' && c <= '\xF8FF'

isCJKCompatibilityIdeographs   :: Char -> Bool
isCJKCompatibilityIdeographs c = c >= '\xF900' && c <= '\xFAFF'

isAlphabeticPresentationForms   :: Char -> Bool
isAlphabeticPresentationForms c = c >= '\xFB00' && c <= '\xFB4F'

isArabicPresentationFormsA   :: Char -> Bool
isArabicPresentationFormsA c = c >= '\xFB50' && c <= '\xFDFF'

isVariationSelectors   :: Char -> Bool
isVariationSelectors c = c >= '\xFE00' && c <= '\xFE0F'

isVerticalForms   :: Char -> Bool
isVerticalForms c = c >= '\xFE10' && c <= '\xFE1F'

isCombiningHalfMarks   :: Char -> Bool
isCombiningHalfMarks c = c >= '\xFE20' && c <= '\xFE2F'

isCJKCompatibilityForms   :: Char -> Bool
isCJKCompatibilityForms c = c >= '\xFE30' && c <= '\xFE4F'

isSmallFormVariants   :: Char -> Bool
isSmallFormVariants c = c >= '\xFE50' && c <= '\xFE6F'

isArabicPresentationFormsB   :: Char -> Bool
isArabicPresentationFormsB c = c >= '\xFE70' && c <= '\xFEFF'

isHalfwidthandFullwidthForms   :: Char -> Bool
isHalfwidthandFullwidthForms c = c >= '\xFF00' && c <= '\xFFEF'

isSpecials   :: Char -> Bool
isSpecials c = c >= '\xFFF0' && c <= '\xFFFF'

isLinearBSyllabary   :: Char -> Bool
isLinearBSyllabary c = c >= '\x10000' && c <= '\x1007F'

isLinearBIdeograms   :: Char -> Bool
isLinearBIdeograms c = c >= '\x10080' && c <= '\x100FF'

isAegeanNumbers   :: Char -> Bool
isAegeanNumbers c = c >= '\x10100' && c <= '\x1013F'

isAncientGreekNumbers   :: Char -> Bool
isAncientGreekNumbers c = c >= '\x10140' && c <= '\x1018F'

isAncientSymbols   :: Char -> Bool
isAncientSymbols c = c >= '\x10190' && c <= '\x101CF'

isPhaistosDisc   :: Char -> Bool
isPhaistosDisc c = c >= '\x101D0' && c <= '\x101FF'

isLycian   :: Char -> Bool
isLycian c = c >= '\x10280' && c <= '\x1029F'

isCarian   :: Char -> Bool
isCarian c = c >= '\x102A0' && c <= '\x102DF'

isCopticEpactNumbers   :: Char -> Bool
isCopticEpactNumbers c = c >= '\x102E0' && c <= '\x102FF'

isOldItalic   :: Char -> Bool
isOldItalic c = c >= '\x10300' && c <= '\x1032F'

isGothic   :: Char -> Bool
isGothic c = c >= '\x10330' && c <= '\x1034F'

isOldPermic   :: Char -> Bool
isOldPermic c = c >= '\x10350' && c <= '\x1037F'

isUgaritic   :: Char -> Bool
isUgaritic c = c >= '\x10380' && c <= '\x1039F'

isOldPersian   :: Char -> Bool
isOldPersian c = c >= '\x103A0' && c <= '\x103DF'

isDeseret   :: Char -> Bool
isDeseret c = c >= '\x10400' && c <= '\x1044F'

isShavian   :: Char -> Bool
isShavian c = c >= '\x10450' && c <= '\x1047F'

isOsmanya   :: Char -> Bool
isOsmanya c = c >= '\x10480' && c <= '\x104AF'

isElbasan   :: Char -> Bool
isElbasan c = c >= '\x10500' && c <= '\x1052F'

isCaucasianAlbanian   :: Char -> Bool
isCaucasianAlbanian c = c >= '\x10530' && c <= '\x1056F'

isLinearA   :: Char -> Bool
isLinearA c = c >= '\x10600' && c <= '\x1077F'

isCypriotSyllabary   :: Char -> Bool
isCypriotSyllabary c = c >= '\x10800' && c <= '\x1083F'

isImperialAramaic   :: Char -> Bool
isImperialAramaic c = c >= '\x10840' && c <= '\x1085F'

isPalmyrene   :: Char -> Bool
isPalmyrene c = c >= '\x10860' && c <= '\x1087F'

isNabataean   :: Char -> Bool
isNabataean c = c >= '\x10880' && c <= '\x108AF'

isPhoenician   :: Char -> Bool
isPhoenician c = c >= '\x10900' && c <= '\x1091F'

isLydian   :: Char -> Bool
isLydian c = c >= '\x10920' && c <= '\x1093F'

isMeroiticHieroglyphs   :: Char -> Bool
isMeroiticHieroglyphs c = c >= '\x10980' && c <= '\x1099F'

isMeroiticCursive   :: Char -> Bool
isMeroiticCursive c = c >= '\x109A0' && c <= '\x109FF'

isKharoshthi   :: Char -> Bool
isKharoshthi c = c >= '\x10A00' && c <= '\x10A5F'

isOldSouthArabian   :: Char -> Bool
isOldSouthArabian c = c >= '\x10A60' && c <= '\x10A7F'

isOldNorthArabian   :: Char -> Bool
isOldNorthArabian c = c >= '\x10A80' && c <= '\x10A9F'

isManichaean   :: Char -> Bool
isManichaean c = c >= '\x10AC0' && c <= '\x10AFF'

isAvestan   :: Char -> Bool
isAvestan c = c >= '\x10B00' && c <= '\x10B3F'

isInscriptionalParthian   :: Char -> Bool
isInscriptionalParthian c = c >= '\x10B40' && c <= '\x10B5F'

isInscriptionalPahlavi   :: Char -> Bool
isInscriptionalPahlavi c = c >= '\x10B60' && c <= '\x10B7F'

isPsalterPahlavi   :: Char -> Bool
isPsalterPahlavi c = c >= '\x10B80' && c <= '\x10BAF'

isOldTurkic   :: Char -> Bool
isOldTurkic c = c >= '\x10C00' && c <= '\x10C4F'

isRumiNumeralSymbols   :: Char -> Bool
isRumiNumeralSymbols c = c >= '\x10E60' && c <= '\x10E7F'

isBrahmi   :: Char -> Bool
isBrahmi c = c >= '\x11000' && c <= '\x1107F'

isKaithi   :: Char -> Bool
isKaithi c = c >= '\x11080' && c <= '\x110CF'

isSoraSompeng   :: Char -> Bool
isSoraSompeng c = c >= '\x110D0' && c <= '\x110FF'

isChakma   :: Char -> Bool
isChakma c = c >= '\x11100' && c <= '\x1114F'

isMahajani   :: Char -> Bool
isMahajani c = c >= '\x11150' && c <= '\x1117F'

isSharada   :: Char -> Bool
isSharada c = c >= '\x11180' && c <= '\x111DF'

isSinhalaArchaicNumbers   :: Char -> Bool
isSinhalaArchaicNumbers c = c >= '\x111E0' && c <= '\x111FF'

isKhojki   :: Char -> Bool
isKhojki c = c >= '\x11200' && c <= '\x1124F'

isKhudawadi   :: Char -> Bool
isKhudawadi c = c >= '\x112B0' && c <= '\x112FF'

isGrantha   :: Char -> Bool
isGrantha c = c >= '\x11300' && c <= '\x1137F'

isTirhuta   :: Char -> Bool
isTirhuta c = c >= '\x11480' && c <= '\x114DF'

isSiddham   :: Char -> Bool
isSiddham c = c >= '\x11580' && c <= '\x115FF'

isModi   :: Char -> Bool
isModi c = c >= '\x11600' && c <= '\x1165F'

isTakri   :: Char -> Bool
isTakri c = c >= '\x11680' && c <= '\x116CF'

isWarangCiti   :: Char -> Bool
isWarangCiti c = c >= '\x118A0' && c <= '\x118FF'

isPauCinHau   :: Char -> Bool
isPauCinHau c = c >= '\x11AC0' && c <= '\x11AFF'

isCuneiform   :: Char -> Bool
isCuneiform c = c >= '\x12000' && c <= '\x123FF'

isCuneiformNumbersandPunctuation   :: Char -> Bool
isCuneiformNumbersandPunctuation c = c >= '\x12400' && c <= '\x1247F'

isEgyptianHieroglyphs   :: Char -> Bool
isEgyptianHieroglyphs c = c >= '\x13000' && c <= '\x1342F'

isBamumSupplement   :: Char -> Bool
isBamumSupplement c = c >= '\x16800' && c <= '\x16A3F'

isMro   :: Char -> Bool
isMro c = c >= '\x16A40' && c <= '\x16A6F'

isBassaVah   :: Char -> Bool
isBassaVah c = c >= '\x16AD0' && c <= '\x16AFF'

isPahawhHmong   :: Char -> Bool
isPahawhHmong c = c >= '\x16B00' && c <= '\x16B8F'

isMiao   :: Char -> Bool
isMiao c = c >= '\x16F00' && c <= '\x16F9F'

isKanaSupplement   :: Char -> Bool
isKanaSupplement c = c >= '\x1B000' && c <= '\x1B0FF'

isDuployan   :: Char -> Bool
isDuployan c = c >= '\x1BC00' && c <= '\x1BC9F'

isShorthandFormatControls   :: Char -> Bool
isShorthandFormatControls c = c >= '\x1BCA0' && c <= '\x1BCAF'

isByzantineMusicalSymbols   :: Char -> Bool
isByzantineMusicalSymbols c = c >= '\x1D000' && c <= '\x1D0FF'

isMusicalSymbols   :: Char -> Bool
isMusicalSymbols c = c >= '\x1D100' && c <= '\x1D1FF'

isAncientGreekMusicalNotation   :: Char -> Bool
isAncientGreekMusicalNotation c = c >= '\x1D200' && c <= '\x1D24F'

isTaiXuanJingSymbols   :: Char -> Bool
isTaiXuanJingSymbols c = c >= '\x1D300' && c <= '\x1D35F'

isCountingRodNumerals   :: Char -> Bool
isCountingRodNumerals c = c >= '\x1D360' && c <= '\x1D37F'

isMathematicalAlphanumericSymbols   :: Char -> Bool
isMathematicalAlphanumericSymbols c = c >= '\x1D400' && c <= '\x1D7FF'

isMendeKikakui   :: Char -> Bool
isMendeKikakui c = c >= '\x1E800' && c <= '\x1E8DF'

isArabicMathematicalAlphabeticSymbols   :: Char -> Bool
isArabicMathematicalAlphabeticSymbols c = c >= '\x1EE00' && c <= '\x1EEFF'

isMahjongTiles   :: Char -> Bool
isMahjongTiles c = c >= '\x1F000' && c <= '\x1F02F'

isDominoTiles   :: Char -> Bool
isDominoTiles c = c >= '\x1F030' && c <= '\x1F09F'

isPlayingCards   :: Char -> Bool
isPlayingCards c = c >= '\x1F0A0' && c <= '\x1F0FF'

isEnclosedAlphanumericSupplement   :: Char -> Bool
isEnclosedAlphanumericSupplement c = c >= '\x1F100' && c <= '\x1F1FF'

isEnclosedIdeographicSupplement   :: Char -> Bool
isEnclosedIdeographicSupplement c = c >= '\x1F200' && c <= '\x1F2FF'

isMiscellaneousSymbolsandPictographs   :: Char -> Bool
isMiscellaneousSymbolsandPictographs c = c >= '\x1F300' && c <= '\x1F5FF'

isEmoticons   :: Char -> Bool
isEmoticons c = c >= '\x1F600' && c <= '\x1F64F'

isOrnamentalDingbats   :: Char -> Bool
isOrnamentalDingbats c = c >= '\x1F650' && c <= '\x1F67F'

isTransportandMapSymbols   :: Char -> Bool
isTransportandMapSymbols c = c >= '\x1F680' && c <= '\x1F6FF'

isAlchemicalSymbols   :: Char -> Bool
isAlchemicalSymbols c = c >= '\x1F700' && c <= '\x1F77F'

isGeometricShapesExtended   :: Char -> Bool
isGeometricShapesExtended c = c >= '\x1F780' && c <= '\x1F7FF'

isSupplementalArrowsC   :: Char -> Bool
isSupplementalArrowsC c = c >= '\x1F800' && c <= '\x1F8FF'

isCJKUnifiedIdeographsExtensionB   :: Char -> Bool
isCJKUnifiedIdeographsExtensionB c = c >= '\x20000' && c <= '\x2A6DF'

isCJKUnifiedIdeographsExtensionC   :: Char -> Bool
isCJKUnifiedIdeographsExtensionC c = c >= '\x2A700' && c <= '\x2B73F'

isCJKUnifiedIdeographsExtensionD   :: Char -> Bool
isCJKUnifiedIdeographsExtensionD c = c >= '\x2B740' && c <= '\x2B81F'

isCJKCompatibilityIdeographsSupplement   :: Char -> Bool
isCJKCompatibilityIdeographsSupplement c = c >= '\x2F800' && c <= '\x2FA1F'

isTags   :: Char -> Bool
isTags c = c >= '\xE0000' && c <= '\xE007F'

isVariationSelectorsSupplement   :: Char -> Bool
isVariationSelectorsSupplement c = c >= '\xE0100' && c <= '\xE01EF'

isSupplementaryPrivateUseAreaA   :: Char -> Bool
isSupplementaryPrivateUseAreaA c = c >= '\xF0000' && c <= '\xFFFFF'

isSupplementaryPrivateUseAreaB   :: Char -> Bool
isSupplementaryPrivateUseAreaB c = c >= '\x100000' && c <= '\x10FFFF'

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