<PackageReference Include="System.Text.Encoding.CodePages" Version="6.0.0-rc.1.21451.13" />

ISCIIEncoding

using System.Runtime.Serialization; namespace System.Text { internal sealed class ISCIIEncoding : EncodingNLS, ISerializable { internal sealed class ISCIIEncoder : System.Text.EncoderNLS { internal int defaultCodePage; internal int currentCodePage; internal bool bLastVirama; internal override bool HasState { get { if (charLeftOver == '') return currentCodePage != defaultCodePage; return true; } } public ISCIIEncoder(EncodingNLS encoding) : base(encoding) { currentCodePage = (defaultCodePage = encoding.CodePage - 57000); } public override void Reset() { bLastVirama = false; charLeftOver = ''; if (m_fallbackBuffer != null) m_fallbackBuffer.Reset(); } } internal sealed class ISCIIDecoder : System.Text.DecoderNLS { internal int currentCodePage; internal bool bLastATR; internal bool bLastVirama; internal bool bLastDevenagariStressAbbr; internal char cLastCharForNextNukta; internal char cLastCharForNoNextNukta; internal override bool HasState { get { if (cLastCharForNextNukta == '' && cLastCharForNoNextNukta == '' && !bLastATR) return bLastDevenagariStressAbbr; return true; } } public ISCIIDecoder(EncodingNLS encoding) : base(encoding) { currentCodePage = encoding.CodePage - 57000; } public override void Reset() { bLastATR = false; bLastVirama = false; bLastDevenagariStressAbbr = false; cLastCharForNextNukta = ''; cLastCharForNoNextNukta = ''; if (m_fallbackBuffer != null) m_fallbackBuffer.Reset(); } } private const int CodeDevanagari = 2; private const int CodePunjabi = 11; private const int MultiByteBegin = 160; private const int IndicBegin = 2305; private const int IndicEnd = 3439; private const byte ControlATR = 239; private const byte ControlCodePageStart = 64; private const byte Virama = 232; private const byte Nukta = 233; private const byte DevenagariExt = 240; private const char ZWNJ = 'โ€Œ'; private const char ZWJ = 'โ€'; private readonly int _defaultCodePage; private static readonly int[] s_UnicodeToIndicChar = new int[1135] { 673, 674, 675, 0, 676, 677, 678, 679, 680, 681, 682, 4774, 686, 683, 684, 685, 690, 687, 688, 689, 691, 692, 693, 694, 695, 696, 697, 698, 699, 700, 701, 702, 703, 704, 705, 706, 707, 708, 709, 710, 711, 712, 713, 714, 715, 716, 717, 719, 720, 721, 722, 723, 724, 725, 726, 727, 728, 0, 0, 745, 4842, 730, 731, 732, 733, 734, 735, 4831, 739, 736, 737, 738, 743, 740, 741, 742, 744, 0, 0, 4769, 0, 8944, 0, 0, 0, 0, 0, 4787, 4788, 4789, 4794, 4799, 4800, 4809, 718, 4778, 4775, 4827, 4828, 746, 0, 753, 754, 755, 756, 757, 758, 759, 760, 761, 762, 13040, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 929, 930, 931, 0, 932, 933, 934, 935, 936, 937, 938, 5030, 0, 0, 939, 941, 0, 0, 943, 945, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 962, 963, 964, 965, 966, 0, 968, 969, 970, 971, 972, 973, 975, 0, 977, 0, 0, 0, 981, 982, 983, 984, 0, 0, 1001, 0, 986, 987, 988, 989, 990, 991, 5087, 0, 0, 992, 994, 0, 0, 996, 998, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5055, 5056, 0, 974, 5034, 5031, 5083, 5084, 0, 0, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2978, 0, 0, 2980, 2981, 2982, 2983, 2984, 2985, 0, 0, 0, 0, 2987, 2989, 0, 0, 2992, 2993, 2995, 2996, 2997, 2998, 2999, 3000, 3001, 3002, 3003, 3004, 3005, 3006, 3007, 3008, 3009, 3010, 3011, 3012, 3013, 3014, 0, 3016, 3017, 3018, 3019, 3020, 3021, 3023, 0, 3025, 3026, 0, 3028, 3029, 0, 3031, 3032, 0, 0, 3049, 0, 3034, 3035, 3036, 3037, 3038, 0, 0, 0, 0, 3040, 3042, 0, 0, 3044, 3046, 3048, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7092, 7093, 7098, 7104, 0, 7113, 0, 0, 0, 0, 0, 0, 0, 3057, 3058, 3059, 3060, 3061, 3062, 3063, 3064, 3065, 3066, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2721, 2722, 2723, 0, 2724, 2725, 2726, 2727, 2728, 2729, 2730, 0, 2734, 0, 2731, 2733, 2738, 0, 2736, 2737, 2739, 2740, 2741, 2742, 2743, 2744, 2745, 2746, 2747, 2748, 2749, 2750, 2751, 2752, 2753, 2754, 2755, 2756, 2757, 2758, 0, 2760, 2761, 2762, 2763, 2764, 2765, 2767, 0, 2769, 2770, 0, 2772, 2773, 2774, 2775, 2776, 0, 0, 2793, 6890, 2778, 2779, 2780, 2781, 2782, 2783, 6879, 2787, 0, 2784, 2786, 2791, 0, 2788, 2790, 2792, 0, 0, 6817, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6826, 0, 0, 0, 0, 0, 2801, 2802, 2803, 2804, 2805, 2806, 2807, 2808, 2809, 2810, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1953, 1954, 1955, 0, 1956, 1957, 1958, 1959, 1960, 1961, 1962, 6054, 0, 0, 1963, 1965, 0, 0, 1968, 1969, 1971, 1972, 1973, 1974, 1975, 1976, 1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 1986, 1987, 1988, 1989, 1990, 0, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 0, 2001, 2002, 0, 0, 2005, 2006, 2007, 2008, 0, 0, 2025, 6122, 2010, 2011, 2012, 2013, 2014, 2015, 0, 0, 0, 2016, 2018, 0, 0, 2020, 2022, 2024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6079, 6080, 0, 1998, 6058, 6055, 0, 0, 0, 0, 2033, 2034, 2035, 2036, 2037, 2038, 2039, 2040, 2041, 2042, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1186, 1187, 0, 1188, 1189, 1190, 1191, 1192, 1193, 0, 0, 0, 0, 1195, 1197, 0, 1199, 1200, 1201, 1203, 0, 0, 0, 1207, 1208, 0, 1210, 0, 1212, 1213, 0, 0, 0, 1217, 1218, 0, 0, 0, 1222, 1223, 1224, 0, 0, 0, 1228, 1229, 1231, 1232, 1233, 1234, 1235, 1236, 0, 1237, 1239, 1240, 0, 0, 0, 0, 1242, 1243, 1244, 1245, 1246, 0, 0, 0, 1248, 1249, 1250, 0, 1252, 1253, 1254, 1256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1266, 1267, 1268, 1269, 1270, 1271, 1272, 1273, 1274, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1441, 1442, 1443, 0, 1444, 1445, 1446, 1447, 1448, 1449, 1450, 5542, 0, 1451, 1452, 1453, 0, 1455, 1456, 1457, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1466, 1467, 1468, 1469, 1470, 1471, 1472, 1473, 1474, 1475, 1476, 1477, 1478, 0, 1480, 1481, 1482, 1483, 1484, 1485, 1487, 1488, 1489, 1490, 0, 1492, 1493, 1494, 1495, 1496, 0, 0, 0, 0, 1498, 1499, 1500, 1501, 1502, 1503, 5599, 0, 1504, 1505, 1506, 0, 1508, 1509, 1510, 1512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5546, 5543, 0, 0, 0, 0, 1521, 1522, 1523, 1524, 1525, 1526, 1527, 1528, 1529, 1530, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2210, 2211, 0, 2212, 2213, 2214, 2215, 2216, 2217, 2218, 6310, 0, 2219, 2220, 2221, 0, 2223, 2224, 2225, 2227, 2228, 2229, 2230, 2231, 2232, 2233, 2234, 2235, 2236, 2237, 2238, 2239, 2240, 2241, 2242, 2243, 2244, 2245, 2246, 0, 2248, 2249, 2250, 2251, 2252, 2253, 2255, 2256, 2257, 2258, 0, 2260, 2261, 2262, 2263, 2264, 0, 0, 0, 0, 2266, 2267, 2268, 2269, 2270, 2271, 6367, 0, 2272, 2273, 2274, 0, 2276, 2277, 2278, 2280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6345, 0, 6314, 6311, 0, 0, 0, 0, 2289, 2290, 2291, 2292, 2293, 2294, 2295, 2296, 2297, 2298, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2466, 2467, 0, 2468, 2469, 2470, 2471, 2472, 2473, 2474, 6566, 0, 2475, 2476, 2477, 0, 2479, 2480, 2481, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491, 2492, 2493, 2494, 2495, 2496, 2497, 2498, 2499, 2500, 2501, 2502, 0, 2504, 2505, 2506, 2507, 2508, 2509, 2511, 2512, 2513, 2514, 2515, 2516, 2517, 2518, 2519, 2520, 0, 0, 0, 0, 2522, 2523, 2524, 2525, 2526, 2527, 0, 0, 2528, 2529, 2530, 0, 2532, 2533, 2534, 2536, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6570, 6567, 0, 0, 0, 0, 2545, 2546, 2547, 2548, 2549, 2550, 2551, 2552, 2553, 2554 }; private static readonly byte[] s_SecondIndicByte = new byte[4] { 0, 233, 184, 191 }; private static readonly int[] s_IndicMappingIndex = new int[12] { -1, -1, 0, 1, 2, 3, 1, 4, 5, 6, 7, 8 }; private static readonly char[,,] s_IndicMapping = new char[9, 2, 96] { { { '', 'เค', 'เค‚', 'เคƒ', 'เค…', 'เค†', 'เค‡', 'เคˆ', 'เค‰', 'เคŠ', 'เค‹', 'เคŽ', 'เค', 'เค', 'เค', 'เค’', 'เค“', 'เค”', 'เค‘', 'เค•', 'เค–', 'เค—', 'เค˜', 'เค™', 'เคš', 'เค›', 'เคœ', 'เค', 'เคž', 'เคŸ', 'เค ', 'เคก', 'เคข', 'เคฃ', 'เคค', 'เคฅ', 'เคฆ', 'เคง', 'เคจ', 'เคฉ', 'เคช', 'เคซ', 'เคฌ', 'เคญ', 'เคฎ', 'เคฏ', 'เฅŸ', 'เคฐ', 'เคฑ', 'เคฒ', 'เคณ', 'เคด', 'เคต', 'เคถ', 'เคท', 'เคธ', 'เคน', '', 'เคพ', 'เคฟ', 'เฅ€', 'เฅ', 'เฅ‚', 'เฅƒ', 'เฅ†', 'เฅ‡', 'เฅˆ', 'เฅ…', 'เฅŠ', 'เฅ‹', 'เฅŒ', 'เฅ‰', 'เฅ', 'เคผ', 'เฅค', '', '', '', '', '', '', 'เฅฆ', 'เฅง', 'เฅจ', 'เฅฉ', 'เฅช', 'เฅซ', 'เฅฌ', 'เฅญ', 'เฅฎ', 'เฅฏ', '', '', '', '', '' }, { '', 'เฅ', '', '', '', '', 'เคŒ', 'เฅก', '', '', 'เฅ ', '', '', '', '', '', '', '', '', 'เฅ˜', 'เฅ™', 'เฅš', '', '', '', '', 'เฅ›', '', '', '', '', 'เฅœ', 'เฅ', '', '', '', '', '', '', '', '', 'เฅž', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เฅข', 'เฅฃ', '', '', 'เฅ„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', 'เคฝ', '', '', '', '', '', '๋ขฟ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', 'เฆ', 'เฆ‚', 'เฆƒ', 'เฆ…', 'เฆ†', 'เฆ‡', 'เฆˆ', 'เฆ‰', 'เฆŠ', 'เฆ‹', 'เฆ', 'เฆ', 'เฆ', 'เฆ', 'เฆ“', 'เฆ“', 'เฆ”', 'เฆ”', 'เฆ•', 'เฆ–', 'เฆ—', 'เฆ˜', 'เฆ™', 'เฆš', 'เฆ›', 'เฆœ', 'เฆ', 'เฆž', 'เฆŸ', 'เฆ ', 'เฆก', 'เฆข', 'เฆฃ', 'เฆค', 'เฆฅ', 'เฆฆ', 'เฆง', 'เฆจ', 'เฆจ', 'เฆช', 'เฆซ', 'เฆฌ', 'เฆญ', 'เฆฎ', 'เฆฏ', 'เงŸ', 'เฆฐ', 'เฆฐ', 'เฆฒ', 'เฆฒ', 'เฆฒ', 'เฆฌ', 'เฆถ', 'เฆท', 'เฆธ', 'เฆน', '', 'เฆพ', 'เฆฟ', 'เง€', 'เง', 'เง‚', 'เงƒ', 'เง‡', 'เง‡', 'เงˆ', 'เงˆ', 'เง‹', 'เง‹', 'เงŒ', 'เงŒ', 'เง', 'เฆผ', '.', '', '', '', '', '', '', 'เงฆ', 'เงง', 'เงจ', 'เงฉ', 'เงช', 'เงซ', 'เงฌ', 'เงญ', 'เงฎ', 'เงฏ', '', '', '', '', '' }, { '', '', '', '', '', '', 'เฆŒ', 'เงก', '', '', 'เง ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เงœ', 'เง', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เงข', 'เงฃ', '', '', 'เง„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', '', 'เฎ‚', 'เฎƒ', 'เฎ…', 'เฎ†', 'เฎ‡', 'เฎˆ', 'เฎ‰', 'เฎŠ', '', 'เฎ', 'เฎ', 'เฎ', 'เฎ', 'เฎ’', 'เฎ“', 'เฎ”', 'เฎ”', 'เฎ•', 'เฎ•', 'เฎ•', 'เฎ•', 'เฎ™', 'เฎš', 'เฎš', 'เฎœ', 'เฎœ', 'เฎž', 'เฎŸ', 'เฎŸ', 'เฎŸ', 'เฎŸ', 'เฎฃ', 'เฎค', 'เฎค', 'เฎค', 'เฎค', 'เฎจ', 'เฎฉ', 'เฎช', 'เฎช', 'เฎช', 'เฎช', 'เฎฎ', 'เฎฏ', 'เฎฏ', 'เฎฐ', 'เฎฑ', 'เฎฒ', 'เฎณ', 'เฎด', 'เฎต', 'เฎท', 'เฎท', 'เฎธ', 'เฎน', '', 'เฎพ', 'เฎฟ', 'เฏ€', 'เฏ', 'เฏ‚', '', 'เฏ†', 'เฏ‡', 'เฏˆ', 'เฏˆ', 'เฏŠ', 'เฏ‹', 'เฏŒ', 'เฏŒ', 'เฏ', '', '.', '', '', '', '', '', '', '0', 'เฏง', 'เฏจ', 'เฏฉ', 'เฏช', 'เฏซ', 'เฏฌ', 'เฏญ', 'เฏฎ', 'เฏฏ', '', '', '', '', '' }, { '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', 'เฐ', 'เฐ‚', 'เฐƒ', 'เฐ…', 'เฐ†', 'เฐ‡', 'เฐˆ', 'เฐ‰', 'เฐŠ', 'เฐ‹', 'เฐŽ', 'เฐ', 'เฐ', 'เฐ', 'เฐ’', 'เฐ“', 'เฐ”', 'เฐ”', 'เฐ•', 'เฐ–', 'เฐ—', 'เฐ˜', 'เฐ™', 'เฐš', 'เฐ›', 'เฐœ', 'เฐ', 'เฐž', 'เฐŸ', 'เฐ ', 'เฐก', 'เฐข', 'เฐฃ', 'เฐค', 'เฐฅ', 'เฐฆ', 'เฐง', 'เฐจ', 'เฐจ', 'เฐช', 'เฐซ', 'เฐฌ', 'เฐญ', 'เฐฎ', 'เฐฏ', 'เฐฏ', 'เฐฐ', 'เฐฑ', 'เฐฒ', 'เฐณ', 'เฐณ', 'เฐต', 'เฐถ', 'เฐท', 'เฐธ', 'เฐน', '', 'เฐพ', 'เฐฟ', 'เฑ€', 'เฑ', 'เฑ‚', 'เฑƒ', 'เฑ†', 'เฑ‡', 'เฑˆ', 'เฑˆ', 'เฑŠ', 'เฑ‹', 'เฑŒ', 'เฑŒ', 'เฑ', '', '.', '', '', '', '', '', '', 'เฑฆ', 'เฑง', 'เฑจ', 'เฑฉ', 'เฑช', 'เฑซ', 'เฑฌ', 'เฑญ', 'เฑฎ', 'เฑฏ', '', '', '', '', '' }, { '', '', '', '', '', '', 'เฐŒ', 'เฑก', '', '', 'เฑ ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เฑ„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', 'เฌ', 'เฌ‚', 'เฌƒ', 'เฌ…', 'เฌ†', 'เฌ‡', 'เฌˆ', 'เฌ‰', 'เฌŠ', 'เฌ‹', 'เฌ', 'เฌ', 'เฌ', 'เฌ', 'เฌ', 'เฌ“', 'เฌ”', 'เฌ”', 'เฌ•', 'เฌ–', 'เฌ—', 'เฌ˜', 'เฌ™', 'เฌš', 'เฌ›', 'เฌœ', 'เฌ', 'เฌž', 'เฌŸ', 'เฌ ', 'เฌก', 'เฌข', 'เฌฃ', 'เฌค', 'เฌฅ', 'เฌฆ', 'เฌง', 'เฌจ', 'เฌจ', 'เฌช', 'เฌซ', 'เฌฌ', 'เฌญ', 'เฌฎ', 'เฌฏ', 'เญŸ', 'เฌฐ', 'เฌฐ', 'เฌฒ', 'เฌณ', 'เฌณ', 'เฌฌ', 'เฌถ', 'เฌท', 'เฌธ', 'เฌน', '', 'เฌพ', 'เฌฟ', 'เญ€', 'เญ', 'เญ‚', 'เญƒ', 'เญ‡', 'เญ‡', 'เญˆ', 'เญˆ', 'เญ‹', 'เญ‹', 'เญŒ', 'เญŒ', 'เญ', 'เฌผ', '.', '', '', '', '', '', '', 'เญฆ', 'เญง', 'เญจ', 'เญฉ', 'เญช', 'เญซ', 'เญฌ', 'เญญ', 'เญฎ', 'เญฏ', '', '', '', '', '' }, { '', '', '', '', '', '', 'เฐŒ', 'เฑก', '', '', 'เฑ ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เญœ', 'เญ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เฑ„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', 'เฌฝ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', '', 'เฒ‚', 'เฒƒ', 'เฒ…', 'เฒ†', 'เฒ‡', 'เฒˆ', 'เฒ‰', 'เฒŠ', 'เฒ‹', 'เฒŽ', 'เฒ', 'เฒ', 'เฒ', 'เฒ’', 'เฒ“', 'เฒ”', 'เฒ”', 'เฒ•', 'เฒ–', 'เฒ—', 'เฒ˜', 'เฒ™', 'เฒš', 'เฒ›', 'เฒœ', 'เฒ', 'เฒž', 'เฒŸ', 'เฒ ', 'เฒก', 'เฒข', 'เฒฃ', 'เฒค', 'เฒฅ', 'เฒฆ', 'เฒง', 'เฒจ', 'เฒจ', 'เฒช', 'เฒซ', 'เฒฌ', 'เฒญ', 'เฒฎ', 'เฒฏ', 'เฒฏ', 'เฒฐ', 'เฒฑ', 'เฒฒ', 'เฒณ', 'เฒณ', 'เฒต', 'เฒถ', 'เฒท', 'เฒธ', 'เฒน', '', 'เฒพ', 'เฒฟ', 'เณ€', 'เณ', 'เณ‚', 'เณƒ', 'เณ†', 'เณ‡', 'เณˆ', 'เณˆ', 'เณŠ', 'เณ‹', 'เณŒ', 'เณŒ', 'เณ', '', '.', '', '', '', '', '', '', 'เณฆ', 'เณง', 'เณจ', 'เณฉ', 'เณช', 'เณซ', 'เณฌ', 'เณญ', 'เณฎ', 'เณฏ', '', '', '', '', '' }, { '', '', '', '', '', '', 'เฒŒ', 'เณก', '', '', 'เณ ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เณž', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เณ„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', '', 'เด‚', 'เดƒ', 'เด…', 'เด†', 'เด‡', 'เดˆ', 'เด‰', 'เดŠ', 'เด‹', 'เดŽ', 'เด', 'เด', 'เด', 'เด’', 'เด“', 'เด”', 'เด”', 'เด•', 'เด–', 'เด—', 'เด˜', 'เด™', 'เดš', 'เด›', 'เดœ', 'เด', 'เดž', 'เดŸ', 'เด ', 'เดก', 'เดข', 'เดฃ', 'เดค', 'เดฅ', 'เดฆ', 'เดง', 'เดจ', 'เดจ', 'เดช', 'เดซ', 'เดฌ', 'เดญ', 'เดฎ', 'เดฏ', 'เดฏ', 'เดฐ', 'เดฑ', 'เดฒ', 'เดณ', 'เดด', 'เดต', 'เดถ', 'เดท', 'เดธ', 'เดน', '', 'เดพ', 'เดฟ', 'เต€', 'เต', 'เต‚', 'เตƒ', 'เต†', 'เต‡', 'เตˆ', 'เตˆ', 'เตŠ', 'เต‹', 'เตŒ', 'เตŒ', 'เต', '', '.', '', '', '', '', '', '', 'เตฆ', 'เตง', 'เตจ', 'เตฉ', 'เตช', 'เตซ', 'เตฌ', 'เตญ', 'เตฎ', 'เตฏ', '', '', '', '', '' }, { '', '', '', '', '', '', 'เดŒ', 'เตก', '', '', 'เต ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', 'เช', 'เช‚', 'เชƒ', 'เช…', 'เช†', 'เช‡', 'เชˆ', 'เช‰', 'เชŠ', 'เช‹', 'เช', 'เช', 'เช', 'เช', 'เช', 'เช“', 'เช”', 'เช‘', 'เช•', 'เช–', 'เช—', 'เช˜', 'เช™', 'เชš', 'เช›', 'เชœ', 'เช', 'เชž', 'เชŸ', 'เช ', 'เชก', 'เชข', 'เชฃ', 'เชค', 'เชฅ', 'เชฆ', 'เชง', 'เชจ', 'เชจ', 'เชช', 'เชซ', 'เชฌ', 'เชญ', 'เชฎ', 'เชฏ', 'เชฏ', 'เชฐ', 'เชฐ', 'เชฒ', 'เชณ', 'เชณ', 'เชต', 'เชถ', 'เชท', 'เชธ', 'เชน', '', 'เชพ', 'เชฟ', 'เซ€', 'เซ', 'เซ‚', 'เซƒ', 'เซ‡', 'เซ‡', 'เซˆ', 'เซ…', 'เซ‹', 'เซ‹', 'เซŒ', 'เซ‰', 'เซ', 'เชผ', '.', '', '', '', '', '', '', 'เซฆ', 'เซง', 'เซจ', 'เซฉ', 'เซช', 'เซซ', 'เซฌ', 'เซญ', 'เซฎ', 'เซฏ', '', '', '', '', '' }, { '', 'เซ', '', '', '', '', '', '', '', '', 'เซ ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เซ„', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', 'เชฝ', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } }, { { '', '', 'เจ‚', '', 'เจ…', 'เจ†', 'เจ‡', 'เจˆ', 'เจ‰', 'เจŠ', '', 'เจ', 'เจ', 'เจ', 'เจ', 'เจ', 'เจ“', 'เจ”', 'เจ”', 'เจ•', 'เจ–', 'เจ—', 'เจ˜', 'เจ™', 'เจš', 'เจ›', 'เจœ', 'เจ', 'เจž', 'เจŸ', 'เจ ', 'เจก', 'เจข', 'เจฃ', 'เจค', 'เจฅ', 'เจฆ', 'เจง', 'เจจ', 'เจจ', 'เจช', 'เจซ', 'เจฌ', 'เจญ', 'เจฎ', 'เจฏ', 'เจฏ', 'เจฐ', 'เจฐ', 'เจฒ', 'เจณ', 'เจณ', 'เจต', 'เจถ', 'เจถ', 'เจธ', 'เจน', '', 'เจพ', 'เจฟ', 'เฉ€', 'เฉ', 'เฉ‚', '', 'เฉ‡', 'เฉ‡', 'เฉˆ', 'เฉˆ', 'เฉ‹', 'เฉ‹', 'เฉŒ', 'เฉŒ', 'เฉ', 'เจผ', '.', '', '', '', '', '', '', 'เฉฆ', 'เฉง', 'เฉจ', 'เฉฉ', 'เฉช', 'เฉซ', 'เฉฌ', 'เฉญ', 'เฉฎ', 'เฉฏ', '', '', '', '', '' }, { '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'เฉ™', 'เฉš', '', '', '', '', 'เฉ›', '', '', '', '', '', 'เฉœ', '', '', '', '', '', '', '', '', 'เฉž', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'โ€Œ', 'โ€', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '' } } }; public ISCIIEncoding(int codePage) : base(codePage) { _defaultCodePage = codePage - 57000; if (_defaultCodePage < 2 || _defaultCodePage > 11) throw new ArgumentException(System.SR.Format(System.SR.Argument_CodepageNotSupported, codePage), "codePage"); } void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) { throw new PlatformNotSupportedException(); } public override int GetMaxByteCount(int charCount) { if (charCount < 0) throw new ArgumentOutOfRangeException("charCount", System.SR.ArgumentOutOfRange_NeedNonNegNum); long num = (long)charCount + 1; if (base.EncoderFallback.MaxCharCount > 1) num *= base.EncoderFallback.MaxCharCount; num *= 4; if (num > 2147483647) throw new ArgumentOutOfRangeException("charCount", System.SR.ArgumentOutOfRange_GetByteCountOverflow); return (int)num; } public override int GetMaxCharCount(int byteCount) { if (byteCount < 0) throw new ArgumentOutOfRangeException("byteCount", System.SR.ArgumentOutOfRange_NeedNonNegNum); long num = (long)byteCount + 1; if (base.DecoderFallback.MaxCharCount > 1) num *= base.DecoderFallback.MaxCharCount; if (num > 2147483647) throw new ArgumentOutOfRangeException("byteCount", System.SR.ArgumentOutOfRange_GetCharCountOverflow); return (int)num; } public unsafe override int GetByteCount(char* chars, int count, System.Text.EncoderNLS baseEncoder) { return GetBytes(chars, count, null, 0, baseEncoder); } public unsafe override int GetBytes(char* chars, int charCount, byte* bytes, int byteCount, System.Text.EncoderNLS baseEncoder) { ISCIIEncoder iSCIIEncoder = (ISCIIEncoder)baseEncoder; EncodingByteBuffer encodingByteBuffer = new EncodingByteBuffer(this, iSCIIEncoder, bytes, byteCount, chars, charCount); int num = _defaultCodePage; bool flag = false; if (iSCIIEncoder != null) { num = iSCIIEncoder.currentCodePage; flag = iSCIIEncoder.bLastVirama; if (iSCIIEncoder.charLeftOver > '') { encodingByteBuffer.Fallback(iSCIIEncoder.charLeftOver); flag = false; } } while (encodingByteBuffer.MoreData) { char nextChar = encodingByteBuffer.GetNextChar(); if (nextChar < 'ย ') { if (!encodingByteBuffer.AddByte((byte)nextChar)) break; flag = false; } else if (nextChar < 'เค' || nextChar > 'เตฏ') { if (flag && (nextChar == 'โ€Œ' || nextChar == 'โ€')) { if (nextChar == 'โ€Œ') { if (!encodingByteBuffer.AddByte(232)) break; } else if (!encodingByteBuffer.AddByte(233)) { break; } flag = false; } else { encodingByteBuffer.Fallback(nextChar); flag = false; } } else { int num2 = s_UnicodeToIndicChar[nextChar - 2305]; byte b = (byte)num2; int num3 = 15 & (num2 >> 8); int num4 = 61440 & num2; if (num2 == 0) { encodingByteBuffer.Fallback(nextChar); flag = false; } else { if (num3 != num) { if (!encodingByteBuffer.AddByte(239, (byte)(num3 | 64))) break; num = num3; } if (!encodingByteBuffer.AddByte(b, (num4 != 0) ? 1 : 0)) break; flag = (b == 232); if (num4 != 0 && !encodingByteBuffer.AddByte(s_SecondIndicByte[num4 >> 12])) break; } } } if (num != _defaultCodePage && (iSCIIEncoder == null || iSCIIEncoder.MustFlush)) { if (encodingByteBuffer.AddByte(239, (byte)(_defaultCodePage | 64))) num = _defaultCodePage; else encodingByteBuffer.GetNextChar(); flag = false; } if (iSCIIEncoder != null && bytes != null) { if (!encodingByteBuffer.fallbackBufferHelper.bUsedEncoder) iSCIIEncoder.charLeftOver = ''; iSCIIEncoder.currentCodePage = num; iSCIIEncoder.bLastVirama = flag; iSCIIEncoder.m_charsUsed = encodingByteBuffer.CharsUsed; } return encodingByteBuffer.Count; } public unsafe override int GetCharCount(byte* bytes, int count, System.Text.DecoderNLS baseDecoder) { return GetChars(bytes, count, null, 0, baseDecoder); } public unsafe override int GetChars(byte* bytes, int byteCount, char* chars, int charCount, System.Text.DecoderNLS baseDecoder) { ISCIIDecoder iSCIIDecoder = (ISCIIDecoder)baseDecoder; EncodingCharBuffer encodingCharBuffer = new EncodingCharBuffer(this, iSCIIDecoder, chars, charCount, bytes, byteCount); int num = _defaultCodePage; bool flag = false; bool flag2 = false; bool flag3 = false; char c = ''; char c2 = ''; if (iSCIIDecoder != null) { num = iSCIIDecoder.currentCodePage; flag = iSCIIDecoder.bLastATR; flag2 = iSCIIDecoder.bLastVirama; flag3 = iSCIIDecoder.bLastDevenagariStressAbbr; c = iSCIIDecoder.cLastCharForNextNukta; c2 = iSCIIDecoder.cLastCharForNoNextNukta; } bool flag4 = flag2 | flag | flag3 | (c != ''); int num2 = -1; if (num >= 2 && num <= 11) num2 = s_IndicMappingIndex[num]; while (encodingCharBuffer.MoreData) { byte nextByte = encodingCharBuffer.GetNextByte(); if (flag4) { flag4 = false; if (flag) { if (nextByte >= 66 && nextByte <= 75) { num = (nextByte & 15); num2 = s_IndicMappingIndex[num]; flag = false; } else { switch (nextByte) { case 64: break; case 65: goto IL_00f3; default: goto IL_0116; } num = _defaultCodePage; num2 = -1; if (num >= 2 && num <= 11) num2 = s_IndicMappingIndex[num]; flag = false; } continue; } if (flag2) { switch (nextByte) { case 232: break; case 233: goto IL_015b; default: goto IL_0173; } if (!encodingCharBuffer.AddChar('โ€Œ')) break; flag2 = false; continue; } if (flag3) { switch (nextByte) { case 184: break; case 191: goto IL_01a9; default: goto IL_01c1; } if (!encodingCharBuffer.AddChar('เฅ’')) break; flag3 = false; continue; } if (nextByte == 233) { if (!encodingCharBuffer.AddChar(c)) break; c = (c2 = ''); continue; } if (!encodingCharBuffer.AddChar(c2)) break; c = (c2 = ''); } goto IL_020a; IL_01a9: if (!encodingCharBuffer.AddChar('เฅฐ')) break; flag3 = false; continue; IL_01c1: if (!encodingCharBuffer.Fallback(240)) break; flag3 = false; goto IL_020a; IL_0298: char c3; if (!encodingCharBuffer.AddChar(c3)) break; flag2 = (flag4 = true); continue; IL_015b: if (!encodingCharBuffer.AddChar('โ€')) break; flag2 = false; continue; IL_02aa: char c4; if ((c4 & 61440) == 0) { flag4 = true; c = c4; c2 = c3; } else flag3 = (flag4 = true); continue; IL_0173: flag2 = false; goto IL_020a; IL_0116: if (!encodingCharBuffer.Fallback(239)) break; flag = false; goto IL_020a; IL_020a: if (nextByte < 160) { if (!encodingCharBuffer.AddChar((char)nextByte)) break; } else if (nextByte == 239) { flag = (flag4 = true); } else { c3 = s_IndicMapping[num2, 0, nextByte - 160]; c4 = s_IndicMapping[num2, 1, nextByte - 160]; if (c4 != 0) { switch (nextByte) { case 233: break; case 232: goto IL_0298; default: goto IL_02aa; } } if (c3 == '') { if (!encodingCharBuffer.Fallback(nextByte)) break; } else if (!encodingCharBuffer.AddChar(c3)) { break; } } continue; IL_00f3: num = _defaultCodePage; num2 = -1; if (num >= 2 && num <= 11) num2 = s_IndicMappingIndex[num]; flag = false; } if (iSCIIDecoder == null || iSCIIDecoder.MustFlush) { if (flag) { if (encodingCharBuffer.Fallback(239)) flag = false; else encodingCharBuffer.GetNextByte(); } else if (flag3) { if (encodingCharBuffer.Fallback(240)) flag3 = false; else encodingCharBuffer.GetNextByte(); } else if (c2 != 0) { if (encodingCharBuffer.AddChar(c2)) c2 = (c = ''); else encodingCharBuffer.GetNextByte(); } } if (iSCIIDecoder != null && chars != null) { if ((!iSCIIDecoder.MustFlush || c2 != '') | flag | flag3) { iSCIIDecoder.currentCodePage = num; iSCIIDecoder.bLastVirama = flag2; iSCIIDecoder.bLastATR = flag; iSCIIDecoder.bLastDevenagariStressAbbr = flag3; iSCIIDecoder.cLastCharForNextNukta = c; iSCIIDecoder.cLastCharForNoNextNukta = c2; } else { iSCIIDecoder.currentCodePage = _defaultCodePage; iSCIIDecoder.bLastVirama = false; iSCIIDecoder.bLastATR = false; iSCIIDecoder.bLastDevenagariStressAbbr = false; iSCIIDecoder.cLastCharForNextNukta = ''; iSCIIDecoder.cLastCharForNoNextNukta = ''; } iSCIIDecoder.m_bytesUsed = encodingCharBuffer.BytesUsed; } return encodingCharBuffer.Count; } public override Decoder GetDecoder() { return new ISCIIDecoder(this); } public override Encoder GetEncoder() { return new ISCIIEncoder(this); } public override int GetHashCode() { return _defaultCodePage + base.EncoderFallback.GetHashCode() + base.DecoderFallback.GetHashCode(); } } }