Upper and Lower Case Mapping for Unicode

Share your advanced PureBasic knowledge/code with the community.
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Upper and Lower Case Mapping for Unicode

Post by mk-soft »

Upper and lower case-mapping for unicode

Link to https://home.unicode.org/

At time only simple case mapping

Update v1.03
- Added FindStringW(...)

Update v1.04
- Added ULCaseW(...)

Update v1.05
- Bugfix: NoCase <>CaseSensitive

Update v1.06
- Bugfix Data Table

Update v1.07
- Change table format
- New unicode version v15.0 (lastest)

Part one ...

Code: Select all

;-Top

; Unicode LCaseW and UCaseW function by mk-soft
; From 27.05.2017, Update 09.10.2022
; Version v1.07

DeclareModule CaseUnicode
  
  Declare.s UCaseW(String.s)
  Declare.s LCaseW(String.s)
  Declare.s ULCaseW(String.s)
  Declare FindStringW(String.s, StringToFind.s, StartPosition=1, Mode=#PB_String_NoCase)
  
EndDeclareModule

Module CaseUnicode
  
  EnableExplicit
  
  Structure udtUnicode
    upper.c
    lower.c
    title.c
  EndStructure
  
  Structure ArrayOfChar
    c.c[0]
  EndStructure
  
  Global Dim CaseUnicode.udtUnicode($FFFF)
  
  
  ; ---------------------------------------------------------------------------
  
  Procedure Init()
    Protected index, code.c, upperChar.c, lowerChar.c, titleChar.c
    
    ; Fill default data
    For index = 0 To $FFFF
      CaseUnicode(index)\upper = index
      CaseUnicode(index)\lower = index
      CaseUnicode(index)\title = index
    Next
    
    ; Read case folding data
    Restore CaseFolding
    Repeat
      Read.c code
      If Not code
        Break
      EndIf
      Read.c upperChar
      Read.c lowerChar
      Read.c titleChar
      CaseUnicode(code)\upper = upperChar
      CaseUnicode(code)\lower = lowerChar
      CaseUnicode(code)\title = titleChar
    ForEver
  EndProcedure : Init()
  
  ; ---------------------------------------------------------------------------
  
  Procedure.s UCaseW(String.s)
    Protected result.s, len, index, cnt, *source.ArrayOfChar, *dest.ArrayOfChar
    len = Len(String)
    result = Space(len)
    *source = @String
    *dest = @result
    cnt = len - 1
    For index = 0 To cnt
      *dest\c[index] = CaseUnicode(*source\c[index])\upper
    Next
    ProcedureReturn result
  EndProcedure
  
  ; ---------------------------------------------------------------------------
  
  Procedure.s LCaseW(String.s)
    Protected result.s, len, index, cnt, *source.ArrayOfChar, *dest.ArrayOfChar
    len = Len(String)
    result = Space(len)
    *source = @String
    *dest = @result
    cnt = len - 1
    For index = 0 To cnt
      *dest\c[index] = CaseUnicode(*source\c[index])\lower
    Next
    ProcedureReturn result
  EndProcedure
  
  ; ---------------------------------------------------------------------------
  
  Procedure.s TCaseW(String.s)
    Protected result.s, len, index, cnt, *source.ArrayOfChar, *dest.ArrayOfChar
    len = Len(String)
    result = Space(len)
    *source = @String
    *dest = @result
    cnt = len - 1
    For index = 0 To cnt
      *dest\c[index] = CaseUnicode(*source\c[index])\title
    Next
    ProcedureReturn result
  EndProcedure
  
  ; ---------------------------------------------------------------------------
  
  Procedure.s ULCaseW(String.s)
    Protected result.s, len, index, cnt, up, *source.ArrayOfChar, *dest.ArrayOfChar
    len = Len(String)
    result = Space(len)
    up = #True
    *source = @String
    *dest = @result
    cnt = len - 1
    For index = 0 To cnt
      Select *source\c[index]
        Case ' ', '.', #CR, #LF, #TAB, '!', '?', ',', ';'
          up = #True
          *dest\c[index] = *source\c[index]
        Default
          If up
            *dest\c[index] = CaseUnicode(*source\c[index])\upper
            up = #False
          Else
            *dest\c[index] = CaseUnicode(*source\c[index])\lower
          EndIf
      EndSelect            
    Next
    ProcedureReturn result
  EndProcedure
  
  ; ---------------------------------------------------------------------------
  
  Procedure FindStringW(String.s, StringToFind.s, StartPosition=1, Mode=#PB_String_NoCase)
    Protected r1, StringW.s, StringToFindW.s
    If Mode = #PB_String_NoCase
      StringW = LCaseW(String)
      StringToFindW = LCaseW(StringToFind)
      r1 = FindString(StringW, StringToFindW, StartPosition, #PB_String_CaseSensitive)
    Else
      r1 = FindString(String, StringToFind, StartPosition, #PB_String_CaseSensitive)
    EndIf  
    ProcedureReturn r1
  EndProcedure
  
  ; ---------------------------------------------------------------------------
  
    DataSection
    ; Code, Upper, Lower, Title
    CaseFolding:
    Data.c $0041,$0041,$0061,$0041
    Data.c $0042,$0042,$0062,$0042
    Data.c $0043,$0043,$0063,$0043
    Data.c $0044,$0044,$0064,$0044
    Data.c $0045,$0045,$0065,$0045
    Data.c $0046,$0046,$0066,$0046
    Data.c $0047,$0047,$0067,$0047
    Data.c $0048,$0048,$0068,$0048
    Data.c $0049,$0049,$0069,$0049
    Data.c $004A,$004A,$006A,$004A
    Data.c $004B,$004B,$006B,$004B
    Data.c $004C,$004C,$006C,$004C
    Data.c $004D,$004D,$006D,$004D
    Data.c $004E,$004E,$006E,$004E
    Data.c $004F,$004F,$006F,$004F
    Data.c $0050,$0050,$0070,$0050
    Data.c $0051,$0051,$0071,$0051
    Data.c $0052,$0052,$0072,$0052
    Data.c $0053,$0053,$0073,$0053
    Data.c $0054,$0054,$0074,$0054
    Data.c $0055,$0055,$0075,$0055
    Data.c $0056,$0056,$0076,$0056
    Data.c $0057,$0057,$0077,$0057
    Data.c $0058,$0058,$0078,$0058
    Data.c $0059,$0059,$0079,$0059
    Data.c $005A,$005A,$007A,$005A
    Data.c $0061,$0041,$0061,$0041
    Data.c $0062,$0042,$0062,$0042
    Data.c $0063,$0043,$0063,$0043
    Data.c $0064,$0044,$0064,$0044
    Data.c $0065,$0045,$0065,$0045
    Data.c $0066,$0046,$0066,$0046
    Data.c $0067,$0047,$0067,$0047
    Data.c $0068,$0048,$0068,$0048
    Data.c $0069,$0049,$0069,$0049
    Data.c $006A,$004A,$006A,$004A
    Data.c $006B,$004B,$006B,$004B
    Data.c $006C,$004C,$006C,$004C
    Data.c $006D,$004D,$006D,$004D
    Data.c $006E,$004E,$006E,$004E
    Data.c $006F,$004F,$006F,$004F
    Data.c $0070,$0050,$0070,$0050
    Data.c $0071,$0051,$0071,$0051
    Data.c $0072,$0052,$0072,$0052
    Data.c $0073,$0053,$0073,$0053
    Data.c $0074,$0054,$0074,$0054
    Data.c $0075,$0055,$0075,$0055
    Data.c $0076,$0056,$0076,$0056
    Data.c $0077,$0057,$0077,$0057
    Data.c $0078,$0058,$0078,$0058
    Data.c $0079,$0059,$0079,$0059
    Data.c $007A,$005A,$007A,$005A
    Data.c $00B5,$039C,$00B5,$039C
    Data.c $00C0,$00C0,$00E0,$00C0
    Data.c $00C1,$00C1,$00E1,$00C1
    Data.c $00C2,$00C2,$00E2,$00C2
    Data.c $00C3,$00C3,$00E3,$00C3
    Data.c $00C4,$00C4,$00E4,$00C4
    Data.c $00C5,$00C5,$00E5,$00C5
    Data.c $00C6,$00C6,$00E6,$00C6
    Data.c $00C7,$00C7,$00E7,$00C7
    Data.c $00C8,$00C8,$00E8,$00C8
    Data.c $00C9,$00C9,$00E9,$00C9
    Data.c $00CA,$00CA,$00EA,$00CA
    Data.c $00CB,$00CB,$00EB,$00CB
    Data.c $00CC,$00CC,$00EC,$00CC
    Data.c $00CD,$00CD,$00ED,$00CD
    Data.c $00CE,$00CE,$00EE,$00CE
    Data.c $00CF,$00CF,$00EF,$00CF
    Data.c $00D0,$00D0,$00F0,$00D0
    Data.c $00D1,$00D1,$00F1,$00D1
    Data.c $00D2,$00D2,$00F2,$00D2
    Data.c $00D3,$00D3,$00F3,$00D3
    Data.c $00D4,$00D4,$00F4,$00D4
    Data.c $00D5,$00D5,$00F5,$00D5
    Data.c $00D6,$00D6,$00F6,$00D6
    Data.c $00D8,$00D8,$00F8,$00D8
    Data.c $00D9,$00D9,$00F9,$00D9
    Data.c $00DA,$00DA,$00FA,$00DA
    Data.c $00DB,$00DB,$00FB,$00DB
    Data.c $00DC,$00DC,$00FC,$00DC
    Data.c $00DD,$00DD,$00FD,$00DD
    Data.c $00DE,$00DE,$00FE,$00DE
    Data.c $00E0,$00C0,$00E0,$00C0
    Data.c $00E1,$00C1,$00E1,$00C1
    Data.c $00E2,$00C2,$00E2,$00C2
    Data.c $00E3,$00C3,$00E3,$00C3
    Data.c $00E4,$00C4,$00E4,$00C4
    Data.c $00E5,$00C5,$00E5,$00C5
    Data.c $00E6,$00C6,$00E6,$00C6
    Data.c $00E7,$00C7,$00E7,$00C7
    Data.c $00E8,$00C8,$00E8,$00C8
    Data.c $00E9,$00C9,$00E9,$00C9
    Data.c $00EA,$00CA,$00EA,$00CA
    Data.c $00EB,$00CB,$00EB,$00CB
    Data.c $00EC,$00CC,$00EC,$00CC
    Data.c $00ED,$00CD,$00ED,$00CD
    Data.c $00EE,$00CE,$00EE,$00CE
    Data.c $00EF,$00CF,$00EF,$00CF
    Data.c $00F0,$00D0,$00F0,$00D0
    Data.c $00F1,$00D1,$00F1,$00D1
    Data.c $00F2,$00D2,$00F2,$00D2
    Data.c $00F3,$00D3,$00F3,$00D3
    Data.c $00F4,$00D4,$00F4,$00D4
    Data.c $00F5,$00D5,$00F5,$00D5
    Data.c $00F6,$00D6,$00F6,$00D6
    Data.c $00F8,$00D8,$00F8,$00D8
    Data.c $00F9,$00D9,$00F9,$00D9
    Data.c $00FA,$00DA,$00FA,$00DA
    Data.c $00FB,$00DB,$00FB,$00DB
    Data.c $00FC,$00DC,$00FC,$00DC
    Data.c $00FD,$00DD,$00FD,$00DD
    Data.c $00FE,$00DE,$00FE,$00DE
    Data.c $00FF,$0178,$00FF,$0178
    Data.c $0100,$0100,$0101,$0100
    Data.c $0101,$0100,$0101,$0100
    Data.c $0102,$0102,$0103,$0102
    Data.c $0103,$0102,$0103,$0102
    Data.c $0104,$0104,$0105,$0104
    Data.c $0105,$0104,$0105,$0104
    Data.c $0106,$0106,$0107,$0106
    Data.c $0107,$0106,$0107,$0106
    Data.c $0108,$0108,$0109,$0108
    Data.c $0109,$0108,$0109,$0108
    Data.c $010A,$010A,$010B,$010A
    Data.c $010B,$010A,$010B,$010A
    Data.c $010C,$010C,$010D,$010C
    Data.c $010D,$010C,$010D,$010C
    Data.c $010E,$010E,$010F,$010E
    Data.c $010F,$010E,$010F,$010E
    Data.c $0110,$0110,$0111,$0110
    Data.c $0111,$0110,$0111,$0110
    Data.c $0112,$0112,$0113,$0112
    Data.c $0113,$0112,$0113,$0112
    Data.c $0114,$0114,$0115,$0114
    Data.c $0115,$0114,$0115,$0114
    Data.c $0116,$0116,$0117,$0116
    Data.c $0117,$0116,$0117,$0116
    Data.c $0118,$0118,$0119,$0118
    Data.c $0119,$0118,$0119,$0118
    Data.c $011A,$011A,$011B,$011A
    Data.c $011B,$011A,$011B,$011A
    Data.c $011C,$011C,$011D,$011C
    Data.c $011D,$011C,$011D,$011C
    Data.c $011E,$011E,$011F,$011E
    Data.c $011F,$011E,$011F,$011E
    Data.c $0120,$0120,$0121,$0120
    Data.c $0121,$0120,$0121,$0120
    Data.c $0122,$0122,$0123,$0122
    Data.c $0123,$0122,$0123,$0122
    Data.c $0124,$0124,$0125,$0124
    Data.c $0125,$0124,$0125,$0124
    Data.c $0126,$0126,$0127,$0126
    Data.c $0127,$0126,$0127,$0126
    Data.c $0128,$0128,$0129,$0128
    Data.c $0129,$0128,$0129,$0128
    Data.c $012A,$012A,$012B,$012A
    Data.c $012B,$012A,$012B,$012A
    Data.c $012C,$012C,$012D,$012C
    Data.c $012D,$012C,$012D,$012C
    Data.c $012E,$012E,$012F,$012E
    Data.c $012F,$012E,$012F,$012E
    Data.c $0130,$0130,$0069,$0130
    Data.c $0131,$0049,$0131,$0049
    Data.c $0132,$0132,$0133,$0132
    Data.c $0133,$0132,$0133,$0132
    Data.c $0134,$0134,$0135,$0134
    Data.c $0135,$0134,$0135,$0134
    Data.c $0136,$0136,$0137,$0136
    Data.c $0137,$0136,$0137,$0136
    Data.c $0139,$0139,$013A,$0139
    Data.c $013A,$0139,$013A,$0139
    Data.c $013B,$013B,$013C,$013B
    Data.c $013C,$013B,$013C,$013B
    Data.c $013D,$013D,$013E,$013D
    Data.c $013E,$013D,$013E,$013D
    Data.c $013F,$013F,$0140,$013F
    Data.c $0140,$013F,$0140,$013F
    Data.c $0141,$0141,$0142,$0141
    Data.c $0142,$0141,$0142,$0141
    Data.c $0143,$0143,$0144,$0143
    Data.c $0144,$0143,$0144,$0143
    Data.c $0145,$0145,$0146,$0145
    Data.c $0146,$0145,$0146,$0145
    Data.c $0147,$0147,$0148,$0147
    Data.c $0148,$0147,$0148,$0147
    Data.c $014A,$014A,$014B,$014A
    Data.c $014B,$014A,$014B,$014A
    Data.c $014C,$014C,$014D,$014C
    Data.c $014D,$014C,$014D,$014C
    Data.c $014E,$014E,$014F,$014E
    Data.c $014F,$014E,$014F,$014E
    Data.c $0150,$0150,$0151,$0150
    Data.c $0151,$0150,$0151,$0150
    Data.c $0152,$0152,$0153,$0152
    Data.c $0153,$0152,$0153,$0152
    Data.c $0154,$0154,$0155,$0154
    Data.c $0155,$0154,$0155,$0154
    Data.c $0156,$0156,$0157,$0156
    Data.c $0157,$0156,$0157,$0156
    Data.c $0158,$0158,$0159,$0158
    Data.c $0159,$0158,$0159,$0158
    Data.c $015A,$015A,$015B,$015A
    Data.c $015B,$015A,$015B,$015A
    Data.c $015C,$015C,$015D,$015C
    Data.c $015D,$015C,$015D,$015C
    Data.c $015E,$015E,$015F,$015E
    Data.c $015F,$015E,$015F,$015E
    Data.c $0160,$0160,$0161,$0160
    Data.c $0161,$0160,$0161,$0160
    Data.c $0162,$0162,$0163,$0162
    Data.c $0163,$0162,$0163,$0162
    Data.c $0164,$0164,$0165,$0164
    Data.c $0165,$0164,$0165,$0164
    Data.c $0166,$0166,$0167,$0166
    Data.c $0167,$0166,$0167,$0166
    Data.c $0168,$0168,$0169,$0168
    Data.c $0169,$0168,$0169,$0168
    Data.c $016A,$016A,$016B,$016A
    Data.c $016B,$016A,$016B,$016A
    Data.c $016C,$016C,$016D,$016C
    Data.c $016D,$016C,$016D,$016C
    Data.c $016E,$016E,$016F,$016E
    Data.c $016F,$016E,$016F,$016E
    Data.c $0170,$0170,$0171,$0170
    Data.c $0171,$0170,$0171,$0170
    Data.c $0172,$0172,$0173,$0172
    Data.c $0173,$0172,$0173,$0172
    Data.c $0174,$0174,$0175,$0174
    Data.c $0175,$0174,$0175,$0174
    Data.c $0176,$0176,$0177,$0176
    Data.c $0177,$0176,$0177,$0176
    Data.c $0178,$0178,$00FF,$0178
    Data.c $0179,$0179,$017A,$0179
    Data.c $017A,$0179,$017A,$0179
    Data.c $017B,$017B,$017C,$017B
    Data.c $017C,$017B,$017C,$017B
    Data.c $017D,$017D,$017E,$017D
    Data.c $017E,$017D,$017E,$017D
    Data.c $017F,$0053,$017F,$0053
    Data.c $0180,$0243,$0180,$0243
    Data.c $0181,$0181,$0253,$0181
    Data.c $0182,$0182,$0183,$0182
    Data.c $0183,$0182,$0183,$0182
    Data.c $0184,$0184,$0185,$0184
    Data.c $0185,$0184,$0185,$0184
    Data.c $0186,$0186,$0254,$0186
    Data.c $0187,$0187,$0188,$0187
    Data.c $0188,$0187,$0188,$0187
    Data.c $0189,$0189,$0256,$0189
    Data.c $018A,$018A,$0257,$018A
    Data.c $018B,$018B,$018C,$018B
    Data.c $018C,$018B,$018C,$018B
    Data.c $018E,$018E,$01DD,$018E
    Data.c $018F,$018F,$0259,$018F
    Data.c $0190,$0190,$025B,$0190
    Data.c $0191,$0191,$0192,$0191
    Data.c $0192,$0191,$0192,$0191
    Data.c $0193,$0193,$0260,$0193
    Data.c $0194,$0194,$0263,$0194
    Data.c $0195,$01F6,$0195,$01F6
    Data.c $0196,$0196,$0269,$0196
    Data.c $0197,$0197,$0268,$0197
    Data.c $0198,$0198,$0199,$0198
    Data.c $0199,$0198,$0199,$0198
    Data.c $019A,$023D,$019A,$023D
    Data.c $019C,$019C,$026F,$019C
    Data.c $019D,$019D,$0272,$019D
    Data.c $019E,$0220,$019E,$0220
    Data.c $019F,$019F,$0275,$019F
    Data.c $01A0,$01A0,$01A1,$01A0
    Data.c $01A1,$01A0,$01A1,$01A0
    Data.c $01A2,$01A2,$01A3,$01A2
    Data.c $01A3,$01A2,$01A3,$01A2
    Data.c $01A4,$01A4,$01A5,$01A4
    Data.c $01A5,$01A4,$01A5,$01A4
    Data.c $01A6,$01A6,$0280,$01A6
    Data.c $01A7,$01A7,$01A8,$01A7
    Data.c $01A8,$01A7,$01A8,$01A7
    Data.c $01A9,$01A9,$0283,$01A9
    Data.c $01AC,$01AC,$01AD,$01AC
    Data.c $01AD,$01AC,$01AD,$01AC
    Data.c $01AE,$01AE,$0288,$01AE
    Data.c $01AF,$01AF,$01B0,$01AF
    Data.c $01B0,$01AF,$01B0,$01AF
    Data.c $01B1,$01B1,$028A,$01B1
    Data.c $01B2,$01B2,$028B,$01B2
    Data.c $01B3,$01B3,$01B4,$01B3
    Data.c $01B4,$01B3,$01B4,$01B3
    Data.c $01B5,$01B5,$01B6,$01B5
    Data.c $01B6,$01B5,$01B6,$01B5
    Data.c $01B7,$01B7,$0292,$01B7
    Data.c $01B8,$01B8,$01B9,$01B8
    Data.c $01B9,$01B8,$01B9,$01B8
    Data.c $01BC,$01BC,$01BD,$01BC
    Data.c $01BD,$01BC,$01BD,$01BC
    Data.c $01BF,$01F7,$01BF,$01F7
    Data.c $01C4,$01C4,$01C6,$01C5
    Data.c $01C5,$01C4,$01C6,$01C5
    Data.c $01C6,$01C4,$01C6,$01C5
    Data.c $01C7,$01C7,$01C9,$01C8
    Data.c $01C8,$01C7,$01C9,$01C8
    Data.c $01C9,$01C7,$01C9,$01C8
    Data.c $01CA,$01CA,$01CC,$01CB
    Data.c $01CB,$01CA,$01CC,$01CB
    Data.c $01CC,$01CA,$01CC,$01CB
    Data.c $01CD,$01CD,$01CE,$01CD
    Data.c $01CE,$01CD,$01CE,$01CD
    Data.c $01CF,$01CF,$01D0,$01CF
    Data.c $01D0,$01CF,$01D0,$01CF
    Data.c $01D1,$01D1,$01D2,$01D1
    Data.c $01D2,$01D1,$01D2,$01D1
    Data.c $01D3,$01D3,$01D4,$01D3
    Data.c $01D4,$01D3,$01D4,$01D3
    Data.c $01D5,$01D5,$01D6,$01D5
    Data.c $01D6,$01D5,$01D6,$01D5
    Data.c $01D7,$01D7,$01D8,$01D7
    Data.c $01D8,$01D7,$01D8,$01D7
    Data.c $01D9,$01D9,$01DA,$01D9
    Data.c $01DA,$01D9,$01DA,$01D9
    Data.c $01DB,$01DB,$01DC,$01DB
    Data.c $01DC,$01DB,$01DC,$01DB
    Data.c $01DD,$018E,$01DD,$018E
    Data.c $01DE,$01DE,$01DF,$01DE
    Data.c $01DF,$01DE,$01DF,$01DE
    Data.c $01E0,$01E0,$01E1,$01E0
    Data.c $01E1,$01E0,$01E1,$01E0
    Data.c $01E2,$01E2,$01E3,$01E2
    Data.c $01E3,$01E2,$01E3,$01E2
    Data.c $01E4,$01E4,$01E5,$01E4
    Data.c $01E5,$01E4,$01E5,$01E4
    Data.c $01E6,$01E6,$01E7,$01E6
    Data.c $01E7,$01E6,$01E7,$01E6
    Data.c $01E8,$01E8,$01E9,$01E8
    Data.c $01E9,$01E8,$01E9,$01E8
    Data.c $01EA,$01EA,$01EB,$01EA
    Data.c $01EB,$01EA,$01EB,$01EA
    Data.c $01EC,$01EC,$01ED,$01EC
    Data.c $01ED,$01EC,$01ED,$01EC
    Data.c $01EE,$01EE,$01EF,$01EE
    Data.c $01EF,$01EE,$01EF,$01EE
    Data.c $01F1,$01F1,$01F3,$01F2
    Data.c $01F2,$01F1,$01F3,$01F2
    Data.c $01F3,$01F1,$01F3,$01F2
    Data.c $01F4,$01F4,$01F5,$01F4
    Data.c $01F5,$01F4,$01F5,$01F4
    Data.c $01F6,$01F6,$0195,$01F6
    Data.c $01F7,$01F7,$01BF,$01F7
    Data.c $01F8,$01F8,$01F9,$01F8
    Data.c $01F9,$01F8,$01F9,$01F8
    Data.c $01FA,$01FA,$01FB,$01FA
    Data.c $01FB,$01FA,$01FB,$01FA
    Data.c $01FC,$01FC,$01FD,$01FC
    Data.c $01FD,$01FC,$01FD,$01FC
    Data.c $01FE,$01FE,$01FF,$01FE
    Data.c $01FF,$01FE,$01FF,$01FE
    Data.c $0200,$0200,$0201,$0200
    Data.c $0201,$0200,$0201,$0200
    Data.c $0202,$0202,$0203,$0202
    Data.c $0203,$0202,$0203,$0202
    Data.c $0204,$0204,$0205,$0204
    Data.c $0205,$0204,$0205,$0204
    Data.c $0206,$0206,$0207,$0206
    Data.c $0207,$0206,$0207,$0206
    Data.c $0208,$0208,$0209,$0208
    Data.c $0209,$0208,$0209,$0208
    Data.c $020A,$020A,$020B,$020A
    Data.c $020B,$020A,$020B,$020A
    Data.c $020C,$020C,$020D,$020C
    Data.c $020D,$020C,$020D,$020C
    Data.c $020E,$020E,$020F,$020E
    Data.c $020F,$020E,$020F,$020E
    Data.c $0210,$0210,$0211,$0210
    Data.c $0211,$0210,$0211,$0210
    Data.c $0212,$0212,$0213,$0212
    Data.c $0213,$0212,$0213,$0212
    Data.c $0214,$0214,$0215,$0214
    Data.c $0215,$0214,$0215,$0214
    Data.c $0216,$0216,$0217,$0216
    Data.c $0217,$0216,$0217,$0216
    Data.c $0218,$0218,$0219,$0218
    Data.c $0219,$0218,$0219,$0218
    Data.c $021A,$021A,$021B,$021A
    Data.c $021B,$021A,$021B,$021A
    Data.c $021C,$021C,$021D,$021C
    Data.c $021D,$021C,$021D,$021C
    Data.c $021E,$021E,$021F,$021E
    Data.c $021F,$021E,$021F,$021E
    Data.c $0220,$0220,$019E,$0220
    Data.c $0222,$0222,$0223,$0222
    Data.c $0223,$0222,$0223,$0222
    Data.c $0224,$0224,$0225,$0224
    Data.c $0225,$0224,$0225,$0224
    Data.c $0226,$0226,$0227,$0226
    Data.c $0227,$0226,$0227,$0226
    Data.c $0228,$0228,$0229,$0228
    Data.c $0229,$0228,$0229,$0228
    Data.c $022A,$022A,$022B,$022A
    Data.c $022B,$022A,$022B,$022A
    Data.c $022C,$022C,$022D,$022C
    Data.c $022D,$022C,$022D,$022C
    Data.c $022E,$022E,$022F,$022E
    Data.c $022F,$022E,$022F,$022E
    Data.c $0230,$0230,$0231,$0230
    Data.c $0231,$0230,$0231,$0230
    Data.c $0232,$0232,$0233,$0232
    Data.c $0233,$0232,$0233,$0232
    Data.c $023A,$023A,$2C65,$023A
    Data.c $023B,$023B,$023C,$023B
    Data.c $023C,$023B,$023C,$023B
    Data.c $023D,$023D,$019A,$023D
    Data.c $023E,$023E,$2C66,$023E
    Data.c $023F,$2C7E,$023F,$2C7E
    Data.c $0240,$2C7F,$0240,$2C7F
    Data.c $0241,$0241,$0242,$0241
    Data.c $0242,$0241,$0242,$0241
    Data.c $0243,$0243,$0180,$0243
    Data.c $0244,$0244,$0289,$0244
    Data.c $0245,$0245,$028C,$0245
    Data.c $0246,$0246,$0247,$0246
    Data.c $0247,$0246,$0247,$0246
    Data.c $0248,$0248,$0249,$0248
    Data.c $0249,$0248,$0249,$0248
    Data.c $024A,$024A,$024B,$024A
    Data.c $024B,$024A,$024B,$024A
    Data.c $024C,$024C,$024D,$024C
    Data.c $024D,$024C,$024D,$024C
    Data.c $024E,$024E,$024F,$024E
    Data.c $024F,$024E,$024F,$024E
    Data.c $0250,$2C6F,$0250,$2C6F
    Data.c $0251,$2C6D,$0251,$2C6D
    Data.c $0252,$2C70,$0252,$2C70
    Data.c $0253,$0181,$0253,$0181
    Data.c $0254,$0186,$0254,$0186
    Data.c $0256,$0189,$0256,$0189
    Data.c $0257,$018A,$0257,$018A
    Data.c $0259,$018F,$0259,$018F
    Data.c $025B,$0190,$025B,$0190
    Data.c $025C,$A7AB,$025C,$A7AB
    Data.c $0260,$0193,$0260,$0193
    Data.c $0261,$A7AC,$0261,$A7AC
    Data.c $0263,$0194,$0263,$0194
    Data.c $0265,$A78D,$0265,$A78D
    Data.c $0266,$A7AA,$0266,$A7AA
    Data.c $0268,$0197,$0268,$0197
    Data.c $0269,$0196,$0269,$0196
    Data.c $026A,$A7AE,$026A,$A7AE
    Data.c $026B,$2C62,$026B,$2C62
    Data.c $026C,$A7AD,$026C,$A7AD
    Data.c $026F,$019C,$026F,$019C
    Data.c $0271,$2C6E,$0271,$2C6E
    Data.c $0272,$019D,$0272,$019D
    Data.c $0275,$019F,$0275,$019F
    Data.c $027D,$2C64,$027D,$2C64
    Data.c $0280,$01A6,$0280,$01A6
    Data.c $0282,$A7C5,$0282,$A7C5
    Data.c $0283,$01A9,$0283,$01A9
    Data.c $0287,$A7B1,$0287,$A7B1
    Data.c $0288,$01AE,$0288,$01AE
    Data.c $0289,$0244,$0289,$0244
    Data.c $028A,$01B1,$028A,$01B1
    Data.c $028B,$01B2,$028B,$01B2
    Data.c $028C,$0245,$028C,$0245
    Data.c $0292,$01B7,$0292,$01B7
    Data.c $029D,$A7B2,$029D,$A7B2
    Data.c $029E,$A7B0,$029E,$A7B0
    Data.c $0345,$0399,$0345,$0399
    Data.c $0370,$0370,$0371,$0370
    Data.c $0371,$0370,$0371,$0370
    Data.c $0372,$0372,$0373,$0372
    Data.c $0373,$0372,$0373,$0372
    Data.c $0376,$0376,$0377,$0376
    Data.c $0377,$0376,$0377,$0376
    Data.c $037B,$03FD,$037B,$03FD
    Data.c $037C,$03FE,$037C,$03FE
    Data.c $037D,$03FF,$037D,$03FF
    Data.c $037F,$037F,$03F3,$037F
    Data.c $0386,$0386,$03AC,$0386
    Data.c $0388,$0388,$03AD,$0388
    Data.c $0389,$0389,$03AE,$0389
    Data.c $038A,$038A,$03AF,$038A
    Data.c $038C,$038C,$03CC,$038C
    Data.c $038E,$038E,$03CD,$038E
    Data.c $038F,$038F,$03CE,$038F
    Data.c $0391,$0391,$03B1,$0391
    Data.c $0392,$0392,$03B2,$0392
    Data.c $0393,$0393,$03B3,$0393
    Data.c $0394,$0394,$03B4,$0394
    Data.c $0395,$0395,$03B5,$0395
    Data.c $0396,$0396,$03B6,$0396
    Data.c $0397,$0397,$03B7,$0397
    Data.c $0398,$0398,$03B8,$0398
    Data.c $0399,$0399,$03B9,$0399
    Data.c $039A,$039A,$03BA,$039A
    Data.c $039B,$039B,$03BB,$039B
    Data.c $039C,$039C,$03BC,$039C
    Data.c $039D,$039D,$03BD,$039D
    Data.c $039E,$039E,$03BE,$039E
    Data.c $039F,$039F,$03BF,$039F
    Data.c $03A0,$03A0,$03C0,$03A0
    Data.c $03A1,$03A1,$03C1,$03A1
    Data.c $03A3,$03A3,$03C3,$03A3
    Data.c $03A4,$03A4,$03C4,$03A4
    Data.c $03A5,$03A5,$03C5,$03A5
    Data.c $03A6,$03A6,$03C6,$03A6
    Data.c $03A7,$03A7,$03C7,$03A7
    Data.c $03A8,$03A8,$03C8,$03A8
    Data.c $03A9,$03A9,$03C9,$03A9
    Data.c $03AA,$03AA,$03CA,$03AA
    Data.c $03AB,$03AB,$03CB,$03AB
    Data.c $03AC,$0386,$03AC,$0386
    Data.c $03AD,$0388,$03AD,$0388
    Data.c $03AE,$0389,$03AE,$0389
    Data.c $03AF,$038A,$03AF,$038A
    Data.c $03B1,$0391,$03B1,$0391
    Data.c $03B2,$0392,$03B2,$0392
    Data.c $03B3,$0393,$03B3,$0393
    Data.c $03B4,$0394,$03B4,$0394
    Data.c $03B5,$0395,$03B5,$0395
    Data.c $03B6,$0396,$03B6,$0396
    Data.c $03B7,$0397,$03B7,$0397
    Data.c $03B8,$0398,$03B8,$0398
    Data.c $03B9,$0399,$03B9,$0399
    Data.c $03BA,$039A,$03BA,$039A
    Data.c $03BB,$039B,$03BB,$039B
    Data.c $03BC,$039C,$03BC,$039C
    Data.c $03BD,$039D,$03BD,$039D
    Data.c $03BE,$039E,$03BE,$039E
    Data.c $03BF,$039F,$03BF,$039F
    Data.c $03C0,$03A0,$03C0,$03A0
    Data.c $03C1,$03A1,$03C1,$03A1
    Data.c $03C2,$03A3,$03C2,$03A3
    Data.c $03C3,$03A3,$03C3,$03A3
    Data.c $03C4,$03A4,$03C4,$03A4
    Data.c $03C5,$03A5,$03C5,$03A5
    Data.c $03C6,$03A6,$03C6,$03A6
    Data.c $03C7,$03A7,$03C7,$03A7
    Data.c $03C8,$03A8,$03C8,$03A8
    Data.c $03C9,$03A9,$03C9,$03A9
    Data.c $03CA,$03AA,$03CA,$03AA
    Data.c $03CB,$03AB,$03CB,$03AB
    Data.c $03CC,$038C,$03CC,$038C
    Data.c $03CD,$038E,$03CD,$038E
    Data.c $03CE,$038F,$03CE,$038F
    Data.c $03CF,$03CF,$03D7,$03CF
    Data.c $03D0,$0392,$03D0,$0392
    Data.c $03D1,$0398,$03D1,$0398
    Data.c $03D5,$03A6,$03D5,$03A6
    Data.c $03D6,$03A0,$03D6,$03A0
    Data.c $03D7,$03CF,$03D7,$03CF
    Data.c $03D8,$03D8,$03D9,$03D8
    Data.c $03D9,$03D8,$03D9,$03D8
    Data.c $03DA,$03DA,$03DB,$03DA
    Data.c $03DB,$03DA,$03DB,$03DA
    Data.c $03DC,$03DC,$03DD,$03DC
    Data.c $03DD,$03DC,$03DD,$03DC
    Data.c $03DE,$03DE,$03DF,$03DE
    Data.c $03DF,$03DE,$03DF,$03DE
    Data.c $03E0,$03E0,$03E1,$03E0
    Data.c $03E1,$03E0,$03E1,$03E0
    Data.c $03E2,$03E2,$03E3,$03E2
    Data.c $03E3,$03E2,$03E3,$03E2
    Data.c $03E4,$03E4,$03E5,$03E4
    Data.c $03E5,$03E4,$03E5,$03E4
    Data.c $03E6,$03E6,$03E7,$03E6
    Data.c $03E7,$03E6,$03E7,$03E6
    Data.c $03E8,$03E8,$03E9,$03E8
    Data.c $03E9,$03E8,$03E9,$03E8
    Data.c $03EA,$03EA,$03EB,$03EA
    Data.c $03EB,$03EA,$03EB,$03EA
    Data.c $03EC,$03EC,$03ED,$03EC
    Data.c $03ED,$03EC,$03ED,$03EC
    Data.c $03EE,$03EE,$03EF,$03EE
    Data.c $03EF,$03EE,$03EF,$03EE
    Data.c $03F0,$039A,$03F0,$039A
    Data.c $03F1,$03A1,$03F1,$03A1
    Data.c $03F2,$03F9,$03F2,$03F9
    Data.c $03F3,$037F,$03F3,$037F
    Data.c $03F4,$03F4,$03B8,$03F4
    Data.c $03F5,$0395,$03F5,$0395
    Data.c $03F7,$03F7,$03F8,$03F7
    Data.c $03F8,$03F7,$03F8,$03F7
    Data.c $03F9,$03F9,$03F2,$03F9
    Data.c $03FA,$03FA,$03FB,$03FA
    Data.c $03FB,$03FA,$03FB,$03FA
    Data.c $03FD,$03FD,$037B,$03FD
    Data.c $03FE,$03FE,$037C,$03FE
    Data.c $03FF,$03FF,$037D,$03FF
    Data.c $0400,$0400,$0450,$0400
    Data.c $0401,$0401,$0451,$0401
    Data.c $0402,$0402,$0452,$0402
    Data.c $0403,$0403,$0453,$0403
    Data.c $0404,$0404,$0454,$0404
    Data.c $0405,$0405,$0455,$0405
    Data.c $0406,$0406,$0456,$0406
    Data.c $0407,$0407,$0457,$0407
    Data.c $0408,$0408,$0458,$0408
    Data.c $0409,$0409,$0459,$0409
    Data.c $040A,$040A,$045A,$040A
    Data.c $040B,$040B,$045B,$040B
    Data.c $040C,$040C,$045C,$040C
    Data.c $040D,$040D,$045D,$040D
    Data.c $040E,$040E,$045E,$040E
    Data.c $040F,$040F,$045F,$040F
    Data.c $0410,$0410,$0430,$0410
    Data.c $0411,$0411,$0431,$0411
    Data.c $0412,$0412,$0432,$0412
    Data.c $0413,$0413,$0433,$0413
    Data.c $0414,$0414,$0434,$0414
    Data.c $0415,$0415,$0435,$0415
    Data.c $0416,$0416,$0436,$0416
    Data.c $0417,$0417,$0437,$0417
    Data.c $0418,$0418,$0438,$0418
    Data.c $0419,$0419,$0439,$0419
    Data.c $041A,$041A,$043A,$041A
    Data.c $041B,$041B,$043B,$041B
    Data.c $041C,$041C,$043C,$041C
    Data.c $041D,$041D,$043D,$041D
    Data.c $041E,$041E,$043E,$041E
    Data.c $041F,$041F,$043F,$041F
    Data.c $0420,$0420,$0440,$0420
    Data.c $0421,$0421,$0441,$0421
    Data.c $0422,$0422,$0442,$0422
    Data.c $0423,$0423,$0443,$0423
    Data.c $0424,$0424,$0444,$0424
    Data.c $0425,$0425,$0445,$0425
    Data.c $0426,$0426,$0446,$0426
    Data.c $0427,$0427,$0447,$0427
    Data.c $0428,$0428,$0448,$0428
    Data.c $0429,$0429,$0449,$0429
    Data.c $042A,$042A,$044A,$042A
    Data.c $042B,$042B,$044B,$042B
    Data.c $042C,$042C,$044C,$042C
    Data.c $042D,$042D,$044D,$042D
    Data.c $042E,$042E,$044E,$042E
    Data.c $042F,$042F,$044F,$042F
    Data.c $0430,$0410,$0430,$0410
    Data.c $0431,$0411,$0431,$0411
    Data.c $0432,$0412,$0432,$0412
    Data.c $0433,$0413,$0433,$0413
    Data.c $0434,$0414,$0434,$0414
    Data.c $0435,$0415,$0435,$0415
    Data.c $0436,$0416,$0436,$0416
    Data.c $0437,$0417,$0437,$0417
    Data.c $0438,$0418,$0438,$0418
    Data.c $0439,$0419,$0439,$0419
    Data.c $043A,$041A,$043A,$041A
    Data.c $043B,$041B,$043B,$041B
    Data.c $043C,$041C,$043C,$041C
    Data.c $043D,$041D,$043D,$041D
    Data.c $043E,$041E,$043E,$041E
    Data.c $043F,$041F,$043F,$041F
    Data.c $0440,$0420,$0440,$0420
    Data.c $0441,$0421,$0441,$0421
    Data.c $0442,$0422,$0442,$0422
    Data.c $0443,$0423,$0443,$0423
    Data.c $0444,$0424,$0444,$0424
    Data.c $0445,$0425,$0445,$0425
    Data.c $0446,$0426,$0446,$0426
    Data.c $0447,$0427,$0447,$0427
    Data.c $0448,$0428,$0448,$0428
    Data.c $0449,$0429,$0449,$0429
    Data.c $044A,$042A,$044A,$042A
    Data.c $044B,$042B,$044B,$042B
    Data.c $044C,$042C,$044C,$042C
    Data.c $044D,$042D,$044D,$042D
    Data.c $044E,$042E,$044E,$042E
    Data.c $044F,$042F,$044F,$042F
    Data.c $0450,$0400,$0450,$0400
    Data.c $0451,$0401,$0451,$0401
    Data.c $0452,$0402,$0452,$0402
    Data.c $0453,$0403,$0453,$0403
    Data.c $0454,$0404,$0454,$0404
    Data.c $0455,$0405,$0455,$0405
    Data.c $0456,$0406,$0456,$0406
    Data.c $0457,$0407,$0457,$0407
    Data.c $0458,$0408,$0458,$0408
    Data.c $0459,$0409,$0459,$0409
    Data.c $045A,$040A,$045A,$040A
    Data.c $045B,$040B,$045B,$040B
    Data.c $045C,$040C,$045C,$040C
    Data.c $045D,$040D,$045D,$040D
    Data.c $045E,$040E,$045E,$040E
    Data.c $045F,$040F,$045F,$040F
    Data.c $0460,$0460,$0461,$0460
    Data.c $0461,$0460,$0461,$0460
    Data.c $0462,$0462,$0463,$0462
    Data.c $0463,$0462,$0463,$0462
    Data.c $0464,$0464,$0465,$0464
    Data.c $0465,$0464,$0465,$0464
    Data.c $0466,$0466,$0467,$0466
    Data.c $0467,$0466,$0467,$0466
    Data.c $0468,$0468,$0469,$0468
    Data.c $0469,$0468,$0469,$0468
    Data.c $046A,$046A,$046B,$046A
    Data.c $046B,$046A,$046B,$046A
    Data.c $046C,$046C,$046D,$046C
    Data.c $046D,$046C,$046D,$046C
    Data.c $046E,$046E,$046F,$046E
    Data.c $046F,$046E,$046F,$046E
    Data.c $0470,$0470,$0471,$0470
    Data.c $0471,$0470,$0471,$0470
    Data.c $0472,$0472,$0473,$0472
    Data.c $0473,$0472,$0473,$0472
    Data.c $0474,$0474,$0475,$0474
    Data.c $0475,$0474,$0475,$0474
    Data.c $0476,$0476,$0477,$0476
    Data.c $0477,$0476,$0477,$0476
    Data.c $0478,$0478,$0479,$0478
    Data.c $0479,$0478,$0479,$0478
    Data.c $047A,$047A,$047B,$047A
    Data.c $047B,$047A,$047B,$047A
    Data.c $047C,$047C,$047D,$047C
    Data.c $047D,$047C,$047D,$047C
    Data.c $047E,$047E,$047F,$047E
    Data.c $047F,$047E,$047F,$047E
    Data.c $0480,$0480,$0481,$0480
    Data.c $0481,$0480,$0481,$0480
    Data.c $048A,$048A,$048B,$048A
    Data.c $048B,$048A,$048B,$048A
    Data.c $048C,$048C,$048D,$048C
    Data.c $048D,$048C,$048D,$048C
    Data.c $048E,$048E,$048F,$048E
    Data.c $048F,$048E,$048F,$048E
    Data.c $0490,$0490,$0491,$0490
    Data.c $0491,$0490,$0491,$0490
    Data.c $0492,$0492,$0493,$0492
    Data.c $0493,$0492,$0493,$0492
    Data.c $0494,$0494,$0495,$0494
    Data.c $0495,$0494,$0495,$0494
    Data.c $0496,$0496,$0497,$0496
    Data.c $0497,$0496,$0497,$0496
    Data.c $0498,$0498,$0499,$0498
    Data.c $0499,$0498,$0499,$0498
    Data.c $049A,$049A,$049B,$049A
    Data.c $049B,$049A,$049B,$049A
    Data.c $049C,$049C,$049D,$049C
    Data.c $049D,$049C,$049D,$049C
    Data.c $049E,$049E,$049F,$049E
    Data.c $049F,$049E,$049F,$049E
    Data.c $04A0,$04A0,$04A1,$04A0
    Data.c $04A1,$04A0,$04A1,$04A0
    Data.c $04A2,$04A2,$04A3,$04A2
    Data.c $04A3,$04A2,$04A3,$04A2
    Data.c $04A4,$04A4,$04A5,$04A4
    Data.c $04A5,$04A4,$04A5,$04A4
    Data.c $04A6,$04A6,$04A7,$04A6
    Data.c $04A7,$04A6,$04A7,$04A6
    Data.c $04A8,$04A8,$04A9,$04A8
    Data.c $04A9,$04A8,$04A9,$04A8
    Data.c $04AA,$04AA,$04AB,$04AA
    Data.c $04AB,$04AA,$04AB,$04AA
    Data.c $04AC,$04AC,$04AD,$04AC
    Data.c $04AD,$04AC,$04AD,$04AC
    Data.c $04AE,$04AE,$04AF,$04AE
    Data.c $04AF,$04AE,$04AF,$04AE
    Data.c $04B0,$04B0,$04B1,$04B0
    Data.c $04B1,$04B0,$04B1,$04B0
    Data.c $04B2,$04B2,$04B3,$04B2
    Data.c $04B3,$04B2,$04B3,$04B2
    Data.c $04B4,$04B4,$04B5,$04B4
    Data.c $04B5,$04B4,$04B5,$04B4
    Data.c $04B6,$04B6,$04B7,$04B6
    Data.c $04B7,$04B6,$04B7,$04B6
    Data.c $04B8,$04B8,$04B9,$04B8
    Data.c $04B9,$04B8,$04B9,$04B8
    Data.c $04BA,$04BA,$04BB,$04BA
    Data.c $04BB,$04BA,$04BB,$04BA
    Data.c $04BC,$04BC,$04BD,$04BC
    Data.c $04BD,$04BC,$04BD,$04BC
    Data.c $04BE,$04BE,$04BF,$04BE
    Data.c $04BF,$04BE,$04BF,$04BE
    Data.c $04C0,$04C0,$04CF,$04C0
    Data.c $04C1,$04C1,$04C2,$04C1
    Data.c $04C2,$04C1,$04C2,$04C1
    Data.c $04C3,$04C3,$04C4,$04C3
    Data.c $04C4,$04C3,$04C4,$04C3
    Data.c $04C5,$04C5,$04C6,$04C5
    Data.c $04C6,$04C5,$04C6,$04C5
    Data.c $04C7,$04C7,$04C8,$04C7
    Data.c $04C8,$04C7,$04C8,$04C7
    Data.c $04C9,$04C9,$04CA,$04C9
    Data.c $04CA,$04C9,$04CA,$04C9
    Data.c $04CB,$04CB,$04CC,$04CB
    Data.c $04CC,$04CB,$04CC,$04CB
    Data.c $04CD,$04CD,$04CE,$04CD
    Data.c $04CE,$04CD,$04CE,$04CD
    Data.c $04CF,$04C0,$04CF,$04C0
    Data.c $04D0,$04D0,$04D1,$04D0
    Data.c $04D1,$04D0,$04D1,$04D0
    Data.c $04D2,$04D2,$04D3,$04D2
    Data.c $04D3,$04D2,$04D3,$04D2
    Data.c $04D4,$04D4,$04D5,$04D4
    Data.c $04D5,$04D4,$04D5,$04D4
    Data.c $04D6,$04D6,$04D7,$04D6
    Data.c $04D7,$04D6,$04D7,$04D6
    Data.c $04D8,$04D8,$04D9,$04D8
    Data.c $04D9,$04D8,$04D9,$04D8
    Data.c $04DA,$04DA,$04DB,$04DA
    Data.c $04DB,$04DA,$04DB,$04DA
    Data.c $04DC,$04DC,$04DD,$04DC
    Data.c $04DD,$04DC,$04DD,$04DC
    Data.c $04DE,$04DE,$04DF,$04DE
    Data.c $04DF,$04DE,$04DF,$04DE
    Data.c $04E0,$04E0,$04E1,$04E0
    Data.c $04E1,$04E0,$04E1,$04E0
    Data.c $04E2,$04E2,$04E3,$04E2
    Data.c $04E3,$04E2,$04E3,$04E2
    Data.c $04E4,$04E4,$04E5,$04E4
    Data.c $04E5,$04E4,$04E5,$04E4
    Data.c $04E6,$04E6,$04E7,$04E6
    Data.c $04E7,$04E6,$04E7,$04E6
    Data.c $04E8,$04E8,$04E9,$04E8
    Data.c $04E9,$04E8,$04E9,$04E8
    Data.c $04EA,$04EA,$04EB,$04EA
    Data.c $04EB,$04EA,$04EB,$04EA
    Data.c $04EC,$04EC,$04ED,$04EC
    Data.c $04ED,$04EC,$04ED,$04EC
    Data.c $04EE,$04EE,$04EF,$04EE
    Data.c $04EF,$04EE,$04EF,$04EE
    Data.c $04F0,$04F0,$04F1,$04F0
    Data.c $04F1,$04F0,$04F1,$04F0
    Data.c $04F2,$04F2,$04F3,$04F2
    Data.c $04F3,$04F2,$04F3,$04F2
    Data.c $04F4,$04F4,$04F5,$04F4
    Data.c $04F5,$04F4,$04F5,$04F4
    Data.c $04F6,$04F6,$04F7,$04F6
    Data.c $04F7,$04F6,$04F7,$04F6
    Data.c $04F8,$04F8,$04F9,$04F8
    Data.c $04F9,$04F8,$04F9,$04F8
    Data.c $04FA,$04FA,$04FB,$04FA
    Data.c $04FB,$04FA,$04FB,$04FA
    Data.c $04FC,$04FC,$04FD,$04FC
    Data.c $04FD,$04FC,$04FD,$04FC
    Data.c $04FE,$04FE,$04FF,$04FE
    Data.c $04FF,$04FE,$04FF,$04FE
    Data.c $0500,$0500,$0501,$0500
    Data.c $0501,$0500,$0501,$0500
    Data.c $0502,$0502,$0503,$0502
    Data.c $0503,$0502,$0503,$0502
    Data.c $0504,$0504,$0505,$0504
    Data.c $0505,$0504,$0505,$0504
    Data.c $0506,$0506,$0507,$0506
    Data.c $0507,$0506,$0507,$0506
    Data.c $0508,$0508,$0509,$0508
    Data.c $0509,$0508,$0509,$0508
    Data.c $050A,$050A,$050B,$050A
    Data.c $050B,$050A,$050B,$050A
    Data.c $050C,$050C,$050D,$050C
    Data.c $050D,$050C,$050D,$050C
    Data.c $050E,$050E,$050F,$050E
    Data.c $050F,$050E,$050F,$050E
    Data.c $0510,$0510,$0511,$0510
    Data.c $0511,$0510,$0511,$0510
    Data.c $0512,$0512,$0513,$0512
    Data.c $0513,$0512,$0513,$0512
    Data.c $0514,$0514,$0515,$0514
    Data.c $0515,$0514,$0515,$0514
    Data.c $0516,$0516,$0517,$0516
    Data.c $0517,$0516,$0517,$0516
    Data.c $0518,$0518,$0519,$0518
    Data.c $0519,$0518,$0519,$0518
    Data.c $051A,$051A,$051B,$051A
    Data.c $051B,$051A,$051B,$051A
    Data.c $051C,$051C,$051D,$051C
    Data.c $051D,$051C,$051D,$051C
    Data.c $051E,$051E,$051F,$051E
    Data.c $051F,$051E,$051F,$051E
    Data.c $0520,$0520,$0521,$0520
    Data.c $0521,$0520,$0521,$0520
    Data.c $0522,$0522,$0523,$0522
    Data.c $0523,$0522,$0523,$0522
    Data.c $0524,$0524,$0525,$0524
    Data.c $0525,$0524,$0525,$0524
    Data.c $0526,$0526,$0527,$0526
    Data.c $0527,$0526,$0527,$0526
    Data.c $0528,$0528,$0529,$0528
    Data.c $0529,$0528,$0529,$0528
    Data.c $052A,$052A,$052B,$052A
    Data.c $052B,$052A,$052B,$052A
    Data.c $052C,$052C,$052D,$052C
    Data.c $052D,$052C,$052D,$052C
    Data.c $052E,$052E,$052F,$052E
    Data.c $052F,$052E,$052F,$052E
    Data.c $0531,$0531,$0561,$0531
    Data.c $0532,$0532,$0562,$0532
    Data.c $0533,$0533,$0563,$0533
    Data.c $0534,$0534,$0564,$0534
    Data.c $0535,$0535,$0565,$0535
    Data.c $0536,$0536,$0566,$0536
    Data.c $0537,$0537,$0567,$0537
    Data.c $0538,$0538,$0568,$0538
    Data.c $0539,$0539,$0569,$0539
    Data.c $053A,$053A,$056A,$053A
    Data.c $053B,$053B,$056B,$053B
    Data.c $053C,$053C,$056C,$053C
    Data.c $053D,$053D,$056D,$053D
    Data.c $053E,$053E,$056E,$053E
    Data.c $053F,$053F,$056F,$053F
    Data.c $0540,$0540,$0570,$0540
    Data.c $0541,$0541,$0571,$0541
    Data.c $0542,$0542,$0572,$0542
    Data.c $0543,$0543,$0573,$0543
    Data.c $0544,$0544,$0574,$0544
    Data.c $0545,$0545,$0575,$0545
    Data.c $0546,$0546,$0576,$0546
    Data.c $0547,$0547,$0577,$0547
    Data.c $0548,$0548,$0578,$0548
    Data.c $0549,$0549,$0579,$0549
    Data.c $054A,$054A,$057A,$054A
    Data.c $054B,$054B,$057B,$054B
    Data.c $054C,$054C,$057C,$054C
    Data.c $054D,$054D,$057D,$054D
    Data.c $054E,$054E,$057E,$054E
    Data.c $054F,$054F,$057F,$054F
    Data.c $0550,$0550,$0580,$0550
    Data.c $0551,$0551,$0581,$0551
    Data.c $0552,$0552,$0582,$0552
    Data.c $0553,$0553,$0583,$0553
    Data.c $0554,$0554,$0584,$0554
    Data.c $0555,$0555,$0585,$0555
    Data.c $0556,$0556,$0586,$0556
    Data.c $0561,$0531,$0561,$0531
    Data.c $0562,$0532,$0562,$0532
    Data.c $0563,$0533,$0563,$0533
    Data.c $0564,$0534,$0564,$0534
    Data.c $0565,$0535,$0565,$0535
    Data.c $0566,$0536,$0566,$0536
    Data.c $0567,$0537,$0567,$0537
    Data.c $0568,$0538,$0568,$0538
    Data.c $0569,$0539,$0569,$0539
    Data.c $056A,$053A,$056A,$053A
    Data.c $056B,$053B,$056B,$053B
    Data.c $056C,$053C,$056C,$053C
    Data.c $056D,$053D,$056D,$053D
    Data.c $056E,$053E,$056E,$053E
    Data.c $056F,$053F,$056F,$053F
    Data.c $0570,$0540,$0570,$0540
    Data.c $0571,$0541,$0571,$0541
    Data.c $0572,$0542,$0572,$0542
    Data.c $0573,$0543,$0573,$0543
    Data.c $0574,$0544,$0574,$0544
    Data.c $0575,$0545,$0575,$0545
    Data.c $0576,$0546,$0576,$0546
    Data.c $0577,$0547,$0577,$0547
    Data.c $0578,$0548,$0578,$0548
    Data.c $0579,$0549,$0579,$0549
    Data.c $057A,$054A,$057A,$054A
    Data.c $057B,$054B,$057B,$054B
    Data.c $057C,$054C,$057C,$054C
    Data.c $057D,$054D,$057D,$054D
    Data.c $057E,$054E,$057E,$054E
    Data.c $057F,$054F,$057F,$054F
    Data.c $0580,$0550,$0580,$0550
    Data.c $0581,$0551,$0581,$0551
    Data.c $0582,$0552,$0582,$0552
    Data.c $0583,$0553,$0583,$0553
    Data.c $0584,$0554,$0584,$0554
    Data.c $0585,$0555,$0585,$0555
    Data.c $0586,$0556,$0586,$0556
Last edited by mk-soft on Sun Oct 09, 2022 2:49 pm, edited 10 times in total.
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Upper and Lower Case Mapping for Unicode

Post by mk-soft »

Part two ...

Code: Select all

    Data.c $10A0,$10A0,$2D00,$10A0
    Data.c $10A1,$10A1,$2D01,$10A1
    Data.c $10A2,$10A2,$2D02,$10A2
    Data.c $10A3,$10A3,$2D03,$10A3
    Data.c $10A4,$10A4,$2D04,$10A4
    Data.c $10A5,$10A5,$2D05,$10A5
    Data.c $10A6,$10A6,$2D06,$10A6
    Data.c $10A7,$10A7,$2D07,$10A7
    Data.c $10A8,$10A8,$2D08,$10A8
    Data.c $10A9,$10A9,$2D09,$10A9
    Data.c $10AA,$10AA,$2D0A,$10AA
    Data.c $10AB,$10AB,$2D0B,$10AB
    Data.c $10AC,$10AC,$2D0C,$10AC
    Data.c $10AD,$10AD,$2D0D,$10AD
    Data.c $10AE,$10AE,$2D0E,$10AE
    Data.c $10AF,$10AF,$2D0F,$10AF
    Data.c $10B0,$10B0,$2D10,$10B0
    Data.c $10B1,$10B1,$2D11,$10B1
    Data.c $10B2,$10B2,$2D12,$10B2
    Data.c $10B3,$10B3,$2D13,$10B3
    Data.c $10B4,$10B4,$2D14,$10B4
    Data.c $10B5,$10B5,$2D15,$10B5
    Data.c $10B6,$10B6,$2D16,$10B6
    Data.c $10B7,$10B7,$2D17,$10B7
    Data.c $10B8,$10B8,$2D18,$10B8
    Data.c $10B9,$10B9,$2D19,$10B9
    Data.c $10BA,$10BA,$2D1A,$10BA
    Data.c $10BB,$10BB,$2D1B,$10BB
    Data.c $10BC,$10BC,$2D1C,$10BC
    Data.c $10BD,$10BD,$2D1D,$10BD
    Data.c $10BE,$10BE,$2D1E,$10BE
    Data.c $10BF,$10BF,$2D1F,$10BF
    Data.c $10C0,$10C0,$2D20,$10C0
    Data.c $10C1,$10C1,$2D21,$10C1
    Data.c $10C2,$10C2,$2D22,$10C2
    Data.c $10C3,$10C3,$2D23,$10C3
    Data.c $10C4,$10C4,$2D24,$10C4
    Data.c $10C5,$10C5,$2D25,$10C5
    Data.c $10C7,$10C7,$2D27,$10C7
    Data.c $10CD,$10CD,$2D2D,$10CD
    Data.c $10D0,$1C90,$10D0,$10D0
    Data.c $10D1,$1C91,$10D1,$10D1
    Data.c $10D2,$1C92,$10D2,$10D2
    Data.c $10D3,$1C93,$10D3,$10D3
    Data.c $10D4,$1C94,$10D4,$10D4
    Data.c $10D5,$1C95,$10D5,$10D5
    Data.c $10D6,$1C96,$10D6,$10D6
    Data.c $10D7,$1C97,$10D7,$10D7
    Data.c $10D8,$1C98,$10D8,$10D8
    Data.c $10D9,$1C99,$10D9,$10D9
    Data.c $10DA,$1C9A,$10DA,$10DA
    Data.c $10DB,$1C9B,$10DB,$10DB
    Data.c $10DC,$1C9C,$10DC,$10DC
    Data.c $10DD,$1C9D,$10DD,$10DD
    Data.c $10DE,$1C9E,$10DE,$10DE
    Data.c $10DF,$1C9F,$10DF,$10DF
    Data.c $10E0,$1CA0,$10E0,$10E0
    Data.c $10E1,$1CA1,$10E1,$10E1
    Data.c $10E2,$1CA2,$10E2,$10E2
    Data.c $10E3,$1CA3,$10E3,$10E3
    Data.c $10E4,$1CA4,$10E4,$10E4
    Data.c $10E5,$1CA5,$10E5,$10E5
    Data.c $10E6,$1CA6,$10E6,$10E6
    Data.c $10E7,$1CA7,$10E7,$10E7
    Data.c $10E8,$1CA8,$10E8,$10E8
    Data.c $10E9,$1CA9,$10E9,$10E9
    Data.c $10EA,$1CAA,$10EA,$10EA
    Data.c $10EB,$1CAB,$10EB,$10EB
    Data.c $10EC,$1CAC,$10EC,$10EC
    Data.c $10ED,$1CAD,$10ED,$10ED
    Data.c $10EE,$1CAE,$10EE,$10EE
    Data.c $10EF,$1CAF,$10EF,$10EF
    Data.c $10F0,$1CB0,$10F0,$10F0
    Data.c $10F1,$1CB1,$10F1,$10F1
    Data.c $10F2,$1CB2,$10F2,$10F2
    Data.c $10F3,$1CB3,$10F3,$10F3
    Data.c $10F4,$1CB4,$10F4,$10F4
    Data.c $10F5,$1CB5,$10F5,$10F5
    Data.c $10F6,$1CB6,$10F6,$10F6
    Data.c $10F7,$1CB7,$10F7,$10F7
    Data.c $10F8,$1CB8,$10F8,$10F8
    Data.c $10F9,$1CB9,$10F9,$10F9
    Data.c $10FA,$1CBA,$10FA,$10FA
    Data.c $10FD,$1CBD,$10FD,$10FD
    Data.c $10FE,$1CBE,$10FE,$10FE
    Data.c $10FF,$1CBF,$10FF,$10FF
    Data.c $13A0,$13A0,$AB70,$13A0
    Data.c $13A1,$13A1,$AB71,$13A1
    Data.c $13A2,$13A2,$AB72,$13A2
    Data.c $13A3,$13A3,$AB73,$13A3
    Data.c $13A4,$13A4,$AB74,$13A4
    Data.c $13A5,$13A5,$AB75,$13A5
    Data.c $13A6,$13A6,$AB76,$13A6
    Data.c $13A7,$13A7,$AB77,$13A7
    Data.c $13A8,$13A8,$AB78,$13A8
    Data.c $13A9,$13A9,$AB79,$13A9
    Data.c $13AA,$13AA,$AB7A,$13AA
    Data.c $13AB,$13AB,$AB7B,$13AB
    Data.c $13AC,$13AC,$AB7C,$13AC
    Data.c $13AD,$13AD,$AB7D,$13AD
    Data.c $13AE,$13AE,$AB7E,$13AE
    Data.c $13AF,$13AF,$AB7F,$13AF
    Data.c $13B0,$13B0,$AB80,$13B0
    Data.c $13B1,$13B1,$AB81,$13B1
    Data.c $13B2,$13B2,$AB82,$13B2
    Data.c $13B3,$13B3,$AB83,$13B3
    Data.c $13B4,$13B4,$AB84,$13B4
    Data.c $13B5,$13B5,$AB85,$13B5
    Data.c $13B6,$13B6,$AB86,$13B6
    Data.c $13B7,$13B7,$AB87,$13B7
    Data.c $13B8,$13B8,$AB88,$13B8
    Data.c $13B9,$13B9,$AB89,$13B9
    Data.c $13BA,$13BA,$AB8A,$13BA
    Data.c $13BB,$13BB,$AB8B,$13BB
    Data.c $13BC,$13BC,$AB8C,$13BC
    Data.c $13BD,$13BD,$AB8D,$13BD
    Data.c $13BE,$13BE,$AB8E,$13BE
    Data.c $13BF,$13BF,$AB8F,$13BF
    Data.c $13C0,$13C0,$AB90,$13C0
    Data.c $13C1,$13C1,$AB91,$13C1
    Data.c $13C2,$13C2,$AB92,$13C2
    Data.c $13C3,$13C3,$AB93,$13C3
    Data.c $13C4,$13C4,$AB94,$13C4
    Data.c $13C5,$13C5,$AB95,$13C5
    Data.c $13C6,$13C6,$AB96,$13C6
    Data.c $13C7,$13C7,$AB97,$13C7
    Data.c $13C8,$13C8,$AB98,$13C8
    Data.c $13C9,$13C9,$AB99,$13C9
    Data.c $13CA,$13CA,$AB9A,$13CA
    Data.c $13CB,$13CB,$AB9B,$13CB
    Data.c $13CC,$13CC,$AB9C,$13CC
    Data.c $13CD,$13CD,$AB9D,$13CD
    Data.c $13CE,$13CE,$AB9E,$13CE
    Data.c $13CF,$13CF,$AB9F,$13CF
    Data.c $13D0,$13D0,$ABA0,$13D0
    Data.c $13D1,$13D1,$ABA1,$13D1
    Data.c $13D2,$13D2,$ABA2,$13D2
    Data.c $13D3,$13D3,$ABA3,$13D3
    Data.c $13D4,$13D4,$ABA4,$13D4
    Data.c $13D5,$13D5,$ABA5,$13D5
    Data.c $13D6,$13D6,$ABA6,$13D6
    Data.c $13D7,$13D7,$ABA7,$13D7
    Data.c $13D8,$13D8,$ABA8,$13D8
    Data.c $13D9,$13D9,$ABA9,$13D9
    Data.c $13DA,$13DA,$ABAA,$13DA
    Data.c $13DB,$13DB,$ABAB,$13DB
    Data.c $13DC,$13DC,$ABAC,$13DC
    Data.c $13DD,$13DD,$ABAD,$13DD
    Data.c $13DE,$13DE,$ABAE,$13DE
    Data.c $13DF,$13DF,$ABAF,$13DF
    Data.c $13E0,$13E0,$ABB0,$13E0
    Data.c $13E1,$13E1,$ABB1,$13E1
    Data.c $13E2,$13E2,$ABB2,$13E2
    Data.c $13E3,$13E3,$ABB3,$13E3
    Data.c $13E4,$13E4,$ABB4,$13E4
    Data.c $13E5,$13E5,$ABB5,$13E5
    Data.c $13E6,$13E6,$ABB6,$13E6
    Data.c $13E7,$13E7,$ABB7,$13E7
    Data.c $13E8,$13E8,$ABB8,$13E8
    Data.c $13E9,$13E9,$ABB9,$13E9
    Data.c $13EA,$13EA,$ABBA,$13EA
    Data.c $13EB,$13EB,$ABBB,$13EB
    Data.c $13EC,$13EC,$ABBC,$13EC
    Data.c $13ED,$13ED,$ABBD,$13ED
    Data.c $13EE,$13EE,$ABBE,$13EE
    Data.c $13EF,$13EF,$ABBF,$13EF
    Data.c $13F0,$13F0,$13F8,$13F0
    Data.c $13F1,$13F1,$13F9,$13F1
    Data.c $13F2,$13F2,$13FA,$13F2
    Data.c $13F3,$13F3,$13FB,$13F3
    Data.c $13F4,$13F4,$13FC,$13F4
    Data.c $13F5,$13F5,$13FD,$13F5
    Data.c $13F8,$13F0,$13F8,$13F0
    Data.c $13F9,$13F1,$13F9,$13F1
    Data.c $13FA,$13F2,$13FA,$13F2
    Data.c $13FB,$13F3,$13FB,$13F3
    Data.c $13FC,$13F4,$13FC,$13F4
    Data.c $13FD,$13F5,$13FD,$13F5
    Data.c $1C80,$0412,$1C80,$0412
    Data.c $1C81,$0414,$1C81,$0414
    Data.c $1C82,$041E,$1C82,$041E
    Data.c $1C83,$0421,$1C83,$0421
    Data.c $1C84,$0422,$1C84,$0422
    Data.c $1C85,$0422,$1C85,$0422
    Data.c $1C86,$042A,$1C86,$042A
    Data.c $1C87,$0462,$1C87,$0462
    Data.c $1C88,$A64A,$1C88,$A64A
    Data.c $1C90,$1C90,$10D0,$1C90
    Data.c $1C91,$1C91,$10D1,$1C91
    Data.c $1C92,$1C92,$10D2,$1C92
    Data.c $1C93,$1C93,$10D3,$1C93
    Data.c $1C94,$1C94,$10D4,$1C94
    Data.c $1C95,$1C95,$10D5,$1C95
    Data.c $1C96,$1C96,$10D6,$1C96
    Data.c $1C97,$1C97,$10D7,$1C97
    Data.c $1C98,$1C98,$10D8,$1C98
    Data.c $1C99,$1C99,$10D9,$1C99
    Data.c $1C9A,$1C9A,$10DA,$1C9A
    Data.c $1C9B,$1C9B,$10DB,$1C9B
    Data.c $1C9C,$1C9C,$10DC,$1C9C
    Data.c $1C9D,$1C9D,$10DD,$1C9D
    Data.c $1C9E,$1C9E,$10DE,$1C9E
    Data.c $1C9F,$1C9F,$10DF,$1C9F
    Data.c $1CA0,$1CA0,$10E0,$1CA0
    Data.c $1CA1,$1CA1,$10E1,$1CA1
    Data.c $1CA2,$1CA2,$10E2,$1CA2
    Data.c $1CA3,$1CA3,$10E3,$1CA3
    Data.c $1CA4,$1CA4,$10E4,$1CA4
    Data.c $1CA5,$1CA5,$10E5,$1CA5
    Data.c $1CA6,$1CA6,$10E6,$1CA6
    Data.c $1CA7,$1CA7,$10E7,$1CA7
    Data.c $1CA8,$1CA8,$10E8,$1CA8
    Data.c $1CA9,$1CA9,$10E9,$1CA9
    Data.c $1CAA,$1CAA,$10EA,$1CAA
    Data.c $1CAB,$1CAB,$10EB,$1CAB
    Data.c $1CAC,$1CAC,$10EC,$1CAC
    Data.c $1CAD,$1CAD,$10ED,$1CAD
    Data.c $1CAE,$1CAE,$10EE,$1CAE
    Data.c $1CAF,$1CAF,$10EF,$1CAF
    Data.c $1CB0,$1CB0,$10F0,$1CB0
    Data.c $1CB1,$1CB1,$10F1,$1CB1
    Data.c $1CB2,$1CB2,$10F2,$1CB2
    Data.c $1CB3,$1CB3,$10F3,$1CB3
    Data.c $1CB4,$1CB4,$10F4,$1CB4
    Data.c $1CB5,$1CB5,$10F5,$1CB5
    Data.c $1CB6,$1CB6,$10F6,$1CB6
    Data.c $1CB7,$1CB7,$10F7,$1CB7
    Data.c $1CB8,$1CB8,$10F8,$1CB8
    Data.c $1CB9,$1CB9,$10F9,$1CB9
    Data.c $1CBA,$1CBA,$10FA,$1CBA
    Data.c $1CBD,$1CBD,$10FD,$1CBD
    Data.c $1CBE,$1CBE,$10FE,$1CBE
    Data.c $1CBF,$1CBF,$10FF,$1CBF
    Data.c $1D79,$A77D,$1D79,$A77D
    Data.c $1D7D,$2C63,$1D7D,$2C63
    Data.c $1D8E,$A7C6,$1D8E,$A7C6
    Data.c $1E00,$1E00,$1E01,$1E00
    Data.c $1E01,$1E00,$1E01,$1E00
    Data.c $1E02,$1E02,$1E03,$1E02
    Data.c $1E03,$1E02,$1E03,$1E02
    Data.c $1E04,$1E04,$1E05,$1E04
    Data.c $1E05,$1E04,$1E05,$1E04
    Data.c $1E06,$1E06,$1E07,$1E06
    Data.c $1E07,$1E06,$1E07,$1E06
    Data.c $1E08,$1E08,$1E09,$1E08
    Data.c $1E09,$1E08,$1E09,$1E08
    Data.c $1E0A,$1E0A,$1E0B,$1E0A
    Data.c $1E0B,$1E0A,$1E0B,$1E0A
    Data.c $1E0C,$1E0C,$1E0D,$1E0C
    Data.c $1E0D,$1E0C,$1E0D,$1E0C
    Data.c $1E0E,$1E0E,$1E0F,$1E0E
    Data.c $1E0F,$1E0E,$1E0F,$1E0E
    Data.c $1E10,$1E10,$1E11,$1E10
    Data.c $1E11,$1E10,$1E11,$1E10
    Data.c $1E12,$1E12,$1E13,$1E12
    Data.c $1E13,$1E12,$1E13,$1E12
    Data.c $1E14,$1E14,$1E15,$1E14
    Data.c $1E15,$1E14,$1E15,$1E14
    Data.c $1E16,$1E16,$1E17,$1E16
    Data.c $1E17,$1E16,$1E17,$1E16
    Data.c $1E18,$1E18,$1E19,$1E18
    Data.c $1E19,$1E18,$1E19,$1E18
    Data.c $1E1A,$1E1A,$1E1B,$1E1A
    Data.c $1E1B,$1E1A,$1E1B,$1E1A
    Data.c $1E1C,$1E1C,$1E1D,$1E1C
    Data.c $1E1D,$1E1C,$1E1D,$1E1C
    Data.c $1E1E,$1E1E,$1E1F,$1E1E
    Data.c $1E1F,$1E1E,$1E1F,$1E1E
    Data.c $1E20,$1E20,$1E21,$1E20
    Data.c $1E21,$1E20,$1E21,$1E20
    Data.c $1E22,$1E22,$1E23,$1E22
    Data.c $1E23,$1E22,$1E23,$1E22
    Data.c $1E24,$1E24,$1E25,$1E24
    Data.c $1E25,$1E24,$1E25,$1E24
    Data.c $1E26,$1E26,$1E27,$1E26
    Data.c $1E27,$1E26,$1E27,$1E26
    Data.c $1E28,$1E28,$1E29,$1E28
    Data.c $1E29,$1E28,$1E29,$1E28
    Data.c $1E2A,$1E2A,$1E2B,$1E2A
    Data.c $1E2B,$1E2A,$1E2B,$1E2A
    Data.c $1E2C,$1E2C,$1E2D,$1E2C
    Data.c $1E2D,$1E2C,$1E2D,$1E2C
    Data.c $1E2E,$1E2E,$1E2F,$1E2E
    Data.c $1E2F,$1E2E,$1E2F,$1E2E
    Data.c $1E30,$1E30,$1E31,$1E30
    Data.c $1E31,$1E30,$1E31,$1E30
    Data.c $1E32,$1E32,$1E33,$1E32
    Data.c $1E33,$1E32,$1E33,$1E32
    Data.c $1E34,$1E34,$1E35,$1E34
    Data.c $1E35,$1E34,$1E35,$1E34
    Data.c $1E36,$1E36,$1E37,$1E36
    Data.c $1E37,$1E36,$1E37,$1E36
    Data.c $1E38,$1E38,$1E39,$1E38
    Data.c $1E39,$1E38,$1E39,$1E38
    Data.c $1E3A,$1E3A,$1E3B,$1E3A
    Data.c $1E3B,$1E3A,$1E3B,$1E3A
    Data.c $1E3C,$1E3C,$1E3D,$1E3C
    Data.c $1E3D,$1E3C,$1E3D,$1E3C
    Data.c $1E3E,$1E3E,$1E3F,$1E3E
    Data.c $1E3F,$1E3E,$1E3F,$1E3E
    Data.c $1E40,$1E40,$1E41,$1E40
    Data.c $1E41,$1E40,$1E41,$1E40
    Data.c $1E42,$1E42,$1E43,$1E42
    Data.c $1E43,$1E42,$1E43,$1E42
    Data.c $1E44,$1E44,$1E45,$1E44
    Data.c $1E45,$1E44,$1E45,$1E44
    Data.c $1E46,$1E46,$1E47,$1E46
    Data.c $1E47,$1E46,$1E47,$1E46
    Data.c $1E48,$1E48,$1E49,$1E48
    Data.c $1E49,$1E48,$1E49,$1E48
    Data.c $1E4A,$1E4A,$1E4B,$1E4A
    Data.c $1E4B,$1E4A,$1E4B,$1E4A
    Data.c $1E4C,$1E4C,$1E4D,$1E4C
    Data.c $1E4D,$1E4C,$1E4D,$1E4C
    Data.c $1E4E,$1E4E,$1E4F,$1E4E
    Data.c $1E4F,$1E4E,$1E4F,$1E4E
    Data.c $1E50,$1E50,$1E51,$1E50
    Data.c $1E51,$1E50,$1E51,$1E50
    Data.c $1E52,$1E52,$1E53,$1E52
    Data.c $1E53,$1E52,$1E53,$1E52
    Data.c $1E54,$1E54,$1E55,$1E54
    Data.c $1E55,$1E54,$1E55,$1E54
    Data.c $1E56,$1E56,$1E57,$1E56
    Data.c $1E57,$1E56,$1E57,$1E56
    Data.c $1E58,$1E58,$1E59,$1E58
    Data.c $1E59,$1E58,$1E59,$1E58
    Data.c $1E5A,$1E5A,$1E5B,$1E5A
    Data.c $1E5B,$1E5A,$1E5B,$1E5A
    Data.c $1E5C,$1E5C,$1E5D,$1E5C
    Data.c $1E5D,$1E5C,$1E5D,$1E5C
    Data.c $1E5E,$1E5E,$1E5F,$1E5E
    Data.c $1E5F,$1E5E,$1E5F,$1E5E
    Data.c $1E60,$1E60,$1E61,$1E60
    Data.c $1E61,$1E60,$1E61,$1E60
    Data.c $1E62,$1E62,$1E63,$1E62
    Data.c $1E63,$1E62,$1E63,$1E62
    Data.c $1E64,$1E64,$1E65,$1E64
    Data.c $1E65,$1E64,$1E65,$1E64
    Data.c $1E66,$1E66,$1E67,$1E66
    Data.c $1E67,$1E66,$1E67,$1E66
    Data.c $1E68,$1E68,$1E69,$1E68
    Data.c $1E69,$1E68,$1E69,$1E68
    Data.c $1E6A,$1E6A,$1E6B,$1E6A
    Data.c $1E6B,$1E6A,$1E6B,$1E6A
    Data.c $1E6C,$1E6C,$1E6D,$1E6C
    Data.c $1E6D,$1E6C,$1E6D,$1E6C
    Data.c $1E6E,$1E6E,$1E6F,$1E6E
    Data.c $1E6F,$1E6E,$1E6F,$1E6E
    Data.c $1E70,$1E70,$1E71,$1E70
    Data.c $1E71,$1E70,$1E71,$1E70
    Data.c $1E72,$1E72,$1E73,$1E72
    Data.c $1E73,$1E72,$1E73,$1E72
    Data.c $1E74,$1E74,$1E75,$1E74
    Data.c $1E75,$1E74,$1E75,$1E74
    Data.c $1E76,$1E76,$1E77,$1E76
    Data.c $1E77,$1E76,$1E77,$1E76
    Data.c $1E78,$1E78,$1E79,$1E78
    Data.c $1E79,$1E78,$1E79,$1E78
    Data.c $1E7A,$1E7A,$1E7B,$1E7A
    Data.c $1E7B,$1E7A,$1E7B,$1E7A
    Data.c $1E7C,$1E7C,$1E7D,$1E7C
    Data.c $1E7D,$1E7C,$1E7D,$1E7C
    Data.c $1E7E,$1E7E,$1E7F,$1E7E
    Data.c $1E7F,$1E7E,$1E7F,$1E7E
    Data.c $1E80,$1E80,$1E81,$1E80
    Data.c $1E81,$1E80,$1E81,$1E80
    Data.c $1E82,$1E82,$1E83,$1E82
    Data.c $1E83,$1E82,$1E83,$1E82
    Data.c $1E84,$1E84,$1E85,$1E84
    Data.c $1E85,$1E84,$1E85,$1E84
    Data.c $1E86,$1E86,$1E87,$1E86
    Data.c $1E87,$1E86,$1E87,$1E86
    Data.c $1E88,$1E88,$1E89,$1E88
    Data.c $1E89,$1E88,$1E89,$1E88
    Data.c $1E8A,$1E8A,$1E8B,$1E8A
    Data.c $1E8B,$1E8A,$1E8B,$1E8A
    Data.c $1E8C,$1E8C,$1E8D,$1E8C
    Data.c $1E8D,$1E8C,$1E8D,$1E8C
    Data.c $1E8E,$1E8E,$1E8F,$1E8E
    Data.c $1E8F,$1E8E,$1E8F,$1E8E
    Data.c $1E90,$1E90,$1E91,$1E90
    Data.c $1E91,$1E90,$1E91,$1E90
    Data.c $1E92,$1E92,$1E93,$1E92
    Data.c $1E93,$1E92,$1E93,$1E92
    Data.c $1E94,$1E94,$1E95,$1E94
    Data.c $1E95,$1E94,$1E95,$1E94
    Data.c $1E9B,$1E60,$1E9B,$1E60
    Data.c $1E9E,$1E9E,$00DF,$1E9E
    Data.c $1EA0,$1EA0,$1EA1,$1EA0
    Data.c $1EA1,$1EA0,$1EA1,$1EA0
    Data.c $1EA2,$1EA2,$1EA3,$1EA2
    Data.c $1EA3,$1EA2,$1EA3,$1EA2
    Data.c $1EA4,$1EA4,$1EA5,$1EA4
    Data.c $1EA5,$1EA4,$1EA5,$1EA4
    Data.c $1EA6,$1EA6,$1EA7,$1EA6
    Data.c $1EA7,$1EA6,$1EA7,$1EA6
    Data.c $1EA8,$1EA8,$1EA9,$1EA8
    Data.c $1EA9,$1EA8,$1EA9,$1EA8
    Data.c $1EAA,$1EAA,$1EAB,$1EAA
    Data.c $1EAB,$1EAA,$1EAB,$1EAA
    Data.c $1EAC,$1EAC,$1EAD,$1EAC
    Data.c $1EAD,$1EAC,$1EAD,$1EAC
    Data.c $1EAE,$1EAE,$1EAF,$1EAE
    Data.c $1EAF,$1EAE,$1EAF,$1EAE
    Data.c $1EB0,$1EB0,$1EB1,$1EB0
    Data.c $1EB1,$1EB0,$1EB1,$1EB0
    Data.c $1EB2,$1EB2,$1EB3,$1EB2
    Data.c $1EB3,$1EB2,$1EB3,$1EB2
    Data.c $1EB4,$1EB4,$1EB5,$1EB4
    Data.c $1EB5,$1EB4,$1EB5,$1EB4
    Data.c $1EB6,$1EB6,$1EB7,$1EB6
    Data.c $1EB7,$1EB6,$1EB7,$1EB6
    Data.c $1EB8,$1EB8,$1EB9,$1EB8
    Data.c $1EB9,$1EB8,$1EB9,$1EB8
    Data.c $1EBA,$1EBA,$1EBB,$1EBA
    Data.c $1EBB,$1EBA,$1EBB,$1EBA
    Data.c $1EBC,$1EBC,$1EBD,$1EBC
    Data.c $1EBD,$1EBC,$1EBD,$1EBC
    Data.c $1EBE,$1EBE,$1EBF,$1EBE
    Data.c $1EBF,$1EBE,$1EBF,$1EBE
    Data.c $1EC0,$1EC0,$1EC1,$1EC0
    Data.c $1EC1,$1EC0,$1EC1,$1EC0
    Data.c $1EC2,$1EC2,$1EC3,$1EC2
    Data.c $1EC3,$1EC2,$1EC3,$1EC2
    Data.c $1EC4,$1EC4,$1EC5,$1EC4
    Data.c $1EC5,$1EC4,$1EC5,$1EC4
    Data.c $1EC6,$1EC6,$1EC7,$1EC6
    Data.c $1EC7,$1EC6,$1EC7,$1EC6
    Data.c $1EC8,$1EC8,$1EC9,$1EC8
    Data.c $1EC9,$1EC8,$1EC9,$1EC8
    Data.c $1ECA,$1ECA,$1ECB,$1ECA
    Data.c $1ECB,$1ECA,$1ECB,$1ECA
    Data.c $1ECC,$1ECC,$1ECD,$1ECC
    Data.c $1ECD,$1ECC,$1ECD,$1ECC
    Data.c $1ECE,$1ECE,$1ECF,$1ECE
    Data.c $1ECF,$1ECE,$1ECF,$1ECE
    Data.c $1ED0,$1ED0,$1ED1,$1ED0
    Data.c $1ED1,$1ED0,$1ED1,$1ED0
    Data.c $1ED2,$1ED2,$1ED3,$1ED2
    Data.c $1ED3,$1ED2,$1ED3,$1ED2
    Data.c $1ED4,$1ED4,$1ED5,$1ED4
    Data.c $1ED5,$1ED4,$1ED5,$1ED4
    Data.c $1ED6,$1ED6,$1ED7,$1ED6
    Data.c $1ED7,$1ED6,$1ED7,$1ED6
    Data.c $1ED8,$1ED8,$1ED9,$1ED8
    Data.c $1ED9,$1ED8,$1ED9,$1ED8
    Data.c $1EDA,$1EDA,$1EDB,$1EDA
    Data.c $1EDB,$1EDA,$1EDB,$1EDA
    Data.c $1EDC,$1EDC,$1EDD,$1EDC
    Data.c $1EDD,$1EDC,$1EDD,$1EDC
    Data.c $1EDE,$1EDE,$1EDF,$1EDE
    Data.c $1EDF,$1EDE,$1EDF,$1EDE
    Data.c $1EE0,$1EE0,$1EE1,$1EE0
    Data.c $1EE1,$1EE0,$1EE1,$1EE0
    Data.c $1EE2,$1EE2,$1EE3,$1EE2
    Data.c $1EE3,$1EE2,$1EE3,$1EE2
    Data.c $1EE4,$1EE4,$1EE5,$1EE4
    Data.c $1EE5,$1EE4,$1EE5,$1EE4
    Data.c $1EE6,$1EE6,$1EE7,$1EE6
    Data.c $1EE7,$1EE6,$1EE7,$1EE6
    Data.c $1EE8,$1EE8,$1EE9,$1EE8
    Data.c $1EE9,$1EE8,$1EE9,$1EE8
    Data.c $1EEA,$1EEA,$1EEB,$1EEA
    Data.c $1EEB,$1EEA,$1EEB,$1EEA
    Data.c $1EEC,$1EEC,$1EED,$1EEC
    Data.c $1EED,$1EEC,$1EED,$1EEC
    Data.c $1EEE,$1EEE,$1EEF,$1EEE
    Data.c $1EEF,$1EEE,$1EEF,$1EEE
    Data.c $1EF0,$1EF0,$1EF1,$1EF0
    Data.c $1EF1,$1EF0,$1EF1,$1EF0
    Data.c $1EF2,$1EF2,$1EF3,$1EF2
    Data.c $1EF3,$1EF2,$1EF3,$1EF2
    Data.c $1EF4,$1EF4,$1EF5,$1EF4
    Data.c $1EF5,$1EF4,$1EF5,$1EF4
    Data.c $1EF6,$1EF6,$1EF7,$1EF6
    Data.c $1EF7,$1EF6,$1EF7,$1EF6
    Data.c $1EF8,$1EF8,$1EF9,$1EF8
    Data.c $1EF9,$1EF8,$1EF9,$1EF8
    Data.c $1EFA,$1EFA,$1EFB,$1EFA
    Data.c $1EFB,$1EFA,$1EFB,$1EFA
    Data.c $1EFC,$1EFC,$1EFD,$1EFC
    Data.c $1EFD,$1EFC,$1EFD,$1EFC
    Data.c $1EFE,$1EFE,$1EFF,$1EFE
    Data.c $1EFF,$1EFE,$1EFF,$1EFE
    Data.c $1F00,$1F08,$1F00,$1F08
    Data.c $1F01,$1F09,$1F01,$1F09
    Data.c $1F02,$1F0A,$1F02,$1F0A
    Data.c $1F03,$1F0B,$1F03,$1F0B
    Data.c $1F04,$1F0C,$1F04,$1F0C
    Data.c $1F05,$1F0D,$1F05,$1F0D
    Data.c $1F06,$1F0E,$1F06,$1F0E
    Data.c $1F07,$1F0F,$1F07,$1F0F
    Data.c $1F08,$1F08,$1F00,$1F08
    Data.c $1F09,$1F09,$1F01,$1F09
    Data.c $1F0A,$1F0A,$1F02,$1F0A
    Data.c $1F0B,$1F0B,$1F03,$1F0B
    Data.c $1F0C,$1F0C,$1F04,$1F0C
    Data.c $1F0D,$1F0D,$1F05,$1F0D
    Data.c $1F0E,$1F0E,$1F06,$1F0E
    Data.c $1F0F,$1F0F,$1F07,$1F0F
    Data.c $1F10,$1F18,$1F10,$1F18
    Data.c $1F11,$1F19,$1F11,$1F19
    Data.c $1F12,$1F1A,$1F12,$1F1A
    Data.c $1F13,$1F1B,$1F13,$1F1B
    Data.c $1F14,$1F1C,$1F14,$1F1C
    Data.c $1F15,$1F1D,$1F15,$1F1D
    Data.c $1F18,$1F18,$1F10,$1F18
    Data.c $1F19,$1F19,$1F11,$1F19
    Data.c $1F1A,$1F1A,$1F12,$1F1A
    Data.c $1F1B,$1F1B,$1F13,$1F1B
    Data.c $1F1C,$1F1C,$1F14,$1F1C
    Data.c $1F1D,$1F1D,$1F15,$1F1D
    Data.c $1F20,$1F28,$1F20,$1F28
    Data.c $1F21,$1F29,$1F21,$1F29
    Data.c $1F22,$1F2A,$1F22,$1F2A
    Data.c $1F23,$1F2B,$1F23,$1F2B
    Data.c $1F24,$1F2C,$1F24,$1F2C
    Data.c $1F25,$1F2D,$1F25,$1F2D
    Data.c $1F26,$1F2E,$1F26,$1F2E
    Data.c $1F27,$1F2F,$1F27,$1F2F
    Data.c $1F28,$1F28,$1F20,$1F28
    Data.c $1F29,$1F29,$1F21,$1F29
    Data.c $1F2A,$1F2A,$1F22,$1F2A
    Data.c $1F2B,$1F2B,$1F23,$1F2B
    Data.c $1F2C,$1F2C,$1F24,$1F2C
    Data.c $1F2D,$1F2D,$1F25,$1F2D
    Data.c $1F2E,$1F2E,$1F26,$1F2E
    Data.c $1F2F,$1F2F,$1F27,$1F2F
    Data.c $1F30,$1F38,$1F30,$1F38
    Data.c $1F31,$1F39,$1F31,$1F39
    Data.c $1F32,$1F3A,$1F32,$1F3A
    Data.c $1F33,$1F3B,$1F33,$1F3B
    Data.c $1F34,$1F3C,$1F34,$1F3C
    Data.c $1F35,$1F3D,$1F35,$1F3D
    Data.c $1F36,$1F3E,$1F36,$1F3E
    Data.c $1F37,$1F3F,$1F37,$1F3F
    Data.c $1F38,$1F38,$1F30,$1F38
    Data.c $1F39,$1F39,$1F31,$1F39
    Data.c $1F3A,$1F3A,$1F32,$1F3A
    Data.c $1F3B,$1F3B,$1F33,$1F3B
    Data.c $1F3C,$1F3C,$1F34,$1F3C
    Data.c $1F3D,$1F3D,$1F35,$1F3D
    Data.c $1F3E,$1F3E,$1F36,$1F3E
    Data.c $1F3F,$1F3F,$1F37,$1F3F
    Data.c $1F40,$1F48,$1F40,$1F48
    Data.c $1F41,$1F49,$1F41,$1F49
    Data.c $1F42,$1F4A,$1F42,$1F4A
    Data.c $1F43,$1F4B,$1F43,$1F4B
    Data.c $1F44,$1F4C,$1F44,$1F4C
    Data.c $1F45,$1F4D,$1F45,$1F4D
    Data.c $1F48,$1F48,$1F40,$1F48
    Data.c $1F49,$1F49,$1F41,$1F49
    Data.c $1F4A,$1F4A,$1F42,$1F4A
    Data.c $1F4B,$1F4B,$1F43,$1F4B
    Data.c $1F4C,$1F4C,$1F44,$1F4C
    Data.c $1F4D,$1F4D,$1F45,$1F4D
    Data.c $1F51,$1F59,$1F51,$1F59
    Data.c $1F53,$1F5B,$1F53,$1F5B
    Data.c $1F55,$1F5D,$1F55,$1F5D
    Data.c $1F57,$1F5F,$1F57,$1F5F
    Data.c $1F59,$1F59,$1F51,$1F59
    Data.c $1F5B,$1F5B,$1F53,$1F5B
    Data.c $1F5D,$1F5D,$1F55,$1F5D
    Data.c $1F5F,$1F5F,$1F57,$1F5F
    Data.c $1F60,$1F68,$1F60,$1F68
    Data.c $1F61,$1F69,$1F61,$1F69
    Data.c $1F62,$1F6A,$1F62,$1F6A
    Data.c $1F63,$1F6B,$1F63,$1F6B
    Data.c $1F64,$1F6C,$1F64,$1F6C
    Data.c $1F65,$1F6D,$1F65,$1F6D
    Data.c $1F66,$1F6E,$1F66,$1F6E
    Data.c $1F67,$1F6F,$1F67,$1F6F
    Data.c $1F68,$1F68,$1F60,$1F68
    Data.c $1F69,$1F69,$1F61,$1F69
    Data.c $1F6A,$1F6A,$1F62,$1F6A
    Data.c $1F6B,$1F6B,$1F63,$1F6B
    Data.c $1F6C,$1F6C,$1F64,$1F6C
    Data.c $1F6D,$1F6D,$1F65,$1F6D
    Data.c $1F6E,$1F6E,$1F66,$1F6E
    Data.c $1F6F,$1F6F,$1F67,$1F6F
    Data.c $1F70,$1FBA,$1F70,$1FBA
    Data.c $1F71,$1FBB,$1F71,$1FBB
    Data.c $1F72,$1FC8,$1F72,$1FC8
    Data.c $1F73,$1FC9,$1F73,$1FC9
    Data.c $1F74,$1FCA,$1F74,$1FCA
    Data.c $1F75,$1FCB,$1F75,$1FCB
    Data.c $1F76,$1FDA,$1F76,$1FDA
    Data.c $1F77,$1FDB,$1F77,$1FDB
    Data.c $1F78,$1FF8,$1F78,$1FF8
    Data.c $1F79,$1FF9,$1F79,$1FF9
    Data.c $1F7A,$1FEA,$1F7A,$1FEA
    Data.c $1F7B,$1FEB,$1F7B,$1FEB
    Data.c $1F7C,$1FFA,$1F7C,$1FFA
    Data.c $1F7D,$1FFB,$1F7D,$1FFB
    Data.c $1F80,$1F88,$1F80,$1F88
    Data.c $1F81,$1F89,$1F81,$1F89
    Data.c $1F82,$1F8A,$1F82,$1F8A
    Data.c $1F83,$1F8B,$1F83,$1F8B
    Data.c $1F84,$1F8C,$1F84,$1F8C
    Data.c $1F85,$1F8D,$1F85,$1F8D
    Data.c $1F86,$1F8E,$1F86,$1F8E
    Data.c $1F87,$1F8F,$1F87,$1F8F
    Data.c $1F88,$1F88,$1F80,$1F88
    Data.c $1F89,$1F89,$1F81,$1F89
    Data.c $1F8A,$1F8A,$1F82,$1F8A
    Data.c $1F8B,$1F8B,$1F83,$1F8B
    Data.c $1F8C,$1F8C,$1F84,$1F8C
    Data.c $1F8D,$1F8D,$1F85,$1F8D
    Data.c $1F8E,$1F8E,$1F86,$1F8E
    Data.c $1F8F,$1F8F,$1F87,$1F8F
    Data.c $1F90,$1F98,$1F90,$1F98
    Data.c $1F91,$1F99,$1F91,$1F99
    Data.c $1F92,$1F9A,$1F92,$1F9A
    Data.c $1F93,$1F9B,$1F93,$1F9B
    Data.c $1F94,$1F9C,$1F94,$1F9C
    Data.c $1F95,$1F9D,$1F95,$1F9D
    Data.c $1F96,$1F9E,$1F96,$1F9E
    Data.c $1F97,$1F9F,$1F97,$1F9F
    Data.c $1F98,$1F98,$1F90,$1F98
    Data.c $1F99,$1F99,$1F91,$1F99
    Data.c $1F9A,$1F9A,$1F92,$1F9A
    Data.c $1F9B,$1F9B,$1F93,$1F9B
    Data.c $1F9C,$1F9C,$1F94,$1F9C
    Data.c $1F9D,$1F9D,$1F95,$1F9D
    Data.c $1F9E,$1F9E,$1F96,$1F9E
    Data.c $1F9F,$1F9F,$1F97,$1F9F
    Data.c $1FA0,$1FA8,$1FA0,$1FA8
    Data.c $1FA1,$1FA9,$1FA1,$1FA9
    Data.c $1FA2,$1FAA,$1FA2,$1FAA
    Data.c $1FA3,$1FAB,$1FA3,$1FAB
    Data.c $1FA4,$1FAC,$1FA4,$1FAC
    Data.c $1FA5,$1FAD,$1FA5,$1FAD
    Data.c $1FA6,$1FAE,$1FA6,$1FAE
    Data.c $1FA7,$1FAF,$1FA7,$1FAF
    Data.c $1FA8,$1FA8,$1FA0,$1FA8
    Data.c $1FA9,$1FA9,$1FA1,$1FA9
    Data.c $1FAA,$1FAA,$1FA2,$1FAA
    Data.c $1FAB,$1FAB,$1FA3,$1FAB
    Data.c $1FAC,$1FAC,$1FA4,$1FAC
    Data.c $1FAD,$1FAD,$1FA5,$1FAD
    Data.c $1FAE,$1FAE,$1FA6,$1FAE
    Data.c $1FAF,$1FAF,$1FA7,$1FAF
    Data.c $1FB0,$1FB8,$1FB0,$1FB8
    Data.c $1FB1,$1FB9,$1FB1,$1FB9
    Data.c $1FB3,$1FBC,$1FB3,$1FBC
    Data.c $1FB8,$1FB8,$1FB0,$1FB8
    Data.c $1FB9,$1FB9,$1FB1,$1FB9
    Data.c $1FBA,$1FBA,$1F70,$1FBA
    Data.c $1FBB,$1FBB,$1F71,$1FBB
    Data.c $1FBC,$1FBC,$1FB3,$1FBC
    Data.c $1FBE,$0399,$1FBE,$0399
    Data.c $1FC3,$1FCC,$1FC3,$1FCC
    Data.c $1FC8,$1FC8,$1F72,$1FC8
    Data.c $1FC9,$1FC9,$1F73,$1FC9
    Data.c $1FCA,$1FCA,$1F74,$1FCA
    Data.c $1FCB,$1FCB,$1F75,$1FCB
    Data.c $1FCC,$1FCC,$1FC3,$1FCC
    Data.c $1FD0,$1FD8,$1FD0,$1FD8
    Data.c $1FD1,$1FD9,$1FD1,$1FD9
    Data.c $1FD8,$1FD8,$1FD0,$1FD8
    Data.c $1FD9,$1FD9,$1FD1,$1FD9
    Data.c $1FDA,$1FDA,$1F76,$1FDA
    Data.c $1FDB,$1FDB,$1F77,$1FDB
    Data.c $1FE0,$1FE8,$1FE0,$1FE8
    Data.c $1FE1,$1FE9,$1FE1,$1FE9
    Data.c $1FE5,$1FEC,$1FE5,$1FEC
    Data.c $1FE8,$1FE8,$1FE0,$1FE8
    Data.c $1FE9,$1FE9,$1FE1,$1FE9
    Data.c $1FEA,$1FEA,$1F7A,$1FEA
    Data.c $1FEB,$1FEB,$1F7B,$1FEB
    Data.c $1FEC,$1FEC,$1FE5,$1FEC
    Data.c $1FF3,$1FFC,$1FF3,$1FFC
    Data.c $1FF8,$1FF8,$1F78,$1FF8
    Data.c $1FF9,$1FF9,$1F79,$1FF9
    Data.c $1FFA,$1FFA,$1F7C,$1FFA
    Data.c $1FFB,$1FFB,$1F7D,$1FFB
    Data.c $1FFC,$1FFC,$1FF3,$1FFC
    Data.c $2126,$2126,$03C9,$2126
    Data.c $212A,$212A,$006B,$212A
    Data.c $212B,$212B,$00E5,$212B
    Data.c $2132,$2132,$214E,$2132
    Data.c $214E,$2132,$214E,$2132
    Data.c $2160,$2160,$2170,$2160
    Data.c $2161,$2161,$2171,$2161
    Data.c $2162,$2162,$2172,$2162
    Data.c $2163,$2163,$2173,$2163
    Data.c $2164,$2164,$2174,$2164
    Data.c $2165,$2165,$2175,$2165
    Data.c $2166,$2166,$2176,$2166
    Data.c $2167,$2167,$2177,$2167
    Data.c $2168,$2168,$2178,$2168
    Data.c $2169,$2169,$2179,$2169
    Data.c $216A,$216A,$217A,$216A
    Data.c $216B,$216B,$217B,$216B
    Data.c $216C,$216C,$217C,$216C
    Data.c $216D,$216D,$217D,$216D
    Data.c $216E,$216E,$217E,$216E
    Data.c $216F,$216F,$217F,$216F
    Data.c $2170,$2160,$2170,$2160
    Data.c $2171,$2161,$2171,$2161
    Data.c $2172,$2162,$2172,$2162
    Data.c $2173,$2163,$2173,$2163
    Data.c $2174,$2164,$2174,$2164
    Data.c $2175,$2165,$2175,$2165
    Data.c $2176,$2166,$2176,$2166
    Data.c $2177,$2167,$2177,$2167
    Data.c $2178,$2168,$2178,$2168
    Data.c $2179,$2169,$2179,$2169
    Data.c $217A,$216A,$217A,$216A
    Data.c $217B,$216B,$217B,$216B
    Data.c $217C,$216C,$217C,$216C
    Data.c $217D,$216D,$217D,$216D
    Data.c $217E,$216E,$217E,$216E
    Data.c $217F,$216F,$217F,$216F
    Data.c $2183,$2183,$2184,$2183
    Data.c $2184,$2183,$2184,$2183
    Data.c $24B6,$24B6,$24D0,$24B6
    Data.c $24B7,$24B7,$24D1,$24B7
    Data.c $24B8,$24B8,$24D2,$24B8
    Data.c $24B9,$24B9,$24D3,$24B9
    Data.c $24BA,$24BA,$24D4,$24BA
    Data.c $24BB,$24BB,$24D5,$24BB
    Data.c $24BC,$24BC,$24D6,$24BC
    Data.c $24BD,$24BD,$24D7,$24BD
    Data.c $24BE,$24BE,$24D8,$24BE
    Data.c $24BF,$24BF,$24D9,$24BF
    Data.c $24C0,$24C0,$24DA,$24C0
    Data.c $24C1,$24C1,$24DB,$24C1
    Data.c $24C2,$24C2,$24DC,$24C2
    Data.c $24C3,$24C3,$24DD,$24C3
    Data.c $24C4,$24C4,$24DE,$24C4
    Data.c $24C5,$24C5,$24DF,$24C5
    Data.c $24C6,$24C6,$24E0,$24C6
    Data.c $24C7,$24C7,$24E1,$24C7
    Data.c $24C8,$24C8,$24E2,$24C8
    Data.c $24C9,$24C9,$24E3,$24C9
    Data.c $24CA,$24CA,$24E4,$24CA
    Data.c $24CB,$24CB,$24E5,$24CB
    Data.c $24CC,$24CC,$24E6,$24CC
    Data.c $24CD,$24CD,$24E7,$24CD
    Data.c $24CE,$24CE,$24E8,$24CE
    Data.c $24CF,$24CF,$24E9,$24CF
    Data.c $24D0,$24B6,$24D0,$24B6
    Data.c $24D1,$24B7,$24D1,$24B7
    Data.c $24D2,$24B8,$24D2,$24B8
    Data.c $24D3,$24B9,$24D3,$24B9
    Data.c $24D4,$24BA,$24D4,$24BA
    Data.c $24D5,$24BB,$24D5,$24BB
    Data.c $24D6,$24BC,$24D6,$24BC
    Data.c $24D7,$24BD,$24D7,$24BD
    Data.c $24D8,$24BE,$24D8,$24BE
    Data.c $24D9,$24BF,$24D9,$24BF
    Data.c $24DA,$24C0,$24DA,$24C0
    Data.c $24DB,$24C1,$24DB,$24C1
    Data.c $24DC,$24C2,$24DC,$24C2
    Data.c $24DD,$24C3,$24DD,$24C3
    Data.c $24DE,$24C4,$24DE,$24C4
    Data.c $24DF,$24C5,$24DF,$24C5
    Data.c $24E0,$24C6,$24E0,$24C6
    Data.c $24E1,$24C7,$24E1,$24C7
    Data.c $24E2,$24C8,$24E2,$24C8
    Data.c $24E3,$24C9,$24E3,$24C9
    Data.c $24E4,$24CA,$24E4,$24CA
    Data.c $24E5,$24CB,$24E5,$24CB
    Data.c $24E6,$24CC,$24E6,$24CC
    Data.c $24E7,$24CD,$24E7,$24CD
    Data.c $24E8,$24CE,$24E8,$24CE
    Data.c $24E9,$24CF,$24E9,$24CF
    Data.c $2C00,$2C00,$2C30,$2C00
    Data.c $2C01,$2C01,$2C31,$2C01
    Data.c $2C02,$2C02,$2C32,$2C02
    Data.c $2C03,$2C03,$2C33,$2C03
    Data.c $2C04,$2C04,$2C34,$2C04
    Data.c $2C05,$2C05,$2C35,$2C05
    Data.c $2C06,$2C06,$2C36,$2C06
    Data.c $2C07,$2C07,$2C37,$2C07
    Data.c $2C08,$2C08,$2C38,$2C08
    Data.c $2C09,$2C09,$2C39,$2C09
    Data.c $2C0A,$2C0A,$2C3A,$2C0A
    Data.c $2C0B,$2C0B,$2C3B,$2C0B
    Data.c $2C0C,$2C0C,$2C3C,$2C0C
    Data.c $2C0D,$2C0D,$2C3D,$2C0D
    Data.c $2C0E,$2C0E,$2C3E,$2C0E
    Data.c $2C0F,$2C0F,$2C3F,$2C0F
    Data.c $2C10,$2C10,$2C40,$2C10
    Data.c $2C11,$2C11,$2C41,$2C11
    Data.c $2C12,$2C12,$2C42,$2C12
    Data.c $2C13,$2C13,$2C43,$2C13
    Data.c $2C14,$2C14,$2C44,$2C14
    Data.c $2C15,$2C15,$2C45,$2C15
    Data.c $2C16,$2C16,$2C46,$2C16
    Data.c $2C17,$2C17,$2C47,$2C17
    Data.c $2C18,$2C18,$2C48,$2C18
    Data.c $2C19,$2C19,$2C49,$2C19
    Data.c $2C1A,$2C1A,$2C4A,$2C1A
    Data.c $2C1B,$2C1B,$2C4B,$2C1B
    Data.c $2C1C,$2C1C,$2C4C,$2C1C
    Data.c $2C1D,$2C1D,$2C4D,$2C1D
    Data.c $2C1E,$2C1E,$2C4E,$2C1E
    Data.c $2C1F,$2C1F,$2C4F,$2C1F
    Data.c $2C20,$2C20,$2C50,$2C20
    Data.c $2C21,$2C21,$2C51,$2C21
    Data.c $2C22,$2C22,$2C52,$2C22
    Data.c $2C23,$2C23,$2C53,$2C23
    Data.c $2C24,$2C24,$2C54,$2C24
    Data.c $2C25,$2C25,$2C55,$2C25
    Data.c $2C26,$2C26,$2C56,$2C26
    Data.c $2C27,$2C27,$2C57,$2C27
    Data.c $2C28,$2C28,$2C58,$2C28
    Data.c $2C29,$2C29,$2C59,$2C29
    Data.c $2C2A,$2C2A,$2C5A,$2C2A
    Data.c $2C2B,$2C2B,$2C5B,$2C2B
    Data.c $2C2C,$2C2C,$2C5C,$2C2C
    Data.c $2C2D,$2C2D,$2C5D,$2C2D
    Data.c $2C2E,$2C2E,$2C5E,$2C2E
    Data.c $2C2F,$2C2F,$2C5F,$2C2F
    Data.c $2C30,$2C00,$2C30,$2C00
    Data.c $2C31,$2C01,$2C31,$2C01
    Data.c $2C32,$2C02,$2C32,$2C02
    Data.c $2C33,$2C03,$2C33,$2C03
    Data.c $2C34,$2C04,$2C34,$2C04
    Data.c $2C35,$2C05,$2C35,$2C05
    Data.c $2C36,$2C06,$2C36,$2C06
    Data.c $2C37,$2C07,$2C37,$2C07
    Data.c $2C38,$2C08,$2C38,$2C08
    Data.c $2C39,$2C09,$2C39,$2C09
    Data.c $2C3A,$2C0A,$2C3A,$2C0A
    Data.c $2C3B,$2C0B,$2C3B,$2C0B
    Data.c $2C3C,$2C0C,$2C3C,$2C0C
    Data.c $2C3D,$2C0D,$2C3D,$2C0D
    Data.c $2C3E,$2C0E,$2C3E,$2C0E
    Data.c $2C3F,$2C0F,$2C3F,$2C0F
    Data.c $2C40,$2C10,$2C40,$2C10
    Data.c $2C41,$2C11,$2C41,$2C11
    Data.c $2C42,$2C12,$2C42,$2C12
    Data.c $2C43,$2C13,$2C43,$2C13
    Data.c $2C44,$2C14,$2C44,$2C14
    Data.c $2C45,$2C15,$2C45,$2C15
    Data.c $2C46,$2C16,$2C46,$2C16
    Data.c $2C47,$2C17,$2C47,$2C17
    Data.c $2C48,$2C18,$2C48,$2C18
    Data.c $2C49,$2C19,$2C49,$2C19
    Data.c $2C4A,$2C1A,$2C4A,$2C1A
    Data.c $2C4B,$2C1B,$2C4B,$2C1B
    Data.c $2C4C,$2C1C,$2C4C,$2C1C
    Data.c $2C4D,$2C1D,$2C4D,$2C1D
    Data.c $2C4E,$2C1E,$2C4E,$2C1E
    Data.c $2C4F,$2C1F,$2C4F,$2C1F
    Data.c $2C50,$2C20,$2C50,$2C20
    Data.c $2C51,$2C21,$2C51,$2C21
    Data.c $2C52,$2C22,$2C52,$2C22
    Data.c $2C53,$2C23,$2C53,$2C23
    Data.c $2C54,$2C24,$2C54,$2C24
    Data.c $2C55,$2C25,$2C55,$2C25
    Data.c $2C56,$2C26,$2C56,$2C26
    Data.c $2C57,$2C27,$2C57,$2C27
    Data.c $2C58,$2C28,$2C58,$2C28
    Data.c $2C59,$2C29,$2C59,$2C29
    Data.c $2C5A,$2C2A,$2C5A,$2C2A
    Data.c $2C5B,$2C2B,$2C5B,$2C2B
    Data.c $2C5C,$2C2C,$2C5C,$2C2C
    Data.c $2C5D,$2C2D,$2C5D,$2C2D
    Data.c $2C5E,$2C2E,$2C5E,$2C2E
    Data.c $2C5F,$2C2F,$2C5F,$2C2F
    Data.c $2C60,$2C60,$2C61,$2C60
    Data.c $2C61,$2C60,$2C61,$2C60
    Data.c $2C62,$2C62,$026B,$2C62
    Data.c $2C63,$2C63,$1D7D,$2C63
    Data.c $2C64,$2C64,$027D,$2C64
    Data.c $2C65,$023A,$2C65,$023A
    Data.c $2C66,$023E,$2C66,$023E
    Data.c $2C67,$2C67,$2C68,$2C67
    Data.c $2C68,$2C67,$2C68,$2C67
    Data.c $2C69,$2C69,$2C6A,$2C69
    Data.c $2C6A,$2C69,$2C6A,$2C69
    Data.c $2C6B,$2C6B,$2C6C,$2C6B
    Data.c $2C6C,$2C6B,$2C6C,$2C6B
    Data.c $2C6D,$2C6D,$0251,$2C6D
    Data.c $2C6E,$2C6E,$0271,$2C6E
    Data.c $2C6F,$2C6F,$0250,$2C6F
    Data.c $2C70,$2C70,$0252,$2C70
    Data.c $2C72,$2C72,$2C73,$2C72
    Data.c $2C73,$2C72,$2C73,$2C72
    Data.c $2C75,$2C75,$2C76,$2C75
    Data.c $2C76,$2C75,$2C76,$2C75
    Data.c $2C7E,$2C7E,$023F,$2C7E
    Data.c $2C7F,$2C7F,$0240,$2C7F
    Data.c $2C80,$2C80,$2C81,$2C80
    Data.c $2C81,$2C80,$2C81,$2C80
    Data.c $2C82,$2C82,$2C83,$2C82
    Data.c $2C83,$2C82,$2C83,$2C82
    Data.c $2C84,$2C84,$2C85,$2C84
    Data.c $2C85,$2C84,$2C85,$2C84
    Data.c $2C86,$2C86,$2C87,$2C86
    Data.c $2C87,$2C86,$2C87,$2C86
    Data.c $2C88,$2C88,$2C89,$2C88
    Data.c $2C89,$2C88,$2C89,$2C88
    Data.c $2C8A,$2C8A,$2C8B,$2C8A
    Data.c $2C8B,$2C8A,$2C8B,$2C8A
    Data.c $2C8C,$2C8C,$2C8D,$2C8C
    Data.c $2C8D,$2C8C,$2C8D,$2C8C
    Data.c $2C8E,$2C8E,$2C8F,$2C8E
    Data.c $2C8F,$2C8E,$2C8F,$2C8E
    Data.c $2C90,$2C90,$2C91,$2C90
    Data.c $2C91,$2C90,$2C91,$2C90
    Data.c $2C92,$2C92,$2C93,$2C92
    Data.c $2C93,$2C92,$2C93,$2C92
    Data.c $2C94,$2C94,$2C95,$2C94
    Data.c $2C95,$2C94,$2C95,$2C94
    Data.c $2C96,$2C96,$2C97,$2C96
    Data.c $2C97,$2C96,$2C97,$2C96
    Data.c $2C98,$2C98,$2C99,$2C98
    Data.c $2C99,$2C98,$2C99,$2C98
    Data.c $2C9A,$2C9A,$2C9B,$2C9A
    Data.c $2C9B,$2C9A,$2C9B,$2C9A
    Data.c $2C9C,$2C9C,$2C9D,$2C9C
    Data.c $2C9D,$2C9C,$2C9D,$2C9C
    Data.c $2C9E,$2C9E,$2C9F,$2C9E
    Data.c $2C9F,$2C9E,$2C9F,$2C9E
    Data.c $2CA0,$2CA0,$2CA1,$2CA0
    Data.c $2CA1,$2CA0,$2CA1,$2CA0
    Data.c $2CA2,$2CA2,$2CA3,$2CA2
    Data.c $2CA3,$2CA2,$2CA3,$2CA2
    Data.c $2CA4,$2CA4,$2CA5,$2CA4
    Data.c $2CA5,$2CA4,$2CA5,$2CA4
    Data.c $2CA6,$2CA6,$2CA7,$2CA6
    Data.c $2CA7,$2CA6,$2CA7,$2CA6
    Data.c $2CA8,$2CA8,$2CA9,$2CA8
    Data.c $2CA9,$2CA8,$2CA9,$2CA8
    Data.c $2CAA,$2CAA,$2CAB,$2CAA
    Data.c $2CAB,$2CAA,$2CAB,$2CAA
    Data.c $2CAC,$2CAC,$2CAD,$2CAC
    Data.c $2CAD,$2CAC,$2CAD,$2CAC
    Data.c $2CAE,$2CAE,$2CAF,$2CAE
    Data.c $2CAF,$2CAE,$2CAF,$2CAE
    Data.c $2CB0,$2CB0,$2CB1,$2CB0
    Data.c $2CB1,$2CB0,$2CB1,$2CB0
    Data.c $2CB2,$2CB2,$2CB3,$2CB2
    Data.c $2CB3,$2CB2,$2CB3,$2CB2
    Data.c $2CB4,$2CB4,$2CB5,$2CB4
    Data.c $2CB5,$2CB4,$2CB5,$2CB4
    Data.c $2CB6,$2CB6,$2CB7,$2CB6
    Data.c $2CB7,$2CB6,$2CB7,$2CB6
    Data.c $2CB8,$2CB8,$2CB9,$2CB8
    Data.c $2CB9,$2CB8,$2CB9,$2CB8
    Data.c $2CBA,$2CBA,$2CBB,$2CBA
    Data.c $2CBB,$2CBA,$2CBB,$2CBA
    Data.c $2CBC,$2CBC,$2CBD,$2CBC
    Data.c $2CBD,$2CBC,$2CBD,$2CBC
    Data.c $2CBE,$2CBE,$2CBF,$2CBE
    Data.c $2CBF,$2CBE,$2CBF,$2CBE
    Data.c $2CC0,$2CC0,$2CC1,$2CC0
    Data.c $2CC1,$2CC0,$2CC1,$2CC0
    Data.c $2CC2,$2CC2,$2CC3,$2CC2
    Data.c $2CC3,$2CC2,$2CC3,$2CC2
    Data.c $2CC4,$2CC4,$2CC5,$2CC4
    Data.c $2CC5,$2CC4,$2CC5,$2CC4
    Data.c $2CC6,$2CC6,$2CC7,$2CC6
    Data.c $2CC7,$2CC6,$2CC7,$2CC6
    Data.c $2CC8,$2CC8,$2CC9,$2CC8
    Data.c $2CC9,$2CC8,$2CC9,$2CC8
    Data.c $2CCA,$2CCA,$2CCB,$2CCA
    Data.c $2CCB,$2CCA,$2CCB,$2CCA
    Data.c $2CCC,$2CCC,$2CCD,$2CCC
    Data.c $2CCD,$2CCC,$2CCD,$2CCC
    Data.c $2CCE,$2CCE,$2CCF,$2CCE
    Data.c $2CCF,$2CCE,$2CCF,$2CCE
    Data.c $2CD0,$2CD0,$2CD1,$2CD0
    Data.c $2CD1,$2CD0,$2CD1,$2CD0
    Data.c $2CD2,$2CD2,$2CD3,$2CD2
    Data.c $2CD3,$2CD2,$2CD3,$2CD2
    Data.c $2CD4,$2CD4,$2CD5,$2CD4
    Data.c $2CD5,$2CD4,$2CD5,$2CD4
    Data.c $2CD6,$2CD6,$2CD7,$2CD6
    Data.c $2CD7,$2CD6,$2CD7,$2CD6
    Data.c $2CD8,$2CD8,$2CD9,$2CD8
    Data.c $2CD9,$2CD8,$2CD9,$2CD8
    Data.c $2CDA,$2CDA,$2CDB,$2CDA
    Data.c $2CDB,$2CDA,$2CDB,$2CDA
    Data.c $2CDC,$2CDC,$2CDD,$2CDC
    Data.c $2CDD,$2CDC,$2CDD,$2CDC
    Data.c $2CDE,$2CDE,$2CDF,$2CDE
    Data.c $2CDF,$2CDE,$2CDF,$2CDE
    Data.c $2CE0,$2CE0,$2CE1,$2CE0
    Data.c $2CE1,$2CE0,$2CE1,$2CE0
    Data.c $2CE2,$2CE2,$2CE3,$2CE2
    Data.c $2CE3,$2CE2,$2CE3,$2CE2
    Data.c $2CEB,$2CEB,$2CEC,$2CEB
    Data.c $2CEC,$2CEB,$2CEC,$2CEB
    Data.c $2CED,$2CED,$2CEE,$2CED
    Data.c $2CEE,$2CED,$2CEE,$2CED
    Data.c $2CF2,$2CF2,$2CF3,$2CF2
    Data.c $2CF3,$2CF2,$2CF3,$2CF2
    Data.c $2D00,$10A0,$2D00,$10A0
    Data.c $2D01,$10A1,$2D01,$10A1
    Data.c $2D02,$10A2,$2D02,$10A2
    Data.c $2D03,$10A3,$2D03,$10A3
    Data.c $2D04,$10A4,$2D04,$10A4
    Data.c $2D05,$10A5,$2D05,$10A5
    Data.c $2D06,$10A6,$2D06,$10A6
    Data.c $2D07,$10A7,$2D07,$10A7
    Data.c $2D08,$10A8,$2D08,$10A8
    Data.c $2D09,$10A9,$2D09,$10A9
    Data.c $2D0A,$10AA,$2D0A,$10AA
    Data.c $2D0B,$10AB,$2D0B,$10AB
    Data.c $2D0C,$10AC,$2D0C,$10AC
    Data.c $2D0D,$10AD,$2D0D,$10AD
    Data.c $2D0E,$10AE,$2D0E,$10AE
    Data.c $2D0F,$10AF,$2D0F,$10AF
    Data.c $2D10,$10B0,$2D10,$10B0
    Data.c $2D11,$10B1,$2D11,$10B1
    Data.c $2D12,$10B2,$2D12,$10B2
    Data.c $2D13,$10B3,$2D13,$10B3
    Data.c $2D14,$10B4,$2D14,$10B4
    Data.c $2D15,$10B5,$2D15,$10B5
    Data.c $2D16,$10B6,$2D16,$10B6
    Data.c $2D17,$10B7,$2D17,$10B7
    Data.c $2D18,$10B8,$2D18,$10B8
    Data.c $2D19,$10B9,$2D19,$10B9
    Data.c $2D1A,$10BA,$2D1A,$10BA
    Data.c $2D1B,$10BB,$2D1B,$10BB
    Data.c $2D1C,$10BC,$2D1C,$10BC
    Data.c $2D1D,$10BD,$2D1D,$10BD
    Data.c $2D1E,$10BE,$2D1E,$10BE
    Data.c $2D1F,$10BF,$2D1F,$10BF
    Data.c $2D20,$10C0,$2D20,$10C0
    Data.c $2D21,$10C1,$2D21,$10C1
    Data.c $2D22,$10C2,$2D22,$10C2
    Data.c $2D23,$10C3,$2D23,$10C3
    Data.c $2D24,$10C4,$2D24,$10C4
    Data.c $2D25,$10C5,$2D25,$10C5
    Data.c $2D27,$10C7,$2D27,$10C7
    Data.c $2D2D,$10CD,$2D2D,$10CD
    Data.c $A640,$A640,$A641,$A640
    Data.c $A641,$A640,$A641,$A640
    Data.c $A642,$A642,$A643,$A642
    Data.c $A643,$A642,$A643,$A642
    Data.c $A644,$A644,$A645,$A644
    Data.c $A645,$A644,$A645,$A644
    Data.c $A646,$A646,$A647,$A646
    Data.c $A647,$A646,$A647,$A646
    Data.c $A648,$A648,$A649,$A648
    Data.c $A649,$A648,$A649,$A648
    Data.c $A64A,$A64A,$A64B,$A64A
    Data.c $A64B,$A64A,$A64B,$A64A
    Data.c $A64C,$A64C,$A64D,$A64C
    Data.c $A64D,$A64C,$A64D,$A64C
    Data.c $A64E,$A64E,$A64F,$A64E
    Data.c $A64F,$A64E,$A64F,$A64E
    Data.c $A650,$A650,$A651,$A650
    Data.c $A651,$A650,$A651,$A650
    Data.c $A652,$A652,$A653,$A652
    Data.c $A653,$A652,$A653,$A652
    Data.c $A654,$A654,$A655,$A654
    Data.c $A655,$A654,$A655,$A654
    Data.c $A656,$A656,$A657,$A656
    Data.c $A657,$A656,$A657,$A656
    Data.c $A658,$A658,$A659,$A658
    Data.c $A659,$A658,$A659,$A658
    Data.c $A65A,$A65A,$A65B,$A65A
    Data.c $A65B,$A65A,$A65B,$A65A
    Data.c $A65C,$A65C,$A65D,$A65C
    Data.c $A65D,$A65C,$A65D,$A65C
    Data.c $A65E,$A65E,$A65F,$A65E
    Data.c $A65F,$A65E,$A65F,$A65E
    Data.c $A660,$A660,$A661,$A660
    Data.c $A661,$A660,$A661,$A660
    Data.c $A662,$A662,$A663,$A662
    Data.c $A663,$A662,$A663,$A662
    Data.c $A664,$A664,$A665,$A664
    Data.c $A665,$A664,$A665,$A664
    Data.c $A666,$A666,$A667,$A666
    Data.c $A667,$A666,$A667,$A666
    Data.c $A668,$A668,$A669,$A668
    Data.c $A669,$A668,$A669,$A668
    Data.c $A66A,$A66A,$A66B,$A66A
    Data.c $A66B,$A66A,$A66B,$A66A
    Data.c $A66C,$A66C,$A66D,$A66C
    Data.c $A66D,$A66C,$A66D,$A66C
    Data.c $A680,$A680,$A681,$A680
    Data.c $A681,$A680,$A681,$A680
    Data.c $A682,$A682,$A683,$A682
    Data.c $A683,$A682,$A683,$A682
    Data.c $A684,$A684,$A685,$A684
    Data.c $A685,$A684,$A685,$A684
    Data.c $A686,$A686,$A687,$A686
    Data.c $A687,$A686,$A687,$A686
    Data.c $A688,$A688,$A689,$A688
    Data.c $A689,$A688,$A689,$A688
    Data.c $A68A,$A68A,$A68B,$A68A
    Data.c $A68B,$A68A,$A68B,$A68A
    Data.c $A68C,$A68C,$A68D,$A68C
    Data.c $A68D,$A68C,$A68D,$A68C
    Data.c $A68E,$A68E,$A68F,$A68E
    Data.c $A68F,$A68E,$A68F,$A68E
    Data.c $A690,$A690,$A691,$A690
    Data.c $A691,$A690,$A691,$A690
    Data.c $A692,$A692,$A693,$A692
    Data.c $A693,$A692,$A693,$A692
    Data.c $A694,$A694,$A695,$A694
    Data.c $A695,$A694,$A695,$A694
    Data.c $A696,$A696,$A697,$A696
    Data.c $A697,$A696,$A697,$A696
    Data.c $A698,$A698,$A699,$A698
    Data.c $A699,$A698,$A699,$A698
    Data.c $A69A,$A69A,$A69B,$A69A
    Data.c $A69B,$A69A,$A69B,$A69A
    Data.c $A722,$A722,$A723,$A722
    Data.c $A723,$A722,$A723,$A722
    Data.c $A724,$A724,$A725,$A724
    Data.c $A725,$A724,$A725,$A724
    Data.c $A726,$A726,$A727,$A726
    Data.c $A727,$A726,$A727,$A726
    Data.c $A728,$A728,$A729,$A728
    Data.c $A729,$A728,$A729,$A728
    Data.c $A72A,$A72A,$A72B,$A72A
    Data.c $A72B,$A72A,$A72B,$A72A
    Data.c $A72C,$A72C,$A72D,$A72C
    Data.c $A72D,$A72C,$A72D,$A72C
    Data.c $A72E,$A72E,$A72F,$A72E
    Data.c $A72F,$A72E,$A72F,$A72E
    Data.c $A732,$A732,$A733,$A732
    Data.c $A733,$A732,$A733,$A732
    Data.c $A734,$A734,$A735,$A734
    Data.c $A735,$A734,$A735,$A734
    Data.c $A736,$A736,$A737,$A736
    Data.c $A737,$A736,$A737,$A736
    Data.c $A738,$A738,$A739,$A738
    Data.c $A739,$A738,$A739,$A738
    Data.c $A73A,$A73A,$A73B,$A73A
    Data.c $A73B,$A73A,$A73B,$A73A
    Data.c $A73C,$A73C,$A73D,$A73C
    Data.c $A73D,$A73C,$A73D,$A73C
    Data.c $A73E,$A73E,$A73F,$A73E
    Data.c $A73F,$A73E,$A73F,$A73E
    Data.c $A740,$A740,$A741,$A740
    Data.c $A741,$A740,$A741,$A740
    Data.c $A742,$A742,$A743,$A742
    Data.c $A743,$A742,$A743,$A742
    Data.c $A744,$A744,$A745,$A744
    Data.c $A745,$A744,$A745,$A744
    Data.c $A746,$A746,$A747,$A746
    Data.c $A747,$A746,$A747,$A746
    Data.c $A748,$A748,$A749,$A748
    Data.c $A749,$A748,$A749,$A748
    Data.c $A74A,$A74A,$A74B,$A74A
    Data.c $A74B,$A74A,$A74B,$A74A
    Data.c $A74C,$A74C,$A74D,$A74C
    Data.c $A74D,$A74C,$A74D,$A74C
    Data.c $A74E,$A74E,$A74F,$A74E
    Data.c $A74F,$A74E,$A74F,$A74E
    Data.c $A750,$A750,$A751,$A750
    Data.c $A751,$A750,$A751,$A750
    Data.c $A752,$A752,$A753,$A752
    Data.c $A753,$A752,$A753,$A752
    Data.c $A754,$A754,$A755,$A754
    Data.c $A755,$A754,$A755,$A754
    Data.c $A756,$A756,$A757,$A756
    Data.c $A757,$A756,$A757,$A756
    Data.c $A758,$A758,$A759,$A758
    Data.c $A759,$A758,$A759,$A758
    Data.c $A75A,$A75A,$A75B,$A75A
    Data.c $A75B,$A75A,$A75B,$A75A
    Data.c $A75C,$A75C,$A75D,$A75C
    Data.c $A75D,$A75C,$A75D,$A75C
    Data.c $A75E,$A75E,$A75F,$A75E
    Data.c $A75F,$A75E,$A75F,$A75E
    Data.c $A760,$A760,$A761,$A760
    Data.c $A761,$A760,$A761,$A760
    Data.c $A762,$A762,$A763,$A762
    Data.c $A763,$A762,$A763,$A762
    Data.c $A764,$A764,$A765,$A764
    Data.c $A765,$A764,$A765,$A764
    Data.c $A766,$A766,$A767,$A766
    Data.c $A767,$A766,$A767,$A766
    Data.c $A768,$A768,$A769,$A768
    Data.c $A769,$A768,$A769,$A768
    Data.c $A76A,$A76A,$A76B,$A76A
    Data.c $A76B,$A76A,$A76B,$A76A
    Data.c $A76C,$A76C,$A76D,$A76C
    Data.c $A76D,$A76C,$A76D,$A76C
    Data.c $A76E,$A76E,$A76F,$A76E
    Data.c $A76F,$A76E,$A76F,$A76E
    Data.c $A779,$A779,$A77A,$A779
    Data.c $A77A,$A779,$A77A,$A779
    Data.c $A77B,$A77B,$A77C,$A77B
    Data.c $A77C,$A77B,$A77C,$A77B
    Data.c $A77D,$A77D,$1D79,$A77D
    Data.c $A77E,$A77E,$A77F,$A77E
    Data.c $A77F,$A77E,$A77F,$A77E
    Data.c $A780,$A780,$A781,$A780
    Data.c $A781,$A780,$A781,$A780
    Data.c $A782,$A782,$A783,$A782
    Data.c $A783,$A782,$A783,$A782
    Data.c $A784,$A784,$A785,$A784
    Data.c $A785,$A784,$A785,$A784
    Data.c $A786,$A786,$A787,$A786
    Data.c $A787,$A786,$A787,$A786
    Data.c $A78B,$A78B,$A78C,$A78B
    Data.c $A78C,$A78B,$A78C,$A78B
    Data.c $A78D,$A78D,$0265,$A78D
    Data.c $A790,$A790,$A791,$A790
    Data.c $A791,$A790,$A791,$A790
    Data.c $A792,$A792,$A793,$A792
    Data.c $A793,$A792,$A793,$A792
    Data.c $A794,$A7C4,$A794,$A7C4
    Data.c $A796,$A796,$A797,$A796
    Data.c $A797,$A796,$A797,$A796
    Data.c $A798,$A798,$A799,$A798
    Data.c $A799,$A798,$A799,$A798
    Data.c $A79A,$A79A,$A79B,$A79A
    Data.c $A79B,$A79A,$A79B,$A79A
    Data.c $A79C,$A79C,$A79D,$A79C
    Data.c $A79D,$A79C,$A79D,$A79C
    Data.c $A79E,$A79E,$A79F,$A79E
    Data.c $A79F,$A79E,$A79F,$A79E
    Data.c $A7A0,$A7A0,$A7A1,$A7A0
    Data.c $A7A1,$A7A0,$A7A1,$A7A0
    Data.c $A7A2,$A7A2,$A7A3,$A7A2
    Data.c $A7A3,$A7A2,$A7A3,$A7A2
    Data.c $A7A4,$A7A4,$A7A5,$A7A4
    Data.c $A7A5,$A7A4,$A7A5,$A7A4
    Data.c $A7A6,$A7A6,$A7A7,$A7A6
    Data.c $A7A7,$A7A6,$A7A7,$A7A6
    Data.c $A7A8,$A7A8,$A7A9,$A7A8
    Data.c $A7A9,$A7A8,$A7A9,$A7A8
    Data.c $A7AA,$A7AA,$0266,$A7AA
    Data.c $A7AB,$A7AB,$025C,$A7AB
    Data.c $A7AC,$A7AC,$0261,$A7AC
    Data.c $A7AD,$A7AD,$026C,$A7AD
    Data.c $A7AE,$A7AE,$026A,$A7AE
    Data.c $A7B0,$A7B0,$029E,$A7B0
    Data.c $A7B1,$A7B1,$0287,$A7B1
    Data.c $A7B2,$A7B2,$029D,$A7B2
    Data.c $A7B3,$A7B3,$AB53,$A7B3
    Data.c $A7B4,$A7B4,$A7B5,$A7B4
    Data.c $A7B5,$A7B4,$A7B5,$A7B4
    Data.c $A7B6,$A7B6,$A7B7,$A7B6
    Data.c $A7B7,$A7B6,$A7B7,$A7B6
    Data.c $A7B8,$A7B8,$A7B9,$A7B8
    Data.c $A7B9,$A7B8,$A7B9,$A7B8
    Data.c $A7BA,$A7BA,$A7BB,$A7BA
    Data.c $A7BB,$A7BA,$A7BB,$A7BA
    Data.c $A7BC,$A7BC,$A7BD,$A7BC
    Data.c $A7BD,$A7BC,$A7BD,$A7BC
    Data.c $A7BE,$A7BE,$A7BF,$A7BE
    Data.c $A7BF,$A7BE,$A7BF,$A7BE
    Data.c $A7C0,$A7C0,$A7C1,$A7C0
    Data.c $A7C1,$A7C0,$A7C1,$A7C0
    Data.c $A7C2,$A7C2,$A7C3,$A7C2
    Data.c $A7C3,$A7C2,$A7C3,$A7C2
    Data.c $A7C4,$A7C4,$A794,$A7C4
    Data.c $A7C5,$A7C5,$0282,$A7C5
    Data.c $A7C6,$A7C6,$1D8E,$A7C6
    Data.c $A7C7,$A7C7,$A7C8,$A7C7
    Data.c $A7C8,$A7C7,$A7C8,$A7C7
    Data.c $A7C9,$A7C9,$A7CA,$A7C9
    Data.c $A7CA,$A7C9,$A7CA,$A7C9
    Data.c $A7D0,$A7D0,$A7D1,$A7D0
    Data.c $A7D1,$A7D0,$A7D1,$A7D0
    Data.c $A7D6,$A7D6,$A7D7,$A7D6
    Data.c $A7D7,$A7D6,$A7D7,$A7D6
    Data.c $A7D8,$A7D8,$A7D9,$A7D8
    Data.c $A7D9,$A7D8,$A7D9,$A7D8
    Data.c $A7F5,$A7F5,$A7F6,$A7F5
    Data.c $A7F6,$A7F5,$A7F6,$A7F5
    Data.c $AB53,$A7B3,$AB53,$A7B3
    Data.c $AB70,$13A0,$AB70,$13A0
    Data.c $AB71,$13A1,$AB71,$13A1
    Data.c $AB72,$13A2,$AB72,$13A2
    Data.c $AB73,$13A3,$AB73,$13A3
    Data.c $AB74,$13A4,$AB74,$13A4
    Data.c $AB75,$13A5,$AB75,$13A5
    Data.c $AB76,$13A6,$AB76,$13A6
    Data.c $AB77,$13A7,$AB77,$13A7
    Data.c $AB78,$13A8,$AB78,$13A8
    Data.c $AB79,$13A9,$AB79,$13A9
    Data.c $AB7A,$13AA,$AB7A,$13AA
    Data.c $AB7B,$13AB,$AB7B,$13AB
    Data.c $AB7C,$13AC,$AB7C,$13AC
    Data.c $AB7D,$13AD,$AB7D,$13AD
    Data.c $AB7E,$13AE,$AB7E,$13AE
    Data.c $AB7F,$13AF,$AB7F,$13AF
    Data.c $AB80,$13B0,$AB80,$13B0
    Data.c $AB81,$13B1,$AB81,$13B1
    Data.c $AB82,$13B2,$AB82,$13B2
    Data.c $AB83,$13B3,$AB83,$13B3
    Data.c $AB84,$13B4,$AB84,$13B4
    Data.c $AB85,$13B5,$AB85,$13B5
    Data.c $AB86,$13B6,$AB86,$13B6
    Data.c $AB87,$13B7,$AB87,$13B7
    Data.c $AB88,$13B8,$AB88,$13B8
    Data.c $AB89,$13B9,$AB89,$13B9
    Data.c $AB8A,$13BA,$AB8A,$13BA
    Data.c $AB8B,$13BB,$AB8B,$13BB
    Data.c $AB8C,$13BC,$AB8C,$13BC
    Data.c $AB8D,$13BD,$AB8D,$13BD
    Data.c $AB8E,$13BE,$AB8E,$13BE
    Data.c $AB8F,$13BF,$AB8F,$13BF
    Data.c $AB90,$13C0,$AB90,$13C0
    Data.c $AB91,$13C1,$AB91,$13C1
    Data.c $AB92,$13C2,$AB92,$13C2
    Data.c $AB93,$13C3,$AB93,$13C3
    Data.c $AB94,$13C4,$AB94,$13C4
    Data.c $AB95,$13C5,$AB95,$13C5
    Data.c $AB96,$13C6,$AB96,$13C6
    Data.c $AB97,$13C7,$AB97,$13C7
    Data.c $AB98,$13C8,$AB98,$13C8
    Data.c $AB99,$13C9,$AB99,$13C9
    Data.c $AB9A,$13CA,$AB9A,$13CA
    Data.c $AB9B,$13CB,$AB9B,$13CB
    Data.c $AB9C,$13CC,$AB9C,$13CC
    Data.c $AB9D,$13CD,$AB9D,$13CD
    Data.c $AB9E,$13CE,$AB9E,$13CE
    Data.c $AB9F,$13CF,$AB9F,$13CF
    Data.c $ABA0,$13D0,$ABA0,$13D0
    Data.c $ABA1,$13D1,$ABA1,$13D1
    Data.c $ABA2,$13D2,$ABA2,$13D2
    Data.c $ABA3,$13D3,$ABA3,$13D3
    Data.c $ABA4,$13D4,$ABA4,$13D4
    Data.c $ABA5,$13D5,$ABA5,$13D5
    Data.c $ABA6,$13D6,$ABA6,$13D6
    Data.c $ABA7,$13D7,$ABA7,$13D7
    Data.c $ABA8,$13D8,$ABA8,$13D8
    Data.c $ABA9,$13D9,$ABA9,$13D9
    Data.c $ABAA,$13DA,$ABAA,$13DA
    Data.c $ABAB,$13DB,$ABAB,$13DB
    Data.c $ABAC,$13DC,$ABAC,$13DC
    Data.c $ABAD,$13DD,$ABAD,$13DD
    Data.c $ABAE,$13DE,$ABAE,$13DE
    Data.c $ABAF,$13DF,$ABAF,$13DF
    Data.c $ABB0,$13E0,$ABB0,$13E0
    Data.c $ABB1,$13E1,$ABB1,$13E1
    Data.c $ABB2,$13E2,$ABB2,$13E2
    Data.c $ABB3,$13E3,$ABB3,$13E3
    Data.c $ABB4,$13E4,$ABB4,$13E4
    Data.c $ABB5,$13E5,$ABB5,$13E5
    Data.c $ABB6,$13E6,$ABB6,$13E6
    Data.c $ABB7,$13E7,$ABB7,$13E7
    Data.c $ABB8,$13E8,$ABB8,$13E8
    Data.c $ABB9,$13E9,$ABB9,$13E9
    Data.c $ABBA,$13EA,$ABBA,$13EA
    Data.c $ABBB,$13EB,$ABBB,$13EB
    Data.c $ABBC,$13EC,$ABBC,$13EC
    Data.c $ABBD,$13ED,$ABBD,$13ED
    Data.c $ABBE,$13EE,$ABBE,$13EE
    Data.c $ABBF,$13EF,$ABBF,$13EF
    Data.c $FF21,$FF21,$FF41,$FF21
    Data.c $FF22,$FF22,$FF42,$FF22
    Data.c $FF23,$FF23,$FF43,$FF23
    Data.c $FF24,$FF24,$FF44,$FF24
    Data.c $FF25,$FF25,$FF45,$FF25
    Data.c $FF26,$FF26,$FF46,$FF26
    Data.c $FF27,$FF27,$FF47,$FF27
    Data.c $FF28,$FF28,$FF48,$FF28
    Data.c $FF29,$FF29,$FF49,$FF29
    Data.c $FF2A,$FF2A,$FF4A,$FF2A
    Data.c $FF2B,$FF2B,$FF4B,$FF2B
    Data.c $FF2C,$FF2C,$FF4C,$FF2C
    Data.c $FF2D,$FF2D,$FF4D,$FF2D
    Data.c $FF2E,$FF2E,$FF4E,$FF2E
    Data.c $FF2F,$FF2F,$FF4F,$FF2F
    Data.c $FF30,$FF30,$FF50,$FF30
    Data.c $FF31,$FF31,$FF51,$FF31
    Data.c $FF32,$FF32,$FF52,$FF32
    Data.c $FF33,$FF33,$FF53,$FF33
    Data.c $FF34,$FF34,$FF54,$FF34
    Data.c $FF35,$FF35,$FF55,$FF35
    Data.c $FF36,$FF36,$FF56,$FF36
    Data.c $FF37,$FF37,$FF57,$FF37
    Data.c $FF38,$FF38,$FF58,$FF38
    Data.c $FF39,$FF39,$FF59,$FF39
    Data.c $FF3A,$FF3A,$FF5A,$FF3A
    Data.c $FF41,$FF21,$FF41,$FF21
    Data.c $FF42,$FF22,$FF42,$FF22
    Data.c $FF43,$FF23,$FF43,$FF23
    Data.c $FF44,$FF24,$FF44,$FF24
    Data.c $FF45,$FF25,$FF45,$FF25
    Data.c $FF46,$FF26,$FF46,$FF26
    Data.c $FF47,$FF27,$FF47,$FF27
    Data.c $FF48,$FF28,$FF48,$FF28
    Data.c $FF49,$FF29,$FF49,$FF29
    Data.c $FF4A,$FF2A,$FF4A,$FF2A
    Data.c $FF4B,$FF2B,$FF4B,$FF2B
    Data.c $FF4C,$FF2C,$FF4C,$FF2C
    Data.c $FF4D,$FF2D,$FF4D,$FF2D
    Data.c $FF4E,$FF2E,$FF4E,$FF2E
    Data.c $FF4F,$FF2F,$FF4F,$FF2F
    Data.c $FF50,$FF30,$FF50,$FF30
    Data.c $FF51,$FF31,$FF51,$FF31
    Data.c $FF52,$FF32,$FF52,$FF32
    Data.c $FF53,$FF33,$FF53,$FF33
    Data.c $FF54,$FF34,$FF54,$FF34
    Data.c $FF55,$FF35,$FF55,$FF35
    Data.c $FF56,$FF36,$FF56,$FF36
    Data.c $FF57,$FF37,$FF57,$FF37
    Data.c $FF58,$FF38,$FF58,$FF38
    Data.c $FF59,$FF39,$FF59,$FF39
    Data.c $FF5A,$FF3A,$FF5A,$FF3A
    Data.c $0000
  EndDataSection
  
EndModule

;- End Of Module

CompilerIf #PB_Compiler_IsMainFile
  
  UseModule CaseUnicode
  
  Debug "PB-LCase"
  t1.s = "ABCdef 0123456789, äöü, ÄÖÜ, áóú"
  r1.s = LCase(t1)
  Debug r1
  
  Debug "Uni-LCase"
  t1.s = "ABCdef 0123456789, äöü, ÄÖÜ, áóú"
  r1.s = LCaseW(t1)
  Debug r1
  
  Debug "PB-UCase"
  t1.s = "ABCdef 0123456789, äöü, ÄÖÜ, áóú"
  r1.s = UCase(t1)
  Debug r1
  
  Debug "Uni-UCase"
  t1.s = "ABCdef 0123456789, äöü, ÄÖÜ, áóú"
  r1.s = UCaseW(t1)
  Debug r1
  
  Debug "PB-FindString"
  Debug FindString(t1, "äÖ", 1, #PB_String_NoCase)
  
  Debug "Uni-FindString"
  Debug FindStringW(t1, "äÖ")
  
  Debug "Uni-ULCase"
  t1.s = "ABCdef 0123456789, äöü, ÄÖÜ, áóú"
  r1.s = ULCaseW(t1)
  Debug r1
  
  Debug "Uni-ULCase"
  t1.s = "h e l l o  w o r l d"
  r1.s = ULCaseW(t1)
  Debug r1
  
CompilerEndIf
Last edited by mk-soft on Sun Oct 09, 2022 2:48 pm, edited 1 time in total.
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Upper and Lower Case Mapping for Unicode

Post by mk-soft »

Update v1.03
- Added FindStringW(...)

Tested now under all OS
PB-Function UCase and LCase don´t work under MacOS and FindString don´t work on all OS
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
mestnyi
Addict
Addict
Posts: 995
Joined: Mon Nov 25, 2013 6:41 am

Re: Upper and Lower Case Mapping for Unicode

Post by mestnyi »

Code: Select all

PB-LCase
abcdef 0123456789, äöü, äöü, áóú
Uni-LCase
abcdef 0123456789, äöü, äöü, áóú
PB-UCase
ABCDEF 0123456789, ÄÖÜ, ÄÖÜ, ÁÓÚ
Uni-UCase
ABCDEF 0123456789, ÄÖÜ, ÄÖÜ, ÁÓÚ
PB-FindString
0
Uni-FindString
20
I do not work only FindString() :)

You can not add, and here's a procedure that will return this result. :)
Uni-ULCase
Abcdef 0123456789, Äöü, Äöü, Áóú
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Upper and Lower Case Mapping for Unicode

Post by mk-soft »

Nice idea,

The case distinction still has to be worked on...

Update v1.04
- Added ULCaseW(...)

:wink:

P.S. Forum can´t character '&nbsp' :(

Code: Select all

Debug "Uni-ULCase"
  t1.s = "h e l l o  w o r l d"
  ReplaceString(t1, " ", Chr($A0), #PB_String_InPlace)
  r1.s = ULCaseW(t1)
  Debug r1
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
mestnyi
Addict
Addict
Posts: 995
Joined: Mon Nov 25, 2013 6:41 am

Re: Upper and Lower Case Mapping for Unicode

Post by mestnyi »

Works very well thanks :)
User avatar
Sicro
Enthusiast
Enthusiast
Posts: 538
Joined: Wed Jun 25, 2014 5:25 pm
Location: Germany
Contact:

Re: Upper and Lower Case Mapping for Unicode

Post by Sicro »

Hello mk-soft,

I see that you are applying case folding to do the conversion (CaseFolding.txt). This is wrong.

Case folding is used to compare two strings, case-insensitively. Case folding must be applied to both strings before they are compared:

Code: Select all

string1$ = "HELLO"
string2$ = "hello"

; Check if the strings are identical (case-insensitive)
If CaseFold(string1$) = CaseFold(string2$)
  Debug "Strings are identical"
EndIf

What you need in your code is case mapping (UnicodeData.txt).
https://unicode.org/faq/casemap_charprop.html#2 wrote:Case mapping or case conversion is a process whereby strings are converted to a particular form—uppercase, lowercase, or titlecase—possibly for display to the user. Case folding is mostly used for caseless comparison of text, such as identifiers in a computer program, rather than actual text transformation. Case folding in Unicode is primarily based on the lowercase mapping, but includes additional changes to the source text to help make it language-insensitive and consistent. As a result, case-folded text should be used solely for internal processing and generally should not be stored or displayed to the end user.

An example code that demonstrates that your procedures give wrong results:

Code: Select all

#Cherokee_Letter_A$ = Chr($13A0)
#Cherokee_Small_Letter_A$ = Chr($AB70)

Debug "'" + UCaseW(#Cherokee_Letter_A$) + "' should be '" + #Cherokee_Letter_A$ + "'"
Debug "'" + LCaseW(#Cherokee_Small_Letter_A$) + "' should be '" + #Cherokee_Small_Letter_A$ + "'"

Debug "'" + UCaseW(#Cherokee_Small_Letter_A$) + "' should be '" + #Cherokee_Letter_A$ + "'"
Debug "'" + LCaseW(#Cherokee_Letter_A$) + "' should be '" + #Cherokee_Small_Letter_A$ + "'"
Debug output wrote:'ꭰ' should be 'Ꭰ'
'Ꭰ' should be 'ꭰ'
'ꭰ' should be 'Ꭰ'
'Ꭰ' should be 'ꭰ'
Image
Why OpenSource should have a license :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (syntax color scheme) :: RegEx-Engine (compiles RegExes to NFA/DFA)
Manjaro Xfce x64 (Main system) :: Windows 10 Home (VirtualBox) :: Newest PureBasic version
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Upper and Lower Case Mapping for Unicode

Post by mk-soft »

Update v1.06
- Bugfix Data Table

Wrong table from $13A0 to $13EF corrected ... :wink:
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
Sicro
Enthusiast
Enthusiast
Posts: 538
Joined: Wed Jun 25, 2014 5:25 pm
Location: Germany
Contact:

Re: Upper and Lower Case Mapping for Unicode

Post by Sicro »

You are still using case folding instead of case mapping on some characters:

Code: Select all

; returns '3BC' and this is wrong, because this is case folding
Debug Hex(Asc(LCaseW(Chr($00B5))))
; correct is 'B5' again (case mapping)

; returns 'B5' and this is wrong
Debug Hex(Asc(UCaseW(Chr($00B5))))
; correct is '39C'
Look at: https://www.unicode.org/charts/case/ => Greek

Here is a code that parses the UnicodeData file:

Code: Select all

Define file$ = "UnicodeData.txt"

If Not ReadFile(0, file$)
  Debug "Error"
  End
EndIf

While Not Eof(0)
  line$ = ReadString(0)
  left$ = StringField(line$, 1, ";")
  right$ = StringField(line$, 14, ";")
  If right$ = ""
    right$ = StringField(line$, 13, ";")
  EndIf
  If Val("$" + left$) > $FFFF
    Break
  EndIf
  If left$ <> "" And right$ <> ""
    Debug "$" + left$ + " ---- " + "$" + right$
  EndIf
Wend

CloseFile(0)
Image
Why OpenSource should have a license :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (syntax color scheme) :: RegEx-Engine (compiles RegExes to NFA/DFA)
Manjaro Xfce x64 (Main system) :: Windows 10 Home (VirtualBox) :: Newest PureBasic version
User avatar
mk-soft
Always Here
Always Here
Posts: 5335
Joined: Fri May 12, 2006 6:51 pm
Location: Germany

Re: Upper and Lower Case Mapping for Unicode

Post by mk-soft »

So new separate tables for quick access.

code; lcase; ucase

It would be nice to have a list to download
My Projects ThreadToGUI / OOP-BaseClass / EventDesigner V3
PB v3.30 / v5.75 - OS Mac Mini OSX 10.xx - VM Window Pro / Linux Ubuntu
Downloads on my Webspace / OneDrive
User avatar
Sicro
Enthusiast
Enthusiast
Posts: 538
Joined: Wed Jun 25, 2014 5:25 pm
Location: Germany
Contact:

Re: Upper and Lower Case Mapping for Unicode

Post by Sicro »

mk-soft wrote: Sun Jun 26, 2022 12:58 pm code; lcase; ucase

It would be nice to have a list to download
Here:

Code: Select all

; Case mapping table file:
; https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt

; UnicodeData file structure documentation:
; https://www.unicode.org/L2/L1999/UnicodeData.html

; by Sicro, 26.06.2022

EnableExplicit

Define file$, line$, code$, upperCase$, lowerCase$, titleCase$

file$ = GetTemporaryDirectory() + "UnicodeData.txt"

If Not ReceiveHTTPFile("https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt", file$)
  Debug "Download error"
  End
EndIf

If Not ReadFile(0, file$)
  Debug "Read file error"
  End
EndIf

While Not Eof(0)
  line$ = ReadString(0)
  code$ = StringField(line$, 1, ";")
  If Val("$" + code$) > $FFFF
    ; PureBasic supports only character codes up to $FFFF
    Break
  EndIf
  upperCase$ = StringField(line$, 13, ";")
  lowerCase$ = StringField(line$, 14, ";")
  titleCase$ = StringField(line$, 15, ";")
  Debug code$ + ";" + upperCase$ + ";" + lowerCase$ + ";" + titleCase$
Wend

CloseFile(0)
Image
Why OpenSource should have a license :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (syntax color scheme) :: RegEx-Engine (compiles RegExes to NFA/DFA)
Manjaro Xfce x64 (Main system) :: Windows 10 Home (VirtualBox) :: Newest PureBasic version
User avatar
idle
Always Here
Always Here
Posts: 5042
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Upper and Lower Case Mapping for Unicode

Post by idle »

This should work for UCS2
https://www.ibm.com/docs/en/i/7.1?topic ... ping-table

sorry I didn't read the whole thread. :oops:

Code: Select all

Global Dim UCS2_UCase($FF5A) 
Global Dim UCS2_LCase($FF5A) 

Procedure UCS2_Init() 
  Protected lchar,uchar  
  
  Restore UCS2
  Repeat 
    Read.u lchar 
    Read.u uchar 
    
    If lchar 
      UCS2_LCase(lchar) = uchar  
      UCS2_UCase(uchar) = lchar 
    EndIf 
    
  Until lchar = 0 
  
  DataSection: UCS2: 
    Data.w $0041,$0061,$0042,$0062,$0043,$0063,$0044,$0064
    Data.w $0045,$0065,$0046,$0066,$0047,$0067,$0048,$0068
    Data.w $0049,$0069,$004A,$006A,$004B,$006B,$004C,$006C
    Data.w $004D,$006D,$004E,$006E,$004F,$006F,$0050,$0070
    Data.w $0051,$0071,$0052,$0072,$0053,$0073,$0054,$0074
    Data.w $0055,$0075,$0056,$0076,$0057,$0077,$0058,$0078
    Data.w $0059,$0079,$005A,$007A,$00C0,$00E0,$00C1,$00E1
    Data.w $00C2,$00E2,$00C3,$00E3,$00C4,$00E4,$00C5,$00E5
    Data.w $00C6,$00E6,$00C7,$00E7,$00C8,$00E8,$00C9,$00E9
    Data.w $00CA,$00EA,$00CB,$00EB,$00CC,$00EC,$00CD,$00ED
    Data.w $00CE,$00EE,$00CF,$00EF,$00D0,$00F0,$00D1,$00F1
    Data.w $00D2,$00F2,$00D3,$00F3,$00D4,$00F4,$00D5,$00F5
    Data.w $00D6,$00F6,$00D8,$00F8,$00D9,$00F9,$00DA,$00FA
    Data.w $00DB,$00FB,$00DC,$00FC,$00DD,$00FD,$00DE,$00FE
    Data.w $0100,$0101,$0102,$0103,$0104,$0105,$0106,$0107
    Data.w $0108,$0109,$010A,$010B,$010C,$010D,$010E,$010F
    Data.w $0110,$0111,$0112,$0113,$0114,$0115,$0116,$0117
    Data.w $0118,$0119,$011A,$011B,$011C,$011D,$011E,$011F
    Data.w $0120,$0121,$0122,$0123,$0124,$0125,$0126,$0127
    Data.w $0128,$0129,$012A,$012B,$012C,$012D,$012E,$012F
    Data.w $0130,$0069,$0132,$0133,$0134,$0135,$0136,$0137
    Data.w $0139,$013A,$013B,$013C,$013D,$013E,$013F,$0140
    Data.w $0141,$0142,$0143,$0144,$0145,$0146,$0147,$0148
    Data.w $014A,$014B,$014C,$014D,$014E,$014F,$0150,$0151
    Data.w $0152,$0153,$0154,$0155,$0156,$0157,$0158,$0159
    Data.w $015A,$015B,$015C,$015D,$015E,$015F,$0160,$0161
    Data.w $0162,$0163,$0164,$0165,$0166,$0167,$0168,$0169
    Data.w $016A,$016B,$016C,$016D,$016E,$016F,$0170,$0171
    Data.w $0172,$0173,$0174,$0175,$0176,$0177,$0178,$00FF
    Data.w $0179,$017A,$017B,$017C,$017D,$017E,$0181,$0253
    Data.w $0182,$0183,$0184,$0185,$0186,$0254,$0187,$0188
    Data.w $018A,$0257,$018B,$018C,$018E,$0258,$018F,$0259
    Data.w $0190,$025B,$0191,$0192,$0193,$0260,$0194,$0263
    Data.w $0196,$0269,$0197,$0268,$0198,$0199,$019C,$026F
    Data.w $019D,$0272,$019F,$0275,$01A0,$01A1,$01A2,$01A3
    Data.w $01A4,$01A5,$01A7,$01A8,$01A9,$0283,$01AC,$01AD
    Data.w $01AE,$0288,$01AF,$01B0,$01B1,$028A,$01B2,$028B
    Data.w $01B3,$01B4,$01B5,$01B6,$01B7,$0292,$01B8,$01B9
    Data.w $01BC,$01BD,$01C4,$01C6,$01C5,$01C6,$01C7,$01C9
    Data.w $01C8,$01C9,$01CA,$01CC,$01CB,$01CC,$01CD,$01CE
    Data.w $01CF,$01D0,$01D1,$01D2,$01D3,$01D4,$01D5,$01D6
    Data.w $01D7,$01D8,$01D9,$01DA,$01DB,$01DC,$01DE,$01DF
    Data.w $01E0,$01E1,$01E2,$01E3,$01E4,$01E5,$01E6,$01E7
    Data.w $01E8,$01E9,$01EA,$01EB,$01EC,$01ED,$01EE,$01EF
    Data.w $01F1,$01F3,$01F4,$01F5,$01FA,$01FB,$01FC,$01FD
    Data.w $01FE,$01FF,$0200,$0201,$0202,$0203,$0204,$0205
    Data.w $0206,$0207,$0208,$0209,$020A,$020B,$020C,$020D
    Data.w $020E,$020F,$0210,$0211,$0212,$0213,$0214,$0215
    Data.w $0216,$0217,$0386,$03AC,$0388,$03AD,$0389,$03AE
    Data.w $038A,$03AF,$038C,$03CC,$038E,$03CD,$038F,$03CE
    Data.w $0391,$03B1,$0392,$03B2,$0393,$03B3,$0394,$03B4
    Data.w $0395,$03B5,$0396,$03B6,$0397,$03B7,$0398,$03B8
    Data.w $0399,$03B9,$039A,$03BA,$039B,$03BB,$039C,$03BC
    Data.w $039D,$03BD,$039E,$03BE,$039F,$03BF,$03A0,$03C0
    Data.w $03A1,$03C1,$03A3,$03C3,$03A4,$03C4,$03A5,$03C5
    Data.w $03A6,$03C6,$03A7,$03C7,$03A8,$03C8,$03A9,$03C9
    Data.w $03AA,$03CA,$03AB,$03CB,$03E2,$03E3,$03E4,$03E5
    Data.w $03E6,$03E7,$03E8,$03E9,$03EA,$03EB,$03EC,$03ED
    Data.w $03EE,$03EF,$0401,$0451,$0402,$0452,$0403,$0453
    Data.w $0404,$0454,$0405,$0455,$0406,$0456,$0407,$0457
    Data.w $0408,$0458,$0409,$0459,$040A,$045A,$040B,$045B
    Data.w $040C,$045C,$040E,$045E,$040F,$045F,$0410,$0430
    Data.w $0411,$0431,$0412,$0432,$0413,$0433,$0414,$0434
    Data.w $0415,$0435,$0416,$0436,$0417,$0437,$0418,$0438
    Data.w $0419,$0439,$041A,$043A,$041B,$043B,$041C,$043C
    Data.w $041D,$043D,$041E,$043E,$041F,$043F,$0420,$0440
    Data.w $0421,$0441,$0422,$0442,$0423,$0443,$0424,$0444
    Data.w $0425,$0445,$0426,$0446,$0427,$0447,$0428,$0448
    Data.w $0429,$0449,$042A,$044A,$042B,$044B,$042C,$044C
    Data.w $042D,$044D,$042E,$044E,$042F,$044F,$0460,$0461
    Data.w $0462,$0463,$0464,$0465,$0466,$0467,$0468,$0469
    Data.w $046A,$046B,$046C,$046D,$046E,$046F,$0470,$0471
    Data.w $0472,$0473,$0474,$0475,$0476,$0477,$0478,$0479
    Data.w $047A,$047B,$047C,$047D,$047E,$047F,$0480,$0481
    Data.w $0490,$0491,$0492,$0493,$0494,$0495,$0496,$0497
    Data.w $0498,$0499,$049A,$049B,$049C,$049D,$049E,$049F
    Data.w $04A0,$04A1,$04A2,$04A3,$04A4,$04A5,$04A6,$04A7
    Data.w $04A8,$04A9,$04AA,$04AB,$04AC,$04AD,$04AE,$04AF
    Data.w $04B0,$04B1,$04B2,$04B3,$04B4,$04B5,$04B6,$04B7
    Data.w $04B8,$04B9,$04BA,$04BB,$04BC,$04BD,$04BE,$04BF
    Data.w $04C1,$04C2,$04C3,$04C4,$04C7,$04C8,$04CB,$04CC
    Data.w $04D0,$04D1,$04D2,$04D3,$04D4,$04D5,$04D6,$04D7
    Data.w $04D8,$04D9,$04DA,$04DB,$04DC,$04DD,$04DE,$04DF
    Data.w $04E0,$04E1,$04E2,$04E3,$04E4,$04E5,$04E6,$04E7
    Data.w $04E8,$04E9,$04EA,$04EB,$04EE,$04EF,$04F0,$04F1
    Data.w $04F2,$04F3,$04F4,$04F5,$04F8,$04F9,$0531,$0561
    Data.w $0532,$0562,$0533,$0563,$0534,$0564,$0535,$0565
    Data.w $0536,$0566,$0537,$0567,$0538,$0568,$0539,$0569
    Data.w $053A,$056A,$053B,$056B,$053C,$056C,$053D,$056D
    Data.w $053E,$056E,$053F,$056F,$0540,$0570,$0541,$0571
    Data.w $0542,$0572,$0543,$0573,$0544,$0574,$0545,$0575
    Data.w $0546,$0576,$0547,$0577,$0548,$0578,$0549,$0579
    Data.w $054A,$057A,$054B,$057B,$054C,$057C,$054D,$057D
    Data.w $054E,$057E,$054F,$057F,$0550,$0580,$0551,$0581
    Data.w $0552,$0582,$0553,$0583,$0554,$0584,$0555,$0585
    Data.w $0556,$0586,$10A0,$10D0,$10A1,$10D1,$10A2,$10D2
    Data.w $10A3,$10D3,$10A4,$10D4,$10A5,$10D5,$10A6,$10D6
    Data.w $10A7,$10D7,$10A8,$10D8,$10A9,$10D9,$10AA,$10DA
    Data.w $10AB,$10DB,$10AC,$10DC,$10AD,$10DD,$10AE,$10DE
    Data.w $10AF,$10DF,$10B0,$10E0,$10B1,$10E1,$10B2,$10E2
    Data.w $10B3,$10E3,$10B4,$10E4,$10B5,$10E5,$10B6,$10E6
    Data.w $10B7,$10E7,$10B8,$10E8,$10B9,$10E9,$10BA,$10EA
    Data.w $10BB,$10EB,$10BC,$10EC,$10BD,$10ED,$10BE,$10EE
    Data.w $10BF,$10EF,$10C0,$10F0,$10C1,$10F1,$10C2,$10F2
    Data.w $10C3,$10F3,$10C4,$10F4,$10C5,$10F5,$1E00,$1E01
    Data.w $1E02,$1E03,$1E04,$1E05,$1E06,$1E07,$1E08,$1E09
    Data.w $1E0A,$1E0B,$1E0C,$1E0D,$1E0E,$1E0F,$1E10,$1E11
    Data.w $1E12,$1E13,$1E14,$1E15,$1E16,$1E17,$1E18,$1E19
    Data.w $1E1A,$1E1B,$1E1C,$1E1D,$1E1E,$1E1F,$1E20,$1E21
    Data.w $1E22,$1E23,$1E24,$1E25,$1E26,$1E27,$1E28,$1E29
    Data.w $1E2A,$1E2B,$1E2C,$1E2D,$1E2E,$1E2F,$1E30,$1E31
    Data.w $1E32,$1E33,$1E34,$1E35,$1E36,$1E37,$1E38,$1E39
    Data.w $1E3A,$1E3B,$1E3C,$1E3D,$1E3E,$1E3F,$1E40,$1E41
    Data.w $1E42,$1E43,$1E44,$1E45,$1E46,$1E47,$1E48,$1E49
    Data.w $1E4A,$1E4B,$1E4C,$1E4D,$1E4E,$1E4F,$1E50,$1E51
    Data.w $1E52,$1E53,$1E54,$1E55,$1E56,$1E57,$1E58,$1E59
    Data.w $1E5A,$1E5B,$1E5C,$1E5D,$1E5E,$1E5F,$1E60,$1E61
    Data.w $1E62,$1E63,$1E64,$1E65,$1E66,$1E67,$1E68,$1E69
    Data.w $1E6A,$1E6B,$1E6C,$1E6D,$1E6E,$1E6F,$1E70,$1E71
    Data.w $1E72,$1E73,$1E74,$1E75,$1E76,$1E77,$1E78,$1E79
    Data.w $1E7A,$1E7B,$1E7C,$1E7D,$1E7E,$1E7F,$1E80,$1E81
    Data.w $1E82,$1E83,$1E84,$1E85,$1E86,$1E87,$1E88,$1E89
    Data.w $1E8A,$1E8B,$1E8C,$1E8D,$1E8E,$1E8F,$1E90,$1E91
    Data.w $1E92,$1E93,$1E94,$1E95,$1EA0,$1EA1,$1EA2,$1EA3
    Data.w $1EA4,$1EA5,$1EA6,$1EA7,$1EA8,$1EA9,$1EAA,$1EAB
    Data.w $1EAC,$1EAD,$1EAE,$1EAF,$1EB0,$1EB1,$1EB2,$1EB3
    Data.w $1EB4,$1EB5,$1EB6,$1EB7,$1EB8,$1EB9,$1EBA,$1EBB
    Data.w $1EBC,$1EBD,$1EBE,$1EBF,$1EC0,$1EC1,$1EC2,$1EC3
    Data.w $1EC4,$1EC5,$1EC6,$1EC7,$1EC8,$1EC9,$1ECA,$1ECB
    Data.w $1ECC,$1ECD,$1ECE,$1ECF,$1ED0,$1ED1,$1ED2,$1ED3
    Data.w $1ED4,$1ED5,$1ED6,$1ED7,$1ED8,$1ED9,$1EDA,$1EDB
    Data.w $1EDC,$1EDD,$1EDE,$1EDF,$1EE0,$1EE1,$1EE2,$1EE3
    Data.w $1EE4,$1EE5,$1EE6,$1EE7,$1EE8,$1EE9,$1EEA,$1EEB
    Data.w $1EEC,$1EED,$1EEE,$1EEF,$1EF0,$1EF1,$1EF2,$1EF3
    Data.w $1EF4,$1EF5,$1EF6,$1EF7,$1EF8,$1EF9,$1F08,$1F00
    Data.w $1F09,$1F01,$1F0A,$1F02,$1F0B,$1F03,$1F0C,$1F04
    Data.w $1F0D,$1F05,$1F0E,$1F06,$1F0F,$1F07,$1F18,$1F10
    Data.w $1F19,$1F11,$1F1A,$1F12,$1F1B,$1F13,$1F1C,$1F14
    Data.w $1F1D,$1F15,$1F28,$1F20,$1F29,$1F21,$1F2A,$1F22
    Data.w $1F2B,$1F23,$1F2C,$1F24,$1F2D,$1F25,$1F2E,$1F26
    Data.w $1F2F,$1F27,$1F38,$1F30,$1F39,$1F31,$1F3A,$1F32
    Data.w $1F3B,$1F33,$1F3C,$1F34,$1F3D,$1F35,$1F3E,$1F36
    Data.w $1F3F,$1F37,$1F48,$1F40,$1F49,$1F41,$1F4A,$1F42
    Data.w $1F4B,$1F43,$1F4C,$1F44,$1F4D,$1F45,$1F59,$1F51
    Data.w $1F5B,$1F53,$1F5D,$1F55,$1F5F,$1F57,$1F68,$1F60
    Data.w $1F69,$1F61,$1F6A,$1F62,$1F6B,$1F63,$1F6C,$1F64
    Data.w $1F6D,$1F65,$1F6E,$1F66,$1F6F,$1F67,$1F88,$1F80
    Data.w $1F89,$1F81,$1F8A,$1F82,$1F8B,$1F83,$1F8C,$1F84
    Data.w $1F8D,$1F85,$1F8E,$1F86,$1F8F,$1F87,$1F98,$1F90
    Data.w $1F99,$1F91,$1F9A,$1F92,$1F9B,$1F93,$1F9C,$1F94
    Data.w $1F9D,$1F95,$1F9E,$1F96,$1F9F,$1F97,$1FA8,$1FA0
    Data.w $1FA9,$1FA1,$1FAA,$1FA2,$1FAB,$1FA3,$1FAC,$1FA4
    Data.w $1FAD,$1FA5,$1FAE,$1FA6,$1FAF,$1FA7,$1FB8,$1FB0
    Data.w $1FB9,$1FB1,$1FD8,$1FD0,$1FD9,$1FD1,$1FE8,$1FE0
    Data.w $1FE9,$1FE1,$24B6,$24D0,$24B7,$24D1,$24B8,$24D2
    Data.w $24B9,$24D3,$24BA,$24D4,$24BB,$24D5,$24BC,$24D6
    Data.w $24BD,$24D7,$24BE,$24D8,$24BF,$24D9,$24C0,$24DA
    Data.w $24C1,$24DB,$24C2,$24DC,$24C3,$24DD,$24C4,$24DE
    Data.w $24C5,$24DF,$24C6,$24E0,$24C7,$24E1,$24C8,$24E2
    Data.w $24C9,$24E3,$24CA,$24E4,$24CB,$24E5,$24CC,$24E6
    Data.w $24CD,$24E7,$24CE,$24E8,$24CF,$24E9,$FF21,$FF41
    Data.w $FF22,$FF42,$FF23,$FF43,$FF24,$FF44,$FF25,$FF45
    Data.w $FF26,$FF46,$FF27,$FF47,$FF28,$FF48,$FF29,$FF49
    Data.w $FF2A,$FF4A,$FF2B,$FF4B,$FF2C,$FF4C,$FF2D,$FF4D
    Data.w $FF2E,$FF4E,$FF2F,$FF4F,$FF30,$FF50,$FF31,$FF51
    Data.w $FF32,$FF52,$FF33,$FF53,$FF34,$FF54,$FF35,$FF55
    Data.w $FF36,$FF56,$FF37,$FF57,$FF38,$FF58,$FF39,$FF59
    Data.w $FF3A,$FF5A,$00,$00
  EndDataSection
  
EndProcedure 

UCS2_Init() 

Procedure UpCase(*in)  
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UCS2_UCase(*char\u) 
    If tchar 
      *char\u = tchar 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

Procedure LowCase(*in)  
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UCS2_LCase(*char\u) 
    If tchar 
      *char\u = tchar 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

t.s = "abcdef 0123456789, äöü, äöü, áóú" 
UpCase(@t) 
Debug t 
LowCase(@t) 
Debug t

User avatar
idle
Always Here
Always Here
Posts: 5042
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Upper and Lower Case Mapping for Unicode

Post by idle »

not sure how to interpret the documentation it's long winded and confusing.
here's an example of StrcmpNC, it copies the strings and uses the case functions are in place.

This is how I built the table, Set memviewer to word Table, Hex and check Data and copy it.

Code: Select all

; Case mapping table file:
; https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt

; UnicodeData file structure documentation:
; https://www.unicode.org/L2/L1999/UnicodeData.html

; by Sicro, 26.06.2022

EnableExplicit

Define file$, line$, code$, upperCase$, lowerCase$, titleCase$

file$ = GetTemporaryDirectory() + "UnicodeData.txt"

If Not ReceiveHTTPFile("https://www.unicode.org/Public/UCD/latest/ucd/UnicodeData.txt", file$)
  Debug "Download error"
  End
EndIf

If Not ReadFile(0, file$)
  Debug "Read file error"
  End
EndIf

Global pos,*mem = AllocateMemory($FFFF*2*3)

While Not Eof(0)
  line$ = ReadString(0)
  code$ = StringField(line$, 1, ";")
  If Val("$" + code$) > $FFFF
    ; PureBasic supports only character codes up to $FFFF
    Break
  EndIf
  upperCase$ = StringField(line$, 13, ";")
  lowerCase$ = StringField(line$, 14, ";")
  titleCase$ = StringField(line$, 15, ";")
 ; Debug code$ + ";" + upperCase$ + ";" + lowerCase$ + ";" + titleCase$
  If (lowercase$ <> "" Or titlecase$ <> "") 
    PokeU(*mem+pos,Val("$"+code$)) 
    pos+2
    PokeU(*mem+pos,Val("$"+lowerCase$)) 
    pos+2 
    PokeU(*mem+pos,Val("$"+titleCase$)) 
    pos+2      
  EndIf   
    
Wend

CloseFile(0)

ShowMemoryViewer(*mem,pos)
CallDebugger 
not really sure how to interpret the documentation and I don't have time to read it

Code: Select all

Global Dim Uni_UCase($FF5A) 
Global Dim Uni_LCase($FF5A) 

Procedure Uni_Init() 
  Protected lchar,uchar,tcchar  
  
  Restore UNI
  Repeat 
    Read.u lchar 
    Read.u uchar 
    Read.u tcchar 
    
    If lchar  
      If uchar 
         UNI_LCase(lchar) = uchar  
      ElseIf tcchar
        UNI_LCase(lchar) = tcchar 
      Else 
        UNI_LCase(lchar) = lchar 
      EndIf 
      If tcchar
        UNI_UCase(uchar) = tcchar 
      ElseIf lchar  
        UNI_UCase(uchar) = lchar
      Else 
        UNI_UCase(uchar) = uchar
      EndIf   
    EndIf 
    
  Until lchar = 0 
  
  DataSection: UNI: 
    
    Data.w $0041,$0061,$0000,$0042,$0062,$0000,$0043,$0063
    Data.w $0000,$0044,$0064,$0000,$0045,$0065,$0000,$0046
    Data.w $0066,$0000,$0047,$0067,$0000,$0048,$0068,$0000
    Data.w $0049,$0069,$0000,$004A,$006A,$0000,$004B,$006B
    Data.w $0000,$004C,$006C,$0000,$004D,$006D,$0000,$004E
    Data.w $006E,$0000,$004F,$006F,$0000,$0050,$0070,$0000
    Data.w $0051,$0071,$0000,$0052,$0072,$0000,$0053,$0073
    Data.w $0000,$0054,$0074,$0000,$0055,$0075,$0000,$0056
    Data.w $0076,$0000,$0057,$0077,$0000,$0058,$0078,$0000
    Data.w $0059,$0079,$0000,$005A,$007A,$0000,$0061,$0000
    Data.w $0041,$0062,$0000,$0042,$0063,$0000,$0043,$0064
    Data.w $0000,$0044,$0065,$0000,$0045,$0066,$0000,$0046
    Data.w $0067,$0000,$0047,$0068,$0000,$0048,$0069,$0000
    Data.w $0049,$006A,$0000,$004A,$006B,$0000,$004B,$006C
    Data.w $0000,$004C,$006D,$0000,$004D,$006E,$0000,$004E
    Data.w $006F,$0000,$004F,$0070,$0000,$0050,$0071,$0000
    Data.w $0051,$0072,$0000,$0052,$0073,$0000,$0053,$0074
    Data.w $0000,$0054,$0075,$0000,$0055,$0076,$0000,$0056
    Data.w $0077,$0000,$0057,$0078,$0000,$0058,$0079,$0000
    Data.w $0059,$007A,$0000,$005A,$00B5,$0000,$039C,$00C0
    Data.w $00E0,$0000,$00C1,$00E1,$0000,$00C2,$00E2,$0000
    Data.w $00C3,$00E3,$0000,$00C4,$00E4,$0000,$00C5,$00E5
    Data.w $0000,$00C6,$00E6,$0000,$00C7,$00E7,$0000,$00C8
    Data.w $00E8,$0000,$00C9,$00E9,$0000,$00CA,$00EA,$0000
    Data.w $00CB,$00EB,$0000,$00CC,$00EC,$0000,$00CD,$00ED
    Data.w $0000,$00CE,$00EE,$0000,$00CF,$00EF,$0000,$00D0
    Data.w $00F0,$0000,$00D1,$00F1,$0000,$00D2,$00F2,$0000
    Data.w $00D3,$00F3,$0000,$00D4,$00F4,$0000,$00D5,$00F5
    Data.w $0000,$00D6,$00F6,$0000,$00D8,$00F8,$0000,$00D9
    Data.w $00F9,$0000,$00DA,$00FA,$0000,$00DB,$00FB,$0000
    Data.w $00DC,$00FC,$0000,$00DD,$00FD,$0000,$00DE,$00FE
    Data.w $0000,$00E0,$0000,$00C0,$00E1,$0000,$00C1,$00E2
    Data.w $0000,$00C2,$00E3,$0000,$00C3,$00E4,$0000,$00C4
    Data.w $00E5,$0000,$00C5,$00E6,$0000,$00C6,$00E7,$0000
    Data.w $00C7,$00E8,$0000,$00C8,$00E9,$0000,$00C9,$00EA
    Data.w $0000,$00CA,$00EB,$0000,$00CB,$00EC,$0000,$00CC
    Data.w $00ED,$0000,$00CD,$00EE,$0000,$00CE,$00EF,$0000
    Data.w $00CF,$00F0,$0000,$00D0,$00F1,$0000,$00D1,$00F2
    Data.w $0000,$00D2,$00F3,$0000,$00D3,$00F4,$0000,$00D4
    Data.w $00F5,$0000,$00D5,$00F6,$0000,$00D6,$00F8,$0000
    Data.w $00D8,$00F9,$0000,$00D9,$00FA,$0000,$00DA,$00FB
    Data.w $0000,$00DB,$00FC,$0000,$00DC,$00FD,$0000,$00DD
    Data.w $00FE,$0000,$00DE,$00FF,$0000,$0178,$0100,$0101
    Data.w $0000,$0101,$0000,$0100,$0102,$0103,$0000,$0103
    Data.w $0000,$0102,$0104,$0105,$0000,$0105,$0000,$0104
    Data.w $0106,$0107,$0000,$0107,$0000,$0106,$0108,$0109
    Data.w $0000,$0109,$0000,$0108,$010A,$010B,$0000,$010B
    Data.w $0000,$010A,$010C,$010D,$0000,$010D,$0000,$010C
    Data.w $010E,$010F,$0000,$010F,$0000,$010E,$0110,$0111
    Data.w $0000,$0111,$0000,$0110,$0112,$0113,$0000,$0113
    Data.w $0000,$0112,$0114,$0115,$0000,$0115,$0000,$0114
    Data.w $0116,$0117,$0000,$0117,$0000,$0116,$0118,$0119
    Data.w $0000,$0119,$0000,$0118,$011A,$011B,$0000,$011B
    Data.w $0000,$011A,$011C,$011D,$0000,$011D,$0000,$011C
    Data.w $011E,$011F,$0000,$011F,$0000,$011E,$0120,$0121
    Data.w $0000,$0121,$0000,$0120,$0122,$0123,$0000,$0123
    Data.w $0000,$0122,$0124,$0125,$0000,$0125,$0000,$0124
    Data.w $0126,$0127,$0000,$0127,$0000,$0126,$0128,$0129
    Data.w $0000,$0129,$0000,$0128,$012A,$012B,$0000,$012B
    Data.w $0000,$012A,$012C,$012D,$0000,$012D,$0000,$012C
    Data.w $012E,$012F,$0000,$012F,$0000,$012E,$0130,$0069
    Data.w $0000,$0131,$0000,$0049,$0132,$0133,$0000,$0133
    Data.w $0000,$0132,$0134,$0135,$0000,$0135,$0000,$0134
    Data.w $0136,$0137,$0000,$0137,$0000,$0136,$0139,$013A
    Data.w $0000,$013A,$0000,$0139,$013B,$013C,$0000,$013C
    Data.w $0000,$013B,$013D,$013E,$0000,$013E,$0000,$013D
    Data.w $013F,$0140,$0000,$0140,$0000,$013F,$0141,$0142
    Data.w $0000,$0142,$0000,$0141,$0143,$0144,$0000,$0144
    Data.w $0000,$0143,$0145,$0146,$0000,$0146,$0000,$0145
    Data.w $0147,$0148,$0000,$0148,$0000,$0147,$014A,$014B
    Data.w $0000,$014B,$0000,$014A,$014C,$014D,$0000,$014D
    Data.w $0000,$014C,$014E,$014F,$0000,$014F,$0000,$014E
    Data.w $0150,$0151,$0000,$0151,$0000,$0150,$0152,$0153
    Data.w $0000,$0153,$0000,$0152,$0154,$0155,$0000,$0155
    Data.w $0000,$0154,$0156,$0157,$0000,$0157,$0000,$0156
    Data.w $0158,$0159,$0000,$0159,$0000,$0158,$015A,$015B
    Data.w $0000,$015B,$0000,$015A,$015C,$015D,$0000,$015D
    Data.w $0000,$015C,$015E,$015F,$0000,$015F,$0000,$015E
    Data.w $0160,$0161,$0000,$0161,$0000,$0160,$0162,$0163
    Data.w $0000,$0163,$0000,$0162,$0164,$0165,$0000,$0165
    Data.w $0000,$0164,$0166,$0167,$0000,$0167,$0000,$0166
    Data.w $0168,$0169,$0000,$0169,$0000,$0168,$016A,$016B
    Data.w $0000,$016B,$0000,$016A,$016C,$016D,$0000,$016D
    Data.w $0000,$016C,$016E,$016F,$0000,$016F,$0000,$016E
    Data.w $0170,$0171,$0000,$0171,$0000,$0170,$0172,$0173
    Data.w $0000,$0173,$0000,$0172,$0174,$0175,$0000,$0175
    Data.w $0000,$0174,$0176,$0177,$0000,$0177,$0000,$0176
    Data.w $0178,$00FF,$0000,$0179,$017A,$0000,$017A,$0000
    Data.w $0179,$017B,$017C,$0000,$017C,$0000,$017B,$017D
    Data.w $017E,$0000,$017E,$0000,$017D,$017F,$0000,$0053
    Data.w $0180,$0000,$0243,$0181,$0253,$0000,$0182,$0183
    Data.w $0000,$0183,$0000,$0182,$0184,$0185,$0000,$0185
    Data.w $0000,$0184,$0186,$0254,$0000,$0187,$0188,$0000
    Data.w $0188,$0000,$0187,$0189,$0256,$0000,$018A,$0257
    Data.w $0000,$018B,$018C,$0000,$018C,$0000,$018B,$018E
    Data.w $01DD,$0000,$018F,$0259,$0000,$0190,$025B,$0000
    Data.w $0191,$0192,$0000,$0192,$0000,$0191,$0193,$0260
    Data.w $0000,$0194,$0263,$0000,$0195,$0000,$01F6,$0196
    Data.w $0269,$0000,$0197,$0268,$0000,$0198,$0199,$0000
    Data.w $0199,$0000,$0198,$019A,$0000,$023D,$019C,$026F
    Data.w $0000,$019D,$0272,$0000,$019E,$0000,$0220,$019F
    Data.w $0275,$0000,$01A0,$01A1,$0000,$01A1,$0000,$01A0
    Data.w $01A2,$01A3,$0000,$01A3,$0000,$01A2,$01A4,$01A5
    Data.w $0000,$01A5,$0000,$01A4,$01A6,$0280,$0000,$01A7
    Data.w $01A8,$0000,$01A8,$0000,$01A7,$01A9,$0283,$0000
    Data.w $01AC,$01AD,$0000,$01AD,$0000,$01AC,$01AE,$0288
    Data.w $0000,$01AF,$01B0,$0000,$01B0,$0000,$01AF,$01B1
    Data.w $028A,$0000,$01B2,$028B,$0000,$01B3,$01B4,$0000
    Data.w $01B4,$0000,$01B3,$01B5,$01B6,$0000,$01B6,$0000
    Data.w $01B5,$01B7,$0292,$0000,$01B8,$01B9,$0000,$01B9
    Data.w $0000,$01B8,$01BC,$01BD,$0000,$01BD,$0000,$01BC
    Data.w $01BF,$0000,$01F7,$01C4,$01C6,$01C5,$01C5,$01C6
    Data.w $01C5,$01C6,$0000,$01C5,$01C7,$01C9,$01C8,$01C8
    Data.w $01C9,$01C8,$01C9,$0000,$01C8,$01CA,$01CC,$01CB
    Data.w $01CB,$01CC,$01CB,$01CC,$0000,$01CB,$01CD,$01CE
    Data.w $0000,$01CE,$0000,$01CD,$01CF,$01D0,$0000,$01D0
    Data.w $0000,$01CF,$01D1,$01D2,$0000,$01D2,$0000,$01D1
    Data.w $01D3,$01D4,$0000,$01D4,$0000,$01D3,$01D5,$01D6
    Data.w $0000,$01D6,$0000,$01D5,$01D7,$01D8,$0000,$01D8
    Data.w $0000,$01D7,$01D9,$01DA,$0000,$01DA,$0000,$01D9
    Data.w $01DB,$01DC,$0000,$01DC,$0000,$01DB,$01DD,$0000
    Data.w $018E,$01DE,$01DF,$0000,$01DF,$0000,$01DE,$01E0
    Data.w $01E1,$0000,$01E1,$0000,$01E0,$01E2,$01E3,$0000
    Data.w $01E3,$0000,$01E2,$01E4,$01E5,$0000,$01E5,$0000
    Data.w $01E4,$01E6,$01E7,$0000,$01E7,$0000,$01E6,$01E8
    Data.w $01E9,$0000,$01E9,$0000,$01E8,$01EA,$01EB,$0000
    Data.w $01EB,$0000,$01EA,$01EC,$01ED,$0000,$01ED,$0000
    Data.w $01EC,$01EE,$01EF,$0000,$01EF,$0000,$01EE,$01F1
    Data.w $01F3,$01F2,$01F2,$01F3,$01F2,$01F3,$0000,$01F2
    Data.w $01F4,$01F5,$0000,$01F5,$0000,$01F4,$01F6,$0195
    Data.w $0000,$01F7,$01BF,$0000,$01F8,$01F9,$0000,$01F9
    Data.w $0000,$01F8,$01FA,$01FB,$0000,$01FB,$0000,$01FA
    Data.w $01FC,$01FD,$0000,$01FD,$0000,$01FC,$01FE,$01FF
    Data.w $0000,$01FF,$0000,$01FE,$0200,$0201,$0000,$0201
    Data.w $0000,$0200,$0202,$0203,$0000,$0203,$0000,$0202
    Data.w $0204,$0205,$0000,$0205,$0000,$0204,$0206,$0207
    Data.w $0000,$0207,$0000,$0206,$0208,$0209,$0000,$0209
    Data.w $0000,$0208,$020A,$020B,$0000,$020B,$0000,$020A
    Data.w $020C,$020D,$0000,$020D,$0000,$020C,$020E,$020F
    Data.w $0000,$020F,$0000,$020E,$0210,$0211,$0000,$0211
    Data.w $0000,$0210,$0212,$0213,$0000,$0213,$0000,$0212
    Data.w $0214,$0215,$0000,$0215,$0000,$0214,$0216,$0217
    Data.w $0000,$0217,$0000,$0216,$0218,$0219,$0000,$0219
    Data.w $0000,$0218,$021A,$021B,$0000,$021B,$0000,$021A
    Data.w $021C,$021D,$0000,$021D,$0000,$021C,$021E,$021F
    Data.w $0000,$021F,$0000,$021E,$0220,$019E,$0000,$0222
    Data.w $0223,$0000,$0223,$0000,$0222,$0224,$0225,$0000
    Data.w $0225,$0000,$0224,$0226,$0227,$0000,$0227,$0000
    Data.w $0226,$0228,$0229,$0000,$0229,$0000,$0228,$022A
    Data.w $022B,$0000,$022B,$0000,$022A,$022C,$022D,$0000
    Data.w $022D,$0000,$022C,$022E,$022F,$0000,$022F,$0000
    Data.w $022E,$0230,$0231,$0000,$0231,$0000,$0230,$0232
    Data.w $0233,$0000,$0233,$0000,$0232,$023A,$2C65,$0000
    Data.w $023B,$023C,$0000,$023C,$0000,$023B,$023D,$019A
    Data.w $0000,$023E,$2C66,$0000,$023F,$0000,$2C7E,$0240
    Data.w $0000,$2C7F,$0241,$0242,$0000,$0242,$0000,$0241
    Data.w $0243,$0180,$0000,$0244,$0289,$0000,$0245,$028C
    Data.w $0000,$0246,$0247,$0000,$0247,$0000,$0246,$0248
    Data.w $0249,$0000,$0249,$0000,$0248,$024A,$024B,$0000
    Data.w $024B,$0000,$024A,$024C,$024D,$0000,$024D,$0000
    Data.w $024C,$024E,$024F,$0000,$024F,$0000,$024E,$0250
    Data.w $0000,$2C6F,$0251,$0000,$2C6D,$0252,$0000,$2C70
    Data.w $0253,$0000,$0181,$0254,$0000,$0186,$0256,$0000
    Data.w $0189,$0257,$0000,$018A,$0259,$0000,$018F,$025B
    Data.w $0000,$0190,$025C,$0000,$A7AB,$0260,$0000,$0193
    Data.w $0261,$0000,$A7AC,$0263,$0000,$0194,$0265,$0000
    Data.w $A78D,$0266,$0000,$A7AA,$0268,$0000,$0197,$0269
    Data.w $0000,$0196,$026A,$0000,$A7AE,$026B,$0000,$2C62
    Data.w $026C,$0000,$A7AD,$026F,$0000,$019C,$0271,$0000
    Data.w $2C6E,$0272,$0000,$019D,$0275,$0000,$019F,$027D
    Data.w $0000,$2C64,$0280,$0000,$01A6,$0282,$0000,$A7C5
    Data.w $0283,$0000,$01A9,$0287,$0000,$A7B1,$0288,$0000
    Data.w $01AE,$0289,$0000,$0244,$028A,$0000,$01B1,$028B
    Data.w $0000,$01B2,$028C,$0000,$0245,$0292,$0000,$01B7
    Data.w $029D,$0000,$A7B2,$029E,$0000,$A7B0,$0345,$0000
    Data.w $0399,$0370,$0371,$0000,$0371,$0000,$0370,$0372
    Data.w $0373,$0000,$0373,$0000,$0372,$0376,$0377,$0000
    Data.w $0377,$0000,$0376,$037B,$0000,$03FD,$037C,$0000
    Data.w $03FE,$037D,$0000,$03FF,$037F,$03F3,$0000,$0386
    Data.w $03AC,$0000,$0388,$03AD,$0000,$0389,$03AE,$0000
    Data.w $038A,$03AF,$0000,$038C,$03CC,$0000,$038E,$03CD
    Data.w $0000,$038F,$03CE,$0000,$0391,$03B1,$0000,$0392
    Data.w $03B2,$0000,$0393,$03B3,$0000,$0394,$03B4,$0000
    Data.w $0395,$03B5,$0000,$0396,$03B6,$0000,$0397,$03B7
    Data.w $0000,$0398,$03B8,$0000,$0399,$03B9,$0000,$039A
    Data.w $03BA,$0000,$039B,$03BB,$0000,$039C,$03BC,$0000
    Data.w $039D,$03BD,$0000,$039E,$03BE,$0000,$039F,$03BF
    Data.w $0000,$03A0,$03C0,$0000,$03A1,$03C1,$0000,$03A3
    Data.w $03C3,$0000,$03A4,$03C4,$0000,$03A5,$03C5,$0000
    Data.w $03A6,$03C6,$0000,$03A7,$03C7,$0000,$03A8,$03C8
    Data.w $0000,$03A9,$03C9,$0000,$03AA,$03CA,$0000,$03AB
    Data.w $03CB,$0000,$03AC,$0000,$0386,$03AD,$0000,$0388
    Data.w $03AE,$0000,$0389,$03AF,$0000,$038A,$03B1,$0000
    Data.w $0391,$03B2,$0000,$0392,$03B3,$0000,$0393,$03B4
    Data.w $0000,$0394,$03B5,$0000,$0395,$03B6,$0000,$0396
    Data.w $03B7,$0000,$0397,$03B8,$0000,$0398,$03B9,$0000
    Data.w $0399,$03BA,$0000,$039A,$03BB,$0000,$039B,$03BC
    Data.w $0000,$039C,$03BD,$0000,$039D,$03BE,$0000,$039E
    Data.w $03BF,$0000,$039F,$03C0,$0000,$03A0,$03C1,$0000
    Data.w $03A1,$03C2,$0000,$03A3,$03C3,$0000,$03A3,$03C4
    Data.w $0000,$03A4,$03C5,$0000,$03A5,$03C6,$0000,$03A6
    Data.w $03C7,$0000,$03A7,$03C8,$0000,$03A8,$03C9,$0000
    Data.w $03A9,$03CA,$0000,$03AA,$03CB,$0000,$03AB,$03CC
    Data.w $0000,$038C,$03CD,$0000,$038E,$03CE,$0000,$038F
    Data.w $03CF,$03D7,$0000,$03D0,$0000,$0392,$03D1,$0000
    Data.w $0398,$03D5,$0000,$03A6,$03D6,$0000,$03A0,$03D7
    Data.w $0000,$03CF,$03D8,$03D9,$0000,$03D9,$0000,$03D8
    Data.w $03DA,$03DB,$0000,$03DB,$0000,$03DA,$03DC,$03DD
    Data.w $0000,$03DD,$0000,$03DC,$03DE,$03DF,$0000,$03DF
    Data.w $0000,$03DE,$03E0,$03E1,$0000,$03E1,$0000,$03E0
    Data.w $03E2,$03E3,$0000,$03E3,$0000,$03E2,$03E4,$03E5
    Data.w $0000,$03E5,$0000,$03E4,$03E6,$03E7,$0000,$03E7
    Data.w $0000,$03E6,$03E8,$03E9,$0000,$03E9,$0000,$03E8
    Data.w $03EA,$03EB,$0000,$03EB,$0000,$03EA,$03EC,$03ED
    Data.w $0000,$03ED,$0000,$03EC,$03EE,$03EF,$0000,$03EF
    Data.w $0000,$03EE,$03F0,$0000,$039A,$03F1,$0000,$03A1
    Data.w $03F2,$0000,$03F9,$03F3,$0000,$037F,$03F4,$03B8
    Data.w $0000,$03F5,$0000,$0395,$03F7,$03F8,$0000,$03F8
    Data.w $0000,$03F7,$03F9,$03F2,$0000,$03FA,$03FB,$0000
    Data.w $03FB,$0000,$03FA,$03FD,$037B,$0000,$03FE,$037C
    Data.w $0000,$03FF,$037D,$0000,$0400,$0450,$0000,$0401
    Data.w $0451,$0000,$0402,$0452,$0000,$0403,$0453,$0000
    Data.w $0404,$0454,$0000,$0405,$0455,$0000,$0406,$0456
    Data.w $0000,$0407,$0457,$0000,$0408,$0458,$0000,$0409
    Data.w $0459,$0000,$040A,$045A,$0000,$040B,$045B,$0000
    Data.w $040C,$045C,$0000,$040D,$045D,$0000,$040E,$045E
    Data.w $0000,$040F,$045F,$0000,$0410,$0430,$0000,$0411
    Data.w $0431,$0000,$0412,$0432,$0000,$0413,$0433,$0000
    Data.w $0414,$0434,$0000,$0415,$0435,$0000,$0416,$0436
    Data.w $0000,$0417,$0437,$0000,$0418,$0438,$0000,$0419
    Data.w $0439,$0000,$041A,$043A,$0000,$041B,$043B,$0000
    Data.w $041C,$043C,$0000,$041D,$043D,$0000,$041E,$043E
    Data.w $0000,$041F,$043F,$0000,$0420,$0440,$0000,$0421
    Data.w $0441,$0000,$0422,$0442,$0000,$0423,$0443,$0000
    Data.w $0424,$0444,$0000,$0425,$0445,$0000,$0426,$0446
    Data.w $0000,$0427,$0447,$0000,$0428,$0448,$0000,$0429
    Data.w $0449,$0000,$042A,$044A,$0000,$042B,$044B,$0000
    Data.w $042C,$044C,$0000,$042D,$044D,$0000,$042E,$044E
    Data.w $0000,$042F,$044F,$0000,$0430,$0000,$0410,$0431
    Data.w $0000,$0411,$0432,$0000,$0412,$0433,$0000,$0413
    Data.w $0434,$0000,$0414,$0435,$0000,$0415,$0436,$0000
    Data.w $0416,$0437,$0000,$0417,$0438,$0000,$0418,$0439
    Data.w $0000,$0419,$043A,$0000,$041A,$043B,$0000,$041B
    Data.w $043C,$0000,$041C,$043D,$0000,$041D,$043E,$0000
    Data.w $041E,$043F,$0000,$041F,$0440,$0000,$0420,$0441
    Data.w $0000,$0421,$0442,$0000,$0422,$0443,$0000,$0423
    Data.w $0444,$0000,$0424,$0445,$0000,$0425,$0446,$0000
    Data.w $0426,$0447,$0000,$0427,$0448,$0000,$0428,$0449
    Data.w $0000,$0429,$044A,$0000,$042A,$044B,$0000,$042B
    Data.w $044C,$0000,$042C,$044D,$0000,$042D,$044E,$0000
    Data.w $042E,$044F,$0000,$042F,$0450,$0000,$0400,$0451
    Data.w $0000,$0401,$0452,$0000,$0402,$0453,$0000,$0403
    Data.w $0454,$0000,$0404,$0455,$0000,$0405,$0456,$0000
    Data.w $0406,$0457,$0000,$0407,$0458,$0000,$0408,$0459
    Data.w $0000,$0409,$045A,$0000,$040A,$045B,$0000,$040B
    Data.w $045C,$0000,$040C,$045D,$0000,$040D,$045E,$0000
    Data.w $040E,$045F,$0000,$040F,$0460,$0461,$0000,$0461
    Data.w $0000,$0460,$0462,$0463,$0000,$0463,$0000,$0462
    Data.w $0464,$0465,$0000,$0465,$0000,$0464,$0466,$0467
    Data.w $0000,$0467,$0000,$0466,$0468,$0469,$0000,$0469
    Data.w $0000,$0468,$046A,$046B,$0000,$046B,$0000,$046A
    Data.w $046C,$046D,$0000,$046D,$0000,$046C,$046E,$046F
    Data.w $0000,$046F,$0000,$046E,$0470,$0471,$0000,$0471
    Data.w $0000,$0470,$0472,$0473,$0000,$0473,$0000,$0472
    Data.w $0474,$0475,$0000,$0475,$0000,$0474,$0476,$0477
    Data.w $0000,$0477,$0000,$0476,$0478,$0479,$0000,$0479
    Data.w $0000,$0478,$047A,$047B,$0000,$047B,$0000,$047A
    Data.w $047C,$047D,$0000,$047D,$0000,$047C,$047E,$047F
    Data.w $0000,$047F,$0000,$047E,$0480,$0481,$0000,$0481
    Data.w $0000,$0480,$048A,$048B,$0000,$048B,$0000,$048A
    Data.w $048C,$048D,$0000,$048D,$0000,$048C,$048E,$048F
    Data.w $0000,$048F,$0000,$048E,$0490,$0491,$0000,$0491
    Data.w $0000,$0490,$0492,$0493,$0000,$0493,$0000,$0492
    Data.w $0494,$0495,$0000,$0495,$0000,$0494,$0496,$0497
    Data.w $0000,$0497,$0000,$0496,$0498,$0499,$0000,$0499
    Data.w $0000,$0498,$049A,$049B,$0000,$049B,$0000,$049A
    Data.w $049C,$049D,$0000,$049D,$0000,$049C,$049E,$049F
    Data.w $0000,$049F,$0000,$049E,$04A0,$04A1,$0000,$04A1
    Data.w $0000,$04A0,$04A2,$04A3,$0000,$04A3,$0000,$04A2
    Data.w $04A4,$04A5,$0000,$04A5,$0000,$04A4,$04A6,$04A7
    Data.w $0000,$04A7,$0000,$04A6,$04A8,$04A9,$0000,$04A9
    Data.w $0000,$04A8,$04AA,$04AB,$0000,$04AB,$0000,$04AA
    Data.w $04AC,$04AD,$0000,$04AD,$0000,$04AC,$04AE,$04AF
    Data.w $0000,$04AF,$0000,$04AE,$04B0,$04B1,$0000,$04B1
    Data.w $0000,$04B0,$04B2,$04B3,$0000,$04B3,$0000,$04B2
    Data.w $04B4,$04B5,$0000,$04B5,$0000,$04B4,$04B6,$04B7
    Data.w $0000,$04B7,$0000,$04B6,$04B8,$04B9,$0000,$04B9
    Data.w $0000,$04B8,$04BA,$04BB,$0000,$04BB,$0000,$04BA
    Data.w $04BC,$04BD,$0000,$04BD,$0000,$04BC,$04BE,$04BF
    Data.w $0000,$04BF,$0000,$04BE,$04C0,$04CF,$0000,$04C1
    Data.w $04C2,$0000,$04C2,$0000,$04C1,$04C3,$04C4,$0000
    Data.w $04C4,$0000,$04C3,$04C5,$04C6,$0000,$04C6,$0000
    Data.w $04C5,$04C7,$04C8,$0000,$04C8,$0000,$04C7,$04C9
    Data.w $04CA,$0000,$04CA,$0000,$04C9,$04CB,$04CC,$0000
    Data.w $04CC,$0000,$04CB,$04CD,$04CE,$0000,$04CE,$0000
    Data.w $04CD,$04CF,$0000,$04C0,$04D0,$04D1,$0000,$04D1
    Data.w $0000,$04D0,$04D2,$04D3,$0000,$04D3,$0000,$04D2
    Data.w $04D4,$04D5,$0000,$04D5,$0000,$04D4,$04D6,$04D7
    Data.w $0000,$04D7,$0000,$04D6,$04D8,$04D9,$0000,$04D9
    Data.w $0000,$04D8,$04DA,$04DB,$0000,$04DB,$0000,$04DA
    Data.w $04DC,$04DD,$0000,$04DD,$0000,$04DC,$04DE,$04DF
    Data.w $0000,$04DF,$0000,$04DE,$04E0,$04E1,$0000,$04E1
    Data.w $0000,$04E0,$04E2,$04E3,$0000,$04E3,$0000,$04E2
    Data.w $04E4,$04E5,$0000,$04E5,$0000,$04E4,$04E6,$04E7
    Data.w $0000,$04E7,$0000,$04E6,$04E8,$04E9,$0000,$04E9
    Data.w $0000,$04E8,$04EA,$04EB,$0000,$04EB,$0000,$04EA
    Data.w $04EC,$04ED,$0000,$04ED,$0000,$04EC,$04EE,$04EF
    Data.w $0000,$04EF,$0000,$04EE,$04F0,$04F1,$0000,$04F1
    Data.w $0000,$04F0,$04F2,$04F3,$0000,$04F3,$0000,$04F2
    Data.w $04F4,$04F5,$0000,$04F5,$0000,$04F4,$04F6,$04F7
    Data.w $0000,$04F7,$0000,$04F6,$04F8,$04F9,$0000,$04F9
    Data.w $0000,$04F8,$04FA,$04FB,$0000,$04FB,$0000,$04FA
    Data.w $04FC,$04FD,$0000,$04FD,$0000,$04FC,$04FE,$04FF
    Data.w $0000,$04FF,$0000,$04FE,$0500,$0501,$0000,$0501
    Data.w $0000,$0500,$0502,$0503,$0000,$0503,$0000,$0502
    Data.w $0504,$0505,$0000,$0505,$0000,$0504,$0506,$0507
    Data.w $0000,$0507,$0000,$0506,$0508,$0509,$0000,$0509
    Data.w $0000,$0508,$050A,$050B,$0000,$050B,$0000,$050A
    Data.w $050C,$050D,$0000,$050D,$0000,$050C,$050E,$050F
    Data.w $0000,$050F,$0000,$050E,$0510,$0511,$0000,$0511
    Data.w $0000,$0510,$0512,$0513,$0000,$0513,$0000,$0512
    Data.w $0514,$0515,$0000,$0515,$0000,$0514,$0516,$0517
    Data.w $0000,$0517,$0000,$0516,$0518,$0519,$0000,$0519
    Data.w $0000,$0518,$051A,$051B,$0000,$051B,$0000,$051A
    Data.w $051C,$051D,$0000,$051D,$0000,$051C,$051E,$051F
    Data.w $0000,$051F,$0000,$051E,$0520,$0521,$0000,$0521
    Data.w $0000,$0520,$0522,$0523,$0000,$0523,$0000,$0522
    Data.w $0524,$0525,$0000,$0525,$0000,$0524,$0526,$0527
    Data.w $0000,$0527,$0000,$0526,$0528,$0529,$0000,$0529
    Data.w $0000,$0528,$052A,$052B,$0000,$052B,$0000,$052A
    Data.w $052C,$052D,$0000,$052D,$0000,$052C,$052E,$052F
    Data.w $0000,$052F,$0000,$052E,$0531,$0561,$0000,$0532
    Data.w $0562,$0000,$0533,$0563,$0000,$0534,$0564,$0000
    Data.w $0535,$0565,$0000,$0536,$0566,$0000,$0537,$0567
    Data.w $0000,$0538,$0568,$0000,$0539,$0569,$0000,$053A
    Data.w $056A,$0000,$053B,$056B,$0000,$053C,$056C,$0000
    Data.w $053D,$056D,$0000,$053E,$056E,$0000,$053F,$056F
    Data.w $0000,$0540,$0570,$0000,$0541,$0571,$0000,$0542
    Data.w $0572,$0000,$0543,$0573,$0000,$0544,$0574,$0000
    Data.w $0545,$0575,$0000,$0546,$0576,$0000,$0547,$0577
    Data.w $0000,$0548,$0578,$0000,$0549,$0579,$0000,$054A
    Data.w $057A,$0000,$054B,$057B,$0000,$054C,$057C,$0000
    Data.w $054D,$057D,$0000,$054E,$057E,$0000,$054F,$057F
    Data.w $0000,$0550,$0580,$0000,$0551,$0581,$0000,$0552
    Data.w $0582,$0000,$0553,$0583,$0000,$0554,$0584,$0000
    Data.w $0555,$0585,$0000,$0556,$0586,$0000,$0561,$0000
    Data.w $0531,$0562,$0000,$0532,$0563,$0000,$0533,$0564
    Data.w $0000,$0534,$0565,$0000,$0535,$0566,$0000,$0536
    Data.w $0567,$0000,$0537,$0568,$0000,$0538,$0569,$0000
    Data.w $0539,$056A,$0000,$053A,$056B,$0000,$053B,$056C
    Data.w $0000,$053C,$056D,$0000,$053D,$056E,$0000,$053E
    Data.w $056F,$0000,$053F,$0570,$0000,$0540,$0571,$0000
    Data.w $0541,$0572,$0000,$0542,$0573,$0000,$0543,$0574
    Data.w $0000,$0544,$0575,$0000,$0545,$0576,$0000,$0546
    Data.w $0577,$0000,$0547,$0578,$0000,$0548,$0579,$0000
    Data.w $0549,$057A,$0000,$054A,$057B,$0000,$054B,$057C
    Data.w $0000,$054C,$057D,$0000,$054D,$057E,$0000,$054E
    Data.w $057F,$0000,$054F,$0580,$0000,$0550,$0581,$0000
    Data.w $0551,$0582,$0000,$0552,$0583,$0000,$0553,$0584
    Data.w $0000,$0554,$0585,$0000,$0555,$0586,$0000,$0556
    Data.w $10A0,$2D00,$0000,$10A1,$2D01,$0000,$10A2,$2D02
    Data.w $0000,$10A3,$2D03,$0000,$10A4,$2D04,$0000,$10A5
    Data.w $2D05,$0000,$10A6,$2D06,$0000,$10A7,$2D07,$0000
    Data.w $10A8,$2D08,$0000,$10A9,$2D09,$0000,$10AA,$2D0A
    Data.w $0000,$10AB,$2D0B,$0000,$10AC,$2D0C,$0000,$10AD
    Data.w $2D0D,$0000,$10AE,$2D0E,$0000,$10AF,$2D0F,$0000
    Data.w $10B0,$2D10,$0000,$10B1,$2D11,$0000,$10B2,$2D12
    Data.w $0000,$10B3,$2D13,$0000,$10B4,$2D14,$0000,$10B5
    Data.w $2D15,$0000,$10B6,$2D16,$0000,$10B7,$2D17,$0000
    Data.w $10B8,$2D18,$0000,$10B9,$2D19,$0000,$10BA,$2D1A
    Data.w $0000,$10BB,$2D1B,$0000,$10BC,$2D1C,$0000,$10BD
    Data.w $2D1D,$0000,$10BE,$2D1E,$0000,$10BF,$2D1F,$0000
    Data.w $10C0,$2D20,$0000,$10C1,$2D21,$0000,$10C2,$2D22
    Data.w $0000,$10C3,$2D23,$0000,$10C4,$2D24,$0000,$10C5
    Data.w $2D25,$0000,$10C7,$2D27,$0000,$10CD,$2D2D,$0000
    Data.w $10D0,$0000,$10D0,$10D1,$0000,$10D1,$10D2,$0000
    Data.w $10D2,$10D3,$0000,$10D3,$10D4,$0000,$10D4,$10D5
    Data.w $0000,$10D5,$10D6,$0000,$10D6,$10D7,$0000,$10D7
    Data.w $10D8,$0000,$10D8,$10D9,$0000,$10D9,$10DA,$0000
    Data.w $10DA,$10DB,$0000,$10DB,$10DC,$0000,$10DC,$10DD
    Data.w $0000,$10DD,$10DE,$0000,$10DE,$10DF,$0000,$10DF
    Data.w $10E0,$0000,$10E0,$10E1,$0000,$10E1,$10E2,$0000
    Data.w $10E2,$10E3,$0000,$10E3,$10E4,$0000,$10E4,$10E5
    Data.w $0000,$10E5,$10E6,$0000,$10E6,$10E7,$0000,$10E7
    Data.w $10E8,$0000,$10E8,$10E9,$0000,$10E9,$10EA,$0000
    Data.w $10EA,$10EB,$0000,$10EB,$10EC,$0000,$10EC,$10ED
    Data.w $0000,$10ED,$10EE,$0000,$10EE,$10EF,$0000,$10EF
    Data.w $10F0,$0000,$10F0,$10F1,$0000,$10F1,$10F2,$0000
    Data.w $10F2,$10F3,$0000,$10F3,$10F4,$0000,$10F4,$10F5
    Data.w $0000,$10F5,$10F6,$0000,$10F6,$10F7,$0000,$10F7
    Data.w $10F8,$0000,$10F8,$10F9,$0000,$10F9,$10FA,$0000
    Data.w $10FA,$10FD,$0000,$10FD,$10FE,$0000,$10FE,$10FF
    Data.w $0000,$10FF,$13A0,$AB70,$0000,$13A1,$AB71,$0000
    Data.w $13A2,$AB72,$0000,$13A3,$AB73,$0000,$13A4,$AB74
    Data.w $0000,$13A5,$AB75,$0000,$13A6,$AB76,$0000,$13A7
    Data.w $AB77,$0000,$13A8,$AB78,$0000,$13A9,$AB79,$0000
    Data.w $13AA,$AB7A,$0000,$13AB,$AB7B,$0000,$13AC,$AB7C
    Data.w $0000,$13AD,$AB7D,$0000,$13AE,$AB7E,$0000,$13AF
    Data.w $AB7F,$0000,$13B0,$AB80,$0000,$13B1,$AB81,$0000
    Data.w $13B2,$AB82,$0000,$13B3,$AB83,$0000,$13B4,$AB84
    Data.w $0000,$13B5,$AB85,$0000,$13B6,$AB86,$0000,$13B7
    Data.w $AB87,$0000,$13B8,$AB88,$0000,$13B9,$AB89,$0000
    Data.w $13BA,$AB8A,$0000,$13BB,$AB8B,$0000,$13BC,$AB8C
    Data.w $0000,$13BD,$AB8D,$0000,$13BE,$AB8E,$0000,$13BF
    Data.w $AB8F,$0000,$13C0,$AB90,$0000,$13C1,$AB91,$0000
    Data.w $13C2,$AB92,$0000,$13C3,$AB93,$0000,$13C4,$AB94
    Data.w $0000,$13C5,$AB95,$0000,$13C6,$AB96,$0000,$13C7
    Data.w $AB97,$0000,$13C8,$AB98,$0000,$13C9,$AB99,$0000
    Data.w $13CA,$AB9A,$0000,$13CB,$AB9B,$0000,$13CC,$AB9C
    Data.w $0000,$13CD,$AB9D,$0000,$13CE,$AB9E,$0000,$13CF
    Data.w $AB9F,$0000,$13D0,$ABA0,$0000,$13D1,$ABA1,$0000
    Data.w $13D2,$ABA2,$0000,$13D3,$ABA3,$0000,$13D4,$ABA4
    Data.w $0000,$13D5,$ABA5,$0000,$13D6,$ABA6,$0000,$13D7
    Data.w $ABA7,$0000,$13D8,$ABA8,$0000,$13D9,$ABA9,$0000
    Data.w $13DA,$ABAA,$0000,$13DB,$ABAB,$0000,$13DC,$ABAC
    Data.w $0000,$13DD,$ABAD,$0000,$13DE,$ABAE,$0000,$13DF
    Data.w $ABAF,$0000,$13E0,$ABB0,$0000,$13E1,$ABB1,$0000
    Data.w $13E2,$ABB2,$0000,$13E3,$ABB3,$0000,$13E4,$ABB4
    Data.w $0000,$13E5,$ABB5,$0000,$13E6,$ABB6,$0000,$13E7
    Data.w $ABB7,$0000,$13E8,$ABB8,$0000,$13E9,$ABB9,$0000
    Data.w $13EA,$ABBA,$0000,$13EB,$ABBB,$0000,$13EC,$ABBC
    Data.w $0000,$13ED,$ABBD,$0000,$13EE,$ABBE,$0000,$13EF
    Data.w $ABBF,$0000,$13F0,$13F8,$0000,$13F1,$13F9,$0000
    Data.w $13F2,$13FA,$0000,$13F3,$13FB,$0000,$13F4,$13FC
    Data.w $0000,$13F5,$13FD,$0000,$13F8,$0000,$13F0,$13F9
    Data.w $0000,$13F1,$13FA,$0000,$13F2,$13FB,$0000,$13F3
    Data.w $13FC,$0000,$13F4,$13FD,$0000,$13F5,$1C80,$0000
    Data.w $0412,$1C81,$0000,$0414,$1C82,$0000,$041E,$1C83
    Data.w $0000,$0421,$1C84,$0000,$0422,$1C85,$0000,$0422
    Data.w $1C86,$0000,$042A,$1C87,$0000,$0462,$1C88,$0000
    Data.w $A64A,$1C90,$10D0,$0000,$1C91,$10D1,$0000,$1C92
    Data.w $10D2,$0000,$1C93,$10D3,$0000,$1C94,$10D4,$0000
    Data.w $1C95,$10D5,$0000,$1C96,$10D6,$0000,$1C97,$10D7
    Data.w $0000,$1C98,$10D8,$0000,$1C99,$10D9,$0000,$1C9A
    Data.w $10DA,$0000,$1C9B,$10DB,$0000,$1C9C,$10DC,$0000
    Data.w $1C9D,$10DD,$0000,$1C9E,$10DE,$0000,$1C9F,$10DF
    Data.w $0000,$1CA0,$10E0,$0000,$1CA1,$10E1,$0000,$1CA2
    Data.w $10E2,$0000,$1CA3,$10E3,$0000,$1CA4,$10E4,$0000
    Data.w $1CA5,$10E5,$0000,$1CA6,$10E6,$0000,$1CA7,$10E7
    Data.w $0000,$1CA8,$10E8,$0000,$1CA9,$10E9,$0000,$1CAA
    Data.w $10EA,$0000,$1CAB,$10EB,$0000,$1CAC,$10EC,$0000
    Data.w $1CAD,$10ED,$0000,$1CAE,$10EE,$0000,$1CAF,$10EF
    Data.w $0000,$1CB0,$10F0,$0000,$1CB1,$10F1,$0000,$1CB2
    Data.w $10F2,$0000,$1CB3,$10F3,$0000,$1CB4,$10F4,$0000
    Data.w $1CB5,$10F5,$0000,$1CB6,$10F6,$0000,$1CB7,$10F7
    Data.w $0000,$1CB8,$10F8,$0000,$1CB9,$10F9,$0000,$1CBA
    Data.w $10FA,$0000,$1CBD,$10FD,$0000,$1CBE,$10FE,$0000
    Data.w $1CBF,$10FF,$0000,$1D79,$0000,$A77D,$1D7D,$0000
    Data.w $2C63,$1D8E,$0000,$A7C6,$1E00,$1E01,$0000,$1E01
    Data.w $0000,$1E00,$1E02,$1E03,$0000,$1E03,$0000,$1E02
    Data.w $1E04,$1E05,$0000,$1E05,$0000,$1E04,$1E06,$1E07
    Data.w $0000,$1E07,$0000,$1E06,$1E08,$1E09,$0000,$1E09
    Data.w $0000,$1E08,$1E0A,$1E0B,$0000,$1E0B,$0000,$1E0A
    Data.w $1E0C,$1E0D,$0000,$1E0D,$0000,$1E0C,$1E0E,$1E0F
    Data.w $0000,$1E0F,$0000,$1E0E,$1E10,$1E11,$0000,$1E11
    Data.w $0000,$1E10,$1E12,$1E13,$0000,$1E13,$0000,$1E12
    Data.w $1E14,$1E15,$0000,$1E15,$0000,$1E14,$1E16,$1E17
    Data.w $0000,$1E17,$0000,$1E16,$1E18,$1E19,$0000,$1E19
    Data.w $0000,$1E18,$1E1A,$1E1B,$0000,$1E1B,$0000,$1E1A
    Data.w $1E1C,$1E1D,$0000,$1E1D,$0000,$1E1C,$1E1E,$1E1F
    Data.w $0000,$1E1F,$0000,$1E1E,$1E20,$1E21,$0000,$1E21
    Data.w $0000,$1E20,$1E22,$1E23,$0000,$1E23,$0000,$1E22
    Data.w $1E24,$1E25,$0000,$1E25,$0000,$1E24,$1E26,$1E27
    Data.w $0000,$1E27,$0000,$1E26,$1E28,$1E29,$0000,$1E29
    Data.w $0000,$1E28,$1E2A,$1E2B,$0000,$1E2B,$0000,$1E2A
    Data.w $1E2C,$1E2D,$0000,$1E2D,$0000,$1E2C,$1E2E,$1E2F
    Data.w $0000,$1E2F,$0000,$1E2E,$1E30,$1E31,$0000,$1E31
    Data.w $0000,$1E30,$1E32,$1E33,$0000,$1E33,$0000,$1E32
    Data.w $1E34,$1E35,$0000,$1E35,$0000,$1E34,$1E36,$1E37
    Data.w $0000,$1E37,$0000,$1E36,$1E38,$1E39,$0000,$1E39
    Data.w $0000,$1E38,$1E3A,$1E3B,$0000,$1E3B,$0000,$1E3A
    Data.w $1E3C,$1E3D,$0000,$1E3D,$0000,$1E3C,$1E3E,$1E3F
    Data.w $0000,$1E3F,$0000,$1E3E,$1E40,$1E41,$0000,$1E41
    Data.w $0000,$1E40,$1E42,$1E43,$0000,$1E43,$0000,$1E42
    Data.w $1E44,$1E45,$0000,$1E45,$0000,$1E44,$1E46,$1E47
    Data.w $0000,$1E47,$0000,$1E46,$1E48,$1E49,$0000,$1E49
    Data.w $0000,$1E48,$1E4A,$1E4B,$0000,$1E4B,$0000,$1E4A
    Data.w $1E4C,$1E4D,$0000,$1E4D,$0000,$1E4C,$1E4E,$1E4F
    Data.w $0000,$1E4F,$0000,$1E4E,$1E50,$1E51,$0000,$1E51
    Data.w $0000,$1E50,$1E52,$1E53,$0000,$1E53,$0000,$1E52
    Data.w $1E54,$1E55,$0000,$1E55,$0000,$1E54,$1E56,$1E57
    Data.w $0000,$1E57,$0000,$1E56,$1E58,$1E59,$0000,$1E59
    Data.w $0000,$1E58,$1E5A,$1E5B,$0000,$1E5B,$0000,$1E5A
    Data.w $1E5C,$1E5D,$0000,$1E5D,$0000,$1E5C,$1E5E,$1E5F
    Data.w $0000,$1E5F,$0000,$1E5E,$1E60,$1E61,$0000,$1E61
    Data.w $0000,$1E60,$1E62,$1E63,$0000,$1E63,$0000,$1E62
    Data.w $1E64,$1E65,$0000,$1E65,$0000,$1E64,$1E66,$1E67
    Data.w $0000,$1E67,$0000,$1E66,$1E68,$1E69,$0000,$1E69
    Data.w $0000,$1E68,$1E6A,$1E6B,$0000,$1E6B,$0000,$1E6A
    Data.w $1E6C,$1E6D,$0000,$1E6D,$0000,$1E6C,$1E6E,$1E6F
    Data.w $0000,$1E6F,$0000,$1E6E,$1E70,$1E71,$0000,$1E71
    Data.w $0000,$1E70,$1E72,$1E73,$0000,$1E73,$0000,$1E72
    Data.w $1E74,$1E75,$0000,$1E75,$0000,$1E74,$1E76,$1E77
    Data.w $0000,$1E77,$0000,$1E76,$1E78,$1E79,$0000,$1E79
    Data.w $0000,$1E78,$1E7A,$1E7B,$0000,$1E7B,$0000,$1E7A
    Data.w $1E7C,$1E7D,$0000,$1E7D,$0000,$1E7C,$1E7E,$1E7F
    Data.w $0000,$1E7F,$0000,$1E7E,$1E80,$1E81,$0000,$1E81
    Data.w $0000,$1E80,$1E82,$1E83,$0000,$1E83,$0000,$1E82
    Data.w $1E84,$1E85,$0000,$1E85,$0000,$1E84,$1E86,$1E87
    Data.w $0000,$1E87,$0000,$1E86,$1E88,$1E89,$0000,$1E89
    Data.w $0000,$1E88,$1E8A,$1E8B,$0000,$1E8B,$0000,$1E8A
    Data.w $1E8C,$1E8D,$0000,$1E8D,$0000,$1E8C,$1E8E,$1E8F
    Data.w $0000,$1E8F,$0000,$1E8E,$1E90,$1E91,$0000,$1E91
    Data.w $0000,$1E90,$1E92,$1E93,$0000,$1E93,$0000,$1E92
    Data.w $1E94,$1E95,$0000,$1E95,$0000,$1E94,$1E9B,$0000
    Data.w $1E60,$1E9E,$00DF,$0000,$1EA0,$1EA1,$0000,$1EA1
    Data.w $0000,$1EA0,$1EA2,$1EA3,$0000,$1EA3,$0000,$1EA2
    Data.w $1EA4,$1EA5,$0000,$1EA5,$0000,$1EA4,$1EA6,$1EA7
    Data.w $0000,$1EA7,$0000,$1EA6,$1EA8,$1EA9,$0000,$1EA9
    Data.w $0000,$1EA8,$1EAA,$1EAB,$0000,$1EAB,$0000,$1EAA
    Data.w $1EAC,$1EAD,$0000,$1EAD,$0000,$1EAC,$1EAE,$1EAF
    Data.w $0000,$1EAF,$0000,$1EAE,$1EB0,$1EB1,$0000,$1EB1
    Data.w $0000,$1EB0,$1EB2,$1EB3,$0000,$1EB3,$0000,$1EB2
    Data.w $1EB4,$1EB5,$0000,$1EB5,$0000,$1EB4,$1EB6,$1EB7
    Data.w $0000,$1EB7,$0000,$1EB6,$1EB8,$1EB9,$0000,$1EB9
    Data.w $0000,$1EB8,$1EBA,$1EBB,$0000,$1EBB,$0000,$1EBA
    Data.w $1EBC,$1EBD,$0000,$1EBD,$0000,$1EBC,$1EBE,$1EBF
    Data.w $0000,$1EBF,$0000,$1EBE,$1EC0,$1EC1,$0000,$1EC1
    Data.w $0000,$1EC0,$1EC2,$1EC3,$0000,$1EC3,$0000,$1EC2
    Data.w $1EC4,$1EC5,$0000,$1EC5,$0000,$1EC4,$1EC6,$1EC7
    Data.w $0000,$1EC7,$0000,$1EC6,$1EC8,$1EC9,$0000,$1EC9
    Data.w $0000,$1EC8,$1ECA,$1ECB,$0000,$1ECB,$0000,$1ECA
    Data.w $1ECC,$1ECD,$0000,$1ECD,$0000,$1ECC,$1ECE,$1ECF
    Data.w $0000,$1ECF,$0000,$1ECE,$1ED0,$1ED1,$0000,$1ED1
    Data.w $0000,$1ED0,$1ED2,$1ED3,$0000,$1ED3,$0000,$1ED2
    Data.w $1ED4,$1ED5,$0000,$1ED5,$0000,$1ED4,$1ED6,$1ED7
    Data.w $0000,$1ED7,$0000,$1ED6,$1ED8,$1ED9,$0000,$1ED9
    Data.w $0000,$1ED8,$1EDA,$1EDB,$0000,$1EDB,$0000,$1EDA
    Data.w $1EDC,$1EDD,$0000,$1EDD,$0000,$1EDC,$1EDE,$1EDF
    Data.w $0000,$1EDF,$0000,$1EDE,$1EE0,$1EE1,$0000,$1EE1
    Data.w $0000,$1EE0,$1EE2,$1EE3,$0000,$1EE3,$0000,$1EE2
    Data.w $1EE4,$1EE5,$0000,$1EE5,$0000,$1EE4,$1EE6,$1EE7
    Data.w $0000,$1EE7,$0000,$1EE6,$1EE8,$1EE9,$0000,$1EE9
    Data.w $0000,$1EE8,$1EEA,$1EEB,$0000,$1EEB,$0000,$1EEA
    Data.w $1EEC,$1EED,$0000,$1EED,$0000,$1EEC,$1EEE,$1EEF
    Data.w $0000,$1EEF,$0000,$1EEE,$1EF0,$1EF1,$0000,$1EF1
    Data.w $0000,$1EF0,$1EF2,$1EF3,$0000,$1EF3,$0000,$1EF2
    Data.w $1EF4,$1EF5,$0000,$1EF5,$0000,$1EF4,$1EF6,$1EF7
    Data.w $0000,$1EF7,$0000,$1EF6,$1EF8,$1EF9,$0000,$1EF9
    Data.w $0000,$1EF8,$1EFA,$1EFB,$0000,$1EFB,$0000,$1EFA
    Data.w $1EFC,$1EFD,$0000,$1EFD,$0000,$1EFC,$1EFE,$1EFF
    Data.w $0000,$1EFF,$0000,$1EFE,$1F00,$0000,$1F08,$1F01
    Data.w $0000,$1F09,$1F02,$0000,$1F0A,$1F03,$0000,$1F0B
    Data.w $1F04,$0000,$1F0C,$1F05,$0000,$1F0D,$1F06,$0000
    Data.w $1F0E,$1F07,$0000,$1F0F,$1F08,$1F00,$0000,$1F09
    Data.w $1F01,$0000,$1F0A,$1F02,$0000,$1F0B,$1F03,$0000
    Data.w $1F0C,$1F04,$0000,$1F0D,$1F05,$0000,$1F0E,$1F06
    Data.w $0000,$1F0F,$1F07,$0000,$1F10,$0000,$1F18,$1F11
    Data.w $0000,$1F19,$1F12,$0000,$1F1A,$1F13,$0000,$1F1B
    Data.w $1F14,$0000,$1F1C,$1F15,$0000,$1F1D,$1F18,$1F10
    Data.w $0000,$1F19,$1F11,$0000,$1F1A,$1F12,$0000,$1F1B
    Data.w $1F13,$0000,$1F1C,$1F14,$0000,$1F1D,$1F15,$0000
    Data.w $1F20,$0000,$1F28,$1F21,$0000,$1F29,$1F22,$0000
    Data.w $1F2A,$1F23,$0000,$1F2B,$1F24,$0000,$1F2C,$1F25
    Data.w $0000,$1F2D,$1F26,$0000,$1F2E,$1F27,$0000,$1F2F
    Data.w $1F28,$1F20,$0000,$1F29,$1F21,$0000,$1F2A,$1F22
    Data.w $0000,$1F2B,$1F23,$0000,$1F2C,$1F24,$0000,$1F2D
    Data.w $1F25,$0000,$1F2E,$1F26,$0000,$1F2F,$1F27,$0000
    Data.w $1F30,$0000,$1F38,$1F31,$0000,$1F39,$1F32,$0000
    Data.w $1F3A,$1F33,$0000,$1F3B,$1F34,$0000,$1F3C,$1F35
    Data.w $0000,$1F3D,$1F36,$0000,$1F3E,$1F37,$0000,$1F3F
    Data.w $1F38,$1F30,$0000,$1F39,$1F31,$0000,$1F3A,$1F32
    Data.w $0000,$1F3B,$1F33,$0000,$1F3C,$1F34,$0000,$1F3D
    Data.w $1F35,$0000,$1F3E,$1F36,$0000,$1F3F,$1F37,$0000
    Data.w $1F40,$0000,$1F48,$1F41,$0000,$1F49,$1F42,$0000
    Data.w $1F4A,$1F43,$0000,$1F4B,$1F44,$0000,$1F4C,$1F45
    Data.w $0000,$1F4D,$1F48,$1F40,$0000,$1F49,$1F41,$0000
    Data.w $1F4A,$1F42,$0000,$1F4B,$1F43,$0000,$1F4C,$1F44
    Data.w $0000,$1F4D,$1F45,$0000,$1F51,$0000,$1F59,$1F53
    Data.w $0000,$1F5B,$1F55,$0000,$1F5D,$1F57,$0000,$1F5F
    Data.w $1F59,$1F51,$0000,$1F5B,$1F53,$0000,$1F5D,$1F55
    Data.w $0000,$1F5F,$1F57,$0000,$1F60,$0000,$1F68,$1F61
    Data.w $0000,$1F69,$1F62,$0000,$1F6A,$1F63,$0000,$1F6B
    Data.w $1F64,$0000,$1F6C,$1F65,$0000,$1F6D,$1F66,$0000
    Data.w $1F6E,$1F67,$0000,$1F6F,$1F68,$1F60,$0000,$1F69
    Data.w $1F61,$0000,$1F6A,$1F62,$0000,$1F6B,$1F63,$0000
    Data.w $1F6C,$1F64,$0000,$1F6D,$1F65,$0000,$1F6E,$1F66
    Data.w $0000,$1F6F,$1F67,$0000,$1F70,$0000,$1FBA,$1F71
    Data.w $0000,$1FBB,$1F72,$0000,$1FC8,$1F73,$0000,$1FC9
    Data.w $1F74,$0000,$1FCA,$1F75,$0000,$1FCB,$1F76,$0000
    Data.w $1FDA,$1F77,$0000,$1FDB,$1F78,$0000,$1FF8,$1F79
    Data.w $0000,$1FF9,$1F7A,$0000,$1FEA,$1F7B,$0000,$1FEB
    Data.w $1F7C,$0000,$1FFA,$1F7D,$0000,$1FFB,$1F80,$0000
    Data.w $1F88,$1F81,$0000,$1F89,$1F82,$0000,$1F8A,$1F83
    Data.w $0000,$1F8B,$1F84,$0000,$1F8C,$1F85,$0000,$1F8D
    Data.w $1F86,$0000,$1F8E,$1F87,$0000,$1F8F,$1F88,$1F80
    Data.w $0000,$1F89,$1F81,$0000,$1F8A,$1F82,$0000,$1F8B
    Data.w $1F83,$0000,$1F8C,$1F84,$0000,$1F8D,$1F85,$0000
    Data.w $1F8E,$1F86,$0000,$1F8F,$1F87,$0000,$1F90,$0000
    Data.w $1F98,$1F91,$0000,$1F99,$1F92,$0000,$1F9A,$1F93
    Data.w $0000,$1F9B,$1F94,$0000,$1F9C,$1F95,$0000,$1F9D
    Data.w $1F96,$0000,$1F9E,$1F97,$0000,$1F9F,$1F98,$1F90
    Data.w $0000,$1F99,$1F91,$0000,$1F9A,$1F92,$0000,$1F9B
    Data.w $1F93,$0000,$1F9C,$1F94,$0000,$1F9D,$1F95,$0000
    Data.w $1F9E,$1F96,$0000,$1F9F,$1F97,$0000,$1FA0,$0000
    Data.w $1FA8,$1FA1,$0000,$1FA9,$1FA2,$0000,$1FAA,$1FA3
    Data.w $0000,$1FAB,$1FA4,$0000,$1FAC,$1FA5,$0000,$1FAD
    Data.w $1FA6,$0000,$1FAE,$1FA7,$0000,$1FAF,$1FA8,$1FA0
    Data.w $0000,$1FA9,$1FA1,$0000,$1FAA,$1FA2,$0000,$1FAB
    Data.w $1FA3,$0000,$1FAC,$1FA4,$0000,$1FAD,$1FA5,$0000
    Data.w $1FAE,$1FA6,$0000,$1FAF,$1FA7,$0000,$1FB0,$0000
    Data.w $1FB8,$1FB1,$0000,$1FB9,$1FB3,$0000,$1FBC,$1FB8
    Data.w $1FB0,$0000,$1FB9,$1FB1,$0000,$1FBA,$1F70,$0000
    Data.w $1FBB,$1F71,$0000,$1FBC,$1FB3,$0000,$1FBE,$0000
    Data.w $0399,$1FC3,$0000,$1FCC,$1FC8,$1F72,$0000,$1FC9
    Data.w $1F73,$0000,$1FCA,$1F74,$0000,$1FCB,$1F75,$0000
    Data.w $1FCC,$1FC3,$0000,$1FD0,$0000,$1FD8,$1FD1,$0000
    Data.w $1FD9,$1FD8,$1FD0,$0000,$1FD9,$1FD1,$0000,$1FDA
    Data.w $1F76,$0000,$1FDB,$1F77,$0000,$1FE0,$0000,$1FE8
    Data.w $1FE1,$0000,$1FE9,$1FE5,$0000,$1FEC,$1FE8,$1FE0
    Data.w $0000,$1FE9,$1FE1,$0000,$1FEA,$1F7A,$0000,$1FEB
    Data.w $1F7B,$0000,$1FEC,$1FE5,$0000,$1FF3,$0000,$1FFC
    Data.w $1FF8,$1F78,$0000,$1FF9,$1F79,$0000,$1FFA,$1F7C
    Data.w $0000,$1FFB,$1F7D,$0000,$1FFC,$1FF3,$0000,$2126
    Data.w $03C9,$0000,$212A,$006B,$0000,$212B,$00E5,$0000
    Data.w $2132,$214E,$0000,$214E,$0000,$2132,$2160,$2170
    Data.w $0000,$2161,$2171,$0000,$2162,$2172,$0000,$2163
    Data.w $2173,$0000,$2164,$2174,$0000,$2165,$2175,$0000
    Data.w $2166,$2176,$0000,$2167,$2177,$0000,$2168,$2178
    Data.w $0000,$2169,$2179,$0000,$216A,$217A,$0000,$216B
    Data.w $217B,$0000,$216C,$217C,$0000,$216D,$217D,$0000
    Data.w $216E,$217E,$0000,$216F,$217F,$0000,$2170,$0000
    Data.w $2160,$2171,$0000,$2161,$2172,$0000,$2162,$2173
    Data.w $0000,$2163,$2174,$0000,$2164,$2175,$0000,$2165
    Data.w $2176,$0000,$2166,$2177,$0000,$2167,$2178,$0000
    Data.w $2168,$2179,$0000,$2169,$217A,$0000,$216A,$217B
    Data.w $0000,$216B,$217C,$0000,$216C,$217D,$0000,$216D
    Data.w $217E,$0000,$216E,$217F,$0000,$216F,$2183,$2184
    Data.w $0000,$2184,$0000,$2183,$24B6,$24D0,$0000,$24B7
    Data.w $24D1,$0000,$24B8,$24D2,$0000,$24B9,$24D3,$0000
    Data.w $24BA,$24D4,$0000,$24BB,$24D5,$0000,$24BC,$24D6
    Data.w $0000,$24BD,$24D7,$0000,$24BE,$24D8,$0000,$24BF
    Data.w $24D9,$0000,$24C0,$24DA,$0000,$24C1,$24DB,$0000
    Data.w $24C2,$24DC,$0000,$24C3,$24DD,$0000,$24C4,$24DE
    Data.w $0000,$24C5,$24DF,$0000,$24C6,$24E0,$0000,$24C7
    Data.w $24E1,$0000,$24C8,$24E2,$0000,$24C9,$24E3,$0000
    Data.w $24CA,$24E4,$0000,$24CB,$24E5,$0000,$24CC,$24E6
    Data.w $0000,$24CD,$24E7,$0000,$24CE,$24E8,$0000,$24CF
    Data.w $24E9,$0000,$24D0,$0000,$24B6,$24D1,$0000,$24B7
    Data.w $24D2,$0000,$24B8,$24D3,$0000,$24B9,$24D4,$0000
    Data.w $24BA,$24D5,$0000,$24BB,$24D6,$0000,$24BC,$24D7
    Data.w $0000,$24BD,$24D8,$0000,$24BE,$24D9,$0000,$24BF
    Data.w $24DA,$0000,$24C0,$24DB,$0000,$24C1,$24DC,$0000
    Data.w $24C2,$24DD,$0000,$24C3,$24DE,$0000,$24C4,$24DF
    Data.w $0000,$24C5,$24E0,$0000,$24C6,$24E1,$0000,$24C7
    Data.w $24E2,$0000,$24C8,$24E3,$0000,$24C9,$24E4,$0000
    Data.w $24CA,$24E5,$0000,$24CB,$24E6,$0000,$24CC,$24E7
    Data.w $0000,$24CD,$24E8,$0000,$24CE,$24E9,$0000,$24CF
    Data.w $2C00,$2C30,$0000,$2C01,$2C31,$0000,$2C02,$2C32
    Data.w $0000,$2C03,$2C33,$0000,$2C04,$2C34,$0000,$2C05
    Data.w $2C35,$0000,$2C06,$2C36,$0000,$2C07,$2C37,$0000
    Data.w $2C08,$2C38,$0000,$2C09,$2C39,$0000,$2C0A,$2C3A
    Data.w $0000,$2C0B,$2C3B,$0000,$2C0C,$2C3C,$0000,$2C0D
    Data.w $2C3D,$0000,$2C0E,$2C3E,$0000,$2C0F,$2C3F,$0000
    Data.w $2C10,$2C40,$0000,$2C11,$2C41,$0000,$2C12,$2C42
    Data.w $0000,$2C13,$2C43,$0000,$2C14,$2C44,$0000,$2C15
    Data.w $2C45,$0000,$2C16,$2C46,$0000,$2C17,$2C47,$0000
    Data.w $2C18,$2C48,$0000,$2C19,$2C49,$0000,$2C1A,$2C4A
    Data.w $0000,$2C1B,$2C4B,$0000,$2C1C,$2C4C,$0000,$2C1D
    Data.w $2C4D,$0000,$2C1E,$2C4E,$0000,$2C1F,$2C4F,$0000
    Data.w $2C20,$2C50,$0000,$2C21,$2C51,$0000,$2C22,$2C52
    Data.w $0000,$2C23,$2C53,$0000,$2C24,$2C54,$0000,$2C25
    Data.w $2C55,$0000,$2C26,$2C56,$0000,$2C27,$2C57,$0000
    Data.w $2C28,$2C58,$0000,$2C29,$2C59,$0000,$2C2A,$2C5A
    Data.w $0000,$2C2B,$2C5B,$0000,$2C2C,$2C5C,$0000,$2C2D
    Data.w $2C5D,$0000,$2C2E,$2C5E,$0000,$2C2F,$2C5F,$0000
    Data.w $2C30,$0000,$2C00,$2C31,$0000,$2C01,$2C32,$0000
    Data.w $2C02,$2C33,$0000,$2C03,$2C34,$0000,$2C04,$2C35
    Data.w $0000,$2C05,$2C36,$0000,$2C06,$2C37,$0000,$2C07
    Data.w $2C38,$0000,$2C08,$2C39,$0000,$2C09,$2C3A,$0000
    Data.w $2C0A,$2C3B,$0000,$2C0B,$2C3C,$0000,$2C0C,$2C3D
    Data.w $0000,$2C0D,$2C3E,$0000,$2C0E,$2C3F,$0000,$2C0F
    Data.w $2C40,$0000,$2C10,$2C41,$0000,$2C11,$2C42,$0000
    Data.w $2C12,$2C43,$0000,$2C13,$2C44,$0000,$2C14,$2C45
    Data.w $0000,$2C15,$2C46,$0000,$2C16,$2C47,$0000,$2C17
    Data.w $2C48,$0000,$2C18,$2C49,$0000,$2C19,$2C4A,$0000
    Data.w $2C1A,$2C4B,$0000,$2C1B,$2C4C,$0000,$2C1C,$2C4D
    Data.w $0000,$2C1D,$2C4E,$0000,$2C1E,$2C4F,$0000,$2C1F
    Data.w $2C50,$0000,$2C20,$2C51,$0000,$2C21,$2C52,$0000
    Data.w $2C22,$2C53,$0000,$2C23,$2C54,$0000,$2C24,$2C55
    Data.w $0000,$2C25,$2C56,$0000,$2C26,$2C57,$0000,$2C27
    Data.w $2C58,$0000,$2C28,$2C59,$0000,$2C29,$2C5A,$0000
    Data.w $2C2A,$2C5B,$0000,$2C2B,$2C5C,$0000,$2C2C,$2C5D
    Data.w $0000,$2C2D,$2C5E,$0000,$2C2E,$2C5F,$0000,$2C2F
    Data.w $2C60,$2C61,$0000,$2C61,$0000,$2C60,$2C62,$026B
    Data.w $0000,$2C63,$1D7D,$0000,$2C64,$027D,$0000,$2C65
    Data.w $0000,$023A,$2C66,$0000,$023E,$2C67,$2C68,$0000
    Data.w $2C68,$0000,$2C67,$2C69,$2C6A,$0000,$2C6A,$0000
    Data.w $2C69,$2C6B,$2C6C,$0000,$2C6C,$0000,$2C6B,$2C6D
    Data.w $0251,$0000,$2C6E,$0271,$0000,$2C6F,$0250,$0000
    Data.w $2C70,$0252,$0000,$2C72,$2C73,$0000,$2C73,$0000
    Data.w $2C72,$2C75,$2C76,$0000,$2C76,$0000,$2C75,$2C7E
    Data.w $023F,$0000,$2C7F,$0240,$0000,$2C80,$2C81,$0000
    Data.w $2C81,$0000,$2C80,$2C82,$2C83,$0000,$2C83,$0000
    Data.w $2C82,$2C84,$2C85,$0000,$2C85,$0000,$2C84,$2C86
    Data.w $2C87,$0000,$2C87,$0000,$2C86,$2C88,$2C89,$0000
    Data.w $2C89,$0000,$2C88,$2C8A,$2C8B,$0000,$2C8B,$0000
    Data.w $2C8A,$2C8C,$2C8D,$0000,$2C8D,$0000,$2C8C,$2C8E
    Data.w $2C8F,$0000,$2C8F,$0000,$2C8E,$2C90,$2C91,$0000
    Data.w $2C91,$0000,$2C90,$2C92,$2C93,$0000,$2C93,$0000
    Data.w $2C92,$2C94,$2C95,$0000,$2C95,$0000,$2C94,$2C96
    Data.w $2C97,$0000,$2C97,$0000,$2C96,$2C98,$2C99,$0000
    Data.w $2C99,$0000,$2C98,$2C9A,$2C9B,$0000,$2C9B,$0000
    Data.w $2C9A,$2C9C,$2C9D,$0000,$2C9D,$0000,$2C9C,$2C9E
    Data.w $2C9F,$0000,$2C9F,$0000,$2C9E,$2CA0,$2CA1,$0000
    Data.w $2CA1,$0000,$2CA0,$2CA2,$2CA3,$0000,$2CA3,$0000
    Data.w $2CA2,$2CA4,$2CA5,$0000,$2CA5,$0000,$2CA4,$2CA6
    Data.w $2CA7,$0000,$2CA7,$0000,$2CA6,$2CA8,$2CA9,$0000
    Data.w $2CA9,$0000,$2CA8,$2CAA,$2CAB,$0000,$2CAB,$0000
    Data.w $2CAA,$2CAC,$2CAD,$0000,$2CAD,$0000,$2CAC,$2CAE
    Data.w $2CAF,$0000,$2CAF,$0000,$2CAE,$2CB0,$2CB1,$0000
    Data.w $2CB1,$0000,$2CB0,$2CB2,$2CB3,$0000,$2CB3,$0000
    Data.w $2CB2,$2CB4,$2CB5,$0000,$2CB5,$0000,$2CB4,$2CB6
    Data.w $2CB7,$0000,$2CB7,$0000,$2CB6,$2CB8,$2CB9,$0000
    Data.w $2CB9,$0000,$2CB8,$2CBA,$2CBB,$0000,$2CBB,$0000
    Data.w $2CBA,$2CBC,$2CBD,$0000,$2CBD,$0000,$2CBC,$2CBE
    Data.w $2CBF,$0000,$2CBF,$0000,$2CBE,$2CC0,$2CC1,$0000
    Data.w $2CC1,$0000,$2CC0,$2CC2,$2CC3,$0000,$2CC3,$0000
    Data.w $2CC2,$2CC4,$2CC5,$0000,$2CC5,$0000,$2CC4,$2CC6
    Data.w $2CC7,$0000,$2CC7,$0000,$2CC6,$2CC8,$2CC9,$0000
    Data.w $2CC9,$0000,$2CC8,$2CCA,$2CCB,$0000,$2CCB,$0000
    Data.w $2CCA,$2CCC,$2CCD,$0000,$2CCD,$0000,$2CCC,$2CCE
    Data.w $2CCF,$0000,$2CCF,$0000,$2CCE,$2CD0,$2CD1,$0000
    Data.w $2CD1,$0000,$2CD0,$2CD2,$2CD3,$0000,$2CD3,$0000
    Data.w $2CD2,$2CD4,$2CD5,$0000,$2CD5,$0000,$2CD4,$2CD6
    Data.w $2CD7,$0000,$2CD7,$0000,$2CD6,$2CD8,$2CD9,$0000
    Data.w $2CD9,$0000,$2CD8,$2CDA,$2CDB,$0000,$2CDB,$0000
    Data.w $2CDA,$2CDC,$2CDD,$0000,$2CDD,$0000,$2CDC,$2CDE
    Data.w $2CDF,$0000,$2CDF,$0000,$2CDE,$2CE0,$2CE1,$0000
    Data.w $2CE1,$0000,$2CE0,$2CE2,$2CE3,$0000,$2CE3,$0000
    Data.w $2CE2,$2CEB,$2CEC,$0000,$2CEC,$0000,$2CEB,$2CED
    Data.w $2CEE,$0000,$2CEE,$0000,$2CED,$2CF2,$2CF3,$0000
    Data.w $2CF3,$0000,$2CF2,$2D00,$0000,$10A0,$2D01,$0000
    Data.w $10A1,$2D02,$0000,$10A2,$2D03,$0000,$10A3,$2D04
    Data.w $0000,$10A4,$2D05,$0000,$10A5,$2D06,$0000,$10A6
    Data.w $2D07,$0000,$10A7,$2D08,$0000,$10A8,$2D09,$0000
    Data.w $10A9,$2D0A,$0000,$10AA,$2D0B,$0000,$10AB,$2D0C
    Data.w $0000,$10AC,$2D0D,$0000,$10AD,$2D0E,$0000,$10AE
    Data.w $2D0F,$0000,$10AF,$2D10,$0000,$10B0,$2D11,$0000
    Data.w $10B1,$2D12,$0000,$10B2,$2D13,$0000,$10B3,$2D14
    Data.w $0000,$10B4,$2D15,$0000,$10B5,$2D16,$0000,$10B6
    Data.w $2D17,$0000,$10B7,$2D18,$0000,$10B8,$2D19,$0000
    Data.w $10B9,$2D1A,$0000,$10BA,$2D1B,$0000,$10BB,$2D1C
    Data.w $0000,$10BC,$2D1D,$0000,$10BD,$2D1E,$0000,$10BE
    Data.w $2D1F,$0000,$10BF,$2D20,$0000,$10C0,$2D21,$0000
    Data.w $10C1,$2D22,$0000,$10C2,$2D23,$0000,$10C3,$2D24
    Data.w $0000,$10C4,$2D25,$0000,$10C5,$2D27,$0000,$10C7
    Data.w $2D2D,$0000,$10CD,$A640,$A641,$0000,$A641,$0000
    Data.w $A640,$A642,$A643,$0000,$A643,$0000,$A642,$A644
    Data.w $A645,$0000,$A645,$0000,$A644,$A646,$A647,$0000
    Data.w $A647,$0000,$A646,$A648,$A649,$0000,$A649,$0000
    Data.w $A648,$A64A,$A64B,$0000,$A64B,$0000,$A64A,$A64C
    Data.w $A64D,$0000,$A64D,$0000,$A64C,$A64E,$A64F,$0000
    Data.w $A64F,$0000,$A64E,$A650,$A651,$0000,$A651,$0000
    Data.w $A650,$A652,$A653,$0000,$A653,$0000,$A652,$A654
    Data.w $A655,$0000,$A655,$0000,$A654,$A656,$A657,$0000
    Data.w $A657,$0000,$A656,$A658,$A659,$0000,$A659,$0000
    Data.w $A658,$A65A,$A65B,$0000,$A65B,$0000,$A65A,$A65C
    Data.w $A65D,$0000,$A65D,$0000,$A65C,$A65E,$A65F,$0000
    Data.w $A65F,$0000,$A65E,$A660,$A661,$0000,$A661,$0000
    Data.w $A660,$A662,$A663,$0000,$A663,$0000,$A662,$A664
    Data.w $A665,$0000,$A665,$0000,$A664,$A666,$A667,$0000
    Data.w $A667,$0000,$A666,$A668,$A669,$0000,$A669,$0000
    Data.w $A668,$A66A,$A66B,$0000,$A66B,$0000,$A66A,$A66C
    Data.w $A66D,$0000,$A66D,$0000,$A66C,$A680,$A681,$0000
    Data.w $A681,$0000,$A680,$A682,$A683,$0000,$A683,$0000
    Data.w $A682,$A684,$A685,$0000,$A685,$0000,$A684,$A686
    Data.w $A687,$0000,$A687,$0000,$A686,$A688,$A689,$0000
    Data.w $A689,$0000,$A688,$A68A,$A68B,$0000,$A68B,$0000
    Data.w $A68A,$A68C,$A68D,$0000,$A68D,$0000,$A68C,$A68E
    Data.w $A68F,$0000,$A68F,$0000,$A68E,$A690,$A691,$0000
    Data.w $A691,$0000,$A690,$A692,$A693,$0000,$A693,$0000
    Data.w $A692,$A694,$A695,$0000,$A695,$0000,$A694,$A696
    Data.w $A697,$0000,$A697,$0000,$A696,$A698,$A699,$0000
    Data.w $A699,$0000,$A698,$A69A,$A69B,$0000,$A69B,$0000
    Data.w $A69A,$A722,$A723,$0000,$A723,$0000,$A722,$A724
    Data.w $A725,$0000,$A725,$0000,$A724,$A726,$A727,$0000
    Data.w $A727,$0000,$A726,$A728,$A729,$0000,$A729,$0000
    Data.w $A728,$A72A,$A72B,$0000,$A72B,$0000,$A72A,$A72C
    Data.w $A72D,$0000,$A72D,$0000,$A72C,$A72E,$A72F,$0000
    Data.w $A72F,$0000,$A72E,$A732,$A733,$0000,$A733,$0000
    Data.w $A732,$A734,$A735,$0000,$A735,$0000,$A734,$A736
    Data.w $A737,$0000,$A737,$0000,$A736,$A738,$A739,$0000
    Data.w $A739,$0000,$A738,$A73A,$A73B,$0000,$A73B,$0000
    Data.w $A73A,$A73C,$A73D,$0000,$A73D,$0000,$A73C,$A73E
    Data.w $A73F,$0000,$A73F,$0000,$A73E,$A740,$A741,$0000
    Data.w $A741,$0000,$A740,$A742,$A743,$0000,$A743,$0000
    Data.w $A742,$A744,$A745,$0000,$A745,$0000,$A744,$A746
    Data.w $A747,$0000,$A747,$0000,$A746,$A748,$A749,$0000
    Data.w $A749,$0000,$A748,$A74A,$A74B,$0000,$A74B,$0000
    Data.w $A74A,$A74C,$A74D,$0000,$A74D,$0000,$A74C,$A74E
    Data.w $A74F,$0000,$A74F,$0000,$A74E,$A750,$A751,$0000
    Data.w $A751,$0000,$A750,$A752,$A753,$0000,$A753,$0000
    Data.w $A752,$A754,$A755,$0000,$A755,$0000,$A754,$A756
    Data.w $A757,$0000,$A757,$0000,$A756,$A758,$A759,$0000
    Data.w $A759,$0000,$A758,$A75A,$A75B,$0000,$A75B,$0000
    Data.w $A75A,$A75C,$A75D,$0000,$A75D,$0000,$A75C,$A75E
    Data.w $A75F,$0000,$A75F,$0000,$A75E,$A760,$A761,$0000
    Data.w $A761,$0000,$A760,$A762,$A763,$0000,$A763,$0000
    Data.w $A762,$A764,$A765,$0000,$A765,$0000,$A764,$A766
    Data.w $A767,$0000,$A767,$0000,$A766,$A768,$A769,$0000
    Data.w $A769,$0000,$A768,$A76A,$A76B,$0000,$A76B,$0000
    Data.w $A76A,$A76C,$A76D,$0000,$A76D,$0000,$A76C,$A76E
    Data.w $A76F,$0000,$A76F,$0000,$A76E,$A779,$A77A,$0000
    Data.w $A77A,$0000,$A779,$A77B,$A77C,$0000,$A77C,$0000
    Data.w $A77B,$A77D,$1D79,$0000,$A77E,$A77F,$0000,$A77F
    Data.w $0000,$A77E,$A780,$A781,$0000,$A781,$0000,$A780
    Data.w $A782,$A783,$0000,$A783,$0000,$A782,$A784,$A785
    Data.w $0000,$A785,$0000,$A784,$A786,$A787,$0000,$A787
    Data.w $0000,$A786,$A78B,$A78C,$0000,$A78C,$0000,$A78B
    Data.w $A78D,$0265,$0000,$A790,$A791,$0000,$A791,$0000
    Data.w $A790,$A792,$A793,$0000,$A793,$0000,$A792,$A794
    Data.w $0000,$A7C4,$A796,$A797,$0000,$A797,$0000,$A796
    Data.w $A798,$A799,$0000,$A799,$0000,$A798,$A79A,$A79B
    Data.w $0000,$A79B,$0000,$A79A,$A79C,$A79D,$0000,$A79D
    Data.w $0000,$A79C,$A79E,$A79F,$0000,$A79F,$0000,$A79E
    Data.w $A7A0,$A7A1,$0000,$A7A1,$0000,$A7A0,$A7A2,$A7A3
    Data.w $0000,$A7A3,$0000,$A7A2,$A7A4,$A7A5,$0000,$A7A5
    Data.w $0000,$A7A4,$A7A6,$A7A7,$0000,$A7A7,$0000,$A7A6
    Data.w $A7A8,$A7A9,$0000,$A7A9,$0000,$A7A8,$A7AA,$0266
    Data.w $0000,$A7AB,$025C,$0000,$A7AC,$0261,$0000,$A7AD
    Data.w $026C,$0000,$A7AE,$026A,$0000,$A7B0,$029E,$0000
    Data.w $A7B1,$0287,$0000,$A7B2,$029D,$0000,$A7B3,$AB53
    Data.w $0000,$A7B4,$A7B5,$0000,$A7B5,$0000,$A7B4,$A7B6
    Data.w $A7B7,$0000,$A7B7,$0000,$A7B6,$A7B8,$A7B9,$0000
    Data.w $A7B9,$0000,$A7B8,$A7BA,$A7BB,$0000,$A7BB,$0000
    Data.w $A7BA,$A7BC,$A7BD,$0000,$A7BD,$0000,$A7BC,$A7BE
    Data.w $A7BF,$0000,$A7BF,$0000,$A7BE,$A7C0,$A7C1,$0000
    Data.w $A7C1,$0000,$A7C0,$A7C2,$A7C3,$0000,$A7C3,$0000
    Data.w $A7C2,$A7C4,$A794,$0000,$A7C5,$0282,$0000,$A7C6
    Data.w $1D8E,$0000,$A7C7,$A7C8,$0000,$A7C8,$0000,$A7C7
    Data.w $A7C9,$A7CA,$0000,$A7CA,$0000,$A7C9,$A7D0,$A7D1
    Data.w $0000,$A7D1,$0000,$A7D0,$A7D6,$A7D7,$0000,$A7D7
    Data.w $0000,$A7D6,$A7D8,$A7D9,$0000,$A7D9,$0000,$A7D8
    Data.w $A7F5,$A7F6,$0000,$A7F6,$0000,$A7F5,$AB53,$0000
    Data.w $A7B3,$AB70,$0000,$13A0,$AB71,$0000,$13A1,$AB72
    Data.w $0000,$13A2,$AB73,$0000,$13A3,$AB74,$0000,$13A4
    Data.w $AB75,$0000,$13A5,$AB76,$0000,$13A6,$AB77,$0000
    Data.w $13A7,$AB78,$0000,$13A8,$AB79,$0000,$13A9,$AB7A
    Data.w $0000,$13AA,$AB7B,$0000,$13AB,$AB7C,$0000,$13AC
    Data.w $AB7D,$0000,$13AD,$AB7E,$0000,$13AE,$AB7F,$0000
    Data.w $13AF,$AB80,$0000,$13B0,$AB81,$0000,$13B1,$AB82
    Data.w $0000,$13B2,$AB83,$0000,$13B3,$AB84,$0000,$13B4
    Data.w $AB85,$0000,$13B5,$AB86,$0000,$13B6,$AB87,$0000
    Data.w $13B7,$AB88,$0000,$13B8,$AB89,$0000,$13B9,$AB8A
    Data.w $0000,$13BA,$AB8B,$0000,$13BB,$AB8C,$0000,$13BC
    Data.w $AB8D,$0000,$13BD,$AB8E,$0000,$13BE,$AB8F,$0000
    Data.w $13BF,$AB90,$0000,$13C0,$AB91,$0000,$13C1,$AB92
    Data.w $0000,$13C2,$AB93,$0000,$13C3,$AB94,$0000,$13C4
    Data.w $AB95,$0000,$13C5,$AB96,$0000,$13C6,$AB97,$0000
    Data.w $13C7,$AB98,$0000,$13C8,$AB99,$0000,$13C9,$AB9A
    Data.w $0000,$13CA,$AB9B,$0000,$13CB,$AB9C,$0000,$13CC
    Data.w $AB9D,$0000,$13CD,$AB9E,$0000,$13CE,$AB9F,$0000
    Data.w $13CF,$ABA0,$0000,$13D0,$ABA1,$0000,$13D1,$ABA2
    Data.w $0000,$13D2,$ABA3,$0000,$13D3,$ABA4,$0000,$13D4
    Data.w $ABA5,$0000,$13D5,$ABA6,$0000,$13D6,$ABA7,$0000
    Data.w $13D7,$ABA8,$0000,$13D8,$ABA9,$0000,$13D9,$ABAA
    Data.w $0000,$13DA,$ABAB,$0000,$13DB,$ABAC,$0000,$13DC
    Data.w $ABAD,$0000,$13DD,$ABAE,$0000,$13DE,$ABAF,$0000
    Data.w $13DF,$ABB0,$0000,$13E0,$ABB1,$0000,$13E1,$ABB2
    Data.w $0000,$13E2,$ABB3,$0000,$13E3,$ABB4,$0000,$13E4
    Data.w $ABB5,$0000,$13E5,$ABB6,$0000,$13E6,$ABB7,$0000
    Data.w $13E7,$ABB8,$0000,$13E8,$ABB9,$0000,$13E9,$ABBA
    Data.w $0000,$13EA,$ABBB,$0000,$13EB,$ABBC,$0000,$13EC
    Data.w $ABBD,$0000,$13ED,$ABBE,$0000,$13EE,$ABBF,$0000
    Data.w $13EF,$FF21,$FF41,$0000,$FF22,$FF42,$0000,$FF23
    Data.w $FF43,$0000,$FF24,$FF44,$0000,$FF25,$FF45,$0000
    Data.w $FF26,$FF46,$0000,$FF27,$FF47,$0000,$FF28,$FF48
    Data.w $0000,$FF29,$FF49,$0000,$FF2A,$FF4A,$0000,$FF2B
    Data.w $FF4B,$0000,$FF2C,$FF4C,$0000,$FF2D,$FF4D,$0000
    Data.w $FF2E,$FF4E,$0000,$FF2F,$FF4F,$0000,$FF30,$FF50
    Data.w $0000,$FF31,$FF51,$0000,$FF32,$FF52,$0000,$FF33
    Data.w $FF53,$0000,$FF34,$FF54,$0000,$FF35,$FF55,$0000
    Data.w $FF36,$FF56,$0000,$FF37,$FF57,$0000,$FF38,$FF58
    Data.w $0000,$FF39,$FF59,$0000,$FF3A,$FF5A,$0000,$FF41
    Data.w $0000,$FF21,$FF42,$0000,$FF22,$FF43,$0000,$FF23
    Data.w $FF44,$0000,$FF24,$FF45,$0000,$FF25,$FF46,$0000
    Data.w $FF26,$FF47,$0000,$FF27,$FF48,$0000,$FF28,$FF49
    Data.w $0000,$FF29,$FF4A,$0000,$FF2A,$FF4B,$0000,$FF2B
    Data.w $FF4C,$0000,$FF2C,$FF4D,$0000,$FF2D,$FF4E,$0000
    Data.w $FF2E,$FF4F,$0000,$FF2F,$FF50,$0000,$FF30,$FF51
    Data.w $0000,$FF31,$FF52,$0000,$FF32,$FF53,$0000,$FF33
    Data.w $FF54,$0000,$FF34,$FF55,$0000,$FF35,$FF56,$0000
    Data.w $FF36,$FF57,$0000,$FF37,$FF58,$0000,$FF38,$FF59
    Data.w $0000,$FF39,$FF5A,$0000,$FF3A,$00,$00,$00
    
  EndDataSection 
  
EndProcedure 

UNI_Init() 

Procedure _pUpCase(*in.Unicode)  ;changes the case of the string inplace 
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UNI_UCase(*char\u) 
    If tchar 
      *char\u = tchar 
    Else    
       *char\u  = UNI_LCase(*char\u) 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

Procedure _pLowCase(*in.Unicode)  ;changes the case of the string inplace 
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UNI_LCase(*char\u) 
    If tchar 
      *char\u = tchar 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

Prototype pUpCase(in.p-unicode)   
Prototype pLowCase(in.p-unicode) 
Global pUpCase.pUpCase = @_pupcase()
Global pLowCase.pLowCase = @_plowcase()

Procedure StrCmpNC(a.s,b.s)   ;compare two strings with no case  
  Protected *a.Unicode,*b.Unicode 
  
  pLowCase(a) 
  pLowCase(b)
  *a = @a 
  *b = @b 
    
  While *a\u = *b\u  
    *a+2
    *b+2 
    If (*a\u = 0 And *b\u = 0) 
      ProcedureReturn 1 
    ElseIf (*a\u = 0 Or *b\u = 0) 
      ProcedureReturn 0 
    EndIf   
  Wend   
     
EndProcedure   

t.s = "abcdef 0123456789, äöü, äöü, áóú" 
pUpCase(t) 
tU.s = t 
pLowCase(t) 
t = "ABCDEF" + Mid(t,7) 
Debug t  

Cherokee_Letter_A$ = Chr($13A0)
pLowCase(Cherokee_Letter_A$)
Debug Cherokee_Letter_A$ 
pUpCase(Cherokee_Letter_A$)  
Debug Cherokee_Letter_A$ 

Cherokee_Small_Letter_A$ = Chr($AB70)
pUpCase(Cherokee_Small_Letter_A$) 
Debug Cherokee_Small_Letter_A$ 
pLowCase(Cherokee_Small_Letter_A$)
Debug Cherokee_Small_Letter_A$

Debug strcmpnc(t,tu)

t = Chr($00B5)
Debug t 
pUpCase(t)
Debug t + " " + Hex(Asc(t))
; correct is '39C'
Debug "done"

User avatar
Sicro
Enthusiast
Enthusiast
Posts: 538
Joined: Wed Jun 25, 2014 5:25 pm
Location: Germany
Contact:

Re: Upper and Lower Case Mapping for Unicode

Post by Sicro »

@idle:

Sorry, but it's still not right. Result with your last code:

Code: Select all

; returns 'B5' and this is wrong
t = Chr($00B5)
pUpCase(t)
Debug Hex(Asc(t))
; correct is '39C'
Look at the output of my program above:

Code: Select all

code;upperCase;lowerCase;titleCase
00B5;039C;;039C
Note: If there is no value for upperCase, lowerCase or titleCase, then the value itself applies, i.e. the code value.

And to compare two strings with each other case-insensitively, case-folding must be applied, which requires a different table: CaseFolding table instead of CaseMapping table (see my post above).
Image
Why OpenSource should have a license :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (syntax color scheme) :: RegEx-Engine (compiles RegExes to NFA/DFA)
Manjaro Xfce x64 (Main system) :: Windows 10 Home (VirtualBox) :: Newest PureBasic version
User avatar
idle
Always Here
Always Here
Posts: 5042
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: Upper and Lower Case Mapping for Unicode

Post by idle »

thanks Sicro, this might right now, see changes at line 13

Code: Select all

   Global Dim Uni_UCase($FF5A) 
Global Dim Uni_LCase($FF5A) 

Procedure Uni_Init() 
  Protected lchar,uchar,tcchar  
  
  Restore UNI
  Repeat 
    Read.u lchar 
    Read.u uchar 
    Read.u tcchar 
    
    If lchar  
      If uchar 
         UNI_LCase(lchar) = uchar  
      ElseIf tcchar
        UNI_LCase(lchar) = tcchar 
      Else 
        UNI_LCase(lchar) = lchar 
      EndIf 
      If tcchar
        UNI_UCase(uchar) = tcchar 
      ElseIf lchar  
        UNI_UCase(uchar) = lchar
      Else 
        UNI_UCase(uchar) = uchar
      EndIf   
    EndIf 
    
  Until lchar = 0 
  
  DataSection: UNI: 
    
    Data.w $0041,$0061,$0000,$0042,$0062,$0000,$0043,$0063
    Data.w $0000,$0044,$0064,$0000,$0045,$0065,$0000,$0046
    Data.w $0066,$0000,$0047,$0067,$0000,$0048,$0068,$0000
    Data.w $0049,$0069,$0000,$004A,$006A,$0000,$004B,$006B
    Data.w $0000,$004C,$006C,$0000,$004D,$006D,$0000,$004E
    Data.w $006E,$0000,$004F,$006F,$0000,$0050,$0070,$0000
    Data.w $0051,$0071,$0000,$0052,$0072,$0000,$0053,$0073
    Data.w $0000,$0054,$0074,$0000,$0055,$0075,$0000,$0056
    Data.w $0076,$0000,$0057,$0077,$0000,$0058,$0078,$0000
    Data.w $0059,$0079,$0000,$005A,$007A,$0000,$0061,$0000
    Data.w $0041,$0062,$0000,$0042,$0063,$0000,$0043,$0064
    Data.w $0000,$0044,$0065,$0000,$0045,$0066,$0000,$0046
    Data.w $0067,$0000,$0047,$0068,$0000,$0048,$0069,$0000
    Data.w $0049,$006A,$0000,$004A,$006B,$0000,$004B,$006C
    Data.w $0000,$004C,$006D,$0000,$004D,$006E,$0000,$004E
    Data.w $006F,$0000,$004F,$0070,$0000,$0050,$0071,$0000
    Data.w $0051,$0072,$0000,$0052,$0073,$0000,$0053,$0074
    Data.w $0000,$0054,$0075,$0000,$0055,$0076,$0000,$0056
    Data.w $0077,$0000,$0057,$0078,$0000,$0058,$0079,$0000
    Data.w $0059,$007A,$0000,$005A,$00B5,$0000,$039C,$00C0
    Data.w $00E0,$0000,$00C1,$00E1,$0000,$00C2,$00E2,$0000
    Data.w $00C3,$00E3,$0000,$00C4,$00E4,$0000,$00C5,$00E5
    Data.w $0000,$00C6,$00E6,$0000,$00C7,$00E7,$0000,$00C8
    Data.w $00E8,$0000,$00C9,$00E9,$0000,$00CA,$00EA,$0000
    Data.w $00CB,$00EB,$0000,$00CC,$00EC,$0000,$00CD,$00ED
    Data.w $0000,$00CE,$00EE,$0000,$00CF,$00EF,$0000,$00D0
    Data.w $00F0,$0000,$00D1,$00F1,$0000,$00D2,$00F2,$0000
    Data.w $00D3,$00F3,$0000,$00D4,$00F4,$0000,$00D5,$00F5
    Data.w $0000,$00D6,$00F6,$0000,$00D8,$00F8,$0000,$00D9
    Data.w $00F9,$0000,$00DA,$00FA,$0000,$00DB,$00FB,$0000
    Data.w $00DC,$00FC,$0000,$00DD,$00FD,$0000,$00DE,$00FE
    Data.w $0000,$00E0,$0000,$00C0,$00E1,$0000,$00C1,$00E2
    Data.w $0000,$00C2,$00E3,$0000,$00C3,$00E4,$0000,$00C4
    Data.w $00E5,$0000,$00C5,$00E6,$0000,$00C6,$00E7,$0000
    Data.w $00C7,$00E8,$0000,$00C8,$00E9,$0000,$00C9,$00EA
    Data.w $0000,$00CA,$00EB,$0000,$00CB,$00EC,$0000,$00CC
    Data.w $00ED,$0000,$00CD,$00EE,$0000,$00CE,$00EF,$0000
    Data.w $00CF,$00F0,$0000,$00D0,$00F1,$0000,$00D1,$00F2
    Data.w $0000,$00D2,$00F3,$0000,$00D3,$00F4,$0000,$00D4
    Data.w $00F5,$0000,$00D5,$00F6,$0000,$00D6,$00F8,$0000
    Data.w $00D8,$00F9,$0000,$00D9,$00FA,$0000,$00DA,$00FB
    Data.w $0000,$00DB,$00FC,$0000,$00DC,$00FD,$0000,$00DD
    Data.w $00FE,$0000,$00DE,$00FF,$0000,$0178,$0100,$0101
    Data.w $0000,$0101,$0000,$0100,$0102,$0103,$0000,$0103
    Data.w $0000,$0102,$0104,$0105,$0000,$0105,$0000,$0104
    Data.w $0106,$0107,$0000,$0107,$0000,$0106,$0108,$0109
    Data.w $0000,$0109,$0000,$0108,$010A,$010B,$0000,$010B
    Data.w $0000,$010A,$010C,$010D,$0000,$010D,$0000,$010C
    Data.w $010E,$010F,$0000,$010F,$0000,$010E,$0110,$0111
    Data.w $0000,$0111,$0000,$0110,$0112,$0113,$0000,$0113
    Data.w $0000,$0112,$0114,$0115,$0000,$0115,$0000,$0114
    Data.w $0116,$0117,$0000,$0117,$0000,$0116,$0118,$0119
    Data.w $0000,$0119,$0000,$0118,$011A,$011B,$0000,$011B
    Data.w $0000,$011A,$011C,$011D,$0000,$011D,$0000,$011C
    Data.w $011E,$011F,$0000,$011F,$0000,$011E,$0120,$0121
    Data.w $0000,$0121,$0000,$0120,$0122,$0123,$0000,$0123
    Data.w $0000,$0122,$0124,$0125,$0000,$0125,$0000,$0124
    Data.w $0126,$0127,$0000,$0127,$0000,$0126,$0128,$0129
    Data.w $0000,$0129,$0000,$0128,$012A,$012B,$0000,$012B
    Data.w $0000,$012A,$012C,$012D,$0000,$012D,$0000,$012C
    Data.w $012E,$012F,$0000,$012F,$0000,$012E,$0130,$0069
    Data.w $0000,$0131,$0000,$0049,$0132,$0133,$0000,$0133
    Data.w $0000,$0132,$0134,$0135,$0000,$0135,$0000,$0134
    Data.w $0136,$0137,$0000,$0137,$0000,$0136,$0139,$013A
    Data.w $0000,$013A,$0000,$0139,$013B,$013C,$0000,$013C
    Data.w $0000,$013B,$013D,$013E,$0000,$013E,$0000,$013D
    Data.w $013F,$0140,$0000,$0140,$0000,$013F,$0141,$0142
    Data.w $0000,$0142,$0000,$0141,$0143,$0144,$0000,$0144
    Data.w $0000,$0143,$0145,$0146,$0000,$0146,$0000,$0145
    Data.w $0147,$0148,$0000,$0148,$0000,$0147,$014A,$014B
    Data.w $0000,$014B,$0000,$014A,$014C,$014D,$0000,$014D
    Data.w $0000,$014C,$014E,$014F,$0000,$014F,$0000,$014E
    Data.w $0150,$0151,$0000,$0151,$0000,$0150,$0152,$0153
    Data.w $0000,$0153,$0000,$0152,$0154,$0155,$0000,$0155
    Data.w $0000,$0154,$0156,$0157,$0000,$0157,$0000,$0156
    Data.w $0158,$0159,$0000,$0159,$0000,$0158,$015A,$015B
    Data.w $0000,$015B,$0000,$015A,$015C,$015D,$0000,$015D
    Data.w $0000,$015C,$015E,$015F,$0000,$015F,$0000,$015E
    Data.w $0160,$0161,$0000,$0161,$0000,$0160,$0162,$0163
    Data.w $0000,$0163,$0000,$0162,$0164,$0165,$0000,$0165
    Data.w $0000,$0164,$0166,$0167,$0000,$0167,$0000,$0166
    Data.w $0168,$0169,$0000,$0169,$0000,$0168,$016A,$016B
    Data.w $0000,$016B,$0000,$016A,$016C,$016D,$0000,$016D
    Data.w $0000,$016C,$016E,$016F,$0000,$016F,$0000,$016E
    Data.w $0170,$0171,$0000,$0171,$0000,$0170,$0172,$0173
    Data.w $0000,$0173,$0000,$0172,$0174,$0175,$0000,$0175
    Data.w $0000,$0174,$0176,$0177,$0000,$0177,$0000,$0176
    Data.w $0178,$00FF,$0000,$0179,$017A,$0000,$017A,$0000
    Data.w $0179,$017B,$017C,$0000,$017C,$0000,$017B,$017D
    Data.w $017E,$0000,$017E,$0000,$017D,$017F,$0000,$0053
    Data.w $0180,$0000,$0243,$0181,$0253,$0000,$0182,$0183
    Data.w $0000,$0183,$0000,$0182,$0184,$0185,$0000,$0185
    Data.w $0000,$0184,$0186,$0254,$0000,$0187,$0188,$0000
    Data.w $0188,$0000,$0187,$0189,$0256,$0000,$018A,$0257
    Data.w $0000,$018B,$018C,$0000,$018C,$0000,$018B,$018E
    Data.w $01DD,$0000,$018F,$0259,$0000,$0190,$025B,$0000
    Data.w $0191,$0192,$0000,$0192,$0000,$0191,$0193,$0260
    Data.w $0000,$0194,$0263,$0000,$0195,$0000,$01F6,$0196
    Data.w $0269,$0000,$0197,$0268,$0000,$0198,$0199,$0000
    Data.w $0199,$0000,$0198,$019A,$0000,$023D,$019C,$026F
    Data.w $0000,$019D,$0272,$0000,$019E,$0000,$0220,$019F
    Data.w $0275,$0000,$01A0,$01A1,$0000,$01A1,$0000,$01A0
    Data.w $01A2,$01A3,$0000,$01A3,$0000,$01A2,$01A4,$01A5
    Data.w $0000,$01A5,$0000,$01A4,$01A6,$0280,$0000,$01A7
    Data.w $01A8,$0000,$01A8,$0000,$01A7,$01A9,$0283,$0000
    Data.w $01AC,$01AD,$0000,$01AD,$0000,$01AC,$01AE,$0288
    Data.w $0000,$01AF,$01B0,$0000,$01B0,$0000,$01AF,$01B1
    Data.w $028A,$0000,$01B2,$028B,$0000,$01B3,$01B4,$0000
    Data.w $01B4,$0000,$01B3,$01B5,$01B6,$0000,$01B6,$0000
    Data.w $01B5,$01B7,$0292,$0000,$01B8,$01B9,$0000,$01B9
    Data.w $0000,$01B8,$01BC,$01BD,$0000,$01BD,$0000,$01BC
    Data.w $01BF,$0000,$01F7,$01C4,$01C6,$01C5,$01C5,$01C6
    Data.w $01C5,$01C6,$0000,$01C5,$01C7,$01C9,$01C8,$01C8
    Data.w $01C9,$01C8,$01C9,$0000,$01C8,$01CA,$01CC,$01CB
    Data.w $01CB,$01CC,$01CB,$01CC,$0000,$01CB,$01CD,$01CE
    Data.w $0000,$01CE,$0000,$01CD,$01CF,$01D0,$0000,$01D0
    Data.w $0000,$01CF,$01D1,$01D2,$0000,$01D2,$0000,$01D1
    Data.w $01D3,$01D4,$0000,$01D4,$0000,$01D3,$01D5,$01D6
    Data.w $0000,$01D6,$0000,$01D5,$01D7,$01D8,$0000,$01D8
    Data.w $0000,$01D7,$01D9,$01DA,$0000,$01DA,$0000,$01D9
    Data.w $01DB,$01DC,$0000,$01DC,$0000,$01DB,$01DD,$0000
    Data.w $018E,$01DE,$01DF,$0000,$01DF,$0000,$01DE,$01E0
    Data.w $01E1,$0000,$01E1,$0000,$01E0,$01E2,$01E3,$0000
    Data.w $01E3,$0000,$01E2,$01E4,$01E5,$0000,$01E5,$0000
    Data.w $01E4,$01E6,$01E7,$0000,$01E7,$0000,$01E6,$01E8
    Data.w $01E9,$0000,$01E9,$0000,$01E8,$01EA,$01EB,$0000
    Data.w $01EB,$0000,$01EA,$01EC,$01ED,$0000,$01ED,$0000
    Data.w $01EC,$01EE,$01EF,$0000,$01EF,$0000,$01EE,$01F1
    Data.w $01F3,$01F2,$01F2,$01F3,$01F2,$01F3,$0000,$01F2
    Data.w $01F4,$01F5,$0000,$01F5,$0000,$01F4,$01F6,$0195
    Data.w $0000,$01F7,$01BF,$0000,$01F8,$01F9,$0000,$01F9
    Data.w $0000,$01F8,$01FA,$01FB,$0000,$01FB,$0000,$01FA
    Data.w $01FC,$01FD,$0000,$01FD,$0000,$01FC,$01FE,$01FF
    Data.w $0000,$01FF,$0000,$01FE,$0200,$0201,$0000,$0201
    Data.w $0000,$0200,$0202,$0203,$0000,$0203,$0000,$0202
    Data.w $0204,$0205,$0000,$0205,$0000,$0204,$0206,$0207
    Data.w $0000,$0207,$0000,$0206,$0208,$0209,$0000,$0209
    Data.w $0000,$0208,$020A,$020B,$0000,$020B,$0000,$020A
    Data.w $020C,$020D,$0000,$020D,$0000,$020C,$020E,$020F
    Data.w $0000,$020F,$0000,$020E,$0210,$0211,$0000,$0211
    Data.w $0000,$0210,$0212,$0213,$0000,$0213,$0000,$0212
    Data.w $0214,$0215,$0000,$0215,$0000,$0214,$0216,$0217
    Data.w $0000,$0217,$0000,$0216,$0218,$0219,$0000,$0219
    Data.w $0000,$0218,$021A,$021B,$0000,$021B,$0000,$021A
    Data.w $021C,$021D,$0000,$021D,$0000,$021C,$021E,$021F
    Data.w $0000,$021F,$0000,$021E,$0220,$019E,$0000,$0222
    Data.w $0223,$0000,$0223,$0000,$0222,$0224,$0225,$0000
    Data.w $0225,$0000,$0224,$0226,$0227,$0000,$0227,$0000
    Data.w $0226,$0228,$0229,$0000,$0229,$0000,$0228,$022A
    Data.w $022B,$0000,$022B,$0000,$022A,$022C,$022D,$0000
    Data.w $022D,$0000,$022C,$022E,$022F,$0000,$022F,$0000
    Data.w $022E,$0230,$0231,$0000,$0231,$0000,$0230,$0232
    Data.w $0233,$0000,$0233,$0000,$0232,$023A,$2C65,$0000
    Data.w $023B,$023C,$0000,$023C,$0000,$023B,$023D,$019A
    Data.w $0000,$023E,$2C66,$0000,$023F,$0000,$2C7E,$0240
    Data.w $0000,$2C7F,$0241,$0242,$0000,$0242,$0000,$0241
    Data.w $0243,$0180,$0000,$0244,$0289,$0000,$0245,$028C
    Data.w $0000,$0246,$0247,$0000,$0247,$0000,$0246,$0248
    Data.w $0249,$0000,$0249,$0000,$0248,$024A,$024B,$0000
    Data.w $024B,$0000,$024A,$024C,$024D,$0000,$024D,$0000
    Data.w $024C,$024E,$024F,$0000,$024F,$0000,$024E,$0250
    Data.w $0000,$2C6F,$0251,$0000,$2C6D,$0252,$0000,$2C70
    Data.w $0253,$0000,$0181,$0254,$0000,$0186,$0256,$0000
    Data.w $0189,$0257,$0000,$018A,$0259,$0000,$018F,$025B
    Data.w $0000,$0190,$025C,$0000,$A7AB,$0260,$0000,$0193
    Data.w $0261,$0000,$A7AC,$0263,$0000,$0194,$0265,$0000
    Data.w $A78D,$0266,$0000,$A7AA,$0268,$0000,$0197,$0269
    Data.w $0000,$0196,$026A,$0000,$A7AE,$026B,$0000,$2C62
    Data.w $026C,$0000,$A7AD,$026F,$0000,$019C,$0271,$0000
    Data.w $2C6E,$0272,$0000,$019D,$0275,$0000,$019F,$027D
    Data.w $0000,$2C64,$0280,$0000,$01A6,$0282,$0000,$A7C5
    Data.w $0283,$0000,$01A9,$0287,$0000,$A7B1,$0288,$0000
    Data.w $01AE,$0289,$0000,$0244,$028A,$0000,$01B1,$028B
    Data.w $0000,$01B2,$028C,$0000,$0245,$0292,$0000,$01B7
    Data.w $029D,$0000,$A7B2,$029E,$0000,$A7B0,$0345,$0000
    Data.w $0399,$0370,$0371,$0000,$0371,$0000,$0370,$0372
    Data.w $0373,$0000,$0373,$0000,$0372,$0376,$0377,$0000
    Data.w $0377,$0000,$0376,$037B,$0000,$03FD,$037C,$0000
    Data.w $03FE,$037D,$0000,$03FF,$037F,$03F3,$0000,$0386
    Data.w $03AC,$0000,$0388,$03AD,$0000,$0389,$03AE,$0000
    Data.w $038A,$03AF,$0000,$038C,$03CC,$0000,$038E,$03CD
    Data.w $0000,$038F,$03CE,$0000,$0391,$03B1,$0000,$0392
    Data.w $03B2,$0000,$0393,$03B3,$0000,$0394,$03B4,$0000
    Data.w $0395,$03B5,$0000,$0396,$03B6,$0000,$0397,$03B7
    Data.w $0000,$0398,$03B8,$0000,$0399,$03B9,$0000,$039A
    Data.w $03BA,$0000,$039B,$03BB,$0000,$039C,$03BC,$0000
    Data.w $039D,$03BD,$0000,$039E,$03BE,$0000,$039F,$03BF
    Data.w $0000,$03A0,$03C0,$0000,$03A1,$03C1,$0000,$03A3
    Data.w $03C3,$0000,$03A4,$03C4,$0000,$03A5,$03C5,$0000
    Data.w $03A6,$03C6,$0000,$03A7,$03C7,$0000,$03A8,$03C8
    Data.w $0000,$03A9,$03C9,$0000,$03AA,$03CA,$0000,$03AB
    Data.w $03CB,$0000,$03AC,$0000,$0386,$03AD,$0000,$0388
    Data.w $03AE,$0000,$0389,$03AF,$0000,$038A,$03B1,$0000
    Data.w $0391,$03B2,$0000,$0392,$03B3,$0000,$0393,$03B4
    Data.w $0000,$0394,$03B5,$0000,$0395,$03B6,$0000,$0396
    Data.w $03B7,$0000,$0397,$03B8,$0000,$0398,$03B9,$0000
    Data.w $0399,$03BA,$0000,$039A,$03BB,$0000,$039B,$03BC
    Data.w $0000,$039C,$03BD,$0000,$039D,$03BE,$0000,$039E
    Data.w $03BF,$0000,$039F,$03C0,$0000,$03A0,$03C1,$0000
    Data.w $03A1,$03C2,$0000,$03A3,$03C3,$0000,$03A3,$03C4
    Data.w $0000,$03A4,$03C5,$0000,$03A5,$03C6,$0000,$03A6
    Data.w $03C7,$0000,$03A7,$03C8,$0000,$03A8,$03C9,$0000
    Data.w $03A9,$03CA,$0000,$03AA,$03CB,$0000,$03AB,$03CC
    Data.w $0000,$038C,$03CD,$0000,$038E,$03CE,$0000,$038F
    Data.w $03CF,$03D7,$0000,$03D0,$0000,$0392,$03D1,$0000
    Data.w $0398,$03D5,$0000,$03A6,$03D6,$0000,$03A0,$03D7
    Data.w $0000,$03CF,$03D8,$03D9,$0000,$03D9,$0000,$03D8
    Data.w $03DA,$03DB,$0000,$03DB,$0000,$03DA,$03DC,$03DD
    Data.w $0000,$03DD,$0000,$03DC,$03DE,$03DF,$0000,$03DF
    Data.w $0000,$03DE,$03E0,$03E1,$0000,$03E1,$0000,$03E0
    Data.w $03E2,$03E3,$0000,$03E3,$0000,$03E2,$03E4,$03E5
    Data.w $0000,$03E5,$0000,$03E4,$03E6,$03E7,$0000,$03E7
    Data.w $0000,$03E6,$03E8,$03E9,$0000,$03E9,$0000,$03E8
    Data.w $03EA,$03EB,$0000,$03EB,$0000,$03EA,$03EC,$03ED
    Data.w $0000,$03ED,$0000,$03EC,$03EE,$03EF,$0000,$03EF
    Data.w $0000,$03EE,$03F0,$0000,$039A,$03F1,$0000,$03A1
    Data.w $03F2,$0000,$03F9,$03F3,$0000,$037F,$03F4,$03B8
    Data.w $0000,$03F5,$0000,$0395,$03F7,$03F8,$0000,$03F8
    Data.w $0000,$03F7,$03F9,$03F2,$0000,$03FA,$03FB,$0000
    Data.w $03FB,$0000,$03FA,$03FD,$037B,$0000,$03FE,$037C
    Data.w $0000,$03FF,$037D,$0000,$0400,$0450,$0000,$0401
    Data.w $0451,$0000,$0402,$0452,$0000,$0403,$0453,$0000
    Data.w $0404,$0454,$0000,$0405,$0455,$0000,$0406,$0456
    Data.w $0000,$0407,$0457,$0000,$0408,$0458,$0000,$0409
    Data.w $0459,$0000,$040A,$045A,$0000,$040B,$045B,$0000
    Data.w $040C,$045C,$0000,$040D,$045D,$0000,$040E,$045E
    Data.w $0000,$040F,$045F,$0000,$0410,$0430,$0000,$0411
    Data.w $0431,$0000,$0412,$0432,$0000,$0413,$0433,$0000
    Data.w $0414,$0434,$0000,$0415,$0435,$0000,$0416,$0436
    Data.w $0000,$0417,$0437,$0000,$0418,$0438,$0000,$0419
    Data.w $0439,$0000,$041A,$043A,$0000,$041B,$043B,$0000
    Data.w $041C,$043C,$0000,$041D,$043D,$0000,$041E,$043E
    Data.w $0000,$041F,$043F,$0000,$0420,$0440,$0000,$0421
    Data.w $0441,$0000,$0422,$0442,$0000,$0423,$0443,$0000
    Data.w $0424,$0444,$0000,$0425,$0445,$0000,$0426,$0446
    Data.w $0000,$0427,$0447,$0000,$0428,$0448,$0000,$0429
    Data.w $0449,$0000,$042A,$044A,$0000,$042B,$044B,$0000
    Data.w $042C,$044C,$0000,$042D,$044D,$0000,$042E,$044E
    Data.w $0000,$042F,$044F,$0000,$0430,$0000,$0410,$0431
    Data.w $0000,$0411,$0432,$0000,$0412,$0433,$0000,$0413
    Data.w $0434,$0000,$0414,$0435,$0000,$0415,$0436,$0000
    Data.w $0416,$0437,$0000,$0417,$0438,$0000,$0418,$0439
    Data.w $0000,$0419,$043A,$0000,$041A,$043B,$0000,$041B
    Data.w $043C,$0000,$041C,$043D,$0000,$041D,$043E,$0000
    Data.w $041E,$043F,$0000,$041F,$0440,$0000,$0420,$0441
    Data.w $0000,$0421,$0442,$0000,$0422,$0443,$0000,$0423
    Data.w $0444,$0000,$0424,$0445,$0000,$0425,$0446,$0000
    Data.w $0426,$0447,$0000,$0427,$0448,$0000,$0428,$0449
    Data.w $0000,$0429,$044A,$0000,$042A,$044B,$0000,$042B
    Data.w $044C,$0000,$042C,$044D,$0000,$042D,$044E,$0000
    Data.w $042E,$044F,$0000,$042F,$0450,$0000,$0400,$0451
    Data.w $0000,$0401,$0452,$0000,$0402,$0453,$0000,$0403
    Data.w $0454,$0000,$0404,$0455,$0000,$0405,$0456,$0000
    Data.w $0406,$0457,$0000,$0407,$0458,$0000,$0408,$0459
    Data.w $0000,$0409,$045A,$0000,$040A,$045B,$0000,$040B
    Data.w $045C,$0000,$040C,$045D,$0000,$040D,$045E,$0000
    Data.w $040E,$045F,$0000,$040F,$0460,$0461,$0000,$0461
    Data.w $0000,$0460,$0462,$0463,$0000,$0463,$0000,$0462
    Data.w $0464,$0465,$0000,$0465,$0000,$0464,$0466,$0467
    Data.w $0000,$0467,$0000,$0466,$0468,$0469,$0000,$0469
    Data.w $0000,$0468,$046A,$046B,$0000,$046B,$0000,$046A
    Data.w $046C,$046D,$0000,$046D,$0000,$046C,$046E,$046F
    Data.w $0000,$046F,$0000,$046E,$0470,$0471,$0000,$0471
    Data.w $0000,$0470,$0472,$0473,$0000,$0473,$0000,$0472
    Data.w $0474,$0475,$0000,$0475,$0000,$0474,$0476,$0477
    Data.w $0000,$0477,$0000,$0476,$0478,$0479,$0000,$0479
    Data.w $0000,$0478,$047A,$047B,$0000,$047B,$0000,$047A
    Data.w $047C,$047D,$0000,$047D,$0000,$047C,$047E,$047F
    Data.w $0000,$047F,$0000,$047E,$0480,$0481,$0000,$0481
    Data.w $0000,$0480,$048A,$048B,$0000,$048B,$0000,$048A
    Data.w $048C,$048D,$0000,$048D,$0000,$048C,$048E,$048F
    Data.w $0000,$048F,$0000,$048E,$0490,$0491,$0000,$0491
    Data.w $0000,$0490,$0492,$0493,$0000,$0493,$0000,$0492
    Data.w $0494,$0495,$0000,$0495,$0000,$0494,$0496,$0497
    Data.w $0000,$0497,$0000,$0496,$0498,$0499,$0000,$0499
    Data.w $0000,$0498,$049A,$049B,$0000,$049B,$0000,$049A
    Data.w $049C,$049D,$0000,$049D,$0000,$049C,$049E,$049F
    Data.w $0000,$049F,$0000,$049E,$04A0,$04A1,$0000,$04A1
    Data.w $0000,$04A0,$04A2,$04A3,$0000,$04A3,$0000,$04A2
    Data.w $04A4,$04A5,$0000,$04A5,$0000,$04A4,$04A6,$04A7
    Data.w $0000,$04A7,$0000,$04A6,$04A8,$04A9,$0000,$04A9
    Data.w $0000,$04A8,$04AA,$04AB,$0000,$04AB,$0000,$04AA
    Data.w $04AC,$04AD,$0000,$04AD,$0000,$04AC,$04AE,$04AF
    Data.w $0000,$04AF,$0000,$04AE,$04B0,$04B1,$0000,$04B1
    Data.w $0000,$04B0,$04B2,$04B3,$0000,$04B3,$0000,$04B2
    Data.w $04B4,$04B5,$0000,$04B5,$0000,$04B4,$04B6,$04B7
    Data.w $0000,$04B7,$0000,$04B6,$04B8,$04B9,$0000,$04B9
    Data.w $0000,$04B8,$04BA,$04BB,$0000,$04BB,$0000,$04BA
    Data.w $04BC,$04BD,$0000,$04BD,$0000,$04BC,$04BE,$04BF
    Data.w $0000,$04BF,$0000,$04BE,$04C0,$04CF,$0000,$04C1
    Data.w $04C2,$0000,$04C2,$0000,$04C1,$04C3,$04C4,$0000
    Data.w $04C4,$0000,$04C3,$04C5,$04C6,$0000,$04C6,$0000
    Data.w $04C5,$04C7,$04C8,$0000,$04C8,$0000,$04C7,$04C9
    Data.w $04CA,$0000,$04CA,$0000,$04C9,$04CB,$04CC,$0000
    Data.w $04CC,$0000,$04CB,$04CD,$04CE,$0000,$04CE,$0000
    Data.w $04CD,$04CF,$0000,$04C0,$04D0,$04D1,$0000,$04D1
    Data.w $0000,$04D0,$04D2,$04D3,$0000,$04D3,$0000,$04D2
    Data.w $04D4,$04D5,$0000,$04D5,$0000,$04D4,$04D6,$04D7
    Data.w $0000,$04D7,$0000,$04D6,$04D8,$04D9,$0000,$04D9
    Data.w $0000,$04D8,$04DA,$04DB,$0000,$04DB,$0000,$04DA
    Data.w $04DC,$04DD,$0000,$04DD,$0000,$04DC,$04DE,$04DF
    Data.w $0000,$04DF,$0000,$04DE,$04E0,$04E1,$0000,$04E1
    Data.w $0000,$04E0,$04E2,$04E3,$0000,$04E3,$0000,$04E2
    Data.w $04E4,$04E5,$0000,$04E5,$0000,$04E4,$04E6,$04E7
    Data.w $0000,$04E7,$0000,$04E6,$04E8,$04E9,$0000,$04E9
    Data.w $0000,$04E8,$04EA,$04EB,$0000,$04EB,$0000,$04EA
    Data.w $04EC,$04ED,$0000,$04ED,$0000,$04EC,$04EE,$04EF
    Data.w $0000,$04EF,$0000,$04EE,$04F0,$04F1,$0000,$04F1
    Data.w $0000,$04F0,$04F2,$04F3,$0000,$04F3,$0000,$04F2
    Data.w $04F4,$04F5,$0000,$04F5,$0000,$04F4,$04F6,$04F7
    Data.w $0000,$04F7,$0000,$04F6,$04F8,$04F9,$0000,$04F9
    Data.w $0000,$04F8,$04FA,$04FB,$0000,$04FB,$0000,$04FA
    Data.w $04FC,$04FD,$0000,$04FD,$0000,$04FC,$04FE,$04FF
    Data.w $0000,$04FF,$0000,$04FE,$0500,$0501,$0000,$0501
    Data.w $0000,$0500,$0502,$0503,$0000,$0503,$0000,$0502
    Data.w $0504,$0505,$0000,$0505,$0000,$0504,$0506,$0507
    Data.w $0000,$0507,$0000,$0506,$0508,$0509,$0000,$0509
    Data.w $0000,$0508,$050A,$050B,$0000,$050B,$0000,$050A
    Data.w $050C,$050D,$0000,$050D,$0000,$050C,$050E,$050F
    Data.w $0000,$050F,$0000,$050E,$0510,$0511,$0000,$0511
    Data.w $0000,$0510,$0512,$0513,$0000,$0513,$0000,$0512
    Data.w $0514,$0515,$0000,$0515,$0000,$0514,$0516,$0517
    Data.w $0000,$0517,$0000,$0516,$0518,$0519,$0000,$0519
    Data.w $0000,$0518,$051A,$051B,$0000,$051B,$0000,$051A
    Data.w $051C,$051D,$0000,$051D,$0000,$051C,$051E,$051F
    Data.w $0000,$051F,$0000,$051E,$0520,$0521,$0000,$0521
    Data.w $0000,$0520,$0522,$0523,$0000,$0523,$0000,$0522
    Data.w $0524,$0525,$0000,$0525,$0000,$0524,$0526,$0527
    Data.w $0000,$0527,$0000,$0526,$0528,$0529,$0000,$0529
    Data.w $0000,$0528,$052A,$052B,$0000,$052B,$0000,$052A
    Data.w $052C,$052D,$0000,$052D,$0000,$052C,$052E,$052F
    Data.w $0000,$052F,$0000,$052E,$0531,$0561,$0000,$0532
    Data.w $0562,$0000,$0533,$0563,$0000,$0534,$0564,$0000
    Data.w $0535,$0565,$0000,$0536,$0566,$0000,$0537,$0567
    Data.w $0000,$0538,$0568,$0000,$0539,$0569,$0000,$053A
    Data.w $056A,$0000,$053B,$056B,$0000,$053C,$056C,$0000
    Data.w $053D,$056D,$0000,$053E,$056E,$0000,$053F,$056F
    Data.w $0000,$0540,$0570,$0000,$0541,$0571,$0000,$0542
    Data.w $0572,$0000,$0543,$0573,$0000,$0544,$0574,$0000
    Data.w $0545,$0575,$0000,$0546,$0576,$0000,$0547,$0577
    Data.w $0000,$0548,$0578,$0000,$0549,$0579,$0000,$054A
    Data.w $057A,$0000,$054B,$057B,$0000,$054C,$057C,$0000
    Data.w $054D,$057D,$0000,$054E,$057E,$0000,$054F,$057F
    Data.w $0000,$0550,$0580,$0000,$0551,$0581,$0000,$0552
    Data.w $0582,$0000,$0553,$0583,$0000,$0554,$0584,$0000
    Data.w $0555,$0585,$0000,$0556,$0586,$0000,$0561,$0000
    Data.w $0531,$0562,$0000,$0532,$0563,$0000,$0533,$0564
    Data.w $0000,$0534,$0565,$0000,$0535,$0566,$0000,$0536
    Data.w $0567,$0000,$0537,$0568,$0000,$0538,$0569,$0000
    Data.w $0539,$056A,$0000,$053A,$056B,$0000,$053B,$056C
    Data.w $0000,$053C,$056D,$0000,$053D,$056E,$0000,$053E
    Data.w $056F,$0000,$053F,$0570,$0000,$0540,$0571,$0000
    Data.w $0541,$0572,$0000,$0542,$0573,$0000,$0543,$0574
    Data.w $0000,$0544,$0575,$0000,$0545,$0576,$0000,$0546
    Data.w $0577,$0000,$0547,$0578,$0000,$0548,$0579,$0000
    Data.w $0549,$057A,$0000,$054A,$057B,$0000,$054B,$057C
    Data.w $0000,$054C,$057D,$0000,$054D,$057E,$0000,$054E
    Data.w $057F,$0000,$054F,$0580,$0000,$0550,$0581,$0000
    Data.w $0551,$0582,$0000,$0552,$0583,$0000,$0553,$0584
    Data.w $0000,$0554,$0585,$0000,$0555,$0586,$0000,$0556
    Data.w $10A0,$2D00,$0000,$10A1,$2D01,$0000,$10A2,$2D02
    Data.w $0000,$10A3,$2D03,$0000,$10A4,$2D04,$0000,$10A5
    Data.w $2D05,$0000,$10A6,$2D06,$0000,$10A7,$2D07,$0000
    Data.w $10A8,$2D08,$0000,$10A9,$2D09,$0000,$10AA,$2D0A
    Data.w $0000,$10AB,$2D0B,$0000,$10AC,$2D0C,$0000,$10AD
    Data.w $2D0D,$0000,$10AE,$2D0E,$0000,$10AF,$2D0F,$0000
    Data.w $10B0,$2D10,$0000,$10B1,$2D11,$0000,$10B2,$2D12
    Data.w $0000,$10B3,$2D13,$0000,$10B4,$2D14,$0000,$10B5
    Data.w $2D15,$0000,$10B6,$2D16,$0000,$10B7,$2D17,$0000
    Data.w $10B8,$2D18,$0000,$10B9,$2D19,$0000,$10BA,$2D1A
    Data.w $0000,$10BB,$2D1B,$0000,$10BC,$2D1C,$0000,$10BD
    Data.w $2D1D,$0000,$10BE,$2D1E,$0000,$10BF,$2D1F,$0000
    Data.w $10C0,$2D20,$0000,$10C1,$2D21,$0000,$10C2,$2D22
    Data.w $0000,$10C3,$2D23,$0000,$10C4,$2D24,$0000,$10C5
    Data.w $2D25,$0000,$10C7,$2D27,$0000,$10CD,$2D2D,$0000
    Data.w $10D0,$0000,$10D0,$10D1,$0000,$10D1,$10D2,$0000
    Data.w $10D2,$10D3,$0000,$10D3,$10D4,$0000,$10D4,$10D5
    Data.w $0000,$10D5,$10D6,$0000,$10D6,$10D7,$0000,$10D7
    Data.w $10D8,$0000,$10D8,$10D9,$0000,$10D9,$10DA,$0000
    Data.w $10DA,$10DB,$0000,$10DB,$10DC,$0000,$10DC,$10DD
    Data.w $0000,$10DD,$10DE,$0000,$10DE,$10DF,$0000,$10DF
    Data.w $10E0,$0000,$10E0,$10E1,$0000,$10E1,$10E2,$0000
    Data.w $10E2,$10E3,$0000,$10E3,$10E4,$0000,$10E4,$10E5
    Data.w $0000,$10E5,$10E6,$0000,$10E6,$10E7,$0000,$10E7
    Data.w $10E8,$0000,$10E8,$10E9,$0000,$10E9,$10EA,$0000
    Data.w $10EA,$10EB,$0000,$10EB,$10EC,$0000,$10EC,$10ED
    Data.w $0000,$10ED,$10EE,$0000,$10EE,$10EF,$0000,$10EF
    Data.w $10F0,$0000,$10F0,$10F1,$0000,$10F1,$10F2,$0000
    Data.w $10F2,$10F3,$0000,$10F3,$10F4,$0000,$10F4,$10F5
    Data.w $0000,$10F5,$10F6,$0000,$10F6,$10F7,$0000,$10F7
    Data.w $10F8,$0000,$10F8,$10F9,$0000,$10F9,$10FA,$0000
    Data.w $10FA,$10FD,$0000,$10FD,$10FE,$0000,$10FE,$10FF
    Data.w $0000,$10FF,$13A0,$AB70,$0000,$13A1,$AB71,$0000
    Data.w $13A2,$AB72,$0000,$13A3,$AB73,$0000,$13A4,$AB74
    Data.w $0000,$13A5,$AB75,$0000,$13A6,$AB76,$0000,$13A7
    Data.w $AB77,$0000,$13A8,$AB78,$0000,$13A9,$AB79,$0000
    Data.w $13AA,$AB7A,$0000,$13AB,$AB7B,$0000,$13AC,$AB7C
    Data.w $0000,$13AD,$AB7D,$0000,$13AE,$AB7E,$0000,$13AF
    Data.w $AB7F,$0000,$13B0,$AB80,$0000,$13B1,$AB81,$0000
    Data.w $13B2,$AB82,$0000,$13B3,$AB83,$0000,$13B4,$AB84
    Data.w $0000,$13B5,$AB85,$0000,$13B6,$AB86,$0000,$13B7
    Data.w $AB87,$0000,$13B8,$AB88,$0000,$13B9,$AB89,$0000
    Data.w $13BA,$AB8A,$0000,$13BB,$AB8B,$0000,$13BC,$AB8C
    Data.w $0000,$13BD,$AB8D,$0000,$13BE,$AB8E,$0000,$13BF
    Data.w $AB8F,$0000,$13C0,$AB90,$0000,$13C1,$AB91,$0000
    Data.w $13C2,$AB92,$0000,$13C3,$AB93,$0000,$13C4,$AB94
    Data.w $0000,$13C5,$AB95,$0000,$13C6,$AB96,$0000,$13C7
    Data.w $AB97,$0000,$13C8,$AB98,$0000,$13C9,$AB99,$0000
    Data.w $13CA,$AB9A,$0000,$13CB,$AB9B,$0000,$13CC,$AB9C
    Data.w $0000,$13CD,$AB9D,$0000,$13CE,$AB9E,$0000,$13CF
    Data.w $AB9F,$0000,$13D0,$ABA0,$0000,$13D1,$ABA1,$0000
    Data.w $13D2,$ABA2,$0000,$13D3,$ABA3,$0000,$13D4,$ABA4
    Data.w $0000,$13D5,$ABA5,$0000,$13D6,$ABA6,$0000,$13D7
    Data.w $ABA7,$0000,$13D8,$ABA8,$0000,$13D9,$ABA9,$0000
    Data.w $13DA,$ABAA,$0000,$13DB,$ABAB,$0000,$13DC,$ABAC
    Data.w $0000,$13DD,$ABAD,$0000,$13DE,$ABAE,$0000,$13DF
    Data.w $ABAF,$0000,$13E0,$ABB0,$0000,$13E1,$ABB1,$0000
    Data.w $13E2,$ABB2,$0000,$13E3,$ABB3,$0000,$13E4,$ABB4
    Data.w $0000,$13E5,$ABB5,$0000,$13E6,$ABB6,$0000,$13E7
    Data.w $ABB7,$0000,$13E8,$ABB8,$0000,$13E9,$ABB9,$0000
    Data.w $13EA,$ABBA,$0000,$13EB,$ABBB,$0000,$13EC,$ABBC
    Data.w $0000,$13ED,$ABBD,$0000,$13EE,$ABBE,$0000,$13EF
    Data.w $ABBF,$0000,$13F0,$13F8,$0000,$13F1,$13F9,$0000
    Data.w $13F2,$13FA,$0000,$13F3,$13FB,$0000,$13F4,$13FC
    Data.w $0000,$13F5,$13FD,$0000,$13F8,$0000,$13F0,$13F9
    Data.w $0000,$13F1,$13FA,$0000,$13F2,$13FB,$0000,$13F3
    Data.w $13FC,$0000,$13F4,$13FD,$0000,$13F5,$1C80,$0000
    Data.w $0412,$1C81,$0000,$0414,$1C82,$0000,$041E,$1C83
    Data.w $0000,$0421,$1C84,$0000,$0422,$1C85,$0000,$0422
    Data.w $1C86,$0000,$042A,$1C87,$0000,$0462,$1C88,$0000
    Data.w $A64A,$1C90,$10D0,$0000,$1C91,$10D1,$0000,$1C92
    Data.w $10D2,$0000,$1C93,$10D3,$0000,$1C94,$10D4,$0000
    Data.w $1C95,$10D5,$0000,$1C96,$10D6,$0000,$1C97,$10D7
    Data.w $0000,$1C98,$10D8,$0000,$1C99,$10D9,$0000,$1C9A
    Data.w $10DA,$0000,$1C9B,$10DB,$0000,$1C9C,$10DC,$0000
    Data.w $1C9D,$10DD,$0000,$1C9E,$10DE,$0000,$1C9F,$10DF
    Data.w $0000,$1CA0,$10E0,$0000,$1CA1,$10E1,$0000,$1CA2
    Data.w $10E2,$0000,$1CA3,$10E3,$0000,$1CA4,$10E4,$0000
    Data.w $1CA5,$10E5,$0000,$1CA6,$10E6,$0000,$1CA7,$10E7
    Data.w $0000,$1CA8,$10E8,$0000,$1CA9,$10E9,$0000,$1CAA
    Data.w $10EA,$0000,$1CAB,$10EB,$0000,$1CAC,$10EC,$0000
    Data.w $1CAD,$10ED,$0000,$1CAE,$10EE,$0000,$1CAF,$10EF
    Data.w $0000,$1CB0,$10F0,$0000,$1CB1,$10F1,$0000,$1CB2
    Data.w $10F2,$0000,$1CB3,$10F3,$0000,$1CB4,$10F4,$0000
    Data.w $1CB5,$10F5,$0000,$1CB6,$10F6,$0000,$1CB7,$10F7
    Data.w $0000,$1CB8,$10F8,$0000,$1CB9,$10F9,$0000,$1CBA
    Data.w $10FA,$0000,$1CBD,$10FD,$0000,$1CBE,$10FE,$0000
    Data.w $1CBF,$10FF,$0000,$1D79,$0000,$A77D,$1D7D,$0000
    Data.w $2C63,$1D8E,$0000,$A7C6,$1E00,$1E01,$0000,$1E01
    Data.w $0000,$1E00,$1E02,$1E03,$0000,$1E03,$0000,$1E02
    Data.w $1E04,$1E05,$0000,$1E05,$0000,$1E04,$1E06,$1E07
    Data.w $0000,$1E07,$0000,$1E06,$1E08,$1E09,$0000,$1E09
    Data.w $0000,$1E08,$1E0A,$1E0B,$0000,$1E0B,$0000,$1E0A
    Data.w $1E0C,$1E0D,$0000,$1E0D,$0000,$1E0C,$1E0E,$1E0F
    Data.w $0000,$1E0F,$0000,$1E0E,$1E10,$1E11,$0000,$1E11
    Data.w $0000,$1E10,$1E12,$1E13,$0000,$1E13,$0000,$1E12
    Data.w $1E14,$1E15,$0000,$1E15,$0000,$1E14,$1E16,$1E17
    Data.w $0000,$1E17,$0000,$1E16,$1E18,$1E19,$0000,$1E19
    Data.w $0000,$1E18,$1E1A,$1E1B,$0000,$1E1B,$0000,$1E1A
    Data.w $1E1C,$1E1D,$0000,$1E1D,$0000,$1E1C,$1E1E,$1E1F
    Data.w $0000,$1E1F,$0000,$1E1E,$1E20,$1E21,$0000,$1E21
    Data.w $0000,$1E20,$1E22,$1E23,$0000,$1E23,$0000,$1E22
    Data.w $1E24,$1E25,$0000,$1E25,$0000,$1E24,$1E26,$1E27
    Data.w $0000,$1E27,$0000,$1E26,$1E28,$1E29,$0000,$1E29
    Data.w $0000,$1E28,$1E2A,$1E2B,$0000,$1E2B,$0000,$1E2A
    Data.w $1E2C,$1E2D,$0000,$1E2D,$0000,$1E2C,$1E2E,$1E2F
    Data.w $0000,$1E2F,$0000,$1E2E,$1E30,$1E31,$0000,$1E31
    Data.w $0000,$1E30,$1E32,$1E33,$0000,$1E33,$0000,$1E32
    Data.w $1E34,$1E35,$0000,$1E35,$0000,$1E34,$1E36,$1E37
    Data.w $0000,$1E37,$0000,$1E36,$1E38,$1E39,$0000,$1E39
    Data.w $0000,$1E38,$1E3A,$1E3B,$0000,$1E3B,$0000,$1E3A
    Data.w $1E3C,$1E3D,$0000,$1E3D,$0000,$1E3C,$1E3E,$1E3F
    Data.w $0000,$1E3F,$0000,$1E3E,$1E40,$1E41,$0000,$1E41
    Data.w $0000,$1E40,$1E42,$1E43,$0000,$1E43,$0000,$1E42
    Data.w $1E44,$1E45,$0000,$1E45,$0000,$1E44,$1E46,$1E47
    Data.w $0000,$1E47,$0000,$1E46,$1E48,$1E49,$0000,$1E49
    Data.w $0000,$1E48,$1E4A,$1E4B,$0000,$1E4B,$0000,$1E4A
    Data.w $1E4C,$1E4D,$0000,$1E4D,$0000,$1E4C,$1E4E,$1E4F
    Data.w $0000,$1E4F,$0000,$1E4E,$1E50,$1E51,$0000,$1E51
    Data.w $0000,$1E50,$1E52,$1E53,$0000,$1E53,$0000,$1E52
    Data.w $1E54,$1E55,$0000,$1E55,$0000,$1E54,$1E56,$1E57
    Data.w $0000,$1E57,$0000,$1E56,$1E58,$1E59,$0000,$1E59
    Data.w $0000,$1E58,$1E5A,$1E5B,$0000,$1E5B,$0000,$1E5A
    Data.w $1E5C,$1E5D,$0000,$1E5D,$0000,$1E5C,$1E5E,$1E5F
    Data.w $0000,$1E5F,$0000,$1E5E,$1E60,$1E61,$0000,$1E61
    Data.w $0000,$1E60,$1E62,$1E63,$0000,$1E63,$0000,$1E62
    Data.w $1E64,$1E65,$0000,$1E65,$0000,$1E64,$1E66,$1E67
    Data.w $0000,$1E67,$0000,$1E66,$1E68,$1E69,$0000,$1E69
    Data.w $0000,$1E68,$1E6A,$1E6B,$0000,$1E6B,$0000,$1E6A
    Data.w $1E6C,$1E6D,$0000,$1E6D,$0000,$1E6C,$1E6E,$1E6F
    Data.w $0000,$1E6F,$0000,$1E6E,$1E70,$1E71,$0000,$1E71
    Data.w $0000,$1E70,$1E72,$1E73,$0000,$1E73,$0000,$1E72
    Data.w $1E74,$1E75,$0000,$1E75,$0000,$1E74,$1E76,$1E77
    Data.w $0000,$1E77,$0000,$1E76,$1E78,$1E79,$0000,$1E79
    Data.w $0000,$1E78,$1E7A,$1E7B,$0000,$1E7B,$0000,$1E7A
    Data.w $1E7C,$1E7D,$0000,$1E7D,$0000,$1E7C,$1E7E,$1E7F
    Data.w $0000,$1E7F,$0000,$1E7E,$1E80,$1E81,$0000,$1E81
    Data.w $0000,$1E80,$1E82,$1E83,$0000,$1E83,$0000,$1E82
    Data.w $1E84,$1E85,$0000,$1E85,$0000,$1E84,$1E86,$1E87
    Data.w $0000,$1E87,$0000,$1E86,$1E88,$1E89,$0000,$1E89
    Data.w $0000,$1E88,$1E8A,$1E8B,$0000,$1E8B,$0000,$1E8A
    Data.w $1E8C,$1E8D,$0000,$1E8D,$0000,$1E8C,$1E8E,$1E8F
    Data.w $0000,$1E8F,$0000,$1E8E,$1E90,$1E91,$0000,$1E91
    Data.w $0000,$1E90,$1E92,$1E93,$0000,$1E93,$0000,$1E92
    Data.w $1E94,$1E95,$0000,$1E95,$0000,$1E94,$1E9B,$0000
    Data.w $1E60,$1E9E,$00DF,$0000,$1EA0,$1EA1,$0000,$1EA1
    Data.w $0000,$1EA0,$1EA2,$1EA3,$0000,$1EA3,$0000,$1EA2
    Data.w $1EA4,$1EA5,$0000,$1EA5,$0000,$1EA4,$1EA6,$1EA7
    Data.w $0000,$1EA7,$0000,$1EA6,$1EA8,$1EA9,$0000,$1EA9
    Data.w $0000,$1EA8,$1EAA,$1EAB,$0000,$1EAB,$0000,$1EAA
    Data.w $1EAC,$1EAD,$0000,$1EAD,$0000,$1EAC,$1EAE,$1EAF
    Data.w $0000,$1EAF,$0000,$1EAE,$1EB0,$1EB1,$0000,$1EB1
    Data.w $0000,$1EB0,$1EB2,$1EB3,$0000,$1EB3,$0000,$1EB2
    Data.w $1EB4,$1EB5,$0000,$1EB5,$0000,$1EB4,$1EB6,$1EB7
    Data.w $0000,$1EB7,$0000,$1EB6,$1EB8,$1EB9,$0000,$1EB9
    Data.w $0000,$1EB8,$1EBA,$1EBB,$0000,$1EBB,$0000,$1EBA
    Data.w $1EBC,$1EBD,$0000,$1EBD,$0000,$1EBC,$1EBE,$1EBF
    Data.w $0000,$1EBF,$0000,$1EBE,$1EC0,$1EC1,$0000,$1EC1
    Data.w $0000,$1EC0,$1EC2,$1EC3,$0000,$1EC3,$0000,$1EC2
    Data.w $1EC4,$1EC5,$0000,$1EC5,$0000,$1EC4,$1EC6,$1EC7
    Data.w $0000,$1EC7,$0000,$1EC6,$1EC8,$1EC9,$0000,$1EC9
    Data.w $0000,$1EC8,$1ECA,$1ECB,$0000,$1ECB,$0000,$1ECA
    Data.w $1ECC,$1ECD,$0000,$1ECD,$0000,$1ECC,$1ECE,$1ECF
    Data.w $0000,$1ECF,$0000,$1ECE,$1ED0,$1ED1,$0000,$1ED1
    Data.w $0000,$1ED0,$1ED2,$1ED3,$0000,$1ED3,$0000,$1ED2
    Data.w $1ED4,$1ED5,$0000,$1ED5,$0000,$1ED4,$1ED6,$1ED7
    Data.w $0000,$1ED7,$0000,$1ED6,$1ED8,$1ED9,$0000,$1ED9
    Data.w $0000,$1ED8,$1EDA,$1EDB,$0000,$1EDB,$0000,$1EDA
    Data.w $1EDC,$1EDD,$0000,$1EDD,$0000,$1EDC,$1EDE,$1EDF
    Data.w $0000,$1EDF,$0000,$1EDE,$1EE0,$1EE1,$0000,$1EE1
    Data.w $0000,$1EE0,$1EE2,$1EE3,$0000,$1EE3,$0000,$1EE2
    Data.w $1EE4,$1EE5,$0000,$1EE5,$0000,$1EE4,$1EE6,$1EE7
    Data.w $0000,$1EE7,$0000,$1EE6,$1EE8,$1EE9,$0000,$1EE9
    Data.w $0000,$1EE8,$1EEA,$1EEB,$0000,$1EEB,$0000,$1EEA
    Data.w $1EEC,$1EED,$0000,$1EED,$0000,$1EEC,$1EEE,$1EEF
    Data.w $0000,$1EEF,$0000,$1EEE,$1EF0,$1EF1,$0000,$1EF1
    Data.w $0000,$1EF0,$1EF2,$1EF3,$0000,$1EF3,$0000,$1EF2
    Data.w $1EF4,$1EF5,$0000,$1EF5,$0000,$1EF4,$1EF6,$1EF7
    Data.w $0000,$1EF7,$0000,$1EF6,$1EF8,$1EF9,$0000,$1EF9
    Data.w $0000,$1EF8,$1EFA,$1EFB,$0000,$1EFB,$0000,$1EFA
    Data.w $1EFC,$1EFD,$0000,$1EFD,$0000,$1EFC,$1EFE,$1EFF
    Data.w $0000,$1EFF,$0000,$1EFE,$1F00,$0000,$1F08,$1F01
    Data.w $0000,$1F09,$1F02,$0000,$1F0A,$1F03,$0000,$1F0B
    Data.w $1F04,$0000,$1F0C,$1F05,$0000,$1F0D,$1F06,$0000
    Data.w $1F0E,$1F07,$0000,$1F0F,$1F08,$1F00,$0000,$1F09
    Data.w $1F01,$0000,$1F0A,$1F02,$0000,$1F0B,$1F03,$0000
    Data.w $1F0C,$1F04,$0000,$1F0D,$1F05,$0000,$1F0E,$1F06
    Data.w $0000,$1F0F,$1F07,$0000,$1F10,$0000,$1F18,$1F11
    Data.w $0000,$1F19,$1F12,$0000,$1F1A,$1F13,$0000,$1F1B
    Data.w $1F14,$0000,$1F1C,$1F15,$0000,$1F1D,$1F18,$1F10
    Data.w $0000,$1F19,$1F11,$0000,$1F1A,$1F12,$0000,$1F1B
    Data.w $1F13,$0000,$1F1C,$1F14,$0000,$1F1D,$1F15,$0000
    Data.w $1F20,$0000,$1F28,$1F21,$0000,$1F29,$1F22,$0000
    Data.w $1F2A,$1F23,$0000,$1F2B,$1F24,$0000,$1F2C,$1F25
    Data.w $0000,$1F2D,$1F26,$0000,$1F2E,$1F27,$0000,$1F2F
    Data.w $1F28,$1F20,$0000,$1F29,$1F21,$0000,$1F2A,$1F22
    Data.w $0000,$1F2B,$1F23,$0000,$1F2C,$1F24,$0000,$1F2D
    Data.w $1F25,$0000,$1F2E,$1F26,$0000,$1F2F,$1F27,$0000
    Data.w $1F30,$0000,$1F38,$1F31,$0000,$1F39,$1F32,$0000
    Data.w $1F3A,$1F33,$0000,$1F3B,$1F34,$0000,$1F3C,$1F35
    Data.w $0000,$1F3D,$1F36,$0000,$1F3E,$1F37,$0000,$1F3F
    Data.w $1F38,$1F30,$0000,$1F39,$1F31,$0000,$1F3A,$1F32
    Data.w $0000,$1F3B,$1F33,$0000,$1F3C,$1F34,$0000,$1F3D
    Data.w $1F35,$0000,$1F3E,$1F36,$0000,$1F3F,$1F37,$0000
    Data.w $1F40,$0000,$1F48,$1F41,$0000,$1F49,$1F42,$0000
    Data.w $1F4A,$1F43,$0000,$1F4B,$1F44,$0000,$1F4C,$1F45
    Data.w $0000,$1F4D,$1F48,$1F40,$0000,$1F49,$1F41,$0000
    Data.w $1F4A,$1F42,$0000,$1F4B,$1F43,$0000,$1F4C,$1F44
    Data.w $0000,$1F4D,$1F45,$0000,$1F51,$0000,$1F59,$1F53
    Data.w $0000,$1F5B,$1F55,$0000,$1F5D,$1F57,$0000,$1F5F
    Data.w $1F59,$1F51,$0000,$1F5B,$1F53,$0000,$1F5D,$1F55
    Data.w $0000,$1F5F,$1F57,$0000,$1F60,$0000,$1F68,$1F61
    Data.w $0000,$1F69,$1F62,$0000,$1F6A,$1F63,$0000,$1F6B
    Data.w $1F64,$0000,$1F6C,$1F65,$0000,$1F6D,$1F66,$0000
    Data.w $1F6E,$1F67,$0000,$1F6F,$1F68,$1F60,$0000,$1F69
    Data.w $1F61,$0000,$1F6A,$1F62,$0000,$1F6B,$1F63,$0000
    Data.w $1F6C,$1F64,$0000,$1F6D,$1F65,$0000,$1F6E,$1F66
    Data.w $0000,$1F6F,$1F67,$0000,$1F70,$0000,$1FBA,$1F71
    Data.w $0000,$1FBB,$1F72,$0000,$1FC8,$1F73,$0000,$1FC9
    Data.w $1F74,$0000,$1FCA,$1F75,$0000,$1FCB,$1F76,$0000
    Data.w $1FDA,$1F77,$0000,$1FDB,$1F78,$0000,$1FF8,$1F79
    Data.w $0000,$1FF9,$1F7A,$0000,$1FEA,$1F7B,$0000,$1FEB
    Data.w $1F7C,$0000,$1FFA,$1F7D,$0000,$1FFB,$1F80,$0000
    Data.w $1F88,$1F81,$0000,$1F89,$1F82,$0000,$1F8A,$1F83
    Data.w $0000,$1F8B,$1F84,$0000,$1F8C,$1F85,$0000,$1F8D
    Data.w $1F86,$0000,$1F8E,$1F87,$0000,$1F8F,$1F88,$1F80
    Data.w $0000,$1F89,$1F81,$0000,$1F8A,$1F82,$0000,$1F8B
    Data.w $1F83,$0000,$1F8C,$1F84,$0000,$1F8D,$1F85,$0000
    Data.w $1F8E,$1F86,$0000,$1F8F,$1F87,$0000,$1F90,$0000
    Data.w $1F98,$1F91,$0000,$1F99,$1F92,$0000,$1F9A,$1F93
    Data.w $0000,$1F9B,$1F94,$0000,$1F9C,$1F95,$0000,$1F9D
    Data.w $1F96,$0000,$1F9E,$1F97,$0000,$1F9F,$1F98,$1F90
    Data.w $0000,$1F99,$1F91,$0000,$1F9A,$1F92,$0000,$1F9B
    Data.w $1F93,$0000,$1F9C,$1F94,$0000,$1F9D,$1F95,$0000
    Data.w $1F9E,$1F96,$0000,$1F9F,$1F97,$0000,$1FA0,$0000
    Data.w $1FA8,$1FA1,$0000,$1FA9,$1FA2,$0000,$1FAA,$1FA3
    Data.w $0000,$1FAB,$1FA4,$0000,$1FAC,$1FA5,$0000,$1FAD
    Data.w $1FA6,$0000,$1FAE,$1FA7,$0000,$1FAF,$1FA8,$1FA0
    Data.w $0000,$1FA9,$1FA1,$0000,$1FAA,$1FA2,$0000,$1FAB
    Data.w $1FA3,$0000,$1FAC,$1FA4,$0000,$1FAD,$1FA5,$0000
    Data.w $1FAE,$1FA6,$0000,$1FAF,$1FA7,$0000,$1FB0,$0000
    Data.w $1FB8,$1FB1,$0000,$1FB9,$1FB3,$0000,$1FBC,$1FB8
    Data.w $1FB0,$0000,$1FB9,$1FB1,$0000,$1FBA,$1F70,$0000
    Data.w $1FBB,$1F71,$0000,$1FBC,$1FB3,$0000,$1FBE,$0000
    Data.w $0399,$1FC3,$0000,$1FCC,$1FC8,$1F72,$0000,$1FC9
    Data.w $1F73,$0000,$1FCA,$1F74,$0000,$1FCB,$1F75,$0000
    Data.w $1FCC,$1FC3,$0000,$1FD0,$0000,$1FD8,$1FD1,$0000
    Data.w $1FD9,$1FD8,$1FD0,$0000,$1FD9,$1FD1,$0000,$1FDA
    Data.w $1F76,$0000,$1FDB,$1F77,$0000,$1FE0,$0000,$1FE8
    Data.w $1FE1,$0000,$1FE9,$1FE5,$0000,$1FEC,$1FE8,$1FE0
    Data.w $0000,$1FE9,$1FE1,$0000,$1FEA,$1F7A,$0000,$1FEB
    Data.w $1F7B,$0000,$1FEC,$1FE5,$0000,$1FF3,$0000,$1FFC
    Data.w $1FF8,$1F78,$0000,$1FF9,$1F79,$0000,$1FFA,$1F7C
    Data.w $0000,$1FFB,$1F7D,$0000,$1FFC,$1FF3,$0000,$2126
    Data.w $03C9,$0000,$212A,$006B,$0000,$212B,$00E5,$0000
    Data.w $2132,$214E,$0000,$214E,$0000,$2132,$2160,$2170
    Data.w $0000,$2161,$2171,$0000,$2162,$2172,$0000,$2163
    Data.w $2173,$0000,$2164,$2174,$0000,$2165,$2175,$0000
    Data.w $2166,$2176,$0000,$2167,$2177,$0000,$2168,$2178
    Data.w $0000,$2169,$2179,$0000,$216A,$217A,$0000,$216B
    Data.w $217B,$0000,$216C,$217C,$0000,$216D,$217D,$0000
    Data.w $216E,$217E,$0000,$216F,$217F,$0000,$2170,$0000
    Data.w $2160,$2171,$0000,$2161,$2172,$0000,$2162,$2173
    Data.w $0000,$2163,$2174,$0000,$2164,$2175,$0000,$2165
    Data.w $2176,$0000,$2166,$2177,$0000,$2167,$2178,$0000
    Data.w $2168,$2179,$0000,$2169,$217A,$0000,$216A,$217B
    Data.w $0000,$216B,$217C,$0000,$216C,$217D,$0000,$216D
    Data.w $217E,$0000,$216E,$217F,$0000,$216F,$2183,$2184
    Data.w $0000,$2184,$0000,$2183,$24B6,$24D0,$0000,$24B7
    Data.w $24D1,$0000,$24B8,$24D2,$0000,$24B9,$24D3,$0000
    Data.w $24BA,$24D4,$0000,$24BB,$24D5,$0000,$24BC,$24D6
    Data.w $0000,$24BD,$24D7,$0000,$24BE,$24D8,$0000,$24BF
    Data.w $24D9,$0000,$24C0,$24DA,$0000,$24C1,$24DB,$0000
    Data.w $24C2,$24DC,$0000,$24C3,$24DD,$0000,$24C4,$24DE
    Data.w $0000,$24C5,$24DF,$0000,$24C6,$24E0,$0000,$24C7
    Data.w $24E1,$0000,$24C8,$24E2,$0000,$24C9,$24E3,$0000
    Data.w $24CA,$24E4,$0000,$24CB,$24E5,$0000,$24CC,$24E6
    Data.w $0000,$24CD,$24E7,$0000,$24CE,$24E8,$0000,$24CF
    Data.w $24E9,$0000,$24D0,$0000,$24B6,$24D1,$0000,$24B7
    Data.w $24D2,$0000,$24B8,$24D3,$0000,$24B9,$24D4,$0000
    Data.w $24BA,$24D5,$0000,$24BB,$24D6,$0000,$24BC,$24D7
    Data.w $0000,$24BD,$24D8,$0000,$24BE,$24D9,$0000,$24BF
    Data.w $24DA,$0000,$24C0,$24DB,$0000,$24C1,$24DC,$0000
    Data.w $24C2,$24DD,$0000,$24C3,$24DE,$0000,$24C4,$24DF
    Data.w $0000,$24C5,$24E0,$0000,$24C6,$24E1,$0000,$24C7
    Data.w $24E2,$0000,$24C8,$24E3,$0000,$24C9,$24E4,$0000
    Data.w $24CA,$24E5,$0000,$24CB,$24E6,$0000,$24CC,$24E7
    Data.w $0000,$24CD,$24E8,$0000,$24CE,$24E9,$0000,$24CF
    Data.w $2C00,$2C30,$0000,$2C01,$2C31,$0000,$2C02,$2C32
    Data.w $0000,$2C03,$2C33,$0000,$2C04,$2C34,$0000,$2C05
    Data.w $2C35,$0000,$2C06,$2C36,$0000,$2C07,$2C37,$0000
    Data.w $2C08,$2C38,$0000,$2C09,$2C39,$0000,$2C0A,$2C3A
    Data.w $0000,$2C0B,$2C3B,$0000,$2C0C,$2C3C,$0000,$2C0D
    Data.w $2C3D,$0000,$2C0E,$2C3E,$0000,$2C0F,$2C3F,$0000
    Data.w $2C10,$2C40,$0000,$2C11,$2C41,$0000,$2C12,$2C42
    Data.w $0000,$2C13,$2C43,$0000,$2C14,$2C44,$0000,$2C15
    Data.w $2C45,$0000,$2C16,$2C46,$0000,$2C17,$2C47,$0000
    Data.w $2C18,$2C48,$0000,$2C19,$2C49,$0000,$2C1A,$2C4A
    Data.w $0000,$2C1B,$2C4B,$0000,$2C1C,$2C4C,$0000,$2C1D
    Data.w $2C4D,$0000,$2C1E,$2C4E,$0000,$2C1F,$2C4F,$0000
    Data.w $2C20,$2C50,$0000,$2C21,$2C51,$0000,$2C22,$2C52
    Data.w $0000,$2C23,$2C53,$0000,$2C24,$2C54,$0000,$2C25
    Data.w $2C55,$0000,$2C26,$2C56,$0000,$2C27,$2C57,$0000
    Data.w $2C28,$2C58,$0000,$2C29,$2C59,$0000,$2C2A,$2C5A
    Data.w $0000,$2C2B,$2C5B,$0000,$2C2C,$2C5C,$0000,$2C2D
    Data.w $2C5D,$0000,$2C2E,$2C5E,$0000,$2C2F,$2C5F,$0000
    Data.w $2C30,$0000,$2C00,$2C31,$0000,$2C01,$2C32,$0000
    Data.w $2C02,$2C33,$0000,$2C03,$2C34,$0000,$2C04,$2C35
    Data.w $0000,$2C05,$2C36,$0000,$2C06,$2C37,$0000,$2C07
    Data.w $2C38,$0000,$2C08,$2C39,$0000,$2C09,$2C3A,$0000
    Data.w $2C0A,$2C3B,$0000,$2C0B,$2C3C,$0000,$2C0C,$2C3D
    Data.w $0000,$2C0D,$2C3E,$0000,$2C0E,$2C3F,$0000,$2C0F
    Data.w $2C40,$0000,$2C10,$2C41,$0000,$2C11,$2C42,$0000
    Data.w $2C12,$2C43,$0000,$2C13,$2C44,$0000,$2C14,$2C45
    Data.w $0000,$2C15,$2C46,$0000,$2C16,$2C47,$0000,$2C17
    Data.w $2C48,$0000,$2C18,$2C49,$0000,$2C19,$2C4A,$0000
    Data.w $2C1A,$2C4B,$0000,$2C1B,$2C4C,$0000,$2C1C,$2C4D
    Data.w $0000,$2C1D,$2C4E,$0000,$2C1E,$2C4F,$0000,$2C1F
    Data.w $2C50,$0000,$2C20,$2C51,$0000,$2C21,$2C52,$0000
    Data.w $2C22,$2C53,$0000,$2C23,$2C54,$0000,$2C24,$2C55
    Data.w $0000,$2C25,$2C56,$0000,$2C26,$2C57,$0000,$2C27
    Data.w $2C58,$0000,$2C28,$2C59,$0000,$2C29,$2C5A,$0000
    Data.w $2C2A,$2C5B,$0000,$2C2B,$2C5C,$0000,$2C2C,$2C5D
    Data.w $0000,$2C2D,$2C5E,$0000,$2C2E,$2C5F,$0000,$2C2F
    Data.w $2C60,$2C61,$0000,$2C61,$0000,$2C60,$2C62,$026B
    Data.w $0000,$2C63,$1D7D,$0000,$2C64,$027D,$0000,$2C65
    Data.w $0000,$023A,$2C66,$0000,$023E,$2C67,$2C68,$0000
    Data.w $2C68,$0000,$2C67,$2C69,$2C6A,$0000,$2C6A,$0000
    Data.w $2C69,$2C6B,$2C6C,$0000,$2C6C,$0000,$2C6B,$2C6D
    Data.w $0251,$0000,$2C6E,$0271,$0000,$2C6F,$0250,$0000
    Data.w $2C70,$0252,$0000,$2C72,$2C73,$0000,$2C73,$0000
    Data.w $2C72,$2C75,$2C76,$0000,$2C76,$0000,$2C75,$2C7E
    Data.w $023F,$0000,$2C7F,$0240,$0000,$2C80,$2C81,$0000
    Data.w $2C81,$0000,$2C80,$2C82,$2C83,$0000,$2C83,$0000
    Data.w $2C82,$2C84,$2C85,$0000,$2C85,$0000,$2C84,$2C86
    Data.w $2C87,$0000,$2C87,$0000,$2C86,$2C88,$2C89,$0000
    Data.w $2C89,$0000,$2C88,$2C8A,$2C8B,$0000,$2C8B,$0000
    Data.w $2C8A,$2C8C,$2C8D,$0000,$2C8D,$0000,$2C8C,$2C8E
    Data.w $2C8F,$0000,$2C8F,$0000,$2C8E,$2C90,$2C91,$0000
    Data.w $2C91,$0000,$2C90,$2C92,$2C93,$0000,$2C93,$0000
    Data.w $2C92,$2C94,$2C95,$0000,$2C95,$0000,$2C94,$2C96
    Data.w $2C97,$0000,$2C97,$0000,$2C96,$2C98,$2C99,$0000
    Data.w $2C99,$0000,$2C98,$2C9A,$2C9B,$0000,$2C9B,$0000
    Data.w $2C9A,$2C9C,$2C9D,$0000,$2C9D,$0000,$2C9C,$2C9E
    Data.w $2C9F,$0000,$2C9F,$0000,$2C9E,$2CA0,$2CA1,$0000
    Data.w $2CA1,$0000,$2CA0,$2CA2,$2CA3,$0000,$2CA3,$0000
    Data.w $2CA2,$2CA4,$2CA5,$0000,$2CA5,$0000,$2CA4,$2CA6
    Data.w $2CA7,$0000,$2CA7,$0000,$2CA6,$2CA8,$2CA9,$0000
    Data.w $2CA9,$0000,$2CA8,$2CAA,$2CAB,$0000,$2CAB,$0000
    Data.w $2CAA,$2CAC,$2CAD,$0000,$2CAD,$0000,$2CAC,$2CAE
    Data.w $2CAF,$0000,$2CAF,$0000,$2CAE,$2CB0,$2CB1,$0000
    Data.w $2CB1,$0000,$2CB0,$2CB2,$2CB3,$0000,$2CB3,$0000
    Data.w $2CB2,$2CB4,$2CB5,$0000,$2CB5,$0000,$2CB4,$2CB6
    Data.w $2CB7,$0000,$2CB7,$0000,$2CB6,$2CB8,$2CB9,$0000
    Data.w $2CB9,$0000,$2CB8,$2CBA,$2CBB,$0000,$2CBB,$0000
    Data.w $2CBA,$2CBC,$2CBD,$0000,$2CBD,$0000,$2CBC,$2CBE
    Data.w $2CBF,$0000,$2CBF,$0000,$2CBE,$2CC0,$2CC1,$0000
    Data.w $2CC1,$0000,$2CC0,$2CC2,$2CC3,$0000,$2CC3,$0000
    Data.w $2CC2,$2CC4,$2CC5,$0000,$2CC5,$0000,$2CC4,$2CC6
    Data.w $2CC7,$0000,$2CC7,$0000,$2CC6,$2CC8,$2CC9,$0000
    Data.w $2CC9,$0000,$2CC8,$2CCA,$2CCB,$0000,$2CCB,$0000
    Data.w $2CCA,$2CCC,$2CCD,$0000,$2CCD,$0000,$2CCC,$2CCE
    Data.w $2CCF,$0000,$2CCF,$0000,$2CCE,$2CD0,$2CD1,$0000
    Data.w $2CD1,$0000,$2CD0,$2CD2,$2CD3,$0000,$2CD3,$0000
    Data.w $2CD2,$2CD4,$2CD5,$0000,$2CD5,$0000,$2CD4,$2CD6
    Data.w $2CD7,$0000,$2CD7,$0000,$2CD6,$2CD8,$2CD9,$0000
    Data.w $2CD9,$0000,$2CD8,$2CDA,$2CDB,$0000,$2CDB,$0000
    Data.w $2CDA,$2CDC,$2CDD,$0000,$2CDD,$0000,$2CDC,$2CDE
    Data.w $2CDF,$0000,$2CDF,$0000,$2CDE,$2CE0,$2CE1,$0000
    Data.w $2CE1,$0000,$2CE0,$2CE2,$2CE3,$0000,$2CE3,$0000
    Data.w $2CE2,$2CEB,$2CEC,$0000,$2CEC,$0000,$2CEB,$2CED
    Data.w $2CEE,$0000,$2CEE,$0000,$2CED,$2CF2,$2CF3,$0000
    Data.w $2CF3,$0000,$2CF2,$2D00,$0000,$10A0,$2D01,$0000
    Data.w $10A1,$2D02,$0000,$10A2,$2D03,$0000,$10A3,$2D04
    Data.w $0000,$10A4,$2D05,$0000,$10A5,$2D06,$0000,$10A6
    Data.w $2D07,$0000,$10A7,$2D08,$0000,$10A8,$2D09,$0000
    Data.w $10A9,$2D0A,$0000,$10AA,$2D0B,$0000,$10AB,$2D0C
    Data.w $0000,$10AC,$2D0D,$0000,$10AD,$2D0E,$0000,$10AE
    Data.w $2D0F,$0000,$10AF,$2D10,$0000,$10B0,$2D11,$0000
    Data.w $10B1,$2D12,$0000,$10B2,$2D13,$0000,$10B3,$2D14
    Data.w $0000,$10B4,$2D15,$0000,$10B5,$2D16,$0000,$10B6
    Data.w $2D17,$0000,$10B7,$2D18,$0000,$10B8,$2D19,$0000
    Data.w $10B9,$2D1A,$0000,$10BA,$2D1B,$0000,$10BB,$2D1C
    Data.w $0000,$10BC,$2D1D,$0000,$10BD,$2D1E,$0000,$10BE
    Data.w $2D1F,$0000,$10BF,$2D20,$0000,$10C0,$2D21,$0000
    Data.w $10C1,$2D22,$0000,$10C2,$2D23,$0000,$10C3,$2D24
    Data.w $0000,$10C4,$2D25,$0000,$10C5,$2D27,$0000,$10C7
    Data.w $2D2D,$0000,$10CD,$A640,$A641,$0000,$A641,$0000
    Data.w $A640,$A642,$A643,$0000,$A643,$0000,$A642,$A644
    Data.w $A645,$0000,$A645,$0000,$A644,$A646,$A647,$0000
    Data.w $A647,$0000,$A646,$A648,$A649,$0000,$A649,$0000
    Data.w $A648,$A64A,$A64B,$0000,$A64B,$0000,$A64A,$A64C
    Data.w $A64D,$0000,$A64D,$0000,$A64C,$A64E,$A64F,$0000
    Data.w $A64F,$0000,$A64E,$A650,$A651,$0000,$A651,$0000
    Data.w $A650,$A652,$A653,$0000,$A653,$0000,$A652,$A654
    Data.w $A655,$0000,$A655,$0000,$A654,$A656,$A657,$0000
    Data.w $A657,$0000,$A656,$A658,$A659,$0000,$A659,$0000
    Data.w $A658,$A65A,$A65B,$0000,$A65B,$0000,$A65A,$A65C
    Data.w $A65D,$0000,$A65D,$0000,$A65C,$A65E,$A65F,$0000
    Data.w $A65F,$0000,$A65E,$A660,$A661,$0000,$A661,$0000
    Data.w $A660,$A662,$A663,$0000,$A663,$0000,$A662,$A664
    Data.w $A665,$0000,$A665,$0000,$A664,$A666,$A667,$0000
    Data.w $A667,$0000,$A666,$A668,$A669,$0000,$A669,$0000
    Data.w $A668,$A66A,$A66B,$0000,$A66B,$0000,$A66A,$A66C
    Data.w $A66D,$0000,$A66D,$0000,$A66C,$A680,$A681,$0000
    Data.w $A681,$0000,$A680,$A682,$A683,$0000,$A683,$0000
    Data.w $A682,$A684,$A685,$0000,$A685,$0000,$A684,$A686
    Data.w $A687,$0000,$A687,$0000,$A686,$A688,$A689,$0000
    Data.w $A689,$0000,$A688,$A68A,$A68B,$0000,$A68B,$0000
    Data.w $A68A,$A68C,$A68D,$0000,$A68D,$0000,$A68C,$A68E
    Data.w $A68F,$0000,$A68F,$0000,$A68E,$A690,$A691,$0000
    Data.w $A691,$0000,$A690,$A692,$A693,$0000,$A693,$0000
    Data.w $A692,$A694,$A695,$0000,$A695,$0000,$A694,$A696
    Data.w $A697,$0000,$A697,$0000,$A696,$A698,$A699,$0000
    Data.w $A699,$0000,$A698,$A69A,$A69B,$0000,$A69B,$0000
    Data.w $A69A,$A722,$A723,$0000,$A723,$0000,$A722,$A724
    Data.w $A725,$0000,$A725,$0000,$A724,$A726,$A727,$0000
    Data.w $A727,$0000,$A726,$A728,$A729,$0000,$A729,$0000
    Data.w $A728,$A72A,$A72B,$0000,$A72B,$0000,$A72A,$A72C
    Data.w $A72D,$0000,$A72D,$0000,$A72C,$A72E,$A72F,$0000
    Data.w $A72F,$0000,$A72E,$A732,$A733,$0000,$A733,$0000
    Data.w $A732,$A734,$A735,$0000,$A735,$0000,$A734,$A736
    Data.w $A737,$0000,$A737,$0000,$A736,$A738,$A739,$0000
    Data.w $A739,$0000,$A738,$A73A,$A73B,$0000,$A73B,$0000
    Data.w $A73A,$A73C,$A73D,$0000,$A73D,$0000,$A73C,$A73E
    Data.w $A73F,$0000,$A73F,$0000,$A73E,$A740,$A741,$0000
    Data.w $A741,$0000,$A740,$A742,$A743,$0000,$A743,$0000
    Data.w $A742,$A744,$A745,$0000,$A745,$0000,$A744,$A746
    Data.w $A747,$0000,$A747,$0000,$A746,$A748,$A749,$0000
    Data.w $A749,$0000,$A748,$A74A,$A74B,$0000,$A74B,$0000
    Data.w $A74A,$A74C,$A74D,$0000,$A74D,$0000,$A74C,$A74E
    Data.w $A74F,$0000,$A74F,$0000,$A74E,$A750,$A751,$0000
    Data.w $A751,$0000,$A750,$A752,$A753,$0000,$A753,$0000
    Data.w $A752,$A754,$A755,$0000,$A755,$0000,$A754,$A756
    Data.w $A757,$0000,$A757,$0000,$A756,$A758,$A759,$0000
    Data.w $A759,$0000,$A758,$A75A,$A75B,$0000,$A75B,$0000
    Data.w $A75A,$A75C,$A75D,$0000,$A75D,$0000,$A75C,$A75E
    Data.w $A75F,$0000,$A75F,$0000,$A75E,$A760,$A761,$0000
    Data.w $A761,$0000,$A760,$A762,$A763,$0000,$A763,$0000
    Data.w $A762,$A764,$A765,$0000,$A765,$0000,$A764,$A766
    Data.w $A767,$0000,$A767,$0000,$A766,$A768,$A769,$0000
    Data.w $A769,$0000,$A768,$A76A,$A76B,$0000,$A76B,$0000
    Data.w $A76A,$A76C,$A76D,$0000,$A76D,$0000,$A76C,$A76E
    Data.w $A76F,$0000,$A76F,$0000,$A76E,$A779,$A77A,$0000
    Data.w $A77A,$0000,$A779,$A77B,$A77C,$0000,$A77C,$0000
    Data.w $A77B,$A77D,$1D79,$0000,$A77E,$A77F,$0000,$A77F
    Data.w $0000,$A77E,$A780,$A781,$0000,$A781,$0000,$A780
    Data.w $A782,$A783,$0000,$A783,$0000,$A782,$A784,$A785
    Data.w $0000,$A785,$0000,$A784,$A786,$A787,$0000,$A787
    Data.w $0000,$A786,$A78B,$A78C,$0000,$A78C,$0000,$A78B
    Data.w $A78D,$0265,$0000,$A790,$A791,$0000,$A791,$0000
    Data.w $A790,$A792,$A793,$0000,$A793,$0000,$A792,$A794
    Data.w $0000,$A7C4,$A796,$A797,$0000,$A797,$0000,$A796
    Data.w $A798,$A799,$0000,$A799,$0000,$A798,$A79A,$A79B
    Data.w $0000,$A79B,$0000,$A79A,$A79C,$A79D,$0000,$A79D
    Data.w $0000,$A79C,$A79E,$A79F,$0000,$A79F,$0000,$A79E
    Data.w $A7A0,$A7A1,$0000,$A7A1,$0000,$A7A0,$A7A2,$A7A3
    Data.w $0000,$A7A3,$0000,$A7A2,$A7A4,$A7A5,$0000,$A7A5
    Data.w $0000,$A7A4,$A7A6,$A7A7,$0000,$A7A7,$0000,$A7A6
    Data.w $A7A8,$A7A9,$0000,$A7A9,$0000,$A7A8,$A7AA,$0266
    Data.w $0000,$A7AB,$025C,$0000,$A7AC,$0261,$0000,$A7AD
    Data.w $026C,$0000,$A7AE,$026A,$0000,$A7B0,$029E,$0000
    Data.w $A7B1,$0287,$0000,$A7B2,$029D,$0000,$A7B3,$AB53
    Data.w $0000,$A7B4,$A7B5,$0000,$A7B5,$0000,$A7B4,$A7B6
    Data.w $A7B7,$0000,$A7B7,$0000,$A7B6,$A7B8,$A7B9,$0000
    Data.w $A7B9,$0000,$A7B8,$A7BA,$A7BB,$0000,$A7BB,$0000
    Data.w $A7BA,$A7BC,$A7BD,$0000,$A7BD,$0000,$A7BC,$A7BE
    Data.w $A7BF,$0000,$A7BF,$0000,$A7BE,$A7C0,$A7C1,$0000
    Data.w $A7C1,$0000,$A7C0,$A7C2,$A7C3,$0000,$A7C3,$0000
    Data.w $A7C2,$A7C4,$A794,$0000,$A7C5,$0282,$0000,$A7C6
    Data.w $1D8E,$0000,$A7C7,$A7C8,$0000,$A7C8,$0000,$A7C7
    Data.w $A7C9,$A7CA,$0000,$A7CA,$0000,$A7C9,$A7D0,$A7D1
    Data.w $0000,$A7D1,$0000,$A7D0,$A7D6,$A7D7,$0000,$A7D7
    Data.w $0000,$A7D6,$A7D8,$A7D9,$0000,$A7D9,$0000,$A7D8
    Data.w $A7F5,$A7F6,$0000,$A7F6,$0000,$A7F5,$AB53,$0000
    Data.w $A7B3,$AB70,$0000,$13A0,$AB71,$0000,$13A1,$AB72
    Data.w $0000,$13A2,$AB73,$0000,$13A3,$AB74,$0000,$13A4
    Data.w $AB75,$0000,$13A5,$AB76,$0000,$13A6,$AB77,$0000
    Data.w $13A7,$AB78,$0000,$13A8,$AB79,$0000,$13A9,$AB7A
    Data.w $0000,$13AA,$AB7B,$0000,$13AB,$AB7C,$0000,$13AC
    Data.w $AB7D,$0000,$13AD,$AB7E,$0000,$13AE,$AB7F,$0000
    Data.w $13AF,$AB80,$0000,$13B0,$AB81,$0000,$13B1,$AB82
    Data.w $0000,$13B2,$AB83,$0000,$13B3,$AB84,$0000,$13B4
    Data.w $AB85,$0000,$13B5,$AB86,$0000,$13B6,$AB87,$0000
    Data.w $13B7,$AB88,$0000,$13B8,$AB89,$0000,$13B9,$AB8A
    Data.w $0000,$13BA,$AB8B,$0000,$13BB,$AB8C,$0000,$13BC
    Data.w $AB8D,$0000,$13BD,$AB8E,$0000,$13BE,$AB8F,$0000
    Data.w $13BF,$AB90,$0000,$13C0,$AB91,$0000,$13C1,$AB92
    Data.w $0000,$13C2,$AB93,$0000,$13C3,$AB94,$0000,$13C4
    Data.w $AB95,$0000,$13C5,$AB96,$0000,$13C6,$AB97,$0000
    Data.w $13C7,$AB98,$0000,$13C8,$AB99,$0000,$13C9,$AB9A
    Data.w $0000,$13CA,$AB9B,$0000,$13CB,$AB9C,$0000,$13CC
    Data.w $AB9D,$0000,$13CD,$AB9E,$0000,$13CE,$AB9F,$0000
    Data.w $13CF,$ABA0,$0000,$13D0,$ABA1,$0000,$13D1,$ABA2
    Data.w $0000,$13D2,$ABA3,$0000,$13D3,$ABA4,$0000,$13D4
    Data.w $ABA5,$0000,$13D5,$ABA6,$0000,$13D6,$ABA7,$0000
    Data.w $13D7,$ABA8,$0000,$13D8,$ABA9,$0000,$13D9,$ABAA
    Data.w $0000,$13DA,$ABAB,$0000,$13DB,$ABAC,$0000,$13DC
    Data.w $ABAD,$0000,$13DD,$ABAE,$0000,$13DE,$ABAF,$0000
    Data.w $13DF,$ABB0,$0000,$13E0,$ABB1,$0000,$13E1,$ABB2
    Data.w $0000,$13E2,$ABB3,$0000,$13E3,$ABB4,$0000,$13E4
    Data.w $ABB5,$0000,$13E5,$ABB6,$0000,$13E6,$ABB7,$0000
    Data.w $13E7,$ABB8,$0000,$13E8,$ABB9,$0000,$13E9,$ABBA
    Data.w $0000,$13EA,$ABBB,$0000,$13EB,$ABBC,$0000,$13EC
    Data.w $ABBD,$0000,$13ED,$ABBE,$0000,$13EE,$ABBF,$0000
    Data.w $13EF,$FF21,$FF41,$0000,$FF22,$FF42,$0000,$FF23
    Data.w $FF43,$0000,$FF24,$FF44,$0000,$FF25,$FF45,$0000
    Data.w $FF26,$FF46,$0000,$FF27,$FF47,$0000,$FF28,$FF48
    Data.w $0000,$FF29,$FF49,$0000,$FF2A,$FF4A,$0000,$FF2B
    Data.w $FF4B,$0000,$FF2C,$FF4C,$0000,$FF2D,$FF4D,$0000
    Data.w $FF2E,$FF4E,$0000,$FF2F,$FF4F,$0000,$FF30,$FF50
    Data.w $0000,$FF31,$FF51,$0000,$FF32,$FF52,$0000,$FF33
    Data.w $FF53,$0000,$FF34,$FF54,$0000,$FF35,$FF55,$0000
    Data.w $FF36,$FF56,$0000,$FF37,$FF57,$0000,$FF38,$FF58
    Data.w $0000,$FF39,$FF59,$0000,$FF3A,$FF5A,$0000,$FF41
    Data.w $0000,$FF21,$FF42,$0000,$FF22,$FF43,$0000,$FF23
    Data.w $FF44,$0000,$FF24,$FF45,$0000,$FF25,$FF46,$0000
    Data.w $FF26,$FF47,$0000,$FF27,$FF48,$0000,$FF28,$FF49
    Data.w $0000,$FF29,$FF4A,$0000,$FF2A,$FF4B,$0000,$FF2B
    Data.w $FF4C,$0000,$FF2C,$FF4D,$0000,$FF2D,$FF4E,$0000
    Data.w $FF2E,$FF4F,$0000,$FF2F,$FF50,$0000,$FF30,$FF51
    Data.w $0000,$FF31,$FF52,$0000,$FF32,$FF53,$0000,$FF33
    Data.w $FF54,$0000,$FF34,$FF55,$0000,$FF35,$FF56,$0000
    Data.w $FF36,$FF57,$0000,$FF37,$FF58,$0000,$FF38,$FF59
    Data.w $0000,$FF39,$FF5A,$0000,$FF3A,$00,$00,$00
    
  EndDataSection 
  
EndProcedure 

UNI_Init() 

Procedure _pUpCase(*in.Unicode)  ;changes the case of the string inplace 
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UNI_UCase(*char\u) 
    If tchar 
      *char\u = tchar 
    Else    
       *char\u  = UNI_LCase(*char\u) 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

Procedure _pLowCase(*in.Unicode)  ;changes the case of the string inplace 
  Protected *char.Unicode, t.u 
  *char = *in 
  While *char\u  
    tchar = UNI_LCase(*char\u) 
    If tchar 
      *char\u = tchar 
    EndIf   
    *char+2 
  Wend 
EndProcedure 

Prototype pUpCase(in.p-unicode)   
Prototype pLowCase(in.p-unicode) 
Global pUpCase.pUpCase = @_pupcase()
Global pLowCase.pLowCase = @_plowcase()

Procedure StrCmpNC(a.s,b.s)   ;compare two strings with no case  
  Protected *a.Unicode,*b.Unicode 
  
  pLowCase(a) 
  pLowCase(b)
  *a = @a 
  *b = @b 
    
  While *a\u = *b\u  
    *a+2
    *b+2 
    If (*a\u = 0 And *b\u = 0) 
      ProcedureReturn 1 
    ElseIf (*a\u = 0 Or *b\u = 0) 
      ProcedureReturn 0 
    EndIf   
  Wend   
     
EndProcedure   

t.s = "abcdef 0123456789, äöü, äöü, áóú" 
pUpCase(t) 
tU.s = t 
pLowCase(t) 
t = "ABCDEF" + Mid(t,7) 
Debug t  

Cherokee_Letter_A$ = Chr($13A0)
pLowCase(Cherokee_Letter_A$)
Debug Cherokee_Letter_A$ 
pUpCase(Cherokee_Letter_A$)  
Debug Cherokee_Letter_A$ 

Cherokee_Small_Letter_A$ = Chr($AB70)
pUpCase(Cherokee_Small_Letter_A$) 
Debug Cherokee_Small_Letter_A$ 
pLowCase(Cherokee_Small_Letter_A$)
Debug Cherokee_Small_Letter_A$

Debug strcmpnc(t,tu)

t = Chr($00B5)
Debug t 
pUpCase(t)
Debug t + " " + Hex(Asc(t))
; correct is '39C'


Post Reply