Index: /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSLongLabelTxtResourceRecord.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSLongLabelTxtResourceRecord.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSLongLabelTxtResourceRecord.cs (revision 580)
@@ -0,0 +1,136 @@
+///<summary>
+/// Author: Nick Brunwin
+///------------------------
+///Copyright (c) 2008, Telnic Ltd.
+///
+///All rights reserved.
+///
+///Redistribution and use in source and binary forms, with or 
+///without modification, are permitted provided that the following 
+///conditions are met:
+///
+///*	Redistributions of source code must retain the above 
+///     copyright notice, this list of conditions and the 
+///     following disclaimer. 
+///*	Redistributions in binary form must reproduce the above 
+///     copyright notice, this list of conditions and the following
+///     disclaimer in the documentation and/or other materials 
+///     provided with the distribution. 
+///*	Neither the name of the Telnic Ltd. nor the names of its 
+///     contributors may be used to endorse or promote products 
+///     derived from this software without specific prior written
+///     permission. 
+///
+///THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+///CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+///INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+///MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+///DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+///CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+///SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+///LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+///USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
+///AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+///LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+///IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+///THE POSSIBILITY OF SUCH DAMAGE.
+///--------------------------
+///</summary>
+using System;
+using System.Collections.Generic;
+using System.Text;
+using System.Data;
+using org.telnic.outlook.util;
+using System.Xml;
+using System.IO;
+
+namespace org.telnic.outlook.dns.records.txt
+{
+    [Serializable]
+    public class DNSLongLabelTxtResourceRecord : DNSEnhancedTxtResourceRecord
+    {
+        /// <summary>
+        /// The string used to identify enhanced text records of this type.
+        /// </summary>
+        public static string TXTTYPE = ".tlb";
+
+        private List<string> longLabels;
+        /// <summary>
+        /// The label
+        /// </summary>
+        public List<string> LongLabels
+        {
+            get
+            {
+                return this.longLabels;
+            }
+        }
+
+        private int order;
+        /// <summary>
+        /// The order
+        /// </summary>
+        public int Order
+        {
+            get
+            {
+                return this.order;
+            }
+        }
+
+        private int priority;
+        /// <summary>
+        /// The priority
+        /// </summary>
+        public int Priority
+        {
+            get
+            {
+                return this.priority;
+            }
+        }
+
+      
+        public DNSLongLabelTxtResourceRecord(long ttl, string version, List<string> longLabels, int order, int priority)
+            
+            : base(ttl, version)
+        {
+            this.longLabels = longLabels;
+            this.order = order;
+            this.priority = priority;
+        }
+
+        /// <summary>
+        /// Compares one DNSLongLabelTxtResourceRecord to another
+        /// </summary>
+        /// <param name="other">The DNSLongLabelTxtResourceRecord to compare this to</param>
+        /// <returns>True if they are equal</returns>
+        public bool Equals(DNSLongLabelTxtResourceRecord other)
+        {
+            if (this.version == other.version && base.Equals(other) && 
+                SequenceEquals(this.longLabels, other.longLabels) && this.order == other.order && this.priority == other.priority)
+            {
+                return true;
+            }
+            return false;
+        }
+
+        public static bool SequenceEquals<T>(IList<T> first, IList<T> second)
+        {
+            if (first == second) return true;
+            if (first == null || second == null) return false;
+
+            if (first.Count != second.Count) return false;
+
+            for (int i = 0; i < first.Count; i++)
+                if (!first[i].Equals(second[i]))
+                    return false;
+
+            return true;
+        }
+
+
+
+
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSDDSTxtServiceMessageResourceRecord.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSDDSTxtServiceMessageResourceRecord.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/Txt/DNSDDSTxtServiceMessageResourceRecord.cs (revision 580)
@@ -0,0 +1,100 @@
+///<summary>
+/// Author: Nick Brunwin
+///------------------------
+///Copyright (c) 2008, Telnic Ltd.
+///
+///All rights reserved.
+///
+///Redistribution and use in source and binary forms, with or 
+///without modification, are permitted provided that the following 
+///conditions are met:
+///
+///*	Redistributions of source code must retain the above 
+///     copyright notice, this list of conditions and the 
+///     following disclaimer. 
+///*	Redistributions in binary form must reproduce the above 
+///     copyright notice, this list of conditions and the following
+///     disclaimer in the documentation and/or other materials 
+///     provided with the distribution. 
+///*	Neither the name of the Telnic Ltd. nor the names of its 
+///     contributors may be used to endorse or promote products 
+///     derived from this software without specific prior written
+///     permission. 
+///
+///THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+///CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+///INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+///MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+///DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+///CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+///SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+///LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+///USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
+///AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+///LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+///IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+///THE POSSIBILITY OF SUCH DAMAGE.
+///--------------------------
+///</summary>
+using System;
+using System.Collections.Generic;
+using System.Text;
+using org.telnic.outlook.util;
+
+namespace org.telnic.outlook.dns.records.txt
+{
+    [Serializable]
+    public class DNSDDSTxtServiceMessageResourceRecord : DNSTxtServiceMessageResourceRecord
+    {
+        /// <summary>
+        /// The string used to identify service messages of this type.
+        /// </summary>
+        public static string MESSAGETYPE = "dds";
+
+        private string displayName;
+        /// <summary>
+        /// name to display
+        /// </summary>
+        public string DisplayName
+        {
+            get
+            {
+                return this.displayName;
+            }
+        }
+
+        /// <summary>
+        /// 
+        /// </summary>
+        /// <param name="ttl">The life remaining of the record</param>
+        /// <param name="version">The version of the specification that this record is written for.</param>
+        /// <param name="displayName">The String that should be displayed instead of the .tel</param>
+        public DNSDDSTxtServiceMessageResourceRecord(long ttl, string version, string displayName)
+            : base(ttl, version, MESSAGETYPE)
+        {
+            Logger.Log(Logger.Section.Lookups, "Display Name: " + displayName);
+            this.displayName = displayName;
+        }
+
+        /// <summary>
+        /// Applies what is specified by the service message to the result.
+        /// </summary>
+        /// <param name="lr">The result to apply the service message to.</param>
+        public override void Process(org.telnic.outlook.lookup.LookupResult lr)
+        {
+            lr.DdsValue= displayName;
+        }
+
+      
+
+        /// <summary>
+        /// Compares one DNSDDSTxtServiceMessageResourceRecord to another
+        /// </summary>
+        /// <param name="other">The DNSDDSTxtServiceMessageResourceRecord to compare this to</param>
+        /// <returns>True if they are equal</returns>
+        public bool Equals(DNSDDSTxtServiceMessageResourceRecord other)
+        {
+            return base.Equals(other) && this.displayName == other.displayName;
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/DNSUnlinkedTelnameNaptrResourceRecord.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/DNSUnlinkedTelnameNaptrResourceRecord.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/DNS/Records/DNSUnlinkedTelnameNaptrResourceRecord.cs (revision 580)
@@ -0,0 +1,122 @@
+///<summary>
+/// Author: Ben Dowling & Nick Brunwin
+///------------------------
+///Copyright (c) 2008, Telnic Ltd.
+///
+///All rights reserved.
+///
+///Redistribution and use in source and binary forms, with or 
+///without modification, are permitted provided that the following 
+///conditions are met:
+///
+///*	Redistributions of source code must retain the above 
+///     copyright notice, this list of conditions and the 
+///     following disclaimer. 
+///*	Redistributions in binary form must reproduce the above 
+///     copyright notice, this list of conditions and the following
+///     disclaimer in the documentation and/or other materials 
+///     provided with the distribution. 
+///*	Neither the name of the Telnic Ltd. nor the names of its 
+///     contributors may be used to endorse or promote products 
+///     derived from this software without specific prior written
+///     permission. 
+///
+///THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
+///CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 
+///INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 
+///MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 
+///DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR 
+///CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
+///SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+///LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+///USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
+///AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
+///LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 
+///IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+///THE POSSIBILITY OF SUCH DAMAGE.
+///--------------------------
+///</summary>
+using System;
+using System.Collections.Generic;
+using org.telnic.outlook.util;
+using System.IO;
+using System.Text.RegularExpressions;
+using org.telnic.outlook.lookup;
+using org.telnic.outlook.uri;
+
+namespace org.telnic.outlook.dns.records
+{
+
+    /// <summary> The Class DNSUnlinkedTelnameNaptrResourceRecord.
+    /// 
+    /// </summary>
+    /// <author>  John Cundell
+    /// </author>
+    /// <version>  0.1.0
+    /// </version>
+    /// 
+    [Serializable]
+    public class DNSUnlinkedTelnameNaptrResourceRecord : DNSTelnameNaptrResourceRecord
+    {
+
+       
+
+        private string text = null;
+        public string Text
+        {
+            get
+            {
+                return this.text;
+            }
+
+        }
+
+        
+        /// <summary> The Constructor.
+        /// 
+        /// </summary>
+        /// <param name="naptr">the naptr
+        /// </param>
+        public DNSUnlinkedTelnameNaptrResourceRecord(DNSTelnameNaptrResourceRecord naptr)
+           : base(naptr)
+        {
+            this.query = naptr.Query;
+            this.serviceType = naptr.ServiceType;
+            this.catagories = naptr.Catagories;
+            this.uriPath = naptr.UriPath;
+            this.uriScheme = naptr.UriScheme;
+            this.labels = naptr.Labels;
+            if (this.uriPath.StartsWith(";base64"))
+            {
+                System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
+                System.Text.Decoder utf8Decode = encoder.GetDecoder();
+
+                byte[] todecode_byte = Convert.FromBase64String(this.uriPath.Substring(8, this.uriPath.Length-8));
+                int charCount = utf8Decode.GetCharCount(todecode_byte, 0, todecode_byte.Length);
+                char[] decoded_char = new char[charCount];
+                utf8Decode.GetChars(todecode_byte, 0, todecode_byte.Length, decoded_char, 0);
+                this.text = new string(decoded_char);
+
+            }
+            else
+            {
+                if (this.uriScheme.StartsWith("data:"))
+                    this.text = this.uriPath.Substring(1, this.uriPath.Length - 1);
+                else
+                    this.text = this.uriPath;
+            }
+            if (UriHandler.getInstance().Displayable(this.serviceType, this.uriScheme) || !UriHandler.getInstance().KnownService(this.serviceType))
+                this.display = true;
+            else
+                this.display = false;
+
+        }
+
+
+        public override string ToString()
+        {
+            //return ".Tel Unlinked Naptr NAPTR RR: " + uriPath + " " + uriScheme + " " + order + " " + preference + " " + replaceStr;
+            return ".Tel Unlinked Naptr NAPTR RR: " + this.uriPath + "/" + this.uriScheme + "/" + this.text;
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/CombiningClass.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/CombiningClass.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/CombiningClass.cs (revision 580)
@@ -0,0 +1,457 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class CombiningClass
+{
+	public static readonly int[,] c = new int[,] {
+    { /* Page 3 */
+      230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 220, 220, 220, 220, 232, 216, 220, 220, 220, 220, 
+      220, 202, 202, 220, 220, 220, 220, 202, 202, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 220, 1, 1, 1, 1, 1, 220, 220, 220, 220, 230, 230, 230, 
+      230, 230, 230, 230, 230, 240, 230, 220, 220, 220, 230, 230, 230, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      234, 234, 233, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 4 */
+      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, 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, 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, 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, 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, 0, 0, 0, 
+      0, 0, 0, 230, 230, 230, 230, 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, 
+      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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 5 */
+      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, 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, 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, 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, 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, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 220, 230, 230, 230, 222, 220, 230, 230, 230, 230, 
+      230, 230, 0, 220, 220, 220, 220, 220, 230, 230, 220, 230, 230, 222, 228, 230, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 0, 20, 21, 22, 0, 23, 
+      0, 24, 25, 0, 230, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 6 */
+      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, 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, 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, 27, 28, 29, 30, 31, 32, 33, 34, 230, 230, 220, 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, 0, 35, 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, 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, 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, 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, 0, 230, 230, 230, 230, 230, 230, 230, 0, 0, 230, 
+      230, 230, 230, 220, 230, 0, 0, 230, 230, 0, 220, 230, 230, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 7 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 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, 0, 0, 0, 0, 0, 230, 220, 230, 230, 220, 230, 230, 220, 220, 220, 230, 220, 220, 230, 220, 230, 
+      230, 230, 220, 230, 220, 230, 220, 230, 220, 230, 230, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 9 */
+      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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 230, 220, 230, 230, 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, 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, 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, 
+      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, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 
+    },
+    { /* Page 10 */
+      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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 
+      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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 
+    },
+    { /* Page 11 */
+      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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 
+      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, 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, 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, 0, 0, 9, 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, 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, 
+    },
+    { /* Page 12 */
+      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, 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, 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, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 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, 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, 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, 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, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 
+    },
+    { /* Page 13 */
+      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, 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, 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, 0, 0, 9, 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, 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, 
+      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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 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, 0, 0, 0, 
+    },
+    { /* Page 14 */
+      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, 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, 0, 0, 0, 0, 0, 0, 103, 103, 9, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 107, 107, 107, 107, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 118, 118, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 122, 122, 122, 122, 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, 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, 0, 0, 
+    },
+    { /* Page 15 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 220, 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, 0, 0, 220, 0, 220, 0, 216, 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, 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, 0, 0, 0, 0, 0, 129, 130, 0, 132, 0, 0, 0, 0, 0, 130, 130, 130, 130, 0, 0, 
+      130, 0, 230, 230, 9, 0, 230, 230, 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, 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, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 220, 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, 
+      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, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 16 */
+      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, 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, 0, 0, 0, 0, 0, 7, 0, 9, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 23 */
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 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, 0, 0, 0, 0, 0, 0, 9, 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, 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, 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, 
+      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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 9, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 24 */
+      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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 228, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 32 */
+      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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 1, 1, 230, 230, 230, 230, 1, 1, 1, 230, 230, 0, 0, 0, 
+      0, 230, 0, 0, 0, 1, 1, 230, 220, 230, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+    { /* Page 48 */
+      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, 0, 0, 0, 0, 0, 0, 0, 
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 218, 228, 232, 222, 224, 224, 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, 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, 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, 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, 0, 0, 0, 0, 0, 8, 8, 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, 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, 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, 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, 0, 
+    },
+    { /* Page 251 */
+      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, 0, 0, 0, 0, 0, 26, 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, 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, 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, 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, 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, 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, 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, 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, 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, 
+    },
+    { /* Page 254 */
+      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, 0, 0, 0, 0, 0, 0, 0, 
+      230, 230, 230, 230, 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, 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, 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, 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, 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, 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, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    },
+  };
+
+	public static readonly int[] i = new int[] {
+    -1,
+    -1,
+    -1,
+    0,
+    1,
+    2,
+    3,
+    4,
+    -1,
+    5,
+    6,
+    7,
+    8,
+    9,
+    10,
+    11,
+    12,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    13,
+    14,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    15,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    16,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    17,
+    -1,
+    -1,
+    18,
+    -1,
+  };
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionMappings.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionMappings.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionMappings.cs (revision 580)
@@ -0,0 +1,2837 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class DecompositionMappings
+{
+	public static readonly string[] m = new string[] {
+    "\u0020",
+    "\u0020\u0308",
+    "\u0061",
+    "\u0020\u0304",
+    "\u0032",
+    "\u0033",
+    "\u0020\u0301",
+    "\u03BC",
+    "\u0020\u0327",
+    "\u0031",
+    "\u006F",
+    "\u0031\u2044\u0034",
+    "\u0031\u2044\u0032",
+    "\u0033\u2044\u0034",
+    "\u0041\u0300",
+    "\u0041\u0301",
+    "\u0041\u0302",
+    "\u0041\u0303",
+    "\u0041\u0308",
+    "\u0041\u030A",
+    "\u0043\u0327",
+    "\u0045\u0300",
+    "\u0045\u0301",
+    "\u0045\u0302",
+    "\u0045\u0308",
+    "\u0049\u0300",
+    "\u0049\u0301",
+    "\u0049\u0302",
+    "\u0049\u0308",
+    "\u004E\u0303",
+    "\u004F\u0300",
+    "\u004F\u0301",
+    "\u004F\u0302",
+    "\u004F\u0303",
+    "\u004F\u0308",
+    "\u0055\u0300",
+    "\u0055\u0301",
+    "\u0055\u0302",
+    "\u0055\u0308",
+    "\u0059\u0301",
+    "\u0061\u0300",
+    "\u0061\u0301",
+    "\u0061\u0302",
+    "\u0061\u0303",
+    "\u0061\u0308",
+    "\u0061\u030A",
+    "\u0063\u0327",
+    "\u0065\u0300",
+    "\u0065\u0301",
+    "\u0065\u0302",
+    "\u0065\u0308",
+    "\u0069\u0300",
+    "\u0069\u0301",
+    "\u0069\u0302",
+    "\u0069\u0308",
+    "\u006E\u0303",
+    "\u006F\u0300",
+    "\u006F\u0301",
+    "\u006F\u0302",
+    "\u006F\u0303",
+    "\u006F\u0308",
+    "\u0075\u0300",
+    "\u0075\u0301",
+    "\u0075\u0302",
+    "\u0075\u0308",
+    "\u0079\u0301",
+    "\u0079\u0308",
+    "\u0041\u0304",
+    "\u0061\u0304",
+    "\u0041\u0306",
+    "\u0061\u0306",
+    "\u0041\u0328",
+    "\u0061\u0328",
+    "\u0043\u0301",
+    "\u0063\u0301",
+    "\u0043\u0302",
+    "\u0063\u0302",
+    "\u0043\u0307",
+    "\u0063\u0307",
+    "\u0043\u030C",
+    "\u0063\u030C",
+    "\u0044\u030C",
+    "\u0064\u030C",
+    "\u0045\u0304",
+    "\u0065\u0304",
+    "\u0045\u0306",
+    "\u0065\u0306",
+    "\u0045\u0307",
+    "\u0065\u0307",
+    "\u0045\u0328",
+    "\u0065\u0328",
+    "\u0045\u030C",
+    "\u0065\u030C",
+    "\u0047\u0302",
+    "\u0067\u0302",
+    "\u0047\u0306",
+    "\u0067\u0306",
+    "\u0047\u0307",
+    "\u0067\u0307",
+    "\u0047\u0327",
+    "\u0067\u0327",
+    "\u0048\u0302",
+    "\u0068\u0302",
+    "\u0049\u0303",
+    "\u0069\u0303",
+    "\u0049\u0304",
+    "\u0069\u0304",
+    "\u0049\u0306",
+    "\u0069\u0306",
+    "\u0049\u0328",
+    "\u0069\u0328",
+    "\u0049\u0307",
+    "\u0049\u004A",
+    "\u0069\u006A",
+    "\u004A\u0302",
+    "\u006A\u0302",
+    "\u004B\u0327",
+    "\u006B\u0327",
+    "\u004C\u0301",
+    "\u006C\u0301",
+    "\u004C\u0327",
+    "\u006C\u0327",
+    "\u004C\u030C",
+    "\u006C\u030C",
+    "\u004C\u00B7",
+    "\u006C\u00B7",
+    "\u004E\u0301",
+    "\u006E\u0301",
+    "\u004E\u0327",
+    "\u006E\u0327",
+    "\u004E\u030C",
+    "\u006E\u030C",
+    "\u02BC\u006E",
+    "\u004F\u0304",
+    "\u006F\u0304",
+    "\u004F\u0306",
+    "\u006F\u0306",
+    "\u004F\u030B",
+    "\u006F\u030B",
+    "\u0052\u0301",
+    "\u0072\u0301",
+    "\u0052\u0327",
+    "\u0072\u0327",
+    "\u0052\u030C",
+    "\u0072\u030C",
+    "\u0053\u0301",
+    "\u0073\u0301",
+    "\u0053\u0302",
+    "\u0073\u0302",
+    "\u0053\u0327",
+    "\u0073\u0327",
+    "\u0053\u030C",
+    "\u0073\u030C",
+    "\u0054\u0327",
+    "\u0074\u0327",
+    "\u0054\u030C",
+    "\u0074\u030C",
+    "\u0055\u0303",
+    "\u0075\u0303",
+    "\u0055\u0304",
+    "\u0075\u0304",
+    "\u0055\u0306",
+    "\u0075\u0306",
+    "\u0055\u030A",
+    "\u0075\u030A",
+    "\u0055\u030B",
+    "\u0075\u030B",
+    "\u0055\u0328",
+    "\u0075\u0328",
+    "\u0057\u0302",
+    "\u0077\u0302",
+    "\u0059\u0302",
+    "\u0079\u0302",
+    "\u0059\u0308",
+    "\u005A\u0301",
+    "\u007A\u0301",
+    "\u005A\u0307",
+    "\u007A\u0307",
+    "\u005A\u030C",
+    "\u007A\u030C",
+    "\u0073",
+    "\u004F\u031B",
+    "\u006F\u031B",
+    "\u0055\u031B",
+    "\u0075\u031B",
+    "\u0044\u005A\u030C",
+    "\u0044\u007A\u030C",
+    "\u0064\u007A\u030C",
+    "\u004C\u004A",
+    "\u004C\u006A",
+    "\u006C\u006A",
+    "\u004E\u004A",
+    "\u004E\u006A",
+    "\u006E\u006A",
+    "\u0041\u030C",
+    "\u0061\u030C",
+    "\u0049\u030C",
+    "\u0069\u030C",
+    "\u004F\u030C",
+    "\u006F\u030C",
+    "\u0055\u030C",
+    "\u0075\u030C",
+    "\u0055\u0308\u0304",
+    "\u0075\u0308\u0304",
+    "\u0055\u0308\u0301",
+    "\u0075\u0308\u0301",
+    "\u0055\u0308\u030C",
+    "\u0075\u0308\u030C",
+    "\u0055\u0308\u0300",
+    "\u0075\u0308\u0300",
+    "\u0041\u0308\u0304",
+    "\u0061\u0308\u0304",
+    "\u0041\u0307\u0304",
+    "\u0061\u0307\u0304",
+    "\u00C6\u0304",
+    "\u00E6\u0304",
+    "\u0047\u030C",
+    "\u0067\u030C",
+    "\u004B\u030C",
+    "\u006B\u030C",
+    "\u004F\u0328",
+    "\u006F\u0328",
+    "\u004F\u0328\u0304",
+    "\u006F\u0328\u0304",
+    "\u01B7\u030C",
+    "\u0292\u030C",
+    "\u006A\u030C",
+    "\u0044\u005A",
+    "\u0044\u007A",
+    "\u0064\u007A",
+    "\u0047\u0301",
+    "\u0067\u0301",
+    "\u004E\u0300",
+    "\u006E\u0300",
+    "\u0041\u030A\u0301",
+    "\u0061\u030A\u0301",
+    "\u00C6\u0301",
+    "\u00E6\u0301",
+    "\u00D8\u0301",
+    "\u00F8\u0301",
+    "\u0041\u030F",
+    "\u0061\u030F",
+    "\u0041\u0311",
+    "\u0061\u0311",
+    "\u0045\u030F",
+    "\u0065\u030F",
+    "\u0045\u0311",
+    "\u0065\u0311",
+    "\u0049\u030F",
+    "\u0069\u030F",
+    "\u0049\u0311",
+    "\u0069\u0311",
+    "\u004F\u030F",
+    "\u006F\u030F",
+    "\u004F\u0311",
+    "\u006F\u0311",
+    "\u0052\u030F",
+    "\u0072\u030F",
+    "\u0052\u0311",
+    "\u0072\u0311",
+    "\u0055\u030F",
+    "\u0075\u030F",
+    "\u0055\u0311",
+    "\u0075\u0311",
+    "\u0053\u0326",
+    "\u0073\u0326",
+    "\u0054\u0326",
+    "\u0074\u0326",
+    "\u0048\u030C",
+    "\u0068\u030C",
+    "\u0041\u0307",
+    "\u0061\u0307",
+    "\u0045\u0327",
+    "\u0065\u0327",
+    "\u004F\u0308\u0304",
+    "\u006F\u0308\u0304",
+    "\u004F\u0303\u0304",
+    "\u006F\u0303\u0304",
+    "\u004F\u0307",
+    "\u006F\u0307",
+    "\u004F\u0307\u0304",
+    "\u006F\u0307\u0304",
+    "\u0059\u0304",
+    "\u0079\u0304",
+    "\u0068",
+    "\u0266",
+    "\u006A",
+    "\u0072",
+    "\u0279",
+    "\u027B",
+    "\u0281",
+    "\u0077",
+    "\u0079",
+    "\u0020\u0306",
+    "\u0020\u0307",
+    "\u0020\u030A",
+    "\u0020\u0328",
+    "\u0020\u0303",
+    "\u0020\u030B",
+    "\u0263",
+    "\u006C",
+    "\u0078",
+    "\u0295",
+    "\u0300",
+    "\u0301",
+    "\u0313",
+    "\u0308\u0301",
+    "\u02B9",
+    "\u0020\u0345",
+    "\u003B",
+    "\u0020\u0308\u0301",
+    "\u0391\u0301",
+    "\u00B7",
+    "\u0395\u0301",
+    "\u0397\u0301",
+    "\u0399\u0301",
+    "\u039F\u0301",
+    "\u03A5\u0301",
+    "\u03A9\u0301",
+    "\u03B9\u0308\u0301",
+    "\u0399\u0308",
+    "\u03A5\u0308",
+    "\u03B1\u0301",
+    "\u03B5\u0301",
+    "\u03B7\u0301",
+    "\u03B9\u0301",
+    "\u03C5\u0308\u0301",
+    "\u03B9\u0308",
+    "\u03C5\u0308",
+    "\u03BF\u0301",
+    "\u03C5\u0301",
+    "\u03C9\u0301",
+    "\u03B2",
+    "\u03B8",
+    "\u03A5",
+    "\u03C6",
+    "\u03C0",
+    "\u03BA",
+    "\u03C1",
+    "\u03C2",
+    "\u0398",
+    "\u03B5",
+    "\u0415\u0300",
+    "\u0415\u0308",
+    "\u0413\u0301",
+    "\u0406\u0308",
+    "\u041A\u0301",
+    "\u0418\u0300",
+    "\u0423\u0306",
+    "\u0418\u0306",
+    "\u0438\u0306",
+    "\u0435\u0300",
+    "\u0435\u0308",
+    "\u0433\u0301",
+    "\u0456\u0308",
+    "\u043A\u0301",
+    "\u0438\u0300",
+    "\u0443\u0306",
+    "\u0474\u030F",
+    "\u0475\u030F",
+    "\u0416\u0306",
+    "\u0436\u0306",
+    "\u0410\u0306",
+    "\u0430\u0306",
+    "\u0410\u0308",
+    "\u0430\u0308",
+    "\u0415\u0306",
+    "\u0435\u0306",
+    "\u04D8\u0308",
+    "\u04D9\u0308",
+    "\u0416\u0308",
+    "\u0436\u0308",
+    "\u0417\u0308",
+    "\u0437\u0308",
+    "\u0418\u0304",
+    "\u0438\u0304",
+    "\u0418\u0308",
+    "\u0438\u0308",
+    "\u041E\u0308",
+    "\u043E\u0308",
+    "\u04E8\u0308",
+    "\u04E9\u0308",
+    "\u042D\u0308",
+    "\u044D\u0308",
+    "\u0423\u0304",
+    "\u0443\u0304",
+    "\u0423\u0308",
+    "\u0443\u0308",
+    "\u0423\u030B",
+    "\u0443\u030B",
+    "\u0427\u0308",
+    "\u0447\u0308",
+    "\u042B\u0308",
+    "\u044B\u0308",
+    "\u0565\u0582",
+    "\u0627\u0653",
+    "\u0627\u0654",
+    "\u0648\u0654",
+    "\u0627\u0655",
+    "\u064A\u0654",
+    "\u0627\u0674",
+    "\u0648\u0674",
+    "\u06C7\u0674",
+    "\u064A\u0674",
+    "\u06D5\u0654",
+    "\u06C1\u0654",
+    "\u06D2\u0654",
+    "\u0928\u093C",
+    "\u0930\u093C",
+    "\u0933\u093C",
+    "\u0915\u093C",
+    "\u0916\u093C",
+    "\u0917\u093C",
+    "\u091C\u093C",
+    "\u0921\u093C",
+    "\u0922\u093C",
+    "\u092B\u093C",
+    "\u092F\u093C",
+    "\u09C7\u09BE",
+    "\u09C7\u09D7",
+    "\u09A1\u09BC",
+    "\u09A2\u09BC",
+    "\u09AF\u09BC",
+    "\u0A32\u0A3C",
+    "\u0A38\u0A3C",
+    "\u0A16\u0A3C",
+    "\u0A17\u0A3C",
+    "\u0A1C\u0A3C",
+    "\u0A2B\u0A3C",
+    "\u0B47\u0B56",
+    "\u0B47\u0B3E",
+    "\u0B47\u0B57",
+    "\u0B21\u0B3C",
+    "\u0B22\u0B3C",
+    "\u0B92\u0BD7",
+    "\u0BC6\u0BBE",
+    "\u0BC7\u0BBE",
+    "\u0BC6\u0BD7",
+    "\u0C46\u0C56",
+    "\u0CBF\u0CD5",
+    "\u0CC6\u0CD5",
+    "\u0CC6\u0CD6",
+    "\u0CC6\u0CC2",
+    "\u0CC6\u0CC2\u0CD5",
+    "\u0D46\u0D3E",
+    "\u0D47\u0D3E",
+    "\u0D46\u0D57",
+    "\u0DD9\u0DCA",
+    "\u0DD9\u0DCF",
+    "\u0DD9\u0DCF\u0DCA",
+    "\u0DD9\u0DDF",
+    "\u0E4D\u0E32",
+    "\u0ECD\u0EB2",
+    "\u0EAB\u0E99",
+    "\u0EAB\u0EA1",
+    "\u0F0B",
+    "\u0F42\u0FB7",
+    "\u0F4C\u0FB7",
+    "\u0F51\u0FB7",
+    "\u0F56\u0FB7",
+    "\u0F5B\u0FB7",
+    "\u0F40\u0FB5",
+    "\u0F71\u0F72",
+    "\u0F71\u0F74",
+    "\u0FB2\u0F80",
+    "\u0FB2\u0F71\u0F80",
+    "\u0FB3\u0F80",
+    "\u0FB3\u0F71\u0F80",
+    "\u0F71\u0F80",
+    "\u0F92\u0FB7",
+    "\u0F9C\u0FB7",
+    "\u0FA1\u0FB7",
+    "\u0FA6\u0FB7",
+    "\u0FAB\u0FB7",
+    "\u0F90\u0FB5",
+    "\u1025\u102E",
+    "\u0041\u0325",
+    "\u0061\u0325",
+    "\u0042\u0307",
+    "\u0062\u0307",
+    "\u0042\u0323",
+    "\u0062\u0323",
+    "\u0042\u0331",
+    "\u0062\u0331",
+    "\u0043\u0327\u0301",
+    "\u0063\u0327\u0301",
+    "\u0044\u0307",
+    "\u0064\u0307",
+    "\u0044\u0323",
+    "\u0064\u0323",
+    "\u0044\u0331",
+    "\u0064\u0331",
+    "\u0044\u0327",
+    "\u0064\u0327",
+    "\u0044\u032D",
+    "\u0064\u032D",
+    "\u0045\u0304\u0300",
+    "\u0065\u0304\u0300",
+    "\u0045\u0304\u0301",
+    "\u0065\u0304\u0301",
+    "\u0045\u032D",
+    "\u0065\u032D",
+    "\u0045\u0330",
+    "\u0065\u0330",
+    "\u0045\u0327\u0306",
+    "\u0065\u0327\u0306",
+    "\u0046\u0307",
+    "\u0066\u0307",
+    "\u0047\u0304",
+    "\u0067\u0304",
+    "\u0048\u0307",
+    "\u0068\u0307",
+    "\u0048\u0323",
+    "\u0068\u0323",
+    "\u0048\u0308",
+    "\u0068\u0308",
+    "\u0048\u0327",
+    "\u0068\u0327",
+    "\u0048\u032E",
+    "\u0068\u032E",
+    "\u0049\u0330",
+    "\u0069\u0330",
+    "\u0049\u0308\u0301",
+    "\u0069\u0308\u0301",
+    "\u004B\u0301",
+    "\u006B\u0301",
+    "\u004B\u0323",
+    "\u006B\u0323",
+    "\u004B\u0331",
+    "\u006B\u0331",
+    "\u004C\u0323",
+    "\u006C\u0323",
+    "\u004C\u0323\u0304",
+    "\u006C\u0323\u0304",
+    "\u004C\u0331",
+    "\u006C\u0331",
+    "\u004C\u032D",
+    "\u006C\u032D",
+    "\u004D\u0301",
+    "\u006D\u0301",
+    "\u004D\u0307",
+    "\u006D\u0307",
+    "\u004D\u0323",
+    "\u006D\u0323",
+    "\u004E\u0307",
+    "\u006E\u0307",
+    "\u004E\u0323",
+    "\u006E\u0323",
+    "\u004E\u0331",
+    "\u006E\u0331",
+    "\u004E\u032D",
+    "\u006E\u032D",
+    "\u004F\u0303\u0301",
+    "\u006F\u0303\u0301",
+    "\u004F\u0303\u0308",
+    "\u006F\u0303\u0308",
+    "\u004F\u0304\u0300",
+    "\u006F\u0304\u0300",
+    "\u004F\u0304\u0301",
+    "\u006F\u0304\u0301",
+    "\u0050\u0301",
+    "\u0070\u0301",
+    "\u0050\u0307",
+    "\u0070\u0307",
+    "\u0052\u0307",
+    "\u0072\u0307",
+    "\u0052\u0323",
+    "\u0072\u0323",
+    "\u0052\u0323\u0304",
+    "\u0072\u0323\u0304",
+    "\u0052\u0331",
+    "\u0072\u0331",
+    "\u0053\u0307",
+    "\u0073\u0307",
+    "\u0053\u0323",
+    "\u0073\u0323",
+    "\u0053\u0301\u0307",
+    "\u0073\u0301\u0307",
+    "\u0053\u030C\u0307",
+    "\u0073\u030C\u0307",
+    "\u0053\u0323\u0307",
+    "\u0073\u0323\u0307",
+    "\u0054\u0307",
+    "\u0074\u0307",
+    "\u0054\u0323",
+    "\u0074\u0323",
+    "\u0054\u0331",
+    "\u0074\u0331",
+    "\u0054\u032D",
+    "\u0074\u032D",
+    "\u0055\u0324",
+    "\u0075\u0324",
+    "\u0055\u0330",
+    "\u0075\u0330",
+    "\u0055\u032D",
+    "\u0075\u032D",
+    "\u0055\u0303\u0301",
+    "\u0075\u0303\u0301",
+    "\u0055\u0304\u0308",
+    "\u0075\u0304\u0308",
+    "\u0056\u0303",
+    "\u0076\u0303",
+    "\u0056\u0323",
+    "\u0076\u0323",
+    "\u0057\u0300",
+    "\u0077\u0300",
+    "\u0057\u0301",
+    "\u0077\u0301",
+    "\u0057\u0308",
+    "\u0077\u0308",
+    "\u0057\u0307",
+    "\u0077\u0307",
+    "\u0057\u0323",
+    "\u0077\u0323",
+    "\u0058\u0307",
+    "\u0078\u0307",
+    "\u0058\u0308",
+    "\u0078\u0308",
+    "\u0059\u0307",
+    "\u0079\u0307",
+    "\u005A\u0302",
+    "\u007A\u0302",
+    "\u005A\u0323",
+    "\u007A\u0323",
+    "\u005A\u0331",
+    "\u007A\u0331",
+    "\u0068\u0331",
+    "\u0074\u0308",
+    "\u0077\u030A",
+    "\u0079\u030A",
+    "\u0061\u02BE",
+    "\u0041\u0323",
+    "\u0061\u0323",
+    "\u0041\u0309",
+    "\u0061\u0309",
+    "\u0041\u0302\u0301",
+    "\u0061\u0302\u0301",
+    "\u0041\u0302\u0300",
+    "\u0061\u0302\u0300",
+    "\u0041\u0302\u0309",
+    "\u0061\u0302\u0309",
+    "\u0041\u0302\u0303",
+    "\u0061\u0302\u0303",
+    "\u0041\u0323\u0302",
+    "\u0061\u0323\u0302",
+    "\u0041\u0306\u0301",
+    "\u0061\u0306\u0301",
+    "\u0041\u0306\u0300",
+    "\u0061\u0306\u0300",
+    "\u0041\u0306\u0309",
+    "\u0061\u0306\u0309",
+    "\u0041\u0306\u0303",
+    "\u0061\u0306\u0303",
+    "\u0041\u0323\u0306",
+    "\u0061\u0323\u0306",
+    "\u0045\u0323",
+    "\u0065\u0323",
+    "\u0045\u0309",
+    "\u0065\u0309",
+    "\u0045\u0303",
+    "\u0065\u0303",
+    "\u0045\u0302\u0301",
+    "\u0065\u0302\u0301",
+    "\u0045\u0302\u0300",
+    "\u0065\u0302\u0300",
+    "\u0045\u0302\u0309",
+    "\u0065\u0302\u0309",
+    "\u0045\u0302\u0303",
+    "\u0065\u0302\u0303",
+    "\u0045\u0323\u0302",
+    "\u0065\u0323\u0302",
+    "\u0049\u0309",
+    "\u0069\u0309",
+    "\u0049\u0323",
+    "\u0069\u0323",
+    "\u004F\u0323",
+    "\u006F\u0323",
+    "\u004F\u0309",
+    "\u006F\u0309",
+    "\u004F\u0302\u0301",
+    "\u006F\u0302\u0301",
+    "\u004F\u0302\u0300",
+    "\u006F\u0302\u0300",
+    "\u004F\u0302\u0309",
+    "\u006F\u0302\u0309",
+    "\u004F\u0302\u0303",
+    "\u006F\u0302\u0303",
+    "\u004F\u0323\u0302",
+    "\u006F\u0323\u0302",
+    "\u004F\u031B\u0301",
+    "\u006F\u031B\u0301",
+    "\u004F\u031B\u0300",
+    "\u006F\u031B\u0300",
+    "\u004F\u031B\u0309",
+    "\u006F\u031B\u0309",
+    "\u004F\u031B\u0303",
+    "\u006F\u031B\u0303",
+    "\u004F\u031B\u0323",
+    "\u006F\u031B\u0323",
+    "\u0055\u0323",
+    "\u0075\u0323",
+    "\u0055\u0309",
+    "\u0075\u0309",
+    "\u0055\u031B\u0301",
+    "\u0075\u031B\u0301",
+    "\u0055\u031B\u0300",
+    "\u0075\u031B\u0300",
+    "\u0055\u031B\u0309",
+    "\u0075\u031B\u0309",
+    "\u0055\u031B\u0303",
+    "\u0075\u031B\u0303",
+    "\u0055\u031B\u0323",
+    "\u0075\u031B\u0323",
+    "\u0059\u0300",
+    "\u0079\u0300",
+    "\u0059\u0323",
+    "\u0079\u0323",
+    "\u0059\u0309",
+    "\u0079\u0309",
+    "\u0059\u0303",
+    "\u0079\u0303",
+    "\u03B1\u0313",
+    "\u03B1\u0314",
+    "\u03B1\u0313\u0300",
+    "\u03B1\u0314\u0300",
+    "\u03B1\u0313\u0301",
+    "\u03B1\u0314\u0301",
+    "\u03B1\u0313\u0342",
+    "\u03B1\u0314\u0342",
+    "\u0391\u0313",
+    "\u0391\u0314",
+    "\u0391\u0313\u0300",
+    "\u0391\u0314\u0300",
+    "\u0391\u0313\u0301",
+    "\u0391\u0314\u0301",
+    "\u0391\u0313\u0342",
+    "\u0391\u0314\u0342",
+    "\u03B5\u0313",
+    "\u03B5\u0314",
+    "\u03B5\u0313\u0300",
+    "\u03B5\u0314\u0300",
+    "\u03B5\u0313\u0301",
+    "\u03B5\u0314\u0301",
+    "\u0395\u0313",
+    "\u0395\u0314",
+    "\u0395\u0313\u0300",
+    "\u0395\u0314\u0300",
+    "\u0395\u0313\u0301",
+    "\u0395\u0314\u0301",
+    "\u03B7\u0313",
+    "\u03B7\u0314",
+    "\u03B7\u0313\u0300",
+    "\u03B7\u0314\u0300",
+    "\u03B7\u0313\u0301",
+    "\u03B7\u0314\u0301",
+    "\u03B7\u0313\u0342",
+    "\u03B7\u0314\u0342",
+    "\u0397\u0313",
+    "\u0397\u0314",
+    "\u0397\u0313\u0300",
+    "\u0397\u0314\u0300",
+    "\u0397\u0313\u0301",
+    "\u0397\u0314\u0301",
+    "\u0397\u0313\u0342",
+    "\u0397\u0314\u0342",
+    "\u03B9\u0313",
+    "\u03B9\u0314",
+    "\u03B9\u0313\u0300",
+    "\u03B9\u0314\u0300",
+    "\u03B9\u0313\u0301",
+    "\u03B9\u0314\u0301",
+    "\u03B9\u0313\u0342",
+    "\u03B9\u0314\u0342",
+    "\u0399\u0313",
+    "\u0399\u0314",
+    "\u0399\u0313\u0300",
+    "\u0399\u0314\u0300",
+    "\u0399\u0313\u0301",
+    "\u0399\u0314\u0301",
+    "\u0399\u0313\u0342",
+    "\u0399\u0314\u0342",
+    "\u03BF\u0313",
+    "\u03BF\u0314",
+    "\u03BF\u0313\u0300",
+    "\u03BF\u0314\u0300",
+    "\u03BF\u0313\u0301",
+    "\u03BF\u0314\u0301",
+    "\u039F\u0313",
+    "\u039F\u0314",
+    "\u039F\u0313\u0300",
+    "\u039F\u0314\u0300",
+    "\u039F\u0313\u0301",
+    "\u039F\u0314\u0301",
+    "\u03C5\u0313",
+    "\u03C5\u0314",
+    "\u03C5\u0313\u0300",
+    "\u03C5\u0314\u0300",
+    "\u03C5\u0313\u0301",
+    "\u03C5\u0314\u0301",
+    "\u03C5\u0313\u0342",
+    "\u03C5\u0314\u0342",
+    "\u03A5\u0314",
+    "\u03A5\u0314\u0300",
+    "\u03A5\u0314\u0301",
+    "\u03A5\u0314\u0342",
+    "\u03C9\u0313",
+    "\u03C9\u0314",
+    "\u03C9\u0313\u0300",
+    "\u03C9\u0314\u0300",
+    "\u03C9\u0313\u0301",
+    "\u03C9\u0314\u0301",
+    "\u03C9\u0313\u0342",
+    "\u03C9\u0314\u0342",
+    "\u03A9\u0313",
+    "\u03A9\u0314",
+    "\u03A9\u0313\u0300",
+    "\u03A9\u0314\u0300",
+    "\u03A9\u0313\u0301",
+    "\u03A9\u0314\u0301",
+    "\u03A9\u0313\u0342",
+    "\u03A9\u0314\u0342",
+    "\u03B1\u0300",
+    "\u03B5\u0300",
+    "\u03B7\u0300",
+    "\u03B9\u0300",
+    "\u03BF\u0300",
+    "\u03C5\u0300",
+    "\u03C9\u0300",
+    "\u03B1\u0313\u0345",
+    "\u03B1\u0314\u0345",
+    "\u03B1\u0313\u0300\u0345",
+    "\u03B1\u0314\u0300\u0345",
+    "\u03B1\u0313\u0301\u0345",
+    "\u03B1\u0314\u0301\u0345",
+    "\u03B1\u0313\u0342\u0345",
+    "\u03B1\u0314\u0342\u0345",
+    "\u0391\u0313\u0345",
+    "\u0391\u0314\u0345",
+    "\u0391\u0313\u0300\u0345",
+    "\u0391\u0314\u0300\u0345",
+    "\u0391\u0313\u0301\u0345",
+    "\u0391\u0314\u0301\u0345",
+    "\u0391\u0313\u0342\u0345",
+    "\u0391\u0314\u0342\u0345",
+    "\u03B7\u0313\u0345",
+    "\u03B7\u0314\u0345",
+    "\u03B7\u0313\u0300\u0345",
+    "\u03B7\u0314\u0300\u0345",
+    "\u03B7\u0313\u0301\u0345",
+    "\u03B7\u0314\u0301\u0345",
+    "\u03B7\u0313\u0342\u0345",
+    "\u03B7\u0314\u0342\u0345",
+    "\u0397\u0313\u0345",
+    "\u0397\u0314\u0345",
+    "\u0397\u0313\u0300\u0345",
+    "\u0397\u0314\u0300\u0345",
+    "\u0397\u0313\u0301\u0345",
+    "\u0397\u0314\u0301\u0345",
+    "\u0397\u0313\u0342\u0345",
+    "\u0397\u0314\u0342\u0345",
+    "\u03C9\u0313\u0345",
+    "\u03C9\u0314\u0345",
+    "\u03C9\u0313\u0300\u0345",
+    "\u03C9\u0314\u0300\u0345",
+    "\u03C9\u0313\u0301\u0345",
+    "\u03C9\u0314\u0301\u0345",
+    "\u03C9\u0313\u0342\u0345",
+    "\u03C9\u0314\u0342\u0345",
+    "\u03A9\u0313\u0345",
+    "\u03A9\u0314\u0345",
+    "\u03A9\u0313\u0300\u0345",
+    "\u03A9\u0314\u0300\u0345",
+    "\u03A9\u0313\u0301\u0345",
+    "\u03A9\u0314\u0301\u0345",
+    "\u03A9\u0313\u0342\u0345",
+    "\u03A9\u0314\u0342\u0345",
+    "\u03B1\u0306",
+    "\u03B1\u0304",
+    "\u03B1\u0300\u0345",
+    "\u03B1\u0345",
+    "\u03B1\u0301\u0345",
+    "\u03B1\u0342",
+    "\u03B1\u0342\u0345",
+    "\u0391\u0306",
+    "\u0391\u0304",
+    "\u0391\u0300",
+    "\u0391\u0345",
+    "\u0020\u0313",
+    "\u03B9",
+    "\u0020\u0342",
+    "\u0020\u0308\u0342",
+    "\u03B7\u0300\u0345",
+    "\u03B7\u0345",
+    "\u03B7\u0301\u0345",
+    "\u03B7\u0342",
+    "\u03B7\u0342\u0345",
+    "\u0395\u0300",
+    "\u0397\u0300",
+    "\u0397\u0345",
+    "\u0020\u0313\u0300",
+    "\u0020\u0313\u0301",
+    "\u0020\u0313\u0342",
+    "\u03B9\u0306",
+    "\u03B9\u0304",
+    "\u03B9\u0308\u0300",
+    "\u03B9\u0342",
+    "\u03B9\u0308\u0342",
+    "\u0399\u0306",
+    "\u0399\u0304",
+    "\u0399\u0300",
+    "\u0020\u0314\u0300",
+    "\u0020\u0314\u0301",
+    "\u0020\u0314\u0342",
+    "\u03C5\u0306",
+    "\u03C5\u0304",
+    "\u03C5\u0308\u0300",
+    "\u03C1\u0313",
+    "\u03C1\u0314",
+    "\u03C5\u0342",
+    "\u03C5\u0308\u0342",
+    "\u03A5\u0306",
+    "\u03A5\u0304",
+    "\u03A5\u0300",
+    "\u03A1\u0314",
+    "\u0020\u0308\u0300",
+    "\u0060",
+    "\u03C9\u0300\u0345",
+    "\u03C9\u0345",
+    "\u03C9\u0301\u0345",
+    "\u03C9\u0342",
+    "\u03C9\u0342\u0345",
+    "\u039F\u0300",
+    "\u03A9\u0300",
+    "\u03A9\u0345",
+    "\u0020\u0314",
+    "\u2010",
+    "\u0020\u0333",
+    "\u002E",
+    "\u002E\u002E",
+    "\u002E\u002E\u002E",
+    "\u2032\u2032",
+    "\u2032\u2032\u2032",
+    "\u2035\u2035",
+    "\u2035\u2035\u2035",
+    "\u0021\u0021",
+    "\u0020\u0305",
+    "\u003F\u003F",
+    "\u003F\u0021",
+    "\u0021\u003F",
+    "\u2032\u2032\u2032\u2032",
+    "\u0030",
+    "\u0069",
+    "\u0034",
+    "\u0035",
+    "\u0036",
+    "\u0037",
+    "\u0038",
+    "\u0039",
+    "\u002B",
+    "\u2212",
+    "\u003D",
+    "\u0028",
+    "\u0029",
+    "\u006E",
+    "\u0052\u0073",
+    "\u0061\u002F\u0063",
+    "\u0061\u002F\u0073",
+    "\u0043",
+    "\u00B0\u0043",
+    "\u0063\u002F\u006F",
+    "\u0063\u002F\u0075",
+    "\u0190",
+    "\u00B0\u0046",
+    "\u0067",
+    "\u0048",
+    "\u0127",
+    "\u0049",
+    "\u004C",
+    "\u004E",
+    "\u004E\u006F",
+    "\u0050",
+    "\u0051",
+    "\u0052",
+    "\u0053\u004D",
+    "\u0054\u0045\u004C",
+    "\u0054\u004D",
+    "\u005A",
+    "\u03A9",
+    "\u004B",
+    "\u0042",
+    "\u0065",
+    "\u0045",
+    "\u0046",
+    "\u004D",
+    "\u05D0",
+    "\u05D1",
+    "\u05D2",
+    "\u05D3",
+    "\u03B3",
+    "\u0393",
+    "\u03A0",
+    "\u2211",
+    "\u0044",
+    "\u0064",
+    "\u0031\u2044\u0033",
+    "\u0032\u2044\u0033",
+    "\u0031\u2044\u0035",
+    "\u0032\u2044\u0035",
+    "\u0033\u2044\u0035",
+    "\u0034\u2044\u0035",
+    "\u0031\u2044\u0036",
+    "\u0035\u2044\u0036",
+    "\u0031\u2044\u0038",
+    "\u0033\u2044\u0038",
+    "\u0035\u2044\u0038",
+    "\u0037\u2044\u0038",
+    "\u0031\u2044",
+    "\u0049\u0049",
+    "\u0049\u0049\u0049",
+    "\u0049\u0056",
+    "\u0056",
+    "\u0056\u0049",
+    "\u0056\u0049\u0049",
+    "\u0056\u0049\u0049\u0049",
+    "\u0049\u0058",
+    "\u0058",
+    "\u0058\u0049",
+    "\u0058\u0049\u0049",
+    "\u0069\u0069",
+    "\u0069\u0069\u0069",
+    "\u0069\u0076",
+    "\u0076",
+    "\u0076\u0069",
+    "\u0076\u0069\u0069",
+    "\u0076\u0069\u0069\u0069",
+    "\u0069\u0078",
+    "\u0078\u0069",
+    "\u0078\u0069\u0069",
+    "\u0063",
+    "\u006D",
+    "\u2190\u0338",
+    "\u2192\u0338",
+    "\u2194\u0338",
+    "\u21D0\u0338",
+    "\u21D4\u0338",
+    "\u21D2\u0338",
+    "\u2203\u0338",
+    "\u2208\u0338",
+    "\u220B\u0338",
+    "\u2223\u0338",
+    "\u2225\u0338",
+    "\u222B\u222B",
+    "\u222B\u222B\u222B",
+    "\u222E\u222E",
+    "\u222E\u222E\u222E",
+    "\u223C\u0338",
+    "\u2243\u0338",
+    "\u2245\u0338",
+    "\u2248\u0338",
+    "\u003D\u0338",
+    "\u2261\u0338",
+    "\u224D\u0338",
+    "\u003C\u0338",
+    "\u003E\u0338",
+    "\u2264\u0338",
+    "\u2265\u0338",
+    "\u2272\u0338",
+    "\u2273\u0338",
+    "\u2276\u0338",
+    "\u2277\u0338",
+    "\u227A\u0338",
+    "\u227B\u0338",
+    "\u2282\u0338",
+    "\u2283\u0338",
+    "\u2286\u0338",
+    "\u2287\u0338",
+    "\u22A2\u0338",
+    "\u22A8\u0338",
+    "\u22A9\u0338",
+    "\u22AB\u0338",
+    "\u227C\u0338",
+    "\u227D\u0338",
+    "\u2291\u0338",
+    "\u2292\u0338",
+    "\u22B2\u0338",
+    "\u22B3\u0338",
+    "\u22B4\u0338",
+    "\u22B5\u0338",
+    "\u3008",
+    "\u3009",
+    "\u0031\u0030",
+    "\u0031\u0031",
+    "\u0031\u0032",
+    "\u0031\u0033",
+    "\u0031\u0034",
+    "\u0031\u0035",
+    "\u0031\u0036",
+    "\u0031\u0037",
+    "\u0031\u0038",
+    "\u0031\u0039",
+    "\u0032\u0030",
+    "\u0028\u0031\u0029",
+    "\u0028\u0032\u0029",
+    "\u0028\u0033\u0029",
+    "\u0028\u0034\u0029",
+    "\u0028\u0035\u0029",
+    "\u0028\u0036\u0029",
+    "\u0028\u0037\u0029",
+    "\u0028\u0038\u0029",
+    "\u0028\u0039\u0029",
+    "\u0028\u0031\u0030\u0029",
+    "\u0028\u0031\u0031\u0029",
+    "\u0028\u0031\u0032\u0029",
+    "\u0028\u0031\u0033\u0029",
+    "\u0028\u0031\u0034\u0029",
+    "\u0028\u0031\u0035\u0029",
+    "\u0028\u0031\u0036\u0029",
+    "\u0028\u0031\u0037\u0029",
+    "\u0028\u0031\u0038\u0029",
+    "\u0028\u0031\u0039\u0029",
+    "\u0028\u0032\u0030\u0029",
+    "\u0031\u002E",
+    "\u0032\u002E",
+    "\u0033\u002E",
+    "\u0034\u002E",
+    "\u0035\u002E",
+    "\u0036\u002E",
+    "\u0037\u002E",
+    "\u0038\u002E",
+    "\u0039\u002E",
+    "\u0031\u0030\u002E",
+    "\u0031\u0031\u002E",
+    "\u0031\u0032\u002E",
+    "\u0031\u0033\u002E",
+    "\u0031\u0034\u002E",
+    "\u0031\u0035\u002E",
+    "\u0031\u0036\u002E",
+    "\u0031\u0037\u002E",
+    "\u0031\u0038\u002E",
+    "\u0031\u0039\u002E",
+    "\u0032\u0030\u002E",
+    "\u0028\u0061\u0029",
+    "\u0028\u0062\u0029",
+    "\u0028\u0063\u0029",
+    "\u0028\u0064\u0029",
+    "\u0028\u0065\u0029",
+    "\u0028\u0066\u0029",
+    "\u0028\u0067\u0029",
+    "\u0028\u0068\u0029",
+    "\u0028\u0069\u0029",
+    "\u0028\u006A\u0029",
+    "\u0028\u006B\u0029",
+    "\u0028\u006C\u0029",
+    "\u0028\u006D\u0029",
+    "\u0028\u006E\u0029",
+    "\u0028\u006F\u0029",
+    "\u0028\u0070\u0029",
+    "\u0028\u0071\u0029",
+    "\u0028\u0072\u0029",
+    "\u0028\u0073\u0029",
+    "\u0028\u0074\u0029",
+    "\u0028\u0075\u0029",
+    "\u0028\u0076\u0029",
+    "\u0028\u0077\u0029",
+    "\u0028\u0078\u0029",
+    "\u0028\u0079\u0029",
+    "\u0028\u007A\u0029",
+    "\u0041",
+    "\u0047",
+    "\u004A",
+    "\u004F",
+    "\u0053",
+    "\u0054",
+    "\u0055",
+    "\u0057",
+    "\u0059",
+    "\u0062",
+    "\u0066",
+    "\u006B",
+    "\u0070",
+    "\u0071",
+    "\u0074",
+    "\u0075",
+    "\u007A",
+    "\u222B\u222B\u222B\u222B",
+    "\u003A\u003A\u003D",
+    "\u003D\u003D",
+    "\u003D\u003D\u003D",
+    "\u2ADD\u0338",
+    "\u6BCD",
+    "\u9F9F",
+    "\u4E00",
+    "\u4E28",
+    "\u4E36",
+    "\u4E3F",
+    "\u4E59",
+    "\u4E85",
+    "\u4E8C",
+    "\u4EA0",
+    "\u4EBA",
+    "\u513F",
+    "\u5165",
+    "\u516B",
+    "\u5182",
+    "\u5196",
+    "\u51AB",
+    "\u51E0",
+    "\u51F5",
+    "\u5200",
+    "\u529B",
+    "\u52F9",
+    "\u5315",
+    "\u531A",
+    "\u5338",
+    "\u5341",
+    "\u535C",
+    "\u5369",
+    "\u5382",
+    "\u53B6",
+    "\u53C8",
+    "\u53E3",
+    "\u56D7",
+    "\u571F",
+    "\u58EB",
+    "\u5902",
+    "\u590A",
+    "\u5915",
+    "\u5927",
+    "\u5973",
+    "\u5B50",
+    "\u5B80",
+    "\u5BF8",
+    "\u5C0F",
+    "\u5C22",
+    "\u5C38",
+    "\u5C6E",
+    "\u5C71",
+    "\u5DDB",
+    "\u5DE5",
+    "\u5DF1",
+    "\u5DFE",
+    "\u5E72",
+    "\u5E7A",
+    "\u5E7F",
+    "\u5EF4",
+    "\u5EFE",
+    "\u5F0B",
+    "\u5F13",
+    "\u5F50",
+    "\u5F61",
+    "\u5F73",
+    "\u5FC3",
+    "\u6208",
+    "\u6236",
+    "\u624B",
+    "\u652F",
+    "\u6534",
+    "\u6587",
+    "\u6597",
+    "\u65A4",
+    "\u65B9",
+    "\u65E0",
+    "\u65E5",
+    "\u66F0",
+    "\u6708",
+    "\u6728",
+    "\u6B20",
+    "\u6B62",
+    "\u6B79",
+    "\u6BB3",
+    "\u6BCB",
+    "\u6BD4",
+    "\u6BDB",
+    "\u6C0F",
+    "\u6C14",
+    "\u6C34",
+    "\u706B",
+    "\u722A",
+    "\u7236",
+    "\u723B",
+    "\u723F",
+    "\u7247",
+    "\u7259",
+    "\u725B",
+    "\u72AC",
+    "\u7384",
+    "\u7389",
+    "\u74DC",
+    "\u74E6",
+    "\u7518",
+    "\u751F",
+    "\u7528",
+    "\u7530",
+    "\u758B",
+    "\u7592",
+    "\u7676",
+    "\u767D",
+    "\u76AE",
+    "\u76BF",
+    "\u76EE",
+    "\u77DB",
+    "\u77E2",
+    "\u77F3",
+    "\u793A",
+    "\u79B8",
+    "\u79BE",
+    "\u7A74",
+    "\u7ACB",
+    "\u7AF9",
+    "\u7C73",
+    "\u7CF8",
+    "\u7F36",
+    "\u7F51",
+    "\u7F8A",
+    "\u7FBD",
+    "\u8001",
+    "\u800C",
+    "\u8012",
+    "\u8033",
+    "\u807F",
+    "\u8089",
+    "\u81E3",
+    "\u81EA",
+    "\u81F3",
+    "\u81FC",
+    "\u820C",
+    "\u821B",
+    "\u821F",
+    "\u826E",
+    "\u8272",
+    "\u8278",
+    "\u864D",
+    "\u866B",
+    "\u8840",
+    "\u884C",
+    "\u8863",
+    "\u897E",
+    "\u898B",
+    "\u89D2",
+    "\u8A00",
+    "\u8C37",
+    "\u8C46",
+    "\u8C55",
+    "\u8C78",
+    "\u8C9D",
+    "\u8D64",
+    "\u8D70",
+    "\u8DB3",
+    "\u8EAB",
+    "\u8ECA",
+    "\u8F9B",
+    "\u8FB0",
+    "\u8FB5",
+    "\u9091",
+    "\u9149",
+    "\u91C6",
+    "\u91CC",
+    "\u91D1",
+    "\u9577",
+    "\u9580",
+    "\u961C",
+    "\u96B6",
+    "\u96B9",
+    "\u96E8",
+    "\u9751",
+    "\u975E",
+    "\u9762",
+    "\u9769",
+    "\u97CB",
+    "\u97ED",
+    "\u97F3",
+    "\u9801",
+    "\u98A8",
+    "\u98DB",
+    "\u98DF",
+    "\u9996",
+    "\u9999",
+    "\u99AC",
+    "\u9AA8",
+    "\u9AD8",
+    "\u9ADF",
+    "\u9B25",
+    "\u9B2F",
+    "\u9B32",
+    "\u9B3C",
+    "\u9B5A",
+    "\u9CE5",
+    "\u9E75",
+    "\u9E7F",
+    "\u9EA5",
+    "\u9EBB",
+    "\u9EC3",
+    "\u9ECD",
+    "\u9ED1",
+    "\u9EF9",
+    "\u9EFD",
+    "\u9F0E",
+    "\u9F13",
+    "\u9F20",
+    "\u9F3B",
+    "\u9F4A",
+    "\u9F52",
+    "\u9F8D",
+    "\u9F9C",
+    "\u9FA0",
+    "\u3012",
+    "\u5344",
+    "\u5345",
+    "\u304B\u3099",
+    "\u304D\u3099",
+    "\u304F\u3099",
+    "\u3051\u3099",
+    "\u3053\u3099",
+    "\u3055\u3099",
+    "\u3057\u3099",
+    "\u3059\u3099",
+    "\u305B\u3099",
+    "\u305D\u3099",
+    "\u305F\u3099",
+    "\u3061\u3099",
+    "\u3064\u3099",
+    "\u3066\u3099",
+    "\u3068\u3099",
+    "\u306F\u3099",
+    "\u306F\u309A",
+    "\u3072\u3099",
+    "\u3072\u309A",
+    "\u3075\u3099",
+    "\u3075\u309A",
+    "\u3078\u3099",
+    "\u3078\u309A",
+    "\u307B\u3099",
+    "\u307B\u309A",
+    "\u3046\u3099",
+    "\u0020\u3099",
+    "\u0020\u309A",
+    "\u309D\u3099",
+    "\u3088\u308A",
+    "\u30AB\u3099",
+    "\u30AD\u3099",
+    "\u30AF\u3099",
+    "\u30B1\u3099",
+    "\u30B3\u3099",
+    "\u30B5\u3099",
+    "\u30B7\u3099",
+    "\u30B9\u3099",
+    "\u30BB\u3099",
+    "\u30BD\u3099",
+    "\u30BF\u3099",
+    "\u30C1\u3099",
+    "\u30C4\u3099",
+    "\u30C6\u3099",
+    "\u30C8\u3099",
+    "\u30CF\u3099",
+    "\u30CF\u309A",
+    "\u30D2\u3099",
+    "\u30D2\u309A",
+    "\u30D5\u3099",
+    "\u30D5\u309A",
+    "\u30D8\u3099",
+    "\u30D8\u309A",
+    "\u30DB\u3099",
+    "\u30DB\u309A",
+    "\u30A6\u3099",
+    "\u30EF\u3099",
+    "\u30F0\u3099",
+    "\u30F1\u3099",
+    "\u30F2\u3099",
+    "\u30FD\u3099",
+    "\u30B3\u30C8",
+    "\u1100",
+    "\u1101",
+    "\u11AA",
+    "\u1102",
+    "\u11AC",
+    "\u11AD",
+    "\u1103",
+    "\u1104",
+    "\u1105",
+    "\u11B0",
+    "\u11B1",
+    "\u11B2",
+    "\u11B3",
+    "\u11B4",
+    "\u11B5",
+    "\u111A",
+    "\u1106",
+    "\u1107",
+    "\u1108",
+    "\u1121",
+    "\u1109",
+    "\u110A",
+    "\u110B",
+    "\u110C",
+    "\u110D",
+    "\u110E",
+    "\u110F",
+    "\u1110",
+    "\u1111",
+    "\u1112",
+    "\u1161",
+    "\u1162",
+    "\u1163",
+    "\u1164",
+    "\u1165",
+    "\u1166",
+    "\u1167",
+    "\u1168",
+    "\u1169",
+    "\u116A",
+    "\u116B",
+    "\u116C",
+    "\u116D",
+    "\u116E",
+    "\u116F",
+    "\u1170",
+    "\u1171",
+    "\u1172",
+    "\u1173",
+    "\u1174",
+    "\u1175",
+    "\u1160",
+    "\u1114",
+    "\u1115",
+    "\u11C7",
+    "\u11C8",
+    "\u11CC",
+    "\u11CE",
+    "\u11D3",
+    "\u11D7",
+    "\u11D9",
+    "\u111C",
+    "\u11DD",
+    "\u11DF",
+    "\u111D",
+    "\u111E",
+    "\u1120",
+    "\u1122",
+    "\u1123",
+    "\u1127",
+    "\u1129",
+    "\u112B",
+    "\u112C",
+    "\u112D",
+    "\u112E",
+    "\u112F",
+    "\u1132",
+    "\u1136",
+    "\u1140",
+    "\u1147",
+    "\u114C",
+    "\u11F1",
+    "\u11F2",
+    "\u1157",
+    "\u1158",
+    "\u1159",
+    "\u1184",
+    "\u1185",
+    "\u1188",
+    "\u1191",
+    "\u1192",
+    "\u1194",
+    "\u119E",
+    "\u11A1",
+    "\u4E09",
+    "\u56DB",
+    "\u4E0A",
+    "\u4E2D",
+    "\u4E0B",
+    "\u7532",
+    "\u4E19",
+    "\u4E01",
+    "\u5929",
+    "\u5730",
+    "\u0028\u1100\u0029",
+    "\u0028\u1102\u0029",
+    "\u0028\u1103\u0029",
+    "\u0028\u1105\u0029",
+    "\u0028\u1106\u0029",
+    "\u0028\u1107\u0029",
+    "\u0028\u1109\u0029",
+    "\u0028\u110B\u0029",
+    "\u0028\u110C\u0029",
+    "\u0028\u110E\u0029",
+    "\u0028\u110F\u0029",
+    "\u0028\u1110\u0029",
+    "\u0028\u1111\u0029",
+    "\u0028\u1112\u0029",
+    "\u0028\u1100\u1161\u0029",
+    "\u0028\u1102\u1161\u0029",
+    "\u0028\u1103\u1161\u0029",
+    "\u0028\u1105\u1161\u0029",
+    "\u0028\u1106\u1161\u0029",
+    "\u0028\u1107\u1161\u0029",
+    "\u0028\u1109\u1161\u0029",
+    "\u0028\u110B\u1161\u0029",
+    "\u0028\u110C\u1161\u0029",
+    "\u0028\u110E\u1161\u0029",
+    "\u0028\u110F\u1161\u0029",
+    "\u0028\u1110\u1161\u0029",
+    "\u0028\u1111\u1161\u0029",
+    "\u0028\u1112\u1161\u0029",
+    "\u0028\u110C\u116E\u0029",
+    "\u0028\u4E00\u0029",
+    "\u0028\u4E8C\u0029",
+    "\u0028\u4E09\u0029",
+    "\u0028\u56DB\u0029",
+    "\u0028\u4E94\u0029",
+    "\u0028\u516D\u0029",
+    "\u0028\u4E03\u0029",
+    "\u0028\u516B\u0029",
+    "\u0028\u4E5D\u0029",
+    "\u0028\u5341\u0029",
+    "\u0028\u6708\u0029",
+    "\u0028\u706B\u0029",
+    "\u0028\u6C34\u0029",
+    "\u0028\u6728\u0029",
+    "\u0028\u91D1\u0029",
+    "\u0028\u571F\u0029",
+    "\u0028\u65E5\u0029",
+    "\u0028\u682A\u0029",
+    "\u0028\u6709\u0029",
+    "\u0028\u793E\u0029",
+    "\u0028\u540D\u0029",
+    "\u0028\u7279\u0029",
+    "\u0028\u8CA1\u0029",
+    "\u0028\u795D\u0029",
+    "\u0028\u52B4\u0029",
+    "\u0028\u4EE3\u0029",
+    "\u0028\u547C\u0029",
+    "\u0028\u5B66\u0029",
+    "\u0028\u76E3\u0029",
+    "\u0028\u4F01\u0029",
+    "\u0028\u8CC7\u0029",
+    "\u0028\u5354\u0029",
+    "\u0028\u796D\u0029",
+    "\u0028\u4F11\u0029",
+    "\u0028\u81EA\u0029",
+    "\u0028\u81F3\u0029",
+    "\u0032\u0031",
+    "\u0032\u0032",
+    "\u0032\u0033",
+    "\u0032\u0034",
+    "\u0032\u0035",
+    "\u0032\u0036",
+    "\u0032\u0037",
+    "\u0032\u0038",
+    "\u0032\u0039",
+    "\u0033\u0030",
+    "\u0033\u0031",
+    "\u0033\u0032",
+    "\u0033\u0033",
+    "\u0033\u0034",
+    "\u0033\u0035",
+    "\u1100\u1161",
+    "\u1102\u1161",
+    "\u1103\u1161",
+    "\u1105\u1161",
+    "\u1106\u1161",
+    "\u1107\u1161",
+    "\u1109\u1161",
+    "\u110B\u1161",
+    "\u110C\u1161",
+    "\u110E\u1161",
+    "\u110F\u1161",
+    "\u1110\u1161",
+    "\u1111\u1161",
+    "\u1112\u1161",
+    "\u4E94",
+    "\u516D",
+    "\u4E03",
+    "\u4E5D",
+    "\u682A",
+    "\u6709",
+    "\u793E",
+    "\u540D",
+    "\u7279",
+    "\u8CA1",
+    "\u795D",
+    "\u52B4",
+    "\u79D8",
+    "\u7537",
+    "\u9069",
+    "\u512A",
+    "\u5370",
+    "\u6CE8",
+    "\u9805",
+    "\u4F11",
+    "\u5199",
+    "\u6B63",
+    "\u5DE6",
+    "\u53F3",
+    "\u533B",
+    "\u5B97",
+    "\u5B66",
+    "\u76E3",
+    "\u4F01",
+    "\u8CC7",
+    "\u5354",
+    "\u591C",
+    "\u0033\u0036",
+    "\u0033\u0037",
+    "\u0033\u0038",
+    "\u0033\u0039",
+    "\u0034\u0030",
+    "\u0034\u0031",
+    "\u0034\u0032",
+    "\u0034\u0033",
+    "\u0034\u0034",
+    "\u0034\u0035",
+    "\u0034\u0036",
+    "\u0034\u0037",
+    "\u0034\u0038",
+    "\u0034\u0039",
+    "\u0035\u0030",
+    "\u0031\u6708",
+    "\u0032\u6708",
+    "\u0033\u6708",
+    "\u0034\u6708",
+    "\u0035\u6708",
+    "\u0036\u6708",
+    "\u0037\u6708",
+    "\u0038\u6708",
+    "\u0039\u6708",
+    "\u0031\u0030\u6708",
+    "\u0031\u0031\u6708",
+    "\u0031\u0032\u6708",
+    "\u30A2",
+    "\u30A4",
+    "\u30A6",
+    "\u30A8",
+    "\u30AA",
+    "\u30AB",
+    "\u30AD",
+    "\u30AF",
+    "\u30B1",
+    "\u30B3",
+    "\u30B5",
+    "\u30B7",
+    "\u30B9",
+    "\u30BB",
+    "\u30BD",
+    "\u30BF",
+    "\u30C1",
+    "\u30C4",
+    "\u30C6",
+    "\u30C8",
+    "\u30CA",
+    "\u30CB",
+    "\u30CC",
+    "\u30CD",
+    "\u30CE",
+    "\u30CF",
+    "\u30D2",
+    "\u30D5",
+    "\u30D8",
+    "\u30DB",
+    "\u30DE",
+    "\u30DF",
+    "\u30E0",
+    "\u30E1",
+    "\u30E2",
+    "\u30E4",
+    "\u30E6",
+    "\u30E8",
+    "\u30E9",
+    "\u30EA",
+    "\u30EB",
+    "\u30EC",
+    "\u30ED",
+    "\u30EF",
+    "\u30F0",
+    "\u30F1",
+    "\u30F2",
+    "\u30A2\u30CF\u309A\u30FC\u30C8",
+    "\u30A2\u30EB\u30D5\u30A1",
+    "\u30A2\u30F3\u30D8\u309A\u30A2",
+    "\u30A2\u30FC\u30EB",
+    "\u30A4\u30CB\u30F3\u30AF\u3099",
+    "\u30A4\u30F3\u30C1",
+    "\u30A6\u30A9\u30F3",
+    "\u30A8\u30B9\u30AF\u30FC\u30C8\u3099",
+    "\u30A8\u30FC\u30AB\u30FC",
+    "\u30AA\u30F3\u30B9",
+    "\u30AA\u30FC\u30E0",
+    "\u30AB\u30A4\u30EA",
+    "\u30AB\u30E9\u30C3\u30C8",
+    "\u30AB\u30ED\u30EA\u30FC",
+    "\u30AB\u3099\u30ED\u30F3",
+    "\u30AB\u3099\u30F3\u30DE",
+    "\u30AD\u3099\u30AB\u3099",
+    "\u30AD\u3099\u30CB\u30FC",
+    "\u30AD\u30E5\u30EA\u30FC",
+    "\u30AD\u3099\u30EB\u30BF\u3099\u30FC",
+    "\u30AD\u30ED",
+    "\u30AD\u30ED\u30AF\u3099\u30E9\u30E0",
+    "\u30AD\u30ED\u30E1\u30FC\u30C8\u30EB",
+    "\u30AD\u30ED\u30EF\u30C3\u30C8",
+    "\u30AF\u3099\u30E9\u30E0",
+    "\u30AF\u3099\u30E9\u30E0\u30C8\u30F3",
+    "\u30AF\u30EB\u30BB\u3099\u30A4\u30ED",
+    "\u30AF\u30ED\u30FC\u30CD",
+    "\u30B1\u30FC\u30B9",
+    "\u30B3\u30EB\u30CA",
+    "\u30B3\u30FC\u30DB\u309A",
+    "\u30B5\u30A4\u30AF\u30EB",
+    "\u30B5\u30F3\u30C1\u30FC\u30E0",
+    "\u30B7\u30EA\u30F3\u30AF\u3099",
+    "\u30BB\u30F3\u30C1",
+    "\u30BB\u30F3\u30C8",
+    "\u30BF\u3099\u30FC\u30B9",
+    "\u30C6\u3099\u30B7",
+    "\u30C8\u3099\u30EB",
+    "\u30C8\u30F3",
+    "\u30CA\u30CE",
+    "\u30CE\u30C3\u30C8",
+    "\u30CF\u30A4\u30C4",
+    "\u30CF\u309A\u30FC\u30BB\u30F3\u30C8",
+    "\u30CF\u309A\u30FC\u30C4",
+    "\u30CF\u3099\u30FC\u30EC\u30EB",
+    "\u30D2\u309A\u30A2\u30B9\u30C8\u30EB",
+    "\u30D2\u309A\u30AF\u30EB",
+    "\u30D2\u309A\u30B3",
+    "\u30D2\u3099\u30EB",
+    "\u30D5\u30A1\u30E9\u30C3\u30C8\u3099",
+    "\u30D5\u30A3\u30FC\u30C8",
+    "\u30D5\u3099\u30C3\u30B7\u30A7\u30EB",
+    "\u30D5\u30E9\u30F3",
+    "\u30D8\u30AF\u30BF\u30FC\u30EB",
+    "\u30D8\u309A\u30BD",
+    "\u30D8\u309A\u30CB\u30D2",
+    "\u30D8\u30EB\u30C4",
+    "\u30D8\u309A\u30F3\u30B9",
+    "\u30D8\u309A\u30FC\u30B7\u3099",
+    "\u30D8\u3099\u30FC\u30BF",
+    "\u30DB\u309A\u30A4\u30F3\u30C8",
+    "\u30DB\u3099\u30EB\u30C8",
+    "\u30DB\u30F3",
+    "\u30DB\u309A\u30F3\u30C8\u3099",
+    "\u30DB\u30FC\u30EB",
+    "\u30DB\u30FC\u30F3",
+    "\u30DE\u30A4\u30AF\u30ED",
+    "\u30DE\u30A4\u30EB",
+    "\u30DE\u30C3\u30CF",
+    "\u30DE\u30EB\u30AF",
+    "\u30DE\u30F3\u30B7\u30E7\u30F3",
+    "\u30DF\u30AF\u30ED\u30F3",
+    "\u30DF\u30EA",
+    "\u30DF\u30EA\u30CF\u3099\u30FC\u30EB",
+    "\u30E1\u30AB\u3099",
+    "\u30E1\u30AB\u3099\u30C8\u30F3",
+    "\u30E1\u30FC\u30C8\u30EB",
+    "\u30E4\u30FC\u30C8\u3099",
+    "\u30E4\u30FC\u30EB",
+    "\u30E6\u30A2\u30F3",
+    "\u30EA\u30C3\u30C8\u30EB",
+    "\u30EA\u30E9",
+    "\u30EB\u30D2\u309A\u30FC",
+    "\u30EB\u30FC\u30D5\u3099\u30EB",
+    "\u30EC\u30E0",
+    "\u30EC\u30F3\u30C8\u30B1\u3099\u30F3",
+    "\u30EF\u30C3\u30C8",
+    "\u0030\u70B9",
+    "\u0031\u70B9",
+    "\u0032\u70B9",
+    "\u0033\u70B9",
+    "\u0034\u70B9",
+    "\u0035\u70B9",
+    "\u0036\u70B9",
+    "\u0037\u70B9",
+    "\u0038\u70B9",
+    "\u0039\u70B9",
+    "\u0031\u0030\u70B9",
+    "\u0031\u0031\u70B9",
+    "\u0031\u0032\u70B9",
+    "\u0031\u0033\u70B9",
+    "\u0031\u0034\u70B9",
+    "\u0031\u0035\u70B9",
+    "\u0031\u0036\u70B9",
+    "\u0031\u0037\u70B9",
+    "\u0031\u0038\u70B9",
+    "\u0031\u0039\u70B9",
+    "\u0032\u0030\u70B9",
+    "\u0032\u0031\u70B9",
+    "\u0032\u0032\u70B9",
+    "\u0032\u0033\u70B9",
+    "\u0032\u0034\u70B9",
+    "\u0068\u0050\u0061",
+    "\u0064\u0061",
+    "\u0041\u0055",
+    "\u0062\u0061\u0072",
+    "\u006F\u0056",
+    "\u0070\u0063",
+    "\u5E73\u6210",
+    "\u662D\u548C",
+    "\u5927\u6B63",
+    "\u660E\u6CBB",
+    "\u682A\u5F0F\u4F1A\u793E",
+    "\u0070\u0041",
+    "\u006E\u0041",
+    "\u03BC\u0041",
+    "\u006D\u0041",
+    "\u006B\u0041",
+    "\u004B\u0042",
+    "\u004D\u0042",
+    "\u0047\u0042",
+    "\u0063\u0061\u006C",
+    "\u006B\u0063\u0061\u006C",
+    "\u0070\u0046",
+    "\u006E\u0046",
+    "\u03BC\u0046",
+    "\u03BC\u0067",
+    "\u006D\u0067",
+    "\u006B\u0067",
+    "\u0048\u007A",
+    "\u006B\u0048\u007A",
+    "\u004D\u0048\u007A",
+    "\u0047\u0048\u007A",
+    "\u0054\u0048\u007A",
+    "\u03BC\u006C",
+    "\u006D\u006C",
+    "\u0064\u006C",
+    "\u006B\u006C",
+    "\u0066\u006D",
+    "\u006E\u006D",
+    "\u03BC\u006D",
+    "\u006D\u006D",
+    "\u0063\u006D",
+    "\u006B\u006D",
+    "\u006D\u006D\u0032",
+    "\u0063\u006D\u0032",
+    "\u006D\u0032",
+    "\u006B\u006D\u0032",
+    "\u006D\u006D\u0033",
+    "\u0063\u006D\u0033",
+    "\u006D\u0033",
+    "\u006B\u006D\u0033",
+    "\u006D\u2215\u0073",
+    "\u006D\u2215\u0073\u0032",
+    "\u0050\u0061",
+    "\u006B\u0050\u0061",
+    "\u004D\u0050\u0061",
+    "\u0047\u0050\u0061",
+    "\u0072\u0061\u0064",
+    "\u0072\u0061\u0064\u2215\u0073",
+    "\u0072\u0061\u0064\u2215\u0073\u0032",
+    "\u0070\u0073",
+    "\u006E\u0073",
+    "\u03BC\u0073",
+    "\u006D\u0073",
+    "\u0070\u0056",
+    "\u006E\u0056",
+    "\u03BC\u0056",
+    "\u006D\u0056",
+    "\u006B\u0056",
+    "\u004D\u0056",
+    "\u0070\u0057",
+    "\u006E\u0057",
+    "\u03BC\u0057",
+    "\u006D\u0057",
+    "\u006B\u0057",
+    "\u004D\u0057",
+    "\u006B\u03A9",
+    "\u004D\u03A9",
+    "\u0061\u002E\u006D\u002E",
+    "\u0042\u0071",
+    "\u0063\u0063",
+    "\u0063\u0064",
+    "\u0043\u2215\u006B\u0067",
+    "\u0043\u006F\u002E",
+    "\u0064\u0042",
+    "\u0047\u0079",
+    "\u0068\u0061",
+    "\u0048\u0050",
+    "\u0069\u006E",
+    "\u004B\u004B",
+    "\u004B\u004D",
+    "\u006B\u0074",
+    "\u006C\u006D",
+    "\u006C\u006E",
+    "\u006C\u006F\u0067",
+    "\u006C\u0078",
+    "\u006D\u0062",
+    "\u006D\u0069\u006C",
+    "\u006D\u006F\u006C",
+    "\u0050\u0048",
+    "\u0070\u002E\u006D\u002E",
+    "\u0050\u0050\u004D",
+    "\u0050\u0052",
+    "\u0073\u0072",
+    "\u0053\u0076",
+    "\u0057\u0062",
+    "\u0031\u65E5",
+    "\u0032\u65E5",
+    "\u0033\u65E5",
+    "\u0034\u65E5",
+    "\u0035\u65E5",
+    "\u0036\u65E5",
+    "\u0037\u65E5",
+    "\u0038\u65E5",
+    "\u0039\u65E5",
+    "\u0031\u0030\u65E5",
+    "\u0031\u0031\u65E5",
+    "\u0031\u0032\u65E5",
+    "\u0031\u0033\u65E5",
+    "\u0031\u0034\u65E5",
+    "\u0031\u0035\u65E5",
+    "\u0031\u0036\u65E5",
+    "\u0031\u0037\u65E5",
+    "\u0031\u0038\u65E5",
+    "\u0031\u0039\u65E5",
+    "\u0032\u0030\u65E5",
+    "\u0032\u0031\u65E5",
+    "\u0032\u0032\u65E5",
+    "\u0032\u0033\u65E5",
+    "\u0032\u0034\u65E5",
+    "\u0032\u0035\u65E5",
+    "\u0032\u0036\u65E5",
+    "\u0032\u0037\u65E5",
+    "\u0032\u0038\u65E5",
+    "\u0032\u0039\u65E5",
+    "\u0033\u0030\u65E5",
+    "\u0033\u0031\u65E5",
+    "\u8C48",
+    "\u66F4",
+    "\u8CC8",
+    "\u6ED1",
+    "\u4E32",
+    "\u53E5",
+    "\u5951",
+    "\u5587",
+    "\u5948",
+    "\u61F6",
+    "\u7669",
+    "\u7F85",
+    "\u863F",
+    "\u87BA",
+    "\u88F8",
+    "\u908F",
+    "\u6A02",
+    "\u6D1B",
+    "\u70D9",
+    "\u73DE",
+    "\u843D",
+    "\u916A",
+    "\u99F1",
+    "\u4E82",
+    "\u5375",
+    "\u6B04",
+    "\u721B",
+    "\u862D",
+    "\u9E1E",
+    "\u5D50",
+    "\u6FEB",
+    "\u85CD",
+    "\u8964",
+    "\u62C9",
+    "\u81D8",
+    "\u881F",
+    "\u5ECA",
+    "\u6717",
+    "\u6D6A",
+    "\u72FC",
+    "\u90CE",
+    "\u4F86",
+    "\u51B7",
+    "\u52DE",
+    "\u64C4",
+    "\u6AD3",
+    "\u7210",
+    "\u76E7",
+    "\u8606",
+    "\u865C",
+    "\u8DEF",
+    "\u9732",
+    "\u9B6F",
+    "\u9DFA",
+    "\u788C",
+    "\u797F",
+    "\u7DA0",
+    "\u83C9",
+    "\u9304",
+    "\u8AD6",
+    "\u58DF",
+    "\u5F04",
+    "\u7C60",
+    "\u807E",
+    "\u7262",
+    "\u78CA",
+    "\u8CC2",
+    "\u96F7",
+    "\u58D8",
+    "\u5C62",
+    "\u6A13",
+    "\u6DDA",
+    "\u6F0F",
+    "\u7D2F",
+    "\u7E37",
+    "\u964B",
+    "\u52D2",
+    "\u808B",
+    "\u51DC",
+    "\u51CC",
+    "\u7A1C",
+    "\u7DBE",
+    "\u83F1",
+    "\u9675",
+    "\u8B80",
+    "\u62CF",
+    "\u8AFE",
+    "\u4E39",
+    "\u5BE7",
+    "\u6012",
+    "\u7387",
+    "\u7570",
+    "\u5317",
+    "\u78FB",
+    "\u4FBF",
+    "\u5FA9",
+    "\u4E0D",
+    "\u6CCC",
+    "\u6578",
+    "\u7D22",
+    "\u53C3",
+    "\u585E",
+    "\u7701",
+    "\u8449",
+    "\u8AAA",
+    "\u6BBA",
+    "\u6C88",
+    "\u62FE",
+    "\u82E5",
+    "\u63A0",
+    "\u7565",
+    "\u4EAE",
+    "\u5169",
+    "\u51C9",
+    "\u6881",
+    "\u7CE7",
+    "\u826F",
+    "\u8AD2",
+    "\u91CF",
+    "\u52F5",
+    "\u5442",
+    "\u5EEC",
+    "\u65C5",
+    "\u6FFE",
+    "\u792A",
+    "\u95AD",
+    "\u9A6A",
+    "\u9E97",
+    "\u9ECE",
+    "\u66C6",
+    "\u6B77",
+    "\u8F62",
+    "\u5E74",
+    "\u6190",
+    "\u6200",
+    "\u649A",
+    "\u6F23",
+    "\u7149",
+    "\u7489",
+    "\u79CA",
+    "\u7DF4",
+    "\u806F",
+    "\u8F26",
+    "\u84EE",
+    "\u9023",
+    "\u934A",
+    "\u5217",
+    "\u52A3",
+    "\u54BD",
+    "\u70C8",
+    "\u88C2",
+    "\u5EC9",
+    "\u5FF5",
+    "\u637B",
+    "\u6BAE",
+    "\u7C3E",
+    "\u7375",
+    "\u4EE4",
+    "\u56F9",
+    "\u5DBA",
+    "\u601C",
+    "\u73B2",
+    "\u7469",
+    "\u7F9A",
+    "\u8046",
+    "\u9234",
+    "\u96F6",
+    "\u9748",
+    "\u9818",
+    "\u4F8B",
+    "\u79AE",
+    "\u91B4",
+    "\u96B8",
+    "\u60E1",
+    "\u4E86",
+    "\u50DA",
+    "\u5BEE",
+    "\u5C3F",
+    "\u6599",
+    "\u71CE",
+    "\u7642",
+    "\u84FC",
+    "\u907C",
+    "\u6688",
+    "\u962E",
+    "\u5289",
+    "\u677B",
+    "\u67F3",
+    "\u6D41",
+    "\u6E9C",
+    "\u7409",
+    "\u7559",
+    "\u786B",
+    "\u7D10",
+    "\u985E",
+    "\u622E",
+    "\u9678",
+    "\u502B",
+    "\u5D19",
+    "\u6DEA",
+    "\u8F2A",
+    "\u5F8B",
+    "\u6144",
+    "\u6817",
+    "\u9686",
+    "\u5229",
+    "\u540F",
+    "\u5C65",
+    "\u6613",
+    "\u674E",
+    "\u68A8",
+    "\u6CE5",
+    "\u7406",
+    "\u75E2",
+    "\u7F79",
+    "\u88CF",
+    "\u88E1",
+    "\u96E2",
+    "\u533F",
+    "\u6EBA",
+    "\u541D",
+    "\u71D0",
+    "\u7498",
+    "\u85FA",
+    "\u96A3",
+    "\u9C57",
+    "\u9E9F",
+    "\u6797",
+    "\u6DCB",
+    "\u81E8",
+    "\u7B20",
+    "\u7C92",
+    "\u72C0",
+    "\u7099",
+    "\u8B58",
+    "\u4EC0",
+    "\u8336",
+    "\u523A",
+    "\u5207",
+    "\u5EA6",
+    "\u62D3",
+    "\u7CD6",
+    "\u5B85",
+    "\u6D1E",
+    "\u66B4",
+    "\u8F3B",
+    "\u964D",
+    "\u5ED3",
+    "\u5140",
+    "\u55C0",
+    "\u585A",
+    "\u6674",
+    "\u51DE",
+    "\u732A",
+    "\u76CA",
+    "\u793C",
+    "\u795E",
+    "\u7965",
+    "\u798F",
+    "\u9756",
+    "\u7CBE",
+    "\u8612",
+    "\u8AF8",
+    "\u9038",
+    "\u90FD",
+    "\u98EF",
+    "\u98FC",
+    "\u9928",
+    "\u9DB4",
+    "\u4FAE",
+    "\u50E7",
+    "\u514D",
+    "\u52C9",
+    "\u52E4",
+    "\u5351",
+    "\u559D",
+    "\u5606",
+    "\u5668",
+    "\u5840",
+    "\u58A8",
+    "\u5C64",
+    "\u6094",
+    "\u6168",
+    "\u618E",
+    "\u61F2",
+    "\u654F",
+    "\u65E2",
+    "\u6691",
+    "\u6885",
+    "\u6D77",
+    "\u6E1A",
+    "\u6F22",
+    "\u716E",
+    "\u722B",
+    "\u7422",
+    "\u7891",
+    "\u7949",
+    "\u7948",
+    "\u7950",
+    "\u7956",
+    "\u798D",
+    "\u798E",
+    "\u7A40",
+    "\u7A81",
+    "\u7BC0",
+    "\u7E09",
+    "\u7E41",
+    "\u7F72",
+    "\u8005",
+    "\u81ED",
+    "\u8279",
+    "\u8457",
+    "\u8910",
+    "\u8996",
+    "\u8B01",
+    "\u8B39",
+    "\u8CD3",
+    "\u8D08",
+    "\u8FB6",
+    "\u96E3",
+    "\u97FF",
+    "\u983B",
+    "\u0066\u0066",
+    "\u0066\u0069",
+    "\u0066\u006C",
+    "\u0066\u0066\u0069",
+    "\u0066\u0066\u006C",
+    "\u0073\u0074",
+    "\u0574\u0576",
+    "\u0574\u0565",
+    "\u0574\u056B",
+    "\u057E\u0576",
+    "\u0574\u056D",
+    "\u05D9\u05B4",
+    "\u05F2\u05B7",
+    "\u05E2",
+    "\u05D4",
+    "\u05DB",
+    "\u05DC",
+    "\u05DD",
+    "\u05E8",
+    "\u05EA",
+    "\u05E9\u05C1",
+    "\u05E9\u05C2",
+    "\u05E9\u05BC\u05C1",
+    "\u05E9\u05BC\u05C2",
+    "\u05D0\u05B7",
+    "\u05D0\u05B8",
+    "\u05D0\u05BC",
+    "\u05D1\u05BC",
+    "\u05D2\u05BC",
+    "\u05D3\u05BC",
+    "\u05D4\u05BC",
+    "\u05D5\u05BC",
+    "\u05D6\u05BC",
+    "\u05D8\u05BC",
+    "\u05D9\u05BC",
+    "\u05DA\u05BC",
+    "\u05DB\u05BC",
+    "\u05DC\u05BC",
+    "\u05DE\u05BC",
+    "\u05E0\u05BC",
+    "\u05E1\u05BC",
+    "\u05E3\u05BC",
+    "\u05E4\u05BC",
+    "\u05E6\u05BC",
+    "\u05E7\u05BC",
+    "\u05E8\u05BC",
+    "\u05E9\u05BC",
+    "\u05EA\u05BC",
+    "\u05D5\u05B9",
+    "\u05D1\u05BF",
+    "\u05DB\u05BF",
+    "\u05E4\u05BF",
+    "\u05D0\u05DC",
+    "\u0671",
+    "\u067B",
+    "\u067E",
+    "\u0680",
+    "\u067A",
+    "\u067F",
+    "\u0679",
+    "\u06A4",
+    "\u06A6",
+    "\u0684",
+    "\u0683",
+    "\u0686",
+    "\u0687",
+    "\u068D",
+    "\u068C",
+    "\u068E",
+    "\u0688",
+    "\u0698",
+    "\u0691",
+    "\u06A9",
+    "\u06AF",
+    "\u06B3",
+    "\u06B1",
+    "\u06BA",
+    "\u06BB",
+    "\u06C1",
+    "\u06BE",
+    "\u06D2",
+    "\u06AD",
+    "\u06C7",
+    "\u06C6",
+    "\u06C8",
+    "\u06CB",
+    "\u06C5",
+    "\u06C9",
+    "\u06D0",
+    "\u0649",
+    "\u064A\u0654\u0627",
+    "\u064A\u0654\u06D5",
+    "\u064A\u0654\u0648",
+    "\u064A\u0654\u06C7",
+    "\u064A\u0654\u06C6",
+    "\u064A\u0654\u06C8",
+    "\u064A\u0654\u06D0",
+    "\u064A\u0654\u0649",
+    "\u06CC",
+    "\u064A\u0654\u062C",
+    "\u064A\u0654\u062D",
+    "\u064A\u0654\u0645",
+    "\u064A\u0654\u064A",
+    "\u0628\u062C",
+    "\u0628\u062D",
+    "\u0628\u062E",
+    "\u0628\u0645",
+    "\u0628\u0649",
+    "\u0628\u064A",
+    "\u062A\u062C",
+    "\u062A\u062D",
+    "\u062A\u062E",
+    "\u062A\u0645",
+    "\u062A\u0649",
+    "\u062A\u064A",
+    "\u062B\u062C",
+    "\u062B\u0645",
+    "\u062B\u0649",
+    "\u062B\u064A",
+    "\u062C\u062D",
+    "\u062C\u0645",
+    "\u062D\u062C",
+    "\u062D\u0645",
+    "\u062E\u062C",
+    "\u062E\u062D",
+    "\u062E\u0645",
+    "\u0633\u062C",
+    "\u0633\u062D",
+    "\u0633\u062E",
+    "\u0633\u0645",
+    "\u0635\u062D",
+    "\u0635\u0645",
+    "\u0636\u062C",
+    "\u0636\u062D",
+    "\u0636\u062E",
+    "\u0636\u0645",
+    "\u0637\u062D",
+    "\u0637\u0645",
+    "\u0638\u0645",
+    "\u0639\u062C",
+    "\u0639\u0645",
+    "\u063A\u062C",
+    "\u063A\u0645",
+    "\u0641\u062C",
+    "\u0641\u062D",
+    "\u0641\u062E",
+    "\u0641\u0645",
+    "\u0641\u0649",
+    "\u0641\u064A",
+    "\u0642\u062D",
+    "\u0642\u0645",
+    "\u0642\u0649",
+    "\u0642\u064A",
+    "\u0643\u0627",
+    "\u0643\u062C",
+    "\u0643\u062D",
+    "\u0643\u062E",
+    "\u0643\u0644",
+    "\u0643\u0645",
+    "\u0643\u0649",
+    "\u0643\u064A",
+    "\u0644\u062C",
+    "\u0644\u062D",
+    "\u0644\u062E",
+    "\u0644\u0645",
+    "\u0644\u0649",
+    "\u0644\u064A",
+    "\u0645\u062C",
+    "\u0645\u062D",
+    "\u0645\u062E",
+    "\u0645\u0645",
+    "\u0645\u0649",
+    "\u0645\u064A",
+    "\u0646\u062C",
+    "\u0646\u062D",
+    "\u0646\u062E",
+    "\u0646\u0645",
+    "\u0646\u0649",
+    "\u0646\u064A",
+    "\u0647\u062C",
+    "\u0647\u0645",
+    "\u0647\u0649",
+    "\u0647\u064A",
+    "\u064A\u062C",
+    "\u064A\u062D",
+    "\u064A\u062E",
+    "\u064A\u0645",
+    "\u064A\u0649",
+    "\u064A\u064A",
+    "\u0630\u0670",
+    "\u0631\u0670",
+    "\u0649\u0670",
+    "\u0020\u064C\u0651",
+    "\u0020\u064D\u0651",
+    "\u0020\u064E\u0651",
+    "\u0020\u064F\u0651",
+    "\u0020\u0650\u0651",
+    "\u0020\u0651\u0670",
+    "\u064A\u0654\u0631",
+    "\u064A\u0654\u0632",
+    "\u064A\u0654\u0646",
+    "\u0628\u0631",
+    "\u0628\u0632",
+    "\u0628\u0646",
+    "\u062A\u0631",
+    "\u062A\u0632",
+    "\u062A\u0646",
+    "\u062B\u0631",
+    "\u062B\u0632",
+    "\u062B\u0646",
+    "\u0645\u0627",
+    "\u0646\u0631",
+    "\u0646\u0632",
+    "\u0646\u0646",
+    "\u064A\u0631",
+    "\u064A\u0632",
+    "\u064A\u0646",
+    "\u064A\u0654\u062E",
+    "\u064A\u0654\u0647",
+    "\u0628\u0647",
+    "\u062A\u0647",
+    "\u0635\u062E",
+    "\u0644\u0647",
+    "\u0646\u0647",
+    "\u0647\u0670",
+    "\u064A\u0647",
+    "\u062B\u0647",
+    "\u0633\u0647",
+    "\u0634\u0645",
+    "\u0634\u0647",
+    "\u0640\u064E\u0651",
+    "\u0640\u064F\u0651",
+    "\u0640\u0650\u0651",
+    "\u0637\u0649",
+    "\u0637\u064A",
+    "\u0639\u0649",
+    "\u0639\u064A",
+    "\u063A\u0649",
+    "\u063A\u064A",
+    "\u0633\u0649",
+    "\u0633\u064A",
+    "\u0634\u0649",
+    "\u0634\u064A",
+    "\u062D\u0649",
+    "\u062D\u064A",
+    "\u062C\u0649",
+    "\u062C\u064A",
+    "\u062E\u0649",
+    "\u062E\u064A",
+    "\u0635\u0649",
+    "\u0635\u064A",
+    "\u0636\u0649",
+    "\u0636\u064A",
+    "\u0634\u062C",
+    "\u0634\u062D",
+    "\u0634\u062E",
+    "\u0634\u0631",
+    "\u0633\u0631",
+    "\u0635\u0631",
+    "\u0636\u0631",
+    "\u0627\u064B",
+    "\u062A\u062C\u0645",
+    "\u062A\u062D\u062C",
+    "\u062A\u062D\u0645",
+    "\u062A\u062E\u0645",
+    "\u062A\u0645\u062C",
+    "\u062A\u0645\u062D",
+    "\u062A\u0645\u062E",
+    "\u062C\u0645\u062D",
+    "\u062D\u0645\u064A",
+    "\u062D\u0645\u0649",
+    "\u0633\u062D\u062C",
+    "\u0633\u062C\u062D",
+    "\u0633\u062C\u0649",
+    "\u0633\u0645\u062D",
+    "\u0633\u0645\u062C",
+    "\u0633\u0645\u0645",
+    "\u0635\u062D\u062D",
+    "\u0635\u0645\u0645",
+    "\u0634\u062D\u0645",
+    "\u0634\u062C\u064A",
+    "\u0634\u0645\u062E",
+    "\u0634\u0645\u0645",
+    "\u0636\u062D\u0649",
+    "\u0636\u062E\u0645",
+    "\u0637\u0645\u062D",
+    "\u0637\u0645\u0645",
+    "\u0637\u0645\u064A",
+    "\u0639\u062C\u0645",
+    "\u0639\u0645\u0645",
+    "\u0639\u0645\u0649",
+    "\u063A\u0645\u0645",
+    "\u063A\u0645\u064A",
+    "\u063A\u0645\u0649",
+    "\u0641\u062E\u0645",
+    "\u0642\u0645\u062D",
+    "\u0642\u0645\u0645",
+    "\u0644\u062D\u0645",
+    "\u0644\u062D\u064A",
+    "\u0644\u062D\u0649",
+    "\u0644\u062C\u062C",
+    "\u0644\u062E\u0645",
+    "\u0644\u0645\u062D",
+    "\u0645\u062D\u062C",
+    "\u0645\u062D\u0645",
+    "\u0645\u062D\u064A",
+    "\u0645\u062C\u062D",
+    "\u0645\u062C\u0645",
+    "\u0645\u062E\u062C",
+    "\u0645\u062E\u0645",
+    "\u0645\u062C\u062E",
+    "\u0647\u0645\u062C",
+    "\u0647\u0645\u0645",
+    "\u0646\u062D\u0645",
+    "\u0646\u062D\u0649",
+    "\u0646\u062C\u0645",
+    "\u0646\u062C\u0649",
+    "\u0646\u0645\u064A",
+    "\u0646\u0645\u0649",
+    "\u064A\u0645\u0645",
+    "\u0628\u062E\u064A",
+    "\u062A\u062C\u064A",
+    "\u062A\u062C\u0649",
+    "\u062A\u062E\u064A",
+    "\u062A\u062E\u0649",
+    "\u062A\u0645\u064A",
+    "\u062A\u0645\u0649",
+    "\u062C\u0645\u064A",
+    "\u062C\u062D\u0649",
+    "\u062C\u0645\u0649",
+    "\u0633\u062E\u0649",
+    "\u0635\u062D\u064A",
+    "\u0634\u062D\u064A",
+    "\u0636\u062D\u064A",
+    "\u0644\u062C\u064A",
+    "\u0644\u0645\u064A",
+    "\u064A\u062D\u064A",
+    "\u064A\u062C\u064A",
+    "\u064A\u0645\u064A",
+    "\u0645\u0645\u064A",
+    "\u0642\u0645\u064A",
+    "\u0646\u062D\u064A",
+    "\u0639\u0645\u064A",
+    "\u0643\u0645\u064A",
+    "\u0646\u062C\u062D",
+    "\u0645\u062E\u064A",
+    "\u0644\u062C\u0645",
+    "\u0643\u0645\u0645",
+    "\u062C\u062D\u064A",
+    "\u062D\u062C\u064A",
+    "\u0645\u062C\u064A",
+    "\u0641\u0645\u064A",
+    "\u0628\u062D\u064A",
+    "\u0633\u062E\u064A",
+    "\u0646\u062C\u064A",
+    "\u0635\u0644\u06D2",
+    "\u0642\u0644\u06D2",
+    "\u0627\u0644\u0644\u0647",
+    "\u0627\u0643\u0628\u0631",
+    "\u0645\u062D\u0645\u062F",
+    "\u0635\u0644\u0639\u0645",
+    "\u0631\u0633\u0648\u0644",
+    "\u0639\u0644\u064A\u0647",
+    "\u0648\u0633\u0644\u0645",
+    "\u0635\u0644\u0649",
+    "\u0635\u0644\u0649\u0020\u0627\u0644\u0644\u0647\u0020\u0639\u0644\u064A\u0647\u0020\u0648\u0633\u0644\u0645",
+    "\u062C\u0644\u0020\u062C\u0644\u0627\u0644\u0647",
+    "\u0631\u06CC\u0627\u0644",
+    "\u2014",
+    "\u2013",
+    "\u005F",
+    "\u007B",
+    "\u007D",
+    "\u3014",
+    "\u3015",
+    "\u3010",
+    "\u3011",
+    "\u300A",
+    "\u300B",
+    "\u300C",
+    "\u300D",
+    "\u300E",
+    "\u300F",
+    "\u002C",
+    "\u3001",
+    "\u003A",
+    "\u003F",
+    "\u0021",
+    "\u0023",
+    "\u0026",
+    "\u002A",
+    "\u002D",
+    "\u003C",
+    "\u003E",
+    "\\",
+    "\u0024",
+    "\u0025",
+    "\u0040",
+    "\u0020\u064B",
+    "\u0640\u064B",
+    "\u0020\u064C",
+    "\u0020\u064D",
+    "\u0020\u064E",
+    "\u0640\u064E",
+    "\u0020\u064F",
+    "\u0640\u064F",
+    "\u0020\u0650",
+    "\u0640\u0650",
+    "\u0020\u0651",
+    "\u0640\u0651",
+    "\u0020\u0652",
+    "\u0640\u0652",
+    "\u0621",
+    "\u0627",
+    "\u0628",
+    "\u0629",
+    "\u062A",
+    "\u062B",
+    "\u062C",
+    "\u062D",
+    "\u062E",
+    "\u062F",
+    "\u0630",
+    "\u0631",
+    "\u0632",
+    "\u0633",
+    "\u0634",
+    "\u0635",
+    "\u0636",
+    "\u0637",
+    "\u0638",
+    "\u0639",
+    "\u063A",
+    "\u0641",
+    "\u0642",
+    "\u0643",
+    "\u0644",
+    "\u0645",
+    "\u0646",
+    "\u0647",
+    "\u0648",
+    "\u064A",
+    "\u0644\u0627\u0653",
+    "\u0644\u0627\u0654",
+    "\u0644\u0627\u0655",
+    "\u0644\u0627",
+    "\"",
+    "\u0027",
+    "\u002F",
+    "\u005B",
+    "\u005D",
+    "\u005E",
+    "\u007C",
+    "\u007E",
+    "\u2985",
+    "\u2986",
+    "\u3002",
+    "\u30FB",
+    "\u30A1",
+    "\u30A3",
+    "\u30A5",
+    "\u30A7",
+    "\u30A9",
+    "\u30E3",
+    "\u30E5",
+    "\u30E7",
+    "\u30C3",
+    "\u30FC",
+    "\u30F3",
+    "\u3099",
+    "\u309A",
+    "\u00A2",
+    "\u00A3",
+    "\u00AC",
+    "\u00A6",
+    "\u00A5",
+    "\u20A9",
+    "\u2502",
+    "\u2190",
+    "\u2191",
+    "\u2192",
+    "\u2193",
+    "\u25A0",
+    "\u25CB",
+  };
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNA.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNA.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNA.cs (revision 580)
@@ -0,0 +1,305 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{	
+	public class IDNA
+	{
+		public const string ACE_PREFIX = "xn--";
+		
+		/// <summary>
+        /// Converts a Unicode string to ASCII using the procedure in RFC3490
+		/// section 4.1. Unassigned characters are not allowed and STD3 ASCII
+		/// rules are enforced. The input string may be a domain name
+		/// containing dots.
+		/// </summary>
+		/// <param name="input">Unicode string.</param>
+		/// <returns> Encoded string.</returns>
+		public static string ToASCII(string input)
+		{
+			StringBuilder o = new StringBuilder();
+			StringBuilder h = new StringBuilder();
+			
+			for (int i = 0; i < input.Length; i++)
+			{
+				char c = input[i];
+				if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61')
+				{
+					o.Append(ToASCII(h.ToString(), false, true));
+                    o.Append('.');
+					h = new StringBuilder();
+				}
+				else
+				{
+					h.Append(c);
+				}
+			}
+			o.Append(ToASCII(h.ToString(), false, true));
+			return o.ToString();
+		}
+		
+		/// <summary>
+        /// Converts a Unicode string to ASCII using the procedure in RFC3490
+		/// section 4.1. Unassigned characters are not allowed and STD3 ASCII
+		/// rules are enforced.
+        /// </summary>
+		/// <param name="input">Unicode string.</param>
+		/// <param name="allowUnassigned">Unassigned characters, allowed or not?</param>
+		/// <param name="useSTD3ASCIIRules">STD3 ASCII rules, enforced or not?</param>
+		/// <returns> Encoded string.</returns>
+		public static string ToASCII(string input, bool allowUnassigned, bool useSTD3ASCIIRules)
+		{
+			// Step 1: Check if the string contains code points outside
+			//         the ASCII range 0..0x7c.
+			
+			bool nonASCII = false;
+			
+			for (int i = 0; i < input.Length; i++)
+			{
+				int c = input[i];
+				if (c > 0x7f)
+				{
+					nonASCII = true;
+					break;
+				}
+			}
+			
+			// Step 2: Perform the nameprep operation.
+			
+			if (nonASCII)
+			{
+				try
+				{
+					input = Stringprep.NamePrep(input, allowUnassigned);
+				}
+				catch (StringprepException e)
+				{
+					// TODO 
+					throw new IDNAException(e);
+				}
+			}
+			
+			// Step 3: - Verify the absence of non-LDH ASCII code points
+			//    (char) 0..0x2c, 0x2e..0x2f, 0x3a..0x40, 0x5b..0x60,
+			//    (char) 0x7b..0x7f
+			//         - Verify the absence of leading and trailing
+			//           hyphen-minus
+			
+			if (useSTD3ASCIIRules)
+			{
+				for (int i = 0; i < input.Length; i++)
+				{
+					int c = input[i];
+					if ((c <= 0x2c) || (c >= 0x2e && c <= 0x2f) || (c >= 0x3a && c <= 0x40) || (c >= 0x5b && c <= 0x60) || (c >= 0x7b && c <= 0x7f))
+					{
+						throw new IDNAException(IDNAException.CONTAINS_NON_LDH);
+					}
+				}
+				
+				if (input.StartsWith("-") || input.EndsWith("-"))
+				{
+					throw new IDNAException(IDNAException.CONTAINS_HYPHEN);
+				}
+			}
+			
+			// Step 4: If all code points are inside 0..0x7f, skip to step 8
+			
+			nonASCII = false;
+			
+			for (int i = 0; i < input.Length; i++)
+			{
+				int c = input[i];
+				if (c > 0x7f)
+				{
+					nonASCII = true;
+					break;
+				}
+			}
+			
+			string output = input;
+			
+			if (nonASCII)
+			{
+				
+				// Step 5: Verify that the sequence does not begin with the ACE prefix.
+				
+				if (input.StartsWith(ACE_PREFIX))
+				{
+					throw new IDNAException(IDNAException.CONTAINS_ACE_PREFIX);
+				}
+				
+				// Step 6: Punycode
+				
+				try
+				{
+					output = Punycode.Encode(input);
+				}
+				catch (PunycodeException e)
+				{
+					// TODO
+					throw new IDNAException(e);
+				}
+				
+				// Step 7: Prepend the ACE prefix.
+				
+				output = ACE_PREFIX + output;
+			}
+			
+			// Step 8: Check that the length is inside 1..63.
+			
+			if (output.Length < 1 || output.Length > 63)
+			{
+				throw new IDNAException(IDNAException.TOO_LONG);
+			}
+			
+			return output;
+		}
+		
+		/// <summary>
+        /// Converts an ASCII-encoded string to Unicode. Unassigned
+		/// characters are not allowed and STD3 hostnames are enforced. Input
+		/// may be domain name containing dots.
+		/// </summary>
+		/// <param name="input">ASCII input string.</param>
+		/// <returns> Unicode string.</returns>
+		public static string ToUnicode(string input)
+		{
+            input = input.ToLower();
+			StringBuilder o = new StringBuilder();
+			StringBuilder h = new StringBuilder();
+			
+			for (int i = 0; i < input.Length; i++)
+			{
+				char c = input[i];
+				if (c == '.' || c == '\u3002' || c == '\uff0e' || c == '\uff61')
+				{
+					o.Append(ToUnicode(h.ToString(), false, true));
+					o.Append(c);
+					h = new StringBuilder();
+				}
+				else
+				{
+					h.Append(c);
+				}
+			}
+			o.Append(ToUnicode(h.ToString(), false, true));
+			return o.ToString();
+		}
+		
+		/// <summary>
+        /// Converts an ASCII-encoded string to Unicode.		
+		/// </summary>
+		/// <param name="input">ASCII input string.</param>
+		/// <param name="allowUnassigned">Allow unassigned Unicode characters.</param>
+		/// <param name="useSTD3ASCIIRules">Check that the output conforms to STD3.</param>
+		/// <returns>Unicode string.</returns>
+		public static string ToUnicode(string input, bool allowUnassigned, bool useSTD3ASCIIRules)
+		{
+			string original = input;
+			bool nonASCII = false;
+			
+			// Step 1: If all code points are inside 0..0x7f, skip to step 3.
+			
+			for (int i = 0; i < input.Length; i++)
+			{
+				int c = input[i];
+				if (c > 0x7f)
+				{
+					nonASCII = true;
+					break;
+				}
+			}
+			
+			// Step 2: Perform the Nameprep operation.
+			
+			if (nonASCII)
+			{
+				try
+				{
+					input = Stringprep.NamePrep(input, allowUnassigned);
+				}
+				catch (StringprepException e)
+				{
+					// ToUnicode never fails!
+					return original;
+				}
+			}
+			
+			// Step 3: Verify the sequence starts with the ACE prefix.
+			
+			if (!input.StartsWith(ACE_PREFIX))
+			{
+				// ToUnicode never fails!
+				return original;
+			}
+			
+			string stored = input;
+			
+			// Step 4: Remove the ACE prefix.
+			
+			input = input.Substring(ACE_PREFIX.Length);
+			
+			// Step 5: Decode using punycode
+			
+			string output;
+			
+			try
+			{
+				output = Punycode.Decode(input);
+			}
+			catch (PunycodeException e)
+			{
+				// ToUnicode never fails!
+				return original;
+			}
+			
+			// Step 6: Apply toASCII
+			
+			string ascii;
+			
+			try
+			{
+				ascii = ToASCII(output, allowUnassigned, useSTD3ASCIIRules);
+			}
+			catch (IDNAException e)
+			{
+				// ToUnicode never fails!
+				return original;
+			}
+			
+			// Step 7: Compare case-insensitively.
+			
+			if (!ascii.ToUpper().Equals(stored.ToUpper()))
+			{
+				// ToUnicode never fails!
+				return original;
+			}
+			
+			// Step 8: Return the result.
+			
+			return output;
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/StringprepException.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/StringprepException.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/StringprepException.cs (revision 580)
@@ -0,0 +1,38 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{	
+	public class StringprepException : Exception
+	{
+		public static string CONTAINS_UNASSIGNED    = "Contains unassigned code points.";
+		public static string CONTAINS_PROHIBITED    = "Contains prohibited code points.";
+		public static string BIDI_BOTHRAL           = "Contains both R and AL code points.";
+		public static string BIDI_LTRAL             = "Leading and trailing code points not both R or AL.";
+
+        public StringprepException(string message) : base(message)
+		{
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/Stringprep.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/Stringprep.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/Stringprep.cs (revision 580)
@@ -0,0 +1,463 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{	
+	/// <summary> This class offers static methods for preparing internationalized
+	/// strings. It supports the following stringprep profiles:
+	/// <ul>
+	/// <li>RFC3491 nameprep
+	/// <li>RFC3920 XMPP nodeprep and resourceprep
+	/// </ul>
+	/// Note that this implementation only supports 16-bit Unicode code
+	/// points.
+	/// </summary>
+	public class Stringprep
+	{
+		/// <summary> Preps a name according to the Stringprep profile defined in
+		/// RFC3491. Unassigned code points are not allowed.
+		/// *
+		/// </summary>
+		/// <param name="input">the name to prep.
+		/// </param>
+		/// <returns> the prepped name.
+		/// @throws StringprepException If the name cannot be prepped with
+		/// this profile.
+		/// @throws NullPointerException If the name is null.
+		/// 
+		/// </returns>
+		public static string NamePrep(string input)
+		{
+			return NamePrep(input, false);
+		}
+		
+		/// <summary> Preps a name according to the Stringprep profile defined in
+		/// RFC3491.
+		/// *
+		/// </summary>
+		/// <param name="input">the name to prep.
+		/// </param>
+		/// <param name="allowUnassigned">true if the name may contain unassigned
+		/// code points.
+		/// </param>
+		/// <returns> the prepped name.
+		/// @throws StringprepException If the name cannot be prepped with
+		/// this profile.
+		/// @throws NullPointerException If the name is null.
+		/// 
+		/// </returns>
+		public static string NamePrep(string input, bool allowUnassigned)
+		{
+			if (input == null)
+			{
+				throw new System.NullReferenceException();
+			}
+			
+			StringBuilder s = new StringBuilder(input);
+			
+			if (!allowUnassigned && Contains(s, RFC3454.A1))
+			{
+				throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+			}
+			
+			Filter(s, RFC3454.B1);
+			Map(s, RFC3454.B2search, RFC3454.B2replace);
+			
+			s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+			// B.3 is only needed if NFKC is not used, right?
+			// map(s, RFC3454.B3search, RFC3454.B3replace);
+			
+			if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8))
+			{
+				// Table C.9 only contains code points > 0xFFFF which Java
+				// doesn't handle
+				throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+			}
+			
+			// Bidi handling
+			bool r = Contains(s, RFC3454.D1);
+			bool l = Contains(s, RFC3454.D2);
+			
+			// RFC 3454, section 6, requirement 1: already handled above (table C.8)
+			
+			// RFC 3454, section 6, requirement 2
+			if (r && l)
+			{
+				throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+			}
+			
+			// RFC 3454, section 6, requirement 3
+			if (r)
+			{
+				if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+				{
+					throw new StringprepException(StringprepException.BIDI_LTRAL);
+				}
+			}
+			
+			return s.ToString();
+		}
+		
+		/**
+		* Characters prohibited by RFC3920 nodeprep that aren't defined as
+		* part of the RFC3454 tables.
+		*/
+		private static char [] RFC3920_NODEPREP_PROHIBIT = new char [] {
+				 '\u0022', '\u0026', '\'',     '\u002F',
+				 '\u003A', '\u003C', '\u003E', '\u0040'
+		 };
+		
+		/// <summary> Preps a node name according to the Stringprep profile defined in
+		/// RFC3920. Unassigned code points are not allowed.
+		/// *
+		/// </summary>
+		/// <param name="input">the node name to prep.
+		/// </param>
+		/// <returns> the prepped node name.
+		/// @throws StringprepException If the node name cannot be prepped
+		/// with this profile.
+		/// @throws NullPointerException If the node name is null.
+		/// 
+		/// </returns>
+		public static string NodePrep(string input)
+		{
+			return NodePrep(input, false);
+		}
+		
+		/// <summary>
+        /// Preps a node name according to the Stringprep profile defined in RFC3920.
+		/// </summary>
+		/// <param name="input">the node name to prep.
+		/// </param>
+		/// <param name="allowUnassigned">true if the node name may contain
+		/// unassigned code points.
+		/// </param>
+		/// <returns> the prepped node name.
+		/// @throws StringprepException If the node name cannot be prepped
+		/// with this profile.
+		/// @throws NullPointerException If the node name is null.
+		/// 
+		/// </returns>
+		public static string NodePrep(string input, bool allowUnassigned)
+		{
+			if (input == null)
+			{
+				throw new System.NullReferenceException();
+			}
+			
+			StringBuilder s = new StringBuilder(input);
+			
+			if (!allowUnassigned && Contains(s, RFC3454.A1))
+			{
+				throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+			}
+			
+			Filter(s, RFC3454.B1);
+			Map(s, RFC3454.B2search, RFC3454.B2replace);
+			
+			s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+			
+			if (Contains(s, RFC3454.C11) || Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8) || Contains(s, RFC3920_NODEPREP_PROHIBIT))
+			{
+				// Table C.9 only contains code points > 0xFFFF which Java
+				// doesn't handle
+				throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+			}
+			
+			// Bidi handling
+			bool r = Contains(s, RFC3454.D1);
+			bool l = Contains(s, RFC3454.D2);
+			
+			// RFC 3454, section 6, requirement 1: already handled above (table C.8)
+			
+			// RFC 3454, section 6, requirement 2
+			if (r && l)
+			{
+				throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+			}
+			
+			// RFC 3454, section 6, requirement 3
+			if (r)
+			{
+				if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+				{
+					throw new StringprepException(StringprepException.BIDI_LTRAL);
+				}
+			}
+			
+			return s.ToString();
+		}
+		
+		/// <summary>
+        /// Preps a resource name according to the Stringprep profile defined
+		/// in RFC3920. Unassigned code points are not allowed.
+		/// </summary>
+		/// <param name="input">the resource name to prep.
+		/// </param>
+		/// <returns> the prepped node name.
+		/// @throws StringprepException If the resource name cannot be prepped
+		/// with this profile.
+		/// @throws NullPointerException If the resource name is null.
+		/// 
+		/// </returns>
+		public static string ResourcePrep(string input)
+		{
+			return ResourcePrep(input, false);
+		}
+		
+		/// <summary>
+        /// Preps a resource name according to the Stringprep profile defined
+		/// in RFC3920.
+		/// </summary>
+		/// <param name="input">the resource name to prep.
+		/// </param>
+		/// <param name="allowUnassigned">true if the resource name may contain
+		/// unassigned code points.
+		/// </param>
+		/// <returns>
+        /// the prepped node name.
+		/// @throws StringprepException If the resource name cannot be prepped
+		/// with this profile.
+		/// @throws NullPointerException If the resource name is null.
+		/// 
+		/// </returns>        
+		public static string ResourcePrep(string input, bool allowUnassigned)
+		{
+			if (input == null)
+			{
+				throw new System.NullReferenceException();
+			}
+			
+			StringBuilder s = new StringBuilder(input);
+			
+			if (!allowUnassigned && Contains(s, RFC3454.A1))
+			{
+				throw new StringprepException(StringprepException.CONTAINS_UNASSIGNED);
+			}
+			
+			Filter(s, RFC3454.B1);
+			
+			s = new StringBuilder(NFKC.NormalizeNFKC(s.ToString()));
+			
+			if (Contains(s, RFC3454.C12) || Contains(s, RFC3454.C21) || Contains(s, RFC3454.C22) || Contains(s, RFC3454.C3) || Contains(s, RFC3454.C4) || Contains(s, RFC3454.C5) || Contains(s, RFC3454.C6) || Contains(s, RFC3454.C7) || Contains(s, RFC3454.C8))
+			{
+				// Table C.9 only contains code points > 0xFFFF which Java
+				// doesn't handle
+				throw new StringprepException(StringprepException.CONTAINS_PROHIBITED);
+			}
+			
+			// Bidi handling
+			bool r = Contains(s, RFC3454.D1);
+			bool l = Contains(s, RFC3454.D2);
+			
+			// RFC 3454, section 6, requirement 1: already handled above (table C.8)
+			
+			// RFC 3454, section 6, requirement 2
+			if (r && l)
+			{
+				throw new StringprepException(StringprepException.BIDI_BOTHRAL);
+			}
+			
+			// RFC 3454, section 6, requirement 3
+			if (r)
+			{
+				if (!Contains(s[0], RFC3454.D1) || !Contains(s[s.Length - 1], RFC3454.D1))
+				{
+					throw new StringprepException(StringprepException.BIDI_LTRAL);
+				}
+			}
+			
+			return s.ToString();
+		}
+		
+		internal static bool Contains(StringBuilder s, char[] p)
+		{
+			for (int i = 0; i < p.Length; i++)
+			{
+				char c = p[i];
+				for (int j = 0; j < s.Length; j++)
+				{
+					if (c == s[j])
+					{
+						return true;
+					}
+				}
+			}
+			return false;
+		}
+		
+		internal static bool Contains(StringBuilder s, char[][] p)
+		{
+			for (int i = 0; i < p.Length; i++)
+			{
+				char[] r = p[i];
+				if (1 == r.Length)
+				{
+					char c = r[0];
+					for (int j = 0; j < s.Length; j++)
+					{
+						if (c == s[j])
+						{
+							return true;
+						}
+					}
+				}
+				else if (2 == r.Length)
+				{
+					char f = r[0];
+					char t = r[1];
+					for (int j = 0; j < s.Length; j++)
+					{
+						if (f <= s[j] && t >= s[j])
+						{
+							return true;
+						}
+					}
+				}
+			}
+			return false;
+		}
+		
+		internal static bool Contains(char c, char[][] p)
+		{
+			for (int i = 0; i < p.Length; i++)
+			{
+				char[] r = p[i];
+				if (1 == r.Length)
+				{
+					if (c == r[0])
+					{
+						return true;
+					}
+				}
+				else if (2 == r.Length)
+				{
+					char f = r[0];
+					char t = r[1];
+					if (f <= c && t >= c)
+					{
+						return true;
+					}
+				}
+			}
+			return false;
+		}
+		
+		internal static void Filter(StringBuilder s, char[] f)
+		{
+			for (int i = 0; i < f.Length; i++)
+			{
+				char c = f[i];
+				
+				int j = 0;
+				while (j < s.Length)
+				{
+					if (c == s[j])
+					{
+						//s.deleteCharAt(j);
+						s.Remove(j, 1);
+					}
+					else
+					{
+						j++;
+					}
+				}
+			}
+		}
+		
+		internal static void Filter(StringBuilder s, char[][] f)
+		{
+			for (int i = 0; i < f.Length; i++)
+			{
+				char[] r = f[i];
+				
+				if (1 == r.Length)
+				{
+					char c = r[0];
+					
+					int j = 0;
+					while (j < s.Length)
+					{
+						if (c == s[j])
+						{
+							//s.deleteCharAt(j);
+							s.Remove(j, 1);
+						}
+						else
+						{
+							j++;
+						}
+					}
+				}
+				else if (2 == r.Length)
+				{
+					char from = r[0];
+					char to = r[1];
+					
+					int j = 0;
+					while (j < s.Length)
+					{
+						if (from <= s[j] && to >= s[j])
+						{
+							//s.deleteCharAt(j);
+							s.Remove(j, 1);
+						}
+						else
+						{
+							j++;
+						}
+					}
+				}
+			}
+		}
+		
+		internal static void Map(StringBuilder s, char[] search, string[] replace)
+		{
+			for (int i = 0; i < search.Length; i++)
+			{
+				char c = search[i];
+				
+				int j = 0;
+				while (j < s.Length)
+				{
+					if (c == s[j])
+					{
+						//s.deleteCharAt(j);
+						s.Remove(j, 1);
+						if (null != replace[i])
+						{
+							s.Insert(j, replace[i]);
+							j += replace[i].Length - 1;
+						}
+					}
+					else
+					{
+						j++;
+					}
+				}
+			}
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/NFKC.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/NFKC.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/NFKC.cs (revision 580)
@@ -0,0 +1,373 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{		
+	public class NFKC
+	{
+		/// <summary>
+        /// Applies NFKC normalization to a string.
+        /// </summary>
+		/// <param name="in">The string to normalize.</param>
+		/// <returns> An NFKC normalized string.</returns>
+		public static string NormalizeNFKC(string sbIn)
+		{
+			StringBuilder sbOut = new StringBuilder();
+			
+			for (int i = 0; i < sbIn.Length; i++)
+			{
+				char code = sbIn[i];
+				
+				// In Unicode 3.0, Hangul was defined as the block from U+AC00
+				// to U+D7A3, however, since Unicode 3.2 the block extends until
+				// U+D7AF. The decomposeHangul function only decomposes until
+				// U+D7A3. Should this be changed?
+				if (code >= 0xAC00 && code <= 0xD7AF)
+				{
+					sbOut.Append(decomposeHangul(code));
+				}
+				else
+				{
+					int index = decomposeIndex(code);
+					if (index == - 1)
+					{
+						sbOut.Append(code);
+					}
+					else
+					{
+						sbOut.Append(DecompositionMappings.m[index]);
+					}
+				}
+			}
+			
+			// Bring the stringbuffer into canonical order.
+			canonicalOrdering(sbOut);
+			
+			// Do the canonical composition.
+			int last_cc = 0;
+			int last_start = 0;
+			
+			for (int i = 0; i < sbOut.Length; i++)
+			{
+				int cc = combiningClass(sbOut[i]);
+				
+				if (i > 0 && (last_cc == 0 || last_cc != cc))
+				{
+					// Try to combine characters
+					char a = sbOut[last_start];
+					char b = sbOut[i];
+					
+					int c = compose(a, b);
+					
+					if (c != - 1)
+					{
+						sbOut[last_start] = (char) c;
+						//sbOut.deleteCharAt(i);
+						sbOut.Remove(i, 1);
+						i--;
+						
+						if (i == last_start)
+						{
+							last_cc = 0;
+						}
+						else
+						{
+							last_cc = combiningClass(sbOut[i - 1]);
+						}
+						continue;
+					}
+				}
+				
+				if (cc == 0)
+				{
+					last_start = i;
+				}
+				
+				last_cc = cc;
+			}
+			
+			return sbOut.ToString();
+		}
+		
+		
+		/// <summary>
+        /// Returns the index inside the decomposition table, implemented
+		/// using a binary search.
+		/// </summary>
+		/// <param name="c">Character to look up.</param>
+		/// <returns> Index if found, -1 otherwise.</returns>
+		internal static int decomposeIndex(char c)
+		{
+			int start = 0;
+			int end = DecompositionKeys.k.Length / 2;
+			
+			while (true)
+			{
+				int half = (start + end) / 2;
+				int code = DecompositionKeys.k[half * 2];
+				
+				if (c == code)
+				{
+					return DecompositionKeys.k[half * 2 + 1];
+				}
+				if (half == start)
+				{
+					// Character not found
+					return - 1;
+				}
+				else if (c > code)
+				{
+					start = half;
+				}
+				else
+				{
+					end = half;
+				}
+			}
+		}
+		
+		/// <summary>
+        /// Returns the combining class of a given character.
+		/// </summary>
+		/// <param name="c">The character.</param>
+		/// <returns> The combining class.</returns>
+		internal static int combiningClass(char c)
+		{
+			int h = c >> 8;
+			int l = c & 0xff;
+			
+			int i = CombiningClass.i[h];
+			if (i > - 1)
+			{
+				return CombiningClass.c[i, l];
+			}
+			else
+			{
+				return 0;
+			}
+		}
+		
+		/// <summary>
+        /// Rearranges characters in a stringbuffer in order to respect the
+		/// canonical ordering properties.
+		/// </summary>
+		/// <param name="The">StringBuffer to rearrange.</param>
+		internal static void  canonicalOrdering(StringBuilder sbIn)
+		{
+			bool isOrdered = false;
+			
+			while (!isOrdered)
+			{
+				isOrdered = true;
+				
+
+				// 24.10.2005
+				int lastCC = 0;
+				if (sbIn.Length > 0)
+					lastCC = combiningClass(sbIn[0]);
+				
+				for (int i = 0; i < sbIn.Length - 1; i++)
+				{
+					int nextCC = combiningClass(sbIn[i + 1]);
+					if (nextCC != 0 && lastCC > nextCC)
+					{
+						for (int j = i + 1; j > 0; j--)
+						{
+							if (combiningClass(sbIn[j - 1]) <= nextCC)
+							{
+								break;
+							}
+							char t = sbIn[j];
+							sbIn[j] = sbIn[j - 1];
+							sbIn[j - 1] = t;
+							isOrdered = false;
+						}
+						nextCC = lastCC;
+					}
+					lastCC = nextCC;
+				}
+			}
+		}
+		
+		/// <summary>
+        /// Returns the index inside the composition table.		
+		/// </summary>
+		/// <param name="a">Character to look up.</param>
+		/// <returns> Index if found, -1 otherwise.</returns>
+		internal static int composeIndex(char a)
+		{
+			if (a >> 8 >= Composition.composePage.Length)
+			{
+				return - 1;
+			}
+			int ap = Composition.composePage[a >> 8];
+			if (ap == - 1)
+			{
+				return - 1;
+			}
+			return Composition.composeData[ap, a & 0xff];
+		}
+		
+		/// <summary>
+        /// Tries to compose two characters canonically.
+		/// </summary>
+		/// <param name="a">First character.</param>
+		/// <param name="b">Second character.</param>
+		/// <returns> The composed character or -1 if no composition could be found.</returns>
+		internal static int compose(char a, char b)
+		{
+			int h = composeHangul(a, b);
+			if (h != - 1)
+			{
+				return h;
+			}
+			
+			int ai = composeIndex(a);
+			
+			if (ai >= Composition.singleFirstStart && ai < Composition.singleSecondStart)
+			{
+				if (b == Composition.singleFirst[ai - Composition.singleFirstStart, 0])                
+				{
+					return Composition.singleFirst[ai - Composition.singleFirstStart, 1];                    
+				}
+				else
+				{
+					return - 1;
+				}
+			}
+
+			
+			int bi = composeIndex(b);
+			
+			if (bi >= Composition.singleSecondStart)
+			{
+				if (a == Composition.singleSecond[bi - Composition.singleSecondStart,0])
+				{
+					return Composition.singleSecond[bi - Composition.singleSecondStart,1];
+				}
+				else
+				{
+					return - 1;
+				}
+			}
+			
+			if (ai >= 0 && ai < Composition.multiSecondStart && bi >= Composition.multiSecondStart && bi < Composition.singleFirstStart)
+			{
+				char[] f = Composition.multiFirst[ai];
+				
+				if (bi - Composition.multiSecondStart < f.Length)
+				{
+					char r = f[bi - Composition.multiSecondStart];
+					if (r == 0)
+					{
+						return - 1;
+					}
+					else
+					{
+						return r;
+					}
+				}
+			}			
+			
+			return - 1;
+		}
+		
+		/// <summary>
+        /// Entire hangul code copied from:
+		/// http://www.unicode.org/unicode/reports/tr15/
+		/// Several hangul specific constants
+		/// </summary>
+		internal const int SBase = 0xAC00;
+		internal const int LBase = 0x1100;
+		internal const int VBase = 0x1161;
+		internal const int TBase = 0x11A7;
+		internal const int LCount = 19;
+		internal const int VCount = 21;
+		internal const int TCount = 28;
+		
+		internal static readonly int NCount = VCount * TCount;
+		
+		internal static readonly int SCount = LCount * NCount;
+		
+		/// <summary>
+        /// Decomposes a hangul character.
+		/// </summary>
+		/// <param name="s">A character to decompose.</param>
+		/// <returns> A string containing the hangul decomposition of the input
+		/// character. If no hangul decomposition can be found, a string
+		/// containing the character itself is returned.</returns>
+		internal static string decomposeHangul(char s)
+		{
+			int SIndex = s - SBase;
+			if (SIndex < 0 || SIndex >= SCount)
+			{
+				return s.ToString();
+			}
+			StringBuilder result = new StringBuilder();
+			int L = LBase + SIndex / NCount;
+			int V = VBase + (SIndex % NCount) / TCount;
+			int T = TBase + SIndex % TCount;
+			result.Append((char) L);
+			result.Append((char) V);
+			if (T != TBase)
+				result.Append((char) T);
+			return result.ToString();
+		}
+		
+		/// <summary>
+        /// Composes two hangul characters.
+		/// </summary>
+		/// <param name="a">First character.</param>
+		/// <param name="b">Second character.</param>
+		/// <returns> Returns the composed character or -1 if the two characters cannot be composed.</returns>
+		internal static int composeHangul(char a, char b)
+		{
+			// 1. check to see if two current characters are L and V
+			int LIndex = a - LBase;
+			if (0 <= LIndex && LIndex < LCount)
+			{
+				int VIndex = b - VBase;
+				if (0 <= VIndex && VIndex < VCount)
+				{
+					// make syllable of form LV
+					return SBase + (LIndex * VCount + VIndex) * TCount;
+				}
+			}
+			
+			// 2. check to see if two current characters are LV and T
+			int SIndex = a - SBase;
+			if (0 <= SIndex && SIndex < SCount && (SIndex % TCount) == 0)
+			{
+				int TIndex = b - TBase;
+				if (0 <= TIndex && TIndex <= TCount)
+				{
+					// make syllable of form LVT
+					return a + TIndex;
+				}
+			}
+			return - 1;
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/Composition.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/Composition.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/Composition.cs (revision 580)
@@ -0,0 +1,724 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class Composition
+{
+	/* jagged Array */
+	public static readonly char[][] multiFirst = new char[][] {
+	new char[] { '\u00C0', '\u00C1', '\u00C2', '\u00C3', '\u0100', '\u0102', '\u0226', '\u00C4', '\u1EA2', '\u00C5', '\u01CD', '\u0200', '\u0202', '\u1EA0', '\u1E00', '\u0104', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E02', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E04', '\u0000', '\u0000', '\u1E06', },
+	new char[] { '\u0000', '\u0106', '\u0108', '\u0000', '\u0000', '\u0000', '\u010A', '\u0000', '\u0000', '\u0000', '\u010C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00C7', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0A', '\u0000', '\u0000', '\u0000', '\u010E', '\u0000', '\u0000', '\u1E0C', '\u0000', '\u0000', '\u1E0E', '\u1E10', '\u1E12', },
+	new char[] { '\u00C8', '\u00C9', '\u00CA', '\u1EBC', '\u0112', '\u0114', '\u0116', '\u00CB', '\u1EBA', '\u0000', '\u011A', '\u0204', '\u0206', '\u1EB8', '\u0000', '\u0118', '\u0000', '\u0228', '\u1E18', '\u1E1A', },
+	new char[] { '\u0000', '\u01F4', '\u011C', '\u0000', '\u1E20', '\u011E', '\u0120', '\u0000', '\u0000', '\u0000', '\u01E6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0122', },
+	new char[] { '\u0000', '\u0000', '\u0124', '\u0000', '\u0000', '\u0000', '\u1E22', '\u1E26', '\u0000', '\u0000', '\u021E', '\u0000', '\u0000', '\u1E24', '\u0000', '\u0000', '\u0000', '\u1E28', '\u0000', '\u0000', '\u1E2A', },
+	new char[] { '\u00CC', '\u00CD', '\u00CE', '\u0128', '\u012A', '\u012C', '\u0130', '\u00CF', '\u1EC8', '\u0000', '\u01CF', '\u0208', '\u020A', '\u1ECA', '\u0000', '\u012E', '\u0000', '\u0000', '\u0000', '\u1E2C', },
+	new char[] { '\u0000', '\u1E30', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E8', '\u0000', '\u0000', '\u1E32', '\u0000', '\u0000', '\u1E34', '\u0136', },
+	new char[] { '\u0000', '\u0139', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013D', '\u0000', '\u0000', '\u1E36', '\u0000', '\u0000', '\u1E3A', '\u013B', '\u1E3C', },
+	new char[] { '\u0000', '\u1E3E', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E40', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E42', },
+	new char[] { '\u01F8', '\u0143', '\u0000', '\u00D1', '\u0000', '\u0000', '\u1E44', '\u0000', '\u0000', '\u0000', '\u0147', '\u0000', '\u0000', '\u1E46', '\u0000', '\u0000', '\u1E48', '\u0145', '\u1E4A', },
+	new char[] { '\u00D2', '\u00D3', '\u00D4', '\u00D5', '\u014C', '\u014E', '\u022E', '\u00D6', '\u1ECE', '\u0000', '\u01D1', '\u020C', '\u020E', '\u1ECC', '\u0000', '\u01EA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0150', '\u01A0', },
+	new char[] { '\u0000', '\u1E54', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E56', },
+	new char[] { '\u0000', '\u0154', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E58', '\u0000', '\u0000', '\u0000', '\u0158', '\u0210', '\u0212', '\u1E5A', '\u0000', '\u0000', '\u1E5E', '\u0156', },
+	new char[] { '\u0000', '\u015A', '\u015C', '\u0000', '\u0000', '\u0000', '\u1E60', '\u0000', '\u0000', '\u0000', '\u0160', '\u0000', '\u0000', '\u1E62', '\u0000', '\u0000', '\u0000', '\u015E', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0218', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6A', '\u0000', '\u0000', '\u0000', '\u0164', '\u0000', '\u0000', '\u1E6C', '\u0000', '\u0000', '\u1E6E', '\u0162', '\u1E70', '\u0000', '\u0000', '\u0000', '\u0000', '\u021A', },
+	new char[] { '\u00D9', '\u00DA', '\u00DB', '\u0168', '\u016A', '\u016C', '\u0000', '\u00DC', '\u1EE6', '\u016E', '\u01D3', '\u0214', '\u0216', '\u1EE4', '\u0000', '\u0172', '\u0000', '\u0000', '\u1E76', '\u1E74', '\u0000', '\u0170', '\u01AF', '\u0000', '\u1E72', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u1E7C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7E', },
+	new char[] { '\u1E80', '\u1E82', '\u0174', '\u0000', '\u0000', '\u0000', '\u1E86', '\u1E84', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E88', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8A', '\u1E8C', },
+	new char[] { '\u1EF2', '\u00DD', '\u0176', '\u1EF8', '\u0232', '\u0000', '\u1E8E', '\u0178', '\u1EF6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF4', },
+	new char[] { '\u0000', '\u0179', '\u1E90', '\u0000', '\u0000', '\u0000', '\u017B', '\u0000', '\u0000', '\u0000', '\u017D', '\u0000', '\u0000', '\u1E92', '\u0000', '\u0000', '\u1E94', },
+	new char[] { '\u00E0', '\u00E1', '\u00E2', '\u00E3', '\u0101', '\u0103', '\u0227', '\u00E4', '\u1EA3', '\u00E5', '\u01CE', '\u0201', '\u0203', '\u1EA1', '\u1E01', '\u0105', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E03', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E05', '\u0000', '\u0000', '\u1E07', },
+	new char[] { '\u0000', '\u0107', '\u0109', '\u0000', '\u0000', '\u0000', '\u010B', '\u0000', '\u0000', '\u0000', '\u010D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u00E7', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E0B', '\u0000', '\u0000', '\u0000', '\u010F', '\u0000', '\u0000', '\u1E0D', '\u0000', '\u0000', '\u1E0F', '\u1E11', '\u1E13', },
+	new char[] { '\u00E8', '\u00E9', '\u00EA', '\u1EBD', '\u0113', '\u0115', '\u0117', '\u00EB', '\u1EBB', '\u0000', '\u011B', '\u0205', '\u0207', '\u1EB9', '\u0000', '\u0119', '\u0000', '\u0229', '\u1E19', '\u1E1B', },
+	new char[] { '\u0000', '\u01F5', '\u011D', '\u0000', '\u1E21', '\u011F', '\u0121', '\u0000', '\u0000', '\u0000', '\u01E7', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0123', },
+	new char[] { '\u0000', '\u0000', '\u0125', '\u0000', '\u0000', '\u0000', '\u1E23', '\u1E27', '\u0000', '\u0000', '\u021F', '\u0000', '\u0000', '\u1E25', '\u0000', '\u0000', '\u1E96', '\u1E29', '\u0000', '\u0000', '\u1E2B', },
+	new char[] { '\u00EC', '\u00ED', '\u00EE', '\u0129', '\u012B', '\u012D', '\u0000', '\u00EF', '\u1EC9', '\u0000', '\u01D0', '\u0209', '\u020B', '\u1ECB', '\u0000', '\u012F', '\u0000', '\u0000', '\u0000', '\u1E2D', },
+	new char[] { '\u0000', '\u0000', '\u0135', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01F0', },
+	new char[] { '\u0000', '\u1E31', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01E9', '\u0000', '\u0000', '\u1E33', '\u0000', '\u0000', '\u1E35', '\u0137', },
+	new char[] { '\u0000', '\u013A', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u013E', '\u0000', '\u0000', '\u1E37', '\u0000', '\u0000', '\u1E3B', '\u013C', '\u1E3D', },
+	new char[] { '\u0000', '\u1E3F', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E41', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E43', },
+	new char[] { '\u01F9', '\u0144', '\u0000', '\u00F1', '\u0000', '\u0000', '\u1E45', '\u0000', '\u0000', '\u0000', '\u0148', '\u0000', '\u0000', '\u1E47', '\u0000', '\u0000', '\u1E49', '\u0146', '\u1E4B', },
+	new char[] { '\u00F2', '\u00F3', '\u00F4', '\u00F5', '\u014D', '\u014F', '\u022F', '\u00F6', '\u1ECF', '\u0000', '\u01D2', '\u020D', '\u020F', '\u1ECD', '\u0000', '\u01EB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0151', '\u01A1', },
+	new char[] { '\u0000', '\u1E55', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E57', },
+	new char[] { '\u0000', '\u0155', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E59', '\u0000', '\u0000', '\u0000', '\u0159', '\u0211', '\u0213', '\u1E5B', '\u0000', '\u0000', '\u1E5F', '\u0157', },
+	new char[] { '\u0000', '\u015B', '\u015D', '\u0000', '\u0000', '\u0000', '\u1E61', '\u0000', '\u0000', '\u0000', '\u0161', '\u0000', '\u0000', '\u1E63', '\u0000', '\u0000', '\u0000', '\u015F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0219', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E6B', '\u1E97', '\u0000', '\u0000', '\u0165', '\u0000', '\u0000', '\u1E6D', '\u0000', '\u0000', '\u1E6F', '\u0163', '\u1E71', '\u0000', '\u0000', '\u0000', '\u0000', '\u021B', },
+	new char[] { '\u00F9', '\u00FA', '\u00FB', '\u0169', '\u016B', '\u016D', '\u0000', '\u00FC', '\u1EE7', '\u016F', '\u01D4', '\u0215', '\u0217', '\u1EE5', '\u0000', '\u0173', '\u0000', '\u0000', '\u1E77', '\u1E75', '\u0000', '\u0171', '\u01B0', '\u0000', '\u1E73', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u1E7D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E7F', },
+	new char[] { '\u1E81', '\u1E83', '\u0175', '\u0000', '\u0000', '\u0000', '\u1E87', '\u1E85', '\u0000', '\u1E98', '\u0000', '\u0000', '\u0000', '\u1E89', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1E8B', '\u1E8D', },
+	new char[] { '\u1EF3', '\u00FD', '\u0177', '\u1EF9', '\u0233', '\u0000', '\u1E8F', '\u00FF', '\u1EF7', '\u1E99', '\u0000', '\u0000', '\u0000', '\u1EF5', },
+	new char[] { '\u0000', '\u017A', '\u1E91', '\u0000', '\u0000', '\u0000', '\u017C', '\u0000', '\u0000', '\u0000', '\u017E', '\u0000', '\u0000', '\u1E93', '\u0000', '\u0000', '\u1E95', },
+	new char[] { '\u1FED', '\u0385', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC1', },
+	new char[] { '\u1EA6', '\u1EA4', '\u0000', '\u1EAA', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA8', },
+	new char[] { '\u0000', '\u01FC', '\u0000', '\u0000', '\u01E2', },
+	new char[] { '\u1EC0', '\u1EBE', '\u0000', '\u1EC4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC2', },
+	new char[] { '\u1ED2', '\u1ED0', '\u0000', '\u1ED6', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED4', },
+	new char[] { '\u0000', '\u1E4C', '\u0000', '\u0000', '\u022C', '\u0000', '\u0000', '\u1E4E', },
+	new char[] { '\u01DB', '\u01D7', '\u0000', '\u0000', '\u01D5', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01D9', },
+	new char[] { '\u1EA7', '\u1EA5', '\u0000', '\u1EAB', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EA9', },
+	new char[] { '\u0000', '\u01FD', '\u0000', '\u0000', '\u01E3', },
+	new char[] { '\u1EC1', '\u1EBF', '\u0000', '\u1EC5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EC3', },
+	new char[] { '\u1ED3', '\u1ED1', '\u0000', '\u1ED7', '\u0000', '\u0000', '\u0000', '\u0000', '\u1ED5', },
+	new char[] { '\u0000', '\u1E4D', '\u0000', '\u0000', '\u022D', '\u0000', '\u0000', '\u1E4F', },
+	new char[] { '\u01DC', '\u01D8', '\u0000', '\u0000', '\u01D6', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u01DA', },
+	new char[] { '\u1EB0', '\u1EAE', '\u0000', '\u1EB4', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB2', },
+	new char[] { '\u1EB1', '\u1EAF', '\u0000', '\u1EB5', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EB3', },
+	new char[] { '\u1E14', '\u1E16', },
+	new char[] { '\u1E15', '\u1E17', },
+	new char[] { '\u1E50', '\u1E52', },
+	new char[] { '\u1E51', '\u1E53', },
+	new char[] { '\u1EDC', '\u1EDA', '\u0000', '\u1EE0', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE2', },
+	new char[] { '\u1EDD', '\u1EDB', '\u0000', '\u1EE1', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EDF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EE3', },
+	new char[] { '\u1EEA', '\u1EE8', '\u0000', '\u1EEE', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EEC', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF0', },
+	new char[] { '\u1EEB', '\u1EE9', '\u0000', '\u1EEF', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EED', '\u0000', '\u0000', '\u0000', '\u0000', '\u1EF1', },
+	new char[] { '\u1FBA', '\u0386', '\u0000', '\u0000', '\u1FB9', '\u1FB8', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F08', '\u1F09', '\u1FBC', },
+	new char[] { '\u1FC8', '\u0388', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F18', '\u1F19', },
+	new char[] { '\u1FCA', '\u0389', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F28', '\u1F29', '\u1FCC', },
+	new char[] { '\u1FDA', '\u038A', '\u0000', '\u0000', '\u1FD9', '\u1FD8', '\u0000', '\u03AA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F38', '\u1F39', },
+	new char[] { '\u1FF8', '\u038C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F48', '\u1F49', },
+	new char[] { '\u1FEA', '\u038E', '\u0000', '\u0000', '\u1FE9', '\u1FE8', '\u0000', '\u03AB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F59', },
+	new char[] { '\u1FFA', '\u038F', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F68', '\u1F69', '\u1FFC', },
+	new char[] { '\u1F70', '\u03AC', '\u0000', '\u0000', '\u1FB1', '\u1FB0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FB6', '\u1F00', '\u1F01', '\u1FB3', },
+	new char[] { '\u1F72', '\u03AD', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F10', '\u1F11', },
+	new char[] { '\u1F74', '\u03AE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FC6', '\u1F20', '\u1F21', '\u1FC3', },
+	new char[] { '\u1F76', '\u03AF', '\u0000', '\u0000', '\u1FD1', '\u1FD0', '\u0000', '\u03CA', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD6', '\u1F30', '\u1F31', },
+	new char[] { '\u1F78', '\u03CC', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F40', '\u1F41', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE4', '\u1FE5', },
+	new char[] { '\u1F7A', '\u03CD', '\u0000', '\u0000', '\u1FE1', '\u1FE0', '\u0000', '\u03CB', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE6', '\u1F50', '\u1F51', },
+	new char[] { '\u1F7C', '\u03CE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FF6', '\u1F60', '\u1F61', '\u1FF3', },
+	new char[] { '\u1FD2', '\u0390', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FD7', },
+	new char[] { '\u1FE2', '\u03B0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FE7', },
+	new char[] { '\u0000', '\u03D3', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u03D4', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D0', '\u0000', '\u04D2', },
+	new char[] { '\u0400', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D6', '\u0000', '\u0401', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C1', '\u0000', '\u04DC', },
+	new char[] { '\u040D', '\u0000', '\u0000', '\u0000', '\u04E2', '\u0419', '\u0000', '\u04E4', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EE', '\u040E', '\u0000', '\u04F0', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F2', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D1', '\u0000', '\u04D3', },
+	new char[] { '\u0450', '\u0000', '\u0000', '\u0000', '\u0000', '\u04D7', '\u0000', '\u0451', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04C2', '\u0000', '\u04DD', },
+	new char[] { '\u045D', '\u0000', '\u0000', '\u0000', '\u04E3', '\u0439', '\u0000', '\u04E5', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u04EF', '\u045E', '\u0000', '\u04F1', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u04F3', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0623', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0BCA', '\u0BCC', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0CC7', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0D4A', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0DDA', },
+	new char[] { '\u0000', '\u0000', '\u1EAC', '\u0000', '\u0000', '\u1EB6', },
+	new char[] { '\u0000', '\u0000', '\u1EAD', '\u0000', '\u0000', '\u1EB7', },
+	new char[] { '\u1F02', '\u1F04', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F06', '\u0000', '\u0000', '\u1F80', },
+	new char[] { '\u1F03', '\u1F05', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F07', '\u0000', '\u0000', '\u1F81', },
+	new char[] { '\u1F0A', '\u1F0C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0E', '\u0000', '\u0000', '\u1F88', },
+	new char[] { '\u1F0B', '\u1F0D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F0F', '\u0000', '\u0000', '\u1F89', },
+	new char[] { '\u1F12', '\u1F14', },
+	new char[] { '\u1F13', '\u1F15', },
+	new char[] { '\u1F1A', '\u1F1C', },
+	new char[] { '\u1F1B', '\u1F1D', },
+	new char[] { '\u1F22', '\u1F24', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F26', '\u0000', '\u0000', '\u1F90', },
+	new char[] { '\u1F23', '\u1F25', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F27', '\u0000', '\u0000', '\u1F91', },
+	new char[] { '\u1F2A', '\u1F2C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2E', '\u0000', '\u0000', '\u1F98', },
+	new char[] { '\u1F2B', '\u1F2D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F2F', '\u0000', '\u0000', '\u1F99', },
+	new char[] { '\u1F32', '\u1F34', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F36', },
+	new char[] { '\u1F33', '\u1F35', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F37', },
+	new char[] { '\u1F3A', '\u1F3C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3E', },
+	new char[] { '\u1F3B', '\u1F3D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F3F', },
+	new char[] { '\u1F42', '\u1F44', },
+	new char[] { '\u1F43', '\u1F45', },
+	new char[] { '\u1F4A', '\u1F4C', },
+	new char[] { '\u1F4B', '\u1F4D', },
+	new char[] { '\u1F52', '\u1F54', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F56', },
+	new char[] { '\u1F53', '\u1F55', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F57', },
+	new char[] { '\u1F5B', '\u1F5D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F5F', },
+	new char[] { '\u1F62', '\u1F64', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F66', '\u0000', '\u0000', '\u1FA0', },
+	new char[] { '\u1F63', '\u1F65', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F67', '\u0000', '\u0000', '\u1FA1', },
+	new char[] { '\u1F6A', '\u1F6C', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6E', '\u0000', '\u0000', '\u1FA8', },
+	new char[] { '\u1F6B', '\u1F6D', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1F6F', '\u0000', '\u0000', '\u1FA9', },
+	new char[] { '\u1FCD', '\u1FCE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FCF', },
+	new char[] { '\u1FDD', '\u1FDE', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u1FDF', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3070', '\u3071', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3073', '\u3074', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3076', '\u3077', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u3079', '\u307A', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u307C', '\u307D', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D0', '\u30D1', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D3', '\u30D4', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D6', '\u30D7', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30D9', '\u30DA', },
+	new char[] { '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u0000', '\u30DC', '\u30DD', },
+  };
+	public static readonly char[,] singleFirst = new char[,] {
+    { '\u0338', '\u226E' },
+    { '\u0338', '\u2260' },
+    { '\u0338', '\u226F' },
+    { '\u0307', '\u1E1E' },
+    { '\u0302', '\u0134' },
+    { '\u0307', '\u1E1F' },
+    { '\u0304', '\u01DE' },
+    { '\u0301', '\u01FA' },
+    { '\u0301', '\u1E08' },
+    { '\u0301', '\u1E2E' },
+    { '\u0304', '\u022A' },
+    { '\u0301', '\u01FE' },
+    { '\u0304', '\u01DF' },
+    { '\u0301', '\u01FB' },
+    { '\u0301', '\u1E09' },
+    { '\u0301', '\u1E2F' },
+    { '\u0304', '\u022B' },
+    { '\u0301', '\u01FF' },
+    { '\u0307', '\u1E64' },
+    { '\u0307', '\u1E65' },
+    { '\u0307', '\u1E66' },
+    { '\u0307', '\u1E67' },
+    { '\u0301', '\u1E78' },
+    { '\u0301', '\u1E79' },
+    { '\u0308', '\u1E7A' },
+    { '\u0308', '\u1E7B' },
+    { '\u0307', '\u1E9B' },
+    { '\u030C', '\u01EE' },
+    { '\u0304', '\u01EC' },
+    { '\u0304', '\u01ED' },
+    { '\u0304', '\u01E0' },
+    { '\u0304', '\u01E1' },
+    { '\u0306', '\u1E1C' },
+    { '\u0306', '\u1E1D' },
+    { '\u0304', '\u0230' },
+    { '\u0304', '\u0231' },
+    { '\u030C', '\u01EF' },
+    { '\u0314', '\u1FEC' },
+    { '\u0345', '\u1FB4' },
+    { '\u0345', '\u1FC4' },
+    { '\u0345', '\u1FF4' },
+    { '\u0308', '\u0407' },
+    { '\u0301', '\u0403' },
+    { '\u0308', '\u04DE' },
+    { '\u0301', '\u040C' },
+    { '\u0308', '\u04E6' },
+    { '\u0308', '\u04F4' },
+    { '\u0308', '\u04F8' },
+    { '\u0308', '\u04EC' },
+    { '\u0301', '\u0453' },
+    { '\u0308', '\u04DF' },
+    { '\u0301', '\u045C' },
+    { '\u0308', '\u04E7' },
+    { '\u0308', '\u04F5' },
+    { '\u0308', '\u04F9' },
+    { '\u0308', '\u04ED' },
+    { '\u0308', '\u0457' },
+    { '\u030F', '\u0476' },
+    { '\u030F', '\u0477' },
+    { '\u0308', '\u04DA' },
+    { '\u0308', '\u04DB' },
+    { '\u0308', '\u04EA' },
+    { '\u0308', '\u04EB' },
+    { '\u0654', '\u0624' },
+    { '\u0654', '\u0626' },
+    { '\u0654', '\u06C2' },
+    { '\u0654', '\u06D3' },
+    { '\u0654', '\u06C0' },
+    { '\u093C', '\u0929' },
+    { '\u093C', '\u0931' },
+    { '\u093C', '\u0934' },
+    { '\u0BD7', '\u0B94' },
+    { '\u0BBE', '\u0BCB' },
+    { '\u0C56', '\u0C48' },
+    { '\u0CD5', '\u0CC0' },
+    { '\u0CD5', '\u0CCB' },
+    { '\u0D3E', '\u0D4B' },
+    { '\u0DCA', '\u0DDD' },
+    { '\u102E', '\u1026' },
+    { '\u0304', '\u1E38' },
+    { '\u0304', '\u1E39' },
+    { '\u0304', '\u1E5C' },
+    { '\u0304', '\u1E5D' },
+    { '\u0307', '\u1E68' },
+    { '\u0307', '\u1E69' },
+    { '\u0302', '\u1EC6' },
+    { '\u0302', '\u1EC7' },
+    { '\u0302', '\u1ED8' },
+    { '\u0302', '\u1ED9' },
+    { '\u0345', '\u1F82' },
+    { '\u0345', '\u1F83' },
+    { '\u0345', '\u1F84' },
+    { '\u0345', '\u1F85' },
+    { '\u0345', '\u1F86' },
+    { '\u0345', '\u1F87' },
+    { '\u0345', '\u1F8A' },
+    { '\u0345', '\u1F8B' },
+    { '\u0345', '\u1F8C' },
+    { '\u0345', '\u1F8D' },
+    { '\u0345', '\u1F8E' },
+    { '\u0345', '\u1F8F' },
+    { '\u0345', '\u1F92' },
+    { '\u0345', '\u1F93' },
+    { '\u0345', '\u1F94' },
+    { '\u0345', '\u1F95' },
+    { '\u0345', '\u1F96' },
+    { '\u0345', '\u1F97' },
+    { '\u0345', '\u1F9A' },
+    { '\u0345', '\u1F9B' },
+    { '\u0345', '\u1F9C' },
+    { '\u0345', '\u1F9D' },
+    { '\u0345', '\u1F9E' },
+    { '\u0345', '\u1F9F' },
+    { '\u0345', '\u1FA2' },
+    { '\u0345', '\u1FA3' },
+    { '\u0345', '\u1FA4' },
+    { '\u0345', '\u1FA5' },
+    { '\u0345', '\u1FA6' },
+    { '\u0345', '\u1FA7' },
+    { '\u0345', '\u1FAA' },
+    { '\u0345', '\u1FAB' },
+    { '\u0345', '\u1FAC' },
+    { '\u0345', '\u1FAD' },
+    { '\u0345', '\u1FAE' },
+    { '\u0345', '\u1FAF' },
+    { '\u0345', '\u1FB2' },
+    { '\u0345', '\u1FC2' },
+    { '\u0345', '\u1FF2' },
+    { '\u0345', '\u1FB7' },
+    { '\u0345', '\u1FC7' },
+    { '\u0345', '\u1FF7' },
+    { '\u0338', '\u219A' },
+    { '\u0338', '\u219B' },
+    { '\u0338', '\u21AE' },
+    { '\u0338', '\u21CD' },
+    { '\u0338', '\u21CF' },
+    { '\u0338', '\u21CE' },
+    { '\u0338', '\u2204' },
+    { '\u0338', '\u2209' },
+    { '\u0338', '\u220C' },
+    { '\u0338', '\u2224' },
+    { '\u0338', '\u2226' },
+    { '\u0338', '\u2241' },
+    { '\u0338', '\u2244' },
+    { '\u0338', '\u2247' },
+    { '\u0338', '\u2249' },
+    { '\u0338', '\u226D' },
+    { '\u0338', '\u2262' },
+    { '\u0338', '\u2270' },
+    { '\u0338', '\u2271' },
+    { '\u0338', '\u2274' },
+    { '\u0338', '\u2275' },
+    { '\u0338', '\u2278' },
+    { '\u0338', '\u2279' },
+    { '\u0338', '\u2280' },
+    { '\u0338', '\u2281' },
+    { '\u0338', '\u22E0' },
+    { '\u0338', '\u22E1' },
+    { '\u0338', '\u2284' },
+    { '\u0338', '\u2285' },
+    { '\u0338', '\u2288' },
+    { '\u0338', '\u2289' },
+    { '\u0338', '\u22E2' },
+    { '\u0338', '\u22E3' },
+    { '\u0338', '\u22AC' },
+    { '\u0338', '\u22AD' },
+    { '\u0338', '\u22AE' },
+    { '\u0338', '\u22AF' },
+    { '\u0338', '\u22EA' },
+    { '\u0338', '\u22EB' },
+    { '\u0338', '\u22EC' },
+    { '\u0338', '\u22ED' },
+    { '\u3099', '\u3094' },
+    { '\u3099', '\u304C' },
+    { '\u3099', '\u304E' },
+    { '\u3099', '\u3050' },
+    { '\u3099', '\u3052' },
+    { '\u3099', '\u3054' },
+    { '\u3099', '\u3056' },
+    { '\u3099', '\u3058' },
+    { '\u3099', '\u305A' },
+    { '\u3099', '\u305C' },
+    { '\u3099', '\u305E' },
+    { '\u3099', '\u3060' },
+    { '\u3099', '\u3062' },
+    { '\u3099', '\u3065' },
+    { '\u3099', '\u3067' },
+    { '\u3099', '\u3069' },
+    { '\u3099', '\u309E' },
+    { '\u3099', '\u30F4' },
+    { '\u3099', '\u30AC' },
+    { '\u3099', '\u30AE' },
+    { '\u3099', '\u30B0' },
+    { '\u3099', '\u30B2' },
+    { '\u3099', '\u30B4' },
+    { '\u3099', '\u30B6' },
+    { '\u3099', '\u30B8' },
+    { '\u3099', '\u30BA' },
+    { '\u3099', '\u30BC' },
+    { '\u3099', '\u30BE' },
+    { '\u3099', '\u30C0' },
+    { '\u3099', '\u30C2' },
+    { '\u3099', '\u30C5' },
+    { '\u3099', '\u30C7' },
+    { '\u3099', '\u30C9' },
+    { '\u3099', '\u30F7' },
+    { '\u3099', '\u30F8' },
+    { '\u3099', '\u30F9' },
+    { '\u3099', '\u30FA' },
+    { '\u3099', '\u30FE' },
+  };
+	public static readonly char[,] singleSecond = new char[,] {
+    { '\u0627', '\u0622' },
+    { '\u0627', '\u0625' },
+    { '\u09C7', '\u09CB' },
+    { '\u09C7', '\u09CC' },
+    { '\u0B47', '\u0B4B' },
+    { '\u0B47', '\u0B48' },
+    { '\u0B47', '\u0B4C' },
+    { '\u0CC6', '\u0CCA' },
+    { '\u0CC6', '\u0CC8' },
+    { '\u0D46', '\u0D4C' },
+    { '\u0DD9', '\u0DDC' },
+    { '\u0DD9', '\u0DDE' },
+  };
+	public static readonly int multiSecondStart = 144;
+	public static readonly int singleFirstStart = 181;
+	public static readonly int singleSecondStart = 391;
+	public static readonly int[] composePage = new int[] {
+    0,
+    1,
+    2,
+    3,
+    4,
+    -1,
+    5,
+    -1,
+    -1,
+    6,
+    -1,
+    7,
+    8,
+    9,
+    -1,
+    -1,
+    10,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    11,
+    12,
+    -1,
+    13,
+    14,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    -1,
+    15,
+    -1,
+  };
+	public static readonly int[,] composeData = new int[,] {
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 181, 182, 183, -1, 
+      -1, 0, 1, 2, 3, 4, 184, 5, 6, 7, 185, 8, 9, 10, 11, 12, 
+      13, -1, 14, 15, 16, 17, 18, 19, 20, 21, 22, -1, -1, -1, -1, -1, 
+      -1, 23, 24, 25, 26, 27, 186, 28, 29, 30, 31, 32, 33, 34, 35, 36, 
+      37, -1, 38, 39, 40, 41, 42, 43, 44, 45, 46, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 48, -1, 187, 188, 49, 189, -1, -1, 50, -1, -1, -1, -1, 190, 
+      -1, -1, -1, -1, 51, 52, 191, -1, 192, -1, -1, -1, 53, -1, -1, -1, 
+      -1, -1, 54, -1, 193, 194, 55, 195, -1, -1, 56, -1, -1, -1, -1, 196, 
+      -1, -1, -1, -1, 57, 58, 197, -1, 198, -1, -1, -1, 59, -1, -1, -1, 
+    },
+	{
+      -1, -1, 60, 61, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 62, 63, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 64, 65, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 199, 200, -1, -1, -1, -1, 
+      201, 202, -1, -1, -1, -1, -1, -1, 203, 204, 205, 206, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 207, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      66, 67, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 68, 
+      69, -1, -1, -1, -1, -1, -1, 208, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 209, 210, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 211, 212, 213, 214, -1, -1, -1, -1, 215, 216, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      144, 145, 146, 147, 148, -1, 149, 150, 151, 152, 153, 165, 154, -1, -1, 155, 
+      -1, 156, -1, 170, 171, -1, -1, -1, -1, -1, -1, 166, -1, -1, -1, -1, 
+      -1, -1, -1, 157, 168, 158, 167, 161, 159, -1, -1, -1, -1, 162, 164, -1, 
+      163, 160, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 169, -1, -1, 172, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 70, -1, -1, -1, 71, -1, 72, -1, 73, -1, -1, -1, -1, -1, 74, 
+      -1, 218, -1, -1, -1, 75, -1, -1, -1, 76, -1, -1, 219, -1, 220, -1, 
+      -1, 77, -1, -1, -1, 78, -1, 79, -1, 80, -1, -1, -1, -1, -1, 81, 
+      -1, 82, -1, -1, -1, 83, -1, -1, -1, 84, 85, 86, -1, -1, 221, -1, 
+      -1, -1, 87, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, 222, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      88, -1, -1, 223, -1, 89, 90, 224, 91, -1, 225, -1, -1, -1, 226, -1, 
+      -1, -1, -1, 92, -1, -1, -1, 227, -1, -1, -1, 228, -1, 229, -1, -1, 
+      93, -1, -1, 230, -1, 94, 95, 231, 96, -1, 232, -1, -1, -1, 233, -1, 
+      -1, -1, -1, 97, -1, -1, -1, 234, -1, -1, -1, 235, -1, 236, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, 238, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 240, 241, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 242, 243, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 98, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, 245, -1, -1, -1, -1, -1, 
+      -1, -1, -1, 391, 173, 392, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 247, -1, -1, 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 249, -1, -1, -1, -1, -1, -1, -1, 
+      250, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 393, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 394, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 395, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 396, 397, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 174, -1, 
+      -1, -1, -1, -1, -1, -1, 99, 253, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 255, 
+      -1, -1, 398, -1, -1, -1, 100, -1, -1, -1, 256, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, 176, 399, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 177, -1, 
+      -1, -1, -1, -1, -1, -1, 101, 257, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, 400, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 178, -1, -1, -1, -1, 401, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 102, -1, -1, 258, -1, -1, 402, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 260, 261, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, 263, -1, -1, -1, -1, 
+      -1, -1, 264, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      103, 104, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, 266, 267, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 268, 269, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      105, 106, 270, 271, 272, 273, 274, 275, 107, 108, 276, 277, 278, 279, 280, 281, 
+      109, 110, -1, -1, -1, -1, -1, -1, 111, 112, -1, -1, -1, -1, -1, -1, 
+      113, 114, 282, 283, 284, 285, 286, 287, 115, 116, 288, 289, 290, 291, 292, 293, 
+      117, 118, -1, -1, -1, -1, -1, -1, 119, 120, -1, -1, -1, -1, -1, -1, 
+      121, 122, -1, -1, -1, -1, -1, -1, 123, 124, -1, -1, -1, -1, -1, -1, 
+      125, 126, -1, -1, -1, -1, -1, -1, -1, 127, -1, -1, -1, -1, -1, -1, 
+      128, 129, 294, 295, 296, 297, 298, 299, 130, 131, 300, 301, 302, 303, 304, 305, 
+      306, -1, -1, -1, 307, -1, -1, -1, -1, -1, -1, -1, 308, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 309, -1, -1, -1, -1, -1, -1, -1, -1, 132, 
+      -1, -1, -1, -1, -1, -1, 310, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 311, -1, -1, -1, -1, -1, -1, -1, 133, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      312, -1, 313, -1, 314, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      315, -1, 316, -1, 317, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, 318, -1, -1, -1, -1, 319, -1, -1, 320, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, 321, -1, 322, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 323, -1, -1, -1, 
+      -1, -1, -1, 324, -1, 325, -1, -1, 326, -1, -1, -1, -1, 327, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 328, -1, -1, 329, 330, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 331, 332, -1, -1, 333, 334, -1, -1, 335, 336, 337, 338, -1, -1, 
+      -1, -1, 339, 340, -1, -1, 341, 342, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, 343, 344, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, 345, -1, -1, -1, -1, -1, 346, 347, -1, 348, -1, -1, -1, -1, 
+      -1, -1, 349, 350, 351, 352, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+    },
+	{
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 353, -1, -1, -1, -1, 354, -1, 355, -1, 356, 
+      -1, 357, -1, 358, -1, 359, -1, 360, -1, 361, -1, 362, -1, 363, -1, 364, 
+      -1, 365, -1, -1, 366, -1, 367, -1, 368, -1, -1, -1, -1, -1, -1, 134, 
+      -1, -1, 135, -1, -1, 136, -1, -1, 137, -1, -1, 138, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, 179, 180, -1, -1, 369, -1, -1, 
+      -1, -1, -1, -1, -1, -1, 370, -1, -1, -1, -1, 371, -1, 372, -1, 373, 
+      -1, 374, -1, 375, -1, 376, -1, 377, -1, 378, -1, 379, -1, 380, -1, 381, 
+      -1, 382, -1, -1, 383, -1, 384, -1, 385, -1, -1, -1, -1, -1, -1, 139, 
+      -1, -1, 140, -1, -1, 141, -1, -1, 142, -1, -1, 143, -1, -1, -1, -1, 
+      -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 386, 
+      387, 388, 389, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 390, -1, -1, 
+    },
+  };
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/PunycodeException.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/PunycodeException.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/PunycodeException.cs (revision 580)
@@ -0,0 +1,41 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{
+	
+	public class PunycodeException : Exception
+	{
+		public static string OVERFLOW   = "Overflow.";
+		public static string BAD_INPUT  = "Bad input.";
+		
+		/// <summary>
+        /// Creates a new PunycodeException.
+		/// </summary>
+        /// <param name="message">message</param>
+		public PunycodeException(string message) : base(message)
+		{
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/Punycode.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/Punycode.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/Punycode.cs (revision 580)
@@ -0,0 +1,298 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+using System.Text;
+
+namespace Gnu.Inet.Encoding
+{	
+	
+	public class Punycode
+	{
+		/* Punycode parameters */
+		internal const int TMIN = 1;
+		internal const int TMAX = 26;
+		internal const int BASE = 36;
+		internal const int INITIAL_N = 128;
+		internal const int INITIAL_BIAS = 72;
+		internal const int DAMP = 700;
+		internal const int SKEW = 38;
+		internal const char DELIMITER = '-';
+		
+		/// <summary>
+        /// Punycodes a unicode string.
+		/// </summary>
+		/// <param name="input">Unicode string.</param>
+		/// <returns> Punycoded string.</returns>
+		public static string Encode(string input)
+		{
+			int n = INITIAL_N;
+			int delta = 0;
+			int bias = INITIAL_BIAS;
+			StringBuilder output = new StringBuilder();
+			
+			// Copy all basic code points to the output
+			int b = 0;
+			for (int i = 0; i < input.Length; i++)
+			{
+				char c = input[i];
+				if (IsBasic(c))
+				{
+					output.Append(c);
+					b++;
+				}
+			}
+			
+			// Append delimiter
+			if (b > 0)
+			{
+				output.Append(DELIMITER);
+			}
+			
+			int h = b;
+			while (h < input.Length)
+			{
+				int m = System.Int32.MaxValue;
+				
+				// Find the minimum code point >= n
+				for (int i = 0; i < input.Length; i++)
+				{
+					int c = input[i];
+					if (c >= n && c < m)
+					{
+						m = c;
+					}
+				}
+				
+				if (m - n > (System.Int32.MaxValue - delta) / (h + 1))
+				{
+					throw new PunycodeException(PunycodeException.OVERFLOW);
+				}
+				delta = delta + (m - n) * (h + 1);
+				n = m;
+				
+				for (int j = 0; j < input.Length; j++)
+				{
+					int c = input[j];
+					if (c < n)
+					{
+						delta++;
+						if (0 == delta)
+						{
+							throw new PunycodeException(PunycodeException.OVERFLOW);
+						}
+					}
+					if (c == n)
+					{
+						int q = delta;
+						
+						for (int k = BASE; ; k += BASE)
+						{
+							int t;
+							if (k <= bias)
+							{
+								t = TMIN;
+							}
+							else if (k >= bias + TMAX)
+							{
+								t = TMAX;
+							}
+							else
+							{
+								t = k - bias;
+							}
+							if (q < t)
+							{
+								break;
+							}
+							output.Append((char) Digit2Codepoint(t + (q - t) % (BASE - t)));
+							q = (q - t) / (BASE - t);
+						}
+						
+						output.Append((char) Digit2Codepoint(q));
+						bias = Adapt(delta, h + 1, h == b);
+						delta = 0;
+						h++;
+					}
+				}
+				
+				delta++;
+				n++;
+			}
+			
+			return output.ToString();
+		}
+		
+		/// <summary>
+        /// Decode a punycoded string.
+		/// </summary>
+		/// <param name="input">Punycode string</param>
+		/// <returns> Unicode string.</returns>
+		public static string Decode(string input)
+		{
+			int n = INITIAL_N;
+			int i = 0;
+			int bias = INITIAL_BIAS;
+			StringBuilder output = new StringBuilder();
+			
+			int d = input.LastIndexOf((System.Char) DELIMITER);
+			if (d > 0)
+			{
+				for (int j = 0; j < d; j++)
+				{
+					char c = input[j];
+					if (!IsBasic(c))
+					{
+						throw new PunycodeException(PunycodeException.BAD_INPUT);
+					}
+					output.Append(c);
+				}
+				d++;
+			}
+			else
+			{
+				d = 0;
+			}
+			
+			while (d < input.Length)
+			{
+				int oldi = i;
+				int w = 1;
+				
+				for (int k = BASE; ; k += BASE)
+				{
+					if (d == input.Length)
+					{
+						throw new PunycodeException(PunycodeException.BAD_INPUT);
+					}
+					int c = input[d++];
+					int digit = Codepoint2Digit(c);
+					if (digit > (System.Int32.MaxValue - i) / w)
+					{
+						throw new PunycodeException(PunycodeException.OVERFLOW);
+					}
+					
+					i = i + digit * w;
+					
+					int t;
+					if (k <= bias)
+					{
+						t = TMIN;
+					}
+					else if (k >= bias + TMAX)
+					{
+						t = TMAX;
+					}
+					else
+					{
+						t = k - bias;
+					}
+					if (digit < t)
+					{
+						break;
+					}
+					w = w * (BASE - t);
+				}
+				
+				bias = Adapt(i - oldi, output.Length + 1, oldi == 0);
+				
+				if (i / (output.Length + 1) > Int32.MaxValue - n)
+				{
+					throw new PunycodeException(PunycodeException.OVERFLOW);
+				}
+				
+				n = n + i / (output.Length + 1);
+				i = i % (output.Length + 1);
+				// following overload is not supported on CF
+				//output.Insert(i,(char) n);
+				output.Insert(i, new char[1] { (char) n });
+				i++;
+			}
+			
+			return output.ToString();
+		}
+		
+		public static int Adapt(int delta, int numpoints, bool first)
+		{
+			if (first)
+			{
+				delta = delta / DAMP;
+			}
+			else
+			{
+				delta = delta / 2;
+			}
+			
+			delta = delta + (delta / numpoints);
+			
+			int k = 0;
+			while (delta > ((BASE - TMIN) * TMAX) / 2)
+			{
+				delta = delta / (BASE - TMIN);
+				k = k + BASE;
+			}
+			
+			return k + ((BASE - TMIN + 1) * delta) / (delta + SKEW);
+		}
+		
+		public static bool IsBasic(char c)
+		{
+			return c < 0x80;
+		}
+		
+		public static int Digit2Codepoint(int d)
+		{
+			if (d < 26)
+			{
+				// 0..25 : 'a'..'z'
+				return d + 'a';
+			}
+			else if (d < 36)
+			{
+				// 26..35 : '0'..'9';
+				return d - 26 + '0';
+			}
+			else
+			{
+				throw new PunycodeException(PunycodeException.BAD_INPUT);
+			}
+		}
+		
+		public static int Codepoint2Digit(int c)
+		{
+			if (c - '0' < 10)
+			{
+				// '0'..'9' : 26..35
+				return c - '0' + 26;
+			}
+			else if (c - 'a' < 26)
+			{
+				// 'a'..'z' : 0..25
+				return c - 'a';
+			}
+			else
+			{
+				throw new PunycodeException(PunycodeException.BAD_INPUT);
+			}
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateNFKC.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateNFKC.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateNFKC.cs (revision 580)
@@ -0,0 +1,684 @@
+/// <summary> Copyright (C) 2004, 2007  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+using System;
+using System.IO;
+using System.Collections;
+using System.Text;
+
+namespace gnu.inet.encoding.misc
+{
+    public class GenerateNFKC
+    {
+        internal static string stripComment(string sIn)
+        {
+            int c = sIn.IndexOf('#');
+            if (c == -1)
+            {
+                return sIn;
+            }
+            else
+            {
+                return sIn.Substring(0, (c) - (0));
+            }
+        }
+
+        internal static string[] split(string sIn, char sep)
+        {
+            StringBuilder sb = new StringBuilder(sIn);
+            int c = 0;
+            for (int i = 0; i < sb.Length; i++)
+            {
+                if (sb[i] == sep)
+                {
+                    c++;
+                }
+            }
+
+            string[] sOut = new string[c + 1];
+            c = 0;
+            int l = 0;
+            for (int i = 0; i < sb.Length; i++)
+            {
+                if (sb[i] == sep)
+                {
+                    if (l >= i)
+                    {
+                        sOut[c] = "";
+                    }
+                    else
+                    {
+                        // TODO, check this
+                        sOut[c] = sb.ToString(l, i-l);
+                    }
+                    l = i + 1;
+                    c++;
+                }
+            }
+            if (l < sb.Length)
+            {
+                sOut[c] = sb.ToString(l, sb.Length - l);
+            }
+            return sOut;
+        }
+
+        internal static bool isCompatibilityMapping(string sIn)
+        {
+            return sIn.Length > 0 && sIn[0] == '<';
+        }
+
+        internal static string stripCompatibilityTag(string sIn)
+        {
+            return sIn.Substring(sIn.IndexOf('>') + 2);
+        }
+
+        internal static string toString(string sIn)
+        {
+            StringBuilder sOut = new StringBuilder();
+            string[] chars = split(sIn, ' ');
+            for (int i = 0; i < chars.Length; i++)
+            {
+                if (chars[i].Equals("005C"))
+                {
+                    sOut.Append("\\\\");
+                }
+                else if (chars[i].Equals("0022"))
+                {
+                    sOut.Append("\\\"");
+                }
+                else
+                {
+                    sOut.Append("\\u");
+                    sOut.Append(chars[i]);
+                }
+            }
+            return sOut.ToString();
+        }
+            
+        internal static string decompose(string sIn, SortedList mappings)
+        {
+            StringBuilder sOut = new StringBuilder();
+            string[] c = split(sIn, ' ');
+
+            for (int i = 0; i < c.Length; i++)
+            {
+                if (mappings.ContainsKey(c[i]))
+                {
+                    if (sOut.Length > 0)
+                    {
+                        sOut.Append(" ");
+                    }
+                    sOut.Append(decompose((string)mappings[c[i]], mappings));
+                }
+                else
+                {
+                    if (sOut.Length > 0)
+                    {
+                        sOut.Append(" ");
+                    }
+                    sOut.Append(c[i]);
+                }
+            }
+
+            return sOut.ToString();
+        }
+            
+        public static void Generate()
+        {
+            // Check if the unicode files exist
+            {
+                FileInfo f1 = new FileInfo("CompositionExclusions.txt");
+                FileInfo f2 = new FileInfo("UnicodeData.txt");
+                bool tmpBool;
+                if (File.Exists(f1.FullName))
+                    tmpBool = true;
+                else
+                    tmpBool = Directory.Exists(f1.FullName);
+                bool tmpBool2;
+                if (File.Exists(f2.FullName))
+                    tmpBool2 = true;
+                else
+                    tmpBool2 = Directory.Exists(f2.FullName);
+                if (!tmpBool || !tmpBool2)
+                {
+                    Console.WriteLine("Unable to find UnicodeData.txt or CompositionExclusions.txt.");
+                    Console.WriteLine("Please download the latest version of these file from:");
+                    Console.WriteLine("http://www.unicode.org/Public/UNIDATA/");
+                    System.Environment.Exit(1);
+                }
+            }
+                    
+            ArrayList exclusions = new ArrayList();
+            {            
+                StreamReader r = new StreamReader("CompositionExclusions.txt", System.Text.Encoding.Default);
+                string line;
+                while (null != (line = r.ReadLine()))
+                {
+                    line = stripComment(line);
+                    line = line.Trim();
+                    if (line.Length == 0)
+                    {
+                        // Empty line
+                    }
+                    else if (line.Length == 4)
+                    {
+                        exclusions.Add(line);
+                    }
+                    else
+                    {
+                        // Skip code points > 0xffff
+                    }
+                }
+                r.Close();
+            }
+
+            // Read UnicodeData
+            
+            SortedList canonical = new SortedList();        
+            SortedList compatibility = new SortedList();        
+            SortedList combiningClasses = new SortedList();
+            {        
+                StreamReader r = new StreamReader("UnicodeData.txt", Encoding.Default);
+                string line;
+                while (null != (line = r.ReadLine()))
+                {
+                    line = stripComment(line);
+                    line = line.Trim();
+
+                    if (line.Length == 0)
+                    {
+                        // Empty line
+                    }
+                    else
+                    {
+                        string[] f = split(line, ';');
+
+                        if (f[0].Length == 4)
+                        {
+                            if (!f[5].Equals(""))
+                            {
+                                if (isCompatibilityMapping(f[5]))
+                                {
+                                    compatibility[f[0]] = stripCompatibilityTag(f[5]);
+                                }
+                                else
+                                {
+                                    compatibility[f[0]] = f[5];
+                                    if (!exclusions.Contains(f[0]))
+                                    {
+                                        canonical[f[0]] = f[5];
+                                    }
+                                }
+                            }
+                            if (!f[3].Equals("0"))
+                            {
+                                //UPGRADE_TODO: Method 'java.lang.Integer.parseInt' was converted to 'System.Convert.ToInt32' which has a different behavior. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1073'"
+                                combiningClasses[(int)System.Convert.ToInt32(f[0], 16)] = f[3];
+                            }
+                        }
+                        else
+                        {
+                            // Skip code points > 0xffff
+                        }
+                    }
+                }
+                r.Close();
+            }
+
+            // Recursively apply compatibility mappings
+            while (true)
+            {
+                bool replaced = false;
+                            
+                IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string k = (string)i.Current;
+                    string v = (string)compatibility[k];
+
+                    string d = decompose(v, compatibility);
+                    if (!d.Equals(v))
+                    {
+                        replaced = true;
+                        compatibility[k] = d;
+                    }
+                }
+
+                if (!replaced)
+                {
+                    break;
+                }
+            }
+
+            // Eliminate duplicate mappings        
+            SortedList compatibilityKeys = new SortedList();
+            ArrayList compatibilityMappings = new ArrayList();
+            {            
+                IEnumerator i = new HashSet(compatibility.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string k = (string)i.Current;
+                    string v = (string)compatibility[k];
+
+                    int index = compatibilityMappings.IndexOf(v);
+                    if (index == -1)
+                    {
+                        index = compatibilityMappings.Count;
+                        compatibilityMappings.Add(v);
+                    }
+                    compatibilityKeys[k] = (int)index;
+                }
+            }
+
+            // Create composition tables        
+            SortedList firstMap = new SortedList();        
+            SortedList secondMap = new SortedList();
+            {            
+                IEnumerator i = new HashSet(canonical.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string k = (string)i.Current;
+                    string v = (string)canonical[k];
+
+                    string[] s = split(v, ' ');
+
+                    if (s.Length == 2)
+                    {
+                        // If both characters have the same combining class, they
+                        // won't be combined (in the sequence AB, B is blocked from
+                        // A if both have the same combining class)                    
+                        string cc1 = (string)combiningClasses[(int)System.Convert.ToInt32(s[0], 16)];                    
+                        string cc2 = (string)combiningClasses[(int)System.Convert.ToInt32(s[1], 16)];
+                        if (cc1 != null || (cc1 != null && cc1.Equals(cc2)))
+                        {
+                            // Ignore this composition                        
+                            // TODO check this
+                            //i.remove();                        
+                            canonical.Remove(k);
+                            continue;
+                        }
+
+                        if (firstMap.ContainsKey(s[0]))
+                        {
+                            int c = (int)firstMap[s[0]];
+                            firstMap[s[0]] = (int)(c + 1);
+                        }
+                        else
+                        {
+                            firstMap[s[0]] = 1;
+                        }
+
+                        if (secondMap.ContainsKey(s[1]))
+                        {
+                            int c = (int)secondMap[s[1]];
+                            secondMap[s[1]] = (int)(c + 1);
+                        }
+                        else
+                        {
+                            secondMap[s[1]] = 1;
+                        }
+                    }
+                    else if (s.Length > 2)
+                    {
+                        Console.WriteLine("? wrong canonical mapping for " + k);
+                        System.Environment.Exit(1);
+                    }
+                }
+            }
+                    
+            SortedList singleFirstComposition = new SortedList();        
+            SortedList singleSecondComposition = new SortedList();        
+            SortedList complexComposition = new SortedList();
+
+            int composeLookupMax = 0;
+            {            
+                IEnumerator i = new HashSet(canonical.Keys).GetEnumerator();         
+                while (i.MoveNext())
+                {                
+                    string k = (string) i.Current;
+                    string v = (string) canonical[k];
+
+                    string[] s = split(v, ' ');
+
+                    if (s.Length == 2)
+                    {
+                        // TODO, check this
+                        int first = 0;
+                        if(firstMap.Contains(s[0]))
+                            first = (int) firstMap[s[0]];
+                        
+                        int second = 0;
+                        if (secondMap.Contains(s[1]))
+                            second = (int) secondMap[s[1]];
+                        // TODO, check this
+
+                        if (first == 1)
+                        {
+                            singleFirstComposition[s[0]] = new string[] { s[1], k };                        
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16));
+                        }
+                        else if (second == 1)
+                        {
+                            singleSecondComposition[s[1]] = new string[] { s[0], k };                        
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16));
+                        }
+                        else
+                        {
+                            if (complexComposition.ContainsKey(s[0]))
+                            {                            
+                                SortedList m = (SortedList)complexComposition[s[0]];
+                                if (m.ContainsKey(s[1]))
+                                {
+                                    Console.WriteLine("? ambiguous canonical mapping for " + s[0]);
+                                    System.Environment.Exit(1);
+                                }
+                                m[s[1]] = k;
+                            }
+                            else
+                            {                            
+                                SortedList m = new SortedList();
+                                m[s[1]] = k;
+                                complexComposition[s[0]] = m;
+                            }                        
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[0], 16));                        
+                            composeLookupMax = System.Math.Max(composeLookupMax, System.Convert.ToInt32(s[1], 16));
+                        }
+                    }
+                }
+            }
+
+            Console.WriteLine("Generating CombiningClass.cs file...");
+
+            // Dump combining classes
+            {
+                StreamWriter w = new StreamWriter("CombiningClass.cs", false, Encoding.Default);
+                w.WriteLine("// Do not edit !!!");
+                w.WriteLine("// this file is generated automatically");
+                w.WriteLine();            
+                w.WriteLine("public class CombiningClass");            
+                w.WriteLine("{");            
+                w.WriteLine("\tpublic static readonly int[,] c = new int[,] {");
+                System.Text.StringBuilder index = new System.Text.StringBuilder();
+
+                int count = 0;
+
+                for (int i = 0; i < 256; i++)
+                {
+                    bool empty = true;
+
+                    StringBuilder page = new StringBuilder();
+                    page.Append("    { /* Page " + i + " */");
+
+                    for (int j = 0; j < 256; j++)
+                    {
+                        int c = (int)((i << 8) + j);
+                        string cc = (string)combiningClasses[c];
+
+                        if (0 == (j & 31))
+                        {
+                            page.Append("\r\n      ");
+                        }
+                        if (cc == null)
+                        {
+                            page.Append("0, ");
+                        }
+                        else
+                        {
+                            page.Append(cc + ", ");
+                            empty = false;
+                        }
+                    }
+                    page.Append("\r\n    },");
+
+                    index.Append("    ");
+
+                    if (!empty)
+                    {                    
+                        w.WriteLine(page.ToString());
+                        index.Append(count++);
+                        index.Append(",\r\n");
+                    }
+                    else
+                    {
+                        index.Append("-1,\r\n");
+                    }
+                }            
+                w.WriteLine("  };\r\n");
+                            
+                w.WriteLine("\tpublic static readonly int[] i = new int[] {");
+                w.Write(index.ToString());            
+                w.WriteLine("  };");            
+                w.WriteLine("}");            
+                w.Close();
+            }
+
+            //Console.WriteLine(" Ok.");
+            Console.WriteLine("Generating DecompositionKeys.cs file...");
+
+            // Dump compatibility decomposition
+            {
+                StreamWriter w = new StreamWriter("DecompositionKeys.cs", false, Encoding.Default);
+                w.WriteLine("// Do not edit !!!");
+                w.WriteLine("// this file is generated automatically");         
+                w.WriteLine();            
+                w.WriteLine("public class DecompositionKeys");            
+                w.WriteLine("{");
+
+                w.WriteLine("\tpublic static readonly int[] k = new int[] {");            
+                IEnumerator i = new HashSet(compatibilityKeys.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {            
+                    string k = (string)i.Current;
+                    int index = ((int)compatibilityKeys[k]);             
+                    w.WriteLine("    '\\u" + k + "', " + index + ",");
+                }            
+                w.WriteLine("  };");            
+                w.WriteLine("}");            
+                w.Close();
+            }
+
+            //Console.WriteLine(" Ok.");
+            Console.WriteLine("Generating DecompositionMappings.cs file...");
+
+            {
+                StreamWriter w = new StreamWriter("DecompositionMappings.cs", false, Encoding.Default);
+                w.WriteLine("// Do not edit !!!");
+                w.WriteLine("// this file is generated automatically");
+                w.WriteLine();            
+                w.WriteLine("public class DecompositionMappings");            
+                w.WriteLine("{");            
+                w.WriteLine("\tpublic static readonly string[] m = new string[] {");
+                IEnumerator i = compatibilityMappings.GetEnumerator();
+                while (i.MoveNext())
+                {                
+                    string m = (string)i.Current;             
+                    w.WriteLine("    \"" + toString(m) + "\",");
+                }            
+                w.WriteLine("  };");            
+                w.WriteLine("}");            
+                w.Close();
+            }
+
+            //Console.WriteLine(" Ok.");
+            Console.WriteLine("Generating Composition.cs file...");
+
+            // Dump canonical composition
+            {
+                StreamWriter w = new StreamWriter("Composition.cs", false, Encoding.Default);
+                w.WriteLine("// Do not edit !!!");
+                w.WriteLine("// this file is generated automatically");
+                w.WriteLine();            
+                w.WriteLine("public class Composition");            
+                w.WriteLine("{");
+
+                IEnumerator i;
+                int index = 0;
+                           
+                SortedList indices = new SortedList();
+                            
+                i = new HashSet(complexComposition.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string s0 = (string)i.Current;             
+                    indices[(int)System.Convert.ToInt32(s0, 16)] = (int)index;
+                    index++;
+                }
+
+                int multiSecondStart = index;
+                w.WriteLine("\t/* jagged Array */");
+                w.WriteLine("\tpublic static readonly char[][] multiFirst = new char[][] {");
+                //w.WriteLine("  public final static char[][] multiFirst = new char[][] {");
+                i = new HashSet(complexComposition.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string s0 = (string)i.Current;             
+                    SortedList m = (SortedList)complexComposition[s0];
+                                   
+                    SortedList line = new SortedList();
+                    int maxIndex = 1;
+                                    
+                    System.Collections.IEnumerator i2 = new HashSet(m.Keys).GetEnumerator();                
+                    while (i2.MoveNext())
+                    {                    
+                        string s1 = (string)i2.Current;
+                        string k = (string)m[s1];
+                                         
+                        int s1i = (int)System.Convert.ToInt32(s1, 16);
+
+                        if (!indices.ContainsKey(s1i))
+                        {
+                            indices[s1i] = (int)index;
+                            index++;
+                        }
+                        line[indices[s1i]] = k;
+                        maxIndex = System.Math.Max(maxIndex, ((int)indices[s1i]));
+                    }
+
+                    w.Write("\tnew char[] { ");
+                    for (int j = multiSecondStart; j <= maxIndex; j++)
+                    {
+                        if (line.ContainsKey((int)j))
+                        {
+                            string s = (string)line[(int)j];
+                            w.Write("'" + toString(s) + "', ");
+                        }
+                        else
+                        {
+                            //w.Write("       0, ");
+                            w.Write("'" + toString("0000") + "', ");
+                        }
+                    }                
+                    w.WriteLine("},");
+                }            
+                w.WriteLine("  };");
+
+                int singleFirstStart = index;
+
+                w.WriteLine("\tpublic static readonly char[,] singleFirst = new char[,] {");
+                i = new HashSet(singleFirstComposition.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {            
+                    string k = (string)i.Current;
+                    string[] v = ((string[])singleFirstComposition[k]);             
+                    w.WriteLine("    { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },");
+                                    
+                    if (indices.ContainsKey((int)System.Convert.ToInt32(k, 16)))
+                    {
+                        Console.WriteLine(k + " already indexed!");
+                    }
+                                    
+                    indices[(int)System.Convert.ToInt32(k, 16)] = (int)index;
+                    index++;
+                }            
+                w.WriteLine("  };");
+
+                int singleSecondStart = index;
+                            
+                w.WriteLine("\tpublic static readonly char[,] singleSecond = new char[,] {");
+                i = new HashSet(singleSecondComposition.Keys).GetEnumerator();            
+                while (i.MoveNext())
+                {                
+                    string k = (string)i.Current;
+                    string[] v = ((string[])singleSecondComposition[k]);             
+                    w.WriteLine("    { '" + toString(v[0]) + "', '" + toString(v[1]) + "' },");
+                                    
+                    indices[(int)System.Convert.ToInt32(k, 16)] = (int)index;
+                    index++;
+                }            
+                w.WriteLine("  };");
+                            
+                w.WriteLine("\tpublic static readonly int multiSecondStart = " + multiSecondStart + ";");            
+                w.WriteLine("\tpublic static readonly int singleFirstStart = " + singleFirstStart + ";");            
+                w.WriteLine("\tpublic static readonly int singleSecondStart = " + singleSecondStart + ";");
+
+                System.Text.StringBuilder compositionPages = new System.Text.StringBuilder();
+                            
+                w.WriteLine("\tpublic static readonly int[] composePage = new int[] {");
+                int pageCount = 0;
+                for (int j = 0; j * 256 < composeLookupMax + 255; j++)
+                {
+                    bool empty = true;
+                    StringBuilder page = new StringBuilder();
+                    for (int k = 0; k < 256; k++)
+                    {
+                        if (k % 16 == 0)
+                        {
+                            page.Append("\r\n      ");
+                        }
+                        if (indices.ContainsKey((int)(j * 256 + k)))
+                        {
+                            page.Append(indices[(int)(j * 256 + k)]);
+                            page.Append(", ");
+                            empty = false;
+                        }
+                        else
+                        {
+                            page.Append("-1, ");
+                        }
+                    }
+
+                    if (empty)
+                    {                    
+                        w.WriteLine("    -1,");
+                    }
+                    else
+                    {                 
+                        w.WriteLine("    " + pageCount + ",");
+                        compositionPages.Append("\t{");
+                        compositionPages.Append(page);
+                        compositionPages.Append("\r\n    },\r\n");
+                        pageCount++;
+                    }
+                }            
+                w.WriteLine("  };");
+                //w.WriteLine("\t/* jagged Array */");                        
+                w.WriteLine("\tpublic static readonly int[,] composeData = new int[,] {");
+                w.Write(compositionPages);            
+                w.WriteLine("  };");                        
+                w.WriteLine("}");            
+                w.Close();
+            }
+
+            //Console.WriteLine(" Ok.");             
+            Console.WriteLine("Finished!");
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/HashSet.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/HashSet.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/HashSet.cs (revision 580)
@@ -0,0 +1,90 @@
+/// <summary> Copyright (C) 2004  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+using System;
+using System.Collections;
+
+namespace gnu.inet.encoding.misc
+{
+    /// <summary>
+    /// HashSet class.
+    /// </summary>    
+    public class HashSet : ArrayList
+    {
+        public HashSet() : base()
+        {
+        }
+
+        public HashSet(System.Collections.ICollection c)
+        {
+            this.AddAll(c);
+        }
+
+        public HashSet(int capacity) : base(capacity)
+        {
+        }
+
+        /// <summary>
+        /// Adds a new element to the ArrayList if it is not already present.
+        /// </summary>		
+        /// <param name="obj">Element to insert to the ArrayList.</param>
+        /// <returns>Returns true if the new element was inserted, false otherwise.</returns>
+        new public virtual bool Add(System.Object obj)
+        {
+            bool inserted;
+
+            if ((inserted = this.Contains(obj)) == false)
+            {
+                base.Add(obj);
+            }
+
+            return !inserted;
+        }
+
+        /// <summary>
+        /// Adds all the elements of the specified collection that are not present to the list.
+        /// </summary>
+        /// <param name="c">Collection where the new elements will be added</param>
+        /// <returns>Returns true if at least one element was added, false otherwise.</returns>
+        public bool AddAll(System.Collections.ICollection c)
+        {
+            System.Collections.IEnumerator e = new System.Collections.ArrayList(c).GetEnumerator();
+            bool added = false;
+
+            while (e.MoveNext() == true)
+            {
+                if (this.Add(e.Current) == true)
+                    added = true;
+            }
+
+            return added;
+        }
+
+        /// <summary>
+        /// Returns a copy of the HashSet instance.
+        /// </summary>		
+        /// <returns>Returns a shallow copy of the current HashSet.</returns>
+        public override System.Object Clone()
+        {
+            return base.MemberwiseClone();
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateRFC3454.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateRFC3454.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/GenerateRFC3454.cs (revision 580)
@@ -0,0 +1,293 @@
+/// <summary> Copyright (C) 2004, 2007  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+using System;
+using System.IO;
+using System.Text;
+
+namespace gnu.inet.encoding.misc
+{
+    public class GenerateRFC3454
+    {
+        internal const string FILE_RFC3454  = "rfc3454.txt";
+        internal const string FILE_OUTPUT   = "RFC3454.cs";
+                
+        public static void Generate()
+        {
+            if (!File.Exists(FILE_RFC3454))
+            {
+                Console.WriteLine("Unable to find rfc3454.txt.");
+                Console.WriteLine("Please download this file from:");
+                Console.WriteLine("http://www.ietf.org/rfc/rfc3454.txt");
+                
+                return;                
+            }
+
+            Console.WriteLine("Generating " + FILE_OUTPUT + " file...");
+                        
+            
+            StreamReader r = new StreamReader(FILE_RFC3454);            
+            StreamWriter w = new StreamWriter(FILE_OUTPUT);
+
+            w.WriteLine("// Do not edit !!!");
+            w.WriteLine("// this file is generated automatically");
+            w.WriteLine();
+            w.WriteLine("using System;");
+            w.WriteLine();
+            w.WriteLine("namespace Gnu.Inet.Encoding{");
+            w.WriteLine();
+            w.WriteLine("public class RFC3454");
+
+            w.WriteLine("{");
+
+            int n = 0;
+
+            string t = null;
+            System.Text.StringBuilder o1 = null;
+            System.Text.StringBuilder o2 = null;
+
+            while (true)
+            {
+                string line = r.ReadLine();
+                string l = line;
+                
+                if (null == l)
+                {
+                    break;
+                }
+                l = l.Trim();
+
+                if (l.Equals(""))
+                {
+                    // Ignore empty line
+                }
+                else if (-1 != l.IndexOf("\u000c"))
+                {
+                    // Ignore FF
+                }
+                else if (0 == l.IndexOf("RFC"))
+                {
+                    // Ignore page header
+                }
+                else if (0 == l.IndexOf("Hoffman & Blanchet"))
+                {
+                    // Ignore page footer
+                }
+                else if (-1 != l.IndexOf("----- Start Table "))
+                {
+                    // Start of a table
+                    t = l.Substring(l.IndexOf("Table") + 6, (l.LastIndexOf("-----") - 1) - (l.IndexOf("Table") + 6));
+                    o1 = new System.Text.StringBuilder();
+                    o2 = new System.Text.StringBuilder();
+                }
+                else if (-1 != l.IndexOf("----- End Table "))
+                {
+                    // End of a table
+                    if ("A.1".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] A1 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("B.1".Equals(t))
+                    {
+                        w.WriteLine("  public static char[] B1 = new char[] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("B.2".Equals(t))
+                    {
+                        w.WriteLine("  public static char[] B2search = new char[] {\r\n" + o1.ToString() + "  };\r\n");
+                        w.WriteLine("  public static string[] B2replace = new string[] {\r\n" + o2.ToString() + "  };\r\n");
+                    }
+                    else if ("B.3".Equals(t))
+                    {
+                        w.WriteLine("  public static char[] B3search = new char[] {\r\n" + o1.ToString() + "  };\r\n");
+                        w.WriteLine("  public static string[] B3replace = new string[] {\r\n" + o2.ToString() + "  };\r\n");
+                    }
+                    else if ("C.1.1".Equals(t))
+                    {
+                        w.WriteLine("  public static char[] C11 = new char[] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.1.2".Equals(t))
+                    {
+                        w.WriteLine("  public static char[] C12 = new char[] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.2.1".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C21 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.2.2".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C22 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.3".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C3 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.4".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C4 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.5".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C5 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.6".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C6 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.7".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C7 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("C.8".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] C8 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("D.1".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] D1 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    else if ("D.2".Equals(t))
+                    {
+                        w.WriteLine("  public static char[][] D2 = new char[][] {\r\n" + o1.ToString() + "  };\r\n");
+                    }
+                    t = null;
+                }
+                else if (null != t)
+                {
+                    // Filter comments
+                    if (-1 != l.LastIndexOf(";"))
+                    {
+                        string c = l.Substring(l.LastIndexOf(";")).Trim();
+                        try
+                        {                            
+                           Convert.ToInt32(c, 16);
+                        }
+                        catch
+                        {
+                            l = l.Substring(0, (l.LastIndexOf(";")) - (0));
+                        }
+                    }
+
+                    if ("A.1".Equals(t))
+                    {
+                        if (4 == l.Length)
+                        {
+                            o1.Append("    new char[] { '\\u");
+                            o1.Append(l);
+                            o1.Append("' },");
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");
+                        }
+                        else if (5 == l.Length)
+                        {
+                            //Char
+                            o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n");
+                            //Console.WriteLine("Skip: " + l);                            
+                            // Skip characters outside the range of Java unicode
+                        }
+                        else if (9 == l.Length)
+                        {
+                            o1.Append("    new char[] { '\\u");
+                            o1.Append(l.Substring(0, (4) - (0)));
+                            o1.Append("', '\\u");
+                            o1.Append(l.Substring(5, (9) - (5)));
+                            o1.Append("' },");
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");
+                        }
+                        else if (11 == l.Length)
+                        {
+                            o1.Append("\t/* Skip characters outside the range of .NET unicode " + line.Trim() + " */\n");
+                            //o1.AppendLine("// " + l);
+                            // Console.WriteLine("Skip: " + l);
+                            // Skip characters outside the range of Java unicode
+                        }
+                        else
+                        {
+                            Console.WriteLine("Unknown format of A.1 line: " + l);
+                        }
+                    }
+                    else if ("B.1".Equals(t))
+                    {
+                        Tokenizer tok = new Tokenizer(l, " ;");
+                        o1.Append("    '\\u" + tok.NextToken() + "',");
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");
+                    }
+                    else if ("B.2".Equals(t) || "B.3".Equals(t))
+                    {
+                        Tokenizer tok = new Tokenizer(l, "; ");
+                        string c = tok.NextToken();
+                        if (c.Length == 4)
+                        {
+                            o1.Append("    '\\u" + c + "',");
+                            o1.Append("\t/*" + line.Trim() + "*/\r\n");
+                            if (tok.HasMoreTokens())
+                            {
+                                o2.Append("    \"");
+                                while (tok.HasMoreTokens())
+                                {
+                                    o2.Append("\\u" + tok.NextToken());
+                                }
+                                o2.Append("\",");
+                                o2.Append("\t/*" + line.Trim() + "*/\r\n");
+                            }
+                            else
+                            {
+                                o2.Append("    null,");
+                                o2.Append("\t/*" + line.Trim() + "*/\r\n");
+                            }
+                        }
+                    }
+                    else if ("C.1.1".Equals(t))
+                    {
+                        o1.Append("    '\\u" + l + "',");
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");
+                    }
+                    else if ("C.1.2".Equals(t))
+                    {
+                        o1.Append("    '\\u" + l + "',");
+                        o1.Append("\t/* " + line.Trim() + " */\r\n");
+                    }
+                    else if ("C.2.1".Equals(t) || "C.2.2".Equals(t) || "C.3".Equals(t) || "C.4".Equals(t) || "C.5".Equals(t) || "C.6".Equals(t) || "C.7".Equals(t) || "C.8".Equals(t) || "D.1".Equals(t) || "D.2".Equals(t))
+                    {
+                        if (4 == l.Length)
+                        {
+                            o1.Append("    new char[] { '\\u" + l + "' },");
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");
+                        }
+                        else if (9 == l.Length)
+                        {
+                            o1.Append("    new char[] { '\\u");
+                            o1.Append(l.Substring(0, (4) - (0)));
+                            o1.Append("', '\\u");
+                            o1.Append(l.Substring(5, (9) - (5)));
+                            o1.Append("' },");
+                            o1.Append("\t/* " + line.Trim() + " */\r\n");
+                        }
+                    }
+                }
+
+                n++;
+            }
+
+            w.WriteLine("}");
+            w.WriteLine("}");
+            w.Close();            
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Program.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Program.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Program.cs (revision 580)
@@ -0,0 +1,38 @@
+/// <summary> Copyright (C) 2004  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+using System;
+
+namespace gnu.inet.encoding.misc
+{
+    class Program
+    {
+        /// <summary>
+        /// Main entry point of this console app
+        /// </summary>
+        /// <param name="args"></param>
+        static void Main(string[] args)
+        {
+            GenerateRFC3454.Generate();
+            GenerateNFKC.Generate();
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Tokenizer.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Tokenizer.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/generate/Tokenizer.cs (revision 580)
@@ -0,0 +1,222 @@
+/// <summary> Copyright (C) 2004  Free Software Foundation, Inc.
+/// *
+/// Author: Alexander Gnauck AG-Software
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+using System;
+using System.Collections;
+using System.Text;
+
+namespace gnu.inet.encoding.misc
+{
+    /// <summary>
+    /// The class performs token processing in strings
+    /// </summary>
+    public class Tokenizer : IEnumerator
+    {
+        /// Position over the string
+        private long currentPos = 0;
+
+        /// Include demiliters in the results.
+        private bool includeDelims = false;
+
+        /// Char representation of the String to tokenize.
+        private char[] chars = null;
+
+        //The tokenizer uses the default delimiter set: the space character, the tab character, the newline character, and the carriage-return character and the form-feed character
+        private string delimiters = " \t\n\r\f";
+
+        /// <summary>
+        /// Initializes a new class instance with a specified string to process
+        /// </summary>
+        /// <param name="source">String to tokenize</param>
+        public Tokenizer(string source)
+        {
+            this.chars = source.ToCharArray();
+        }
+
+        /// <summary>
+        /// Initializes a new class instance with a specified string to process
+        /// and the specified token delimiters to use
+        /// </summary>
+        /// <param name="source">String to tokenize</param>
+        /// <param name="delimiters">String containing the delimiters</param>
+        public Tokenizer(string source, string delimiters)
+            : this(source)
+        {
+            this.delimiters = delimiters;
+        }
+
+
+        /// <summary>
+        /// Initializes a new class instance with a specified string to process, the specified token 
+        /// delimiters to use, and whether the delimiters must be included in the results.
+        /// </summary>
+        /// <param name="source">String to tokenize</param>
+        /// <param name="delimiters">String containing the delimiters</param>
+        /// <param name="includeDelims">Determines if delimiters are included in the results.</param>
+        public Tokenizer(string source, string delimiters, bool includeDelims)
+            : this(source, delimiters)
+        {
+            this.includeDelims = includeDelims;
+        }
+
+
+        /// <summary>
+        /// Returns the next token from the token list
+        /// </summary>
+        /// <returns>The string value of the token</returns>
+        public string NextToken()
+        {
+            return NextToken(this.delimiters);
+        }
+
+        /// <summary>
+        /// Returns the next token from the source string, using the provided
+        /// token delimiters
+        /// </summary>
+        /// <param name="delimiters">String containing the delimiters to use</param>
+        /// <returns>The string value of the token</returns>
+        public string NextToken(string delimiters)
+        {
+            //According to documentation, the usage of the received delimiters should be temporary (only for this call).
+            //However, it seems it is not true, so the following line is necessary.
+            this.delimiters = delimiters;
+
+            //at the end 
+            if (this.currentPos == this.chars.Length)
+                throw new System.ArgumentOutOfRangeException();
+            //if over a delimiter and delimiters must be returned
+            else if ((System.Array.IndexOf(delimiters.ToCharArray(), chars[this.currentPos]) != -1)
+                     && this.includeDelims)
+                return "" + this.chars[this.currentPos++];
+            //need to get the token wo delimiters.
+            else
+                return nextToken(delimiters.ToCharArray());
+        }
+
+        //Returns the nextToken wo delimiters
+        private string nextToken(char[] delimiters)
+        {
+            string token = "";
+            long pos = this.currentPos;
+
+            //skip possible delimiters
+            while (System.Array.IndexOf(delimiters, this.chars[currentPos]) != -1)
+                //The last one is a delimiter (i.e there is no more tokens)
+                if (++this.currentPos == this.chars.Length)
+                {
+                    this.currentPos = pos;
+                    throw new System.ArgumentOutOfRangeException();
+                }
+
+            //getting the token
+            while (System.Array.IndexOf(delimiters, this.chars[this.currentPos]) == -1)
+            {
+		// don't use += to work around bug in compiler
+		// see https://bugzilla.novell.com/show_bug.cgi?id=372483
+                token = token + this.chars[this.currentPos];
+                //the last one is not a delimiter
+                if (++this.currentPos == this.chars.Length)
+                    break;
+            }
+            return token;
+        }
+
+
+        /// <summary>
+        /// Determines if there are more tokens to return from the source string
+        /// </summary>
+        /// <returns>True or false, depending if there are more tokens</returns>
+        public bool HasMoreTokens()
+        {
+            //keeping the current pos
+            long pos = this.currentPos;
+
+            try
+            {
+                this.NextToken();
+            }
+            catch (System.ArgumentOutOfRangeException)
+            {
+                return false;
+            }
+            finally
+            {
+                this.currentPos = pos;
+            }
+            return true;
+        }
+
+        /// <summary>
+        /// Remaining tokens count
+        /// </summary>
+        public int Count
+        {
+            get
+            {
+                //keeping the current pos
+                long pos = this.currentPos;
+                int i = 0;
+
+                try
+                {
+                    while (true)
+                    {
+                        this.NextToken();
+                        i++;
+                    }
+                }
+                catch (System.ArgumentOutOfRangeException)
+                {
+                    this.currentPos = pos;
+                    return i;
+                }
+            }
+        }
+
+        /// <summary>
+        ///  Performs the same action as NextToken.
+        /// </summary>
+        public System.Object Current
+        {
+            get
+            {
+                return (Object)this.NextToken();
+            }
+        }
+
+        /// <summary>
+        //  Performs the same action as HasMoreTokens.
+        /// </summary>
+        /// <returns>True or false, depending if there are more tokens</returns>
+        public bool MoveNext()
+        {
+            return this.HasMoreTokens();
+        }
+
+        /// <summary>
+        /// Does nothing.
+        /// </summary>
+        public void Reset()
+        {
+            ;
+        }
+    }
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionKeys.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionKeys.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/DecompositionKeys.cs (revision 580)
@@ -0,0 +1,3605 @@
+// Do not edit !!!
+// this file is generated automatically
+
+public class DecompositionKeys
+{
+	public static readonly int[] k = new int[] {
+    '\u00A0', 0,
+    '\u00A8', 1,
+    '\u00AA', 2,
+    '\u00AF', 3,
+    '\u00B2', 4,
+    '\u00B3', 5,
+    '\u00B4', 6,
+    '\u00B5', 7,
+    '\u00B8', 8,
+    '\u00B9', 9,
+    '\u00BA', 10,
+    '\u00BC', 11,
+    '\u00BD', 12,
+    '\u00BE', 13,
+    '\u00C0', 14,
+    '\u00C1', 15,
+    '\u00C2', 16,
+    '\u00C3', 17,
+    '\u00C4', 18,
+    '\u00C5', 19,
+    '\u00C7', 20,
+    '\u00C8', 21,
+    '\u00C9', 22,
+    '\u00CA', 23,
+    '\u00CB', 24,
+    '\u00CC', 25,
+    '\u00CD', 26,
+    '\u00CE', 27,
+    '\u00CF', 28,
+    '\u00D1', 29,
+    '\u00D2', 30,
+    '\u00D3', 31,
+    '\u00D4', 32,
+    '\u00D5', 33,
+    '\u00D6', 34,
+    '\u00D9', 35,
+    '\u00DA', 36,
+    '\u00DB', 37,
+    '\u00DC', 38,
+    '\u00DD', 39,
+    '\u00E0', 40,
+    '\u00E1', 41,
+    '\u00E2', 42,
+    '\u00E3', 43,
+    '\u00E4', 44,
+    '\u00E5', 45,
+    '\u00E7', 46,
+    '\u00E8', 47,
+    '\u00E9', 48,
+    '\u00EA', 49,
+    '\u00EB', 50,
+    '\u00EC', 51,
+    '\u00ED', 52,
+    '\u00EE', 53,
+    '\u00EF', 54,
+    '\u00F1', 55,
+    '\u00F2', 56,
+    '\u00F3', 57,
+    '\u00F4', 58,
+    '\u00F5', 59,
+    '\u00F6', 60,
+    '\u00F9', 61,
+    '\u00FA', 62,
+    '\u00FB', 63,
+    '\u00FC', 64,
+    '\u00FD', 65,
+    '\u00FF', 66,
+    '\u0100', 67,
+    '\u0101', 68,
+    '\u0102', 69,
+    '\u0103', 70,
+    '\u0104', 71,
+    '\u0105', 72,
+    '\u0106', 73,
+    '\u0107', 74,
+    '\u0108', 75,
+    '\u0109', 76,
+    '\u010A', 77,
+    '\u010B', 78,
+    '\u010C', 79,
+    '\u010D', 80,
+    '\u010E', 81,
+    '\u010F', 82,
+    '\u0112', 83,
+    '\u0113', 84,
+    '\u0114', 85,
+    '\u0115', 86,
+    '\u0116', 87,
+    '\u0117', 88,
+    '\u0118', 89,
+    '\u0119', 90,
+    '\u011A', 91,
+    '\u011B', 92,
+    '\u011C', 93,
+    '\u011D', 94,
+    '\u011E', 95,
+    '\u011F', 96,
+    '\u0120', 97,
+    '\u0121', 98,
+    '\u0122', 99,
+    '\u0123', 100,
+    '\u0124', 101,
+    '\u0125', 102,
+    '\u0128', 103,
+    '\u0129', 104,
+    '\u012A', 105,
+    '\u012B', 106,
+    '\u012C', 107,
+    '\u012D', 108,
+    '\u012E', 109,
+    '\u012F', 110,
+    '\u0130', 111,
+    '\u0132', 112,
+    '\u0133', 113,
+    '\u0134', 114,
+    '\u0135', 115,
+    '\u0136', 116,
+    '\u0137', 117,
+    '\u0139', 118,
+    '\u013A', 119,
+    '\u013B', 120,
+    '\u013C', 121,
+    '\u013D', 122,
+    '\u013E', 123,
+    '\u013F', 124,
+    '\u0140', 125,
+    '\u0143', 126,
+    '\u0144', 127,
+    '\u0145', 128,
+    '\u0146', 129,
+    '\u0147', 130,
+    '\u0148', 131,
+    '\u0149', 132,
+    '\u014C', 133,
+    '\u014D', 134,
+    '\u014E', 135,
+    '\u014F', 136,
+    '\u0150', 137,
+    '\u0151', 138,
+    '\u0154', 139,
+    '\u0155', 140,
+    '\u0156', 141,
+    '\u0157', 142,
+    '\u0158', 143,
+    '\u0159', 144,
+    '\u015A', 145,
+    '\u015B', 146,
+    '\u015C', 147,
+    '\u015D', 148,
+    '\u015E', 149,
+    '\u015F', 150,
+    '\u0160', 151,
+    '\u0161', 152,
+    '\u0162', 153,
+    '\u0163', 154,
+    '\u0164', 155,
+    '\u0165', 156,
+    '\u0168', 157,
+    '\u0169', 158,
+    '\u016A', 159,
+    '\u016B', 160,
+    '\u016C', 161,
+    '\u016D', 162,
+    '\u016E', 163,
+    '\u016F', 164,
+    '\u0170', 165,
+    '\u0171', 166,
+    '\u0172', 167,
+    '\u0173', 168,
+    '\u0174', 169,
+    '\u0175', 170,
+    '\u0176', 171,
+    '\u0177', 172,
+    '\u0178', 173,
+    '\u0179', 174,
+    '\u017A', 175,
+    '\u017B', 176,
+    '\u017C', 177,
+    '\u017D', 178,
+    '\u017E', 179,
+    '\u017F', 180,
+    '\u01A0', 181,
+    '\u01A1', 182,
+    '\u01AF', 183,
+    '\u01B0', 184,
+    '\u01C4', 185,
+    '\u01C5', 186,
+    '\u01C6', 187,
+    '\u01C7', 188,
+    '\u01C8', 189,
+    '\u01C9', 190,
+    '\u01CA', 191,
+    '\u01CB', 192,
+    '\u01CC', 193,
+    '\u01CD', 194,
+    '\u01CE', 195,
+    '\u01CF', 196,
+    '\u01D0', 197,
+    '\u01D1', 198,
+    '\u01D2', 199,
+    '\u01D3', 200,
+    '\u01D4', 201,
+    '\u01D5', 202,
+    '\u01D6', 203,
+    '\u01D7', 204,
+    '\u01D8', 205,
+    '\u01D9', 206,
+    '\u01DA', 207,
+    '\u01DB', 208,
+    '\u01DC', 209,
+    '\u01DE', 210,
+    '\u01DF', 211,
+    '\u01E0', 212,
+    '\u01E1', 213,
+    '\u01E2', 214,
+    '\u01E3', 215,
+    '\u01E6', 216,
+    '\u01E7', 217,
+    '\u01E8', 218,
+    '\u01E9', 219,
+    '\u01EA', 220,
+    '\u01EB', 221,
+    '\u01EC', 222,
+    '\u01ED', 223,
+    '\u01EE', 224,
+    '\u01EF', 225,
+    '\u01F0', 226,
+    '\u01F1', 227,
+    '\u01F2', 228,
+    '\u01F3', 229,
+    '\u01F4', 230,
+    '\u01F5', 231,
+    '\u01F8', 232,
+    '\u01F9', 233,
+    '\u01FA', 234,
+    '\u01FB', 235,
+    '\u01FC', 236,
+    '\u01FD', 237,
+    '\u01FE', 238,
+    '\u01FF', 239,
+    '\u0200', 240,
+    '\u0201', 241,
+    '\u0202', 242,
+    '\u0203', 243,
+    '\u0204', 244,
+    '\u0205', 245,
+    '\u0206', 246,
+    '\u0207', 247,
+    '\u0208', 248,
+    '\u0209', 249,
+    '\u020A', 250,
+    '\u020B', 251,
+    '\u020C', 252,
+    '\u020D', 253,
+    '\u020E', 254,
+    '\u020F', 255,
+    '\u0210', 256,
+    '\u0211', 257,
+    '\u0212', 258,
+    '\u0213', 259,
+    '\u0214', 260,
+    '\u0215', 261,
+    '\u0216', 262,
+    '\u0217', 263,
+    '\u0218', 264,
+    '\u0219', 265,
+    '\u021A', 266,
+    '\u021B', 267,
+    '\u021E', 268,
+    '\u021F', 269,
+    '\u0226', 270,
+    '\u0227', 271,
+    '\u0228', 272,
+    '\u0229', 273,
+    '\u022A', 274,
+    '\u022B', 275,
+    '\u022C', 276,
+    '\u022D', 277,
+    '\u022E', 278,
+    '\u022F', 279,
+    '\u0230', 280,
+    '\u0231', 281,
+    '\u0232', 282,
+    '\u0233', 283,
+    '\u02B0', 284,
+    '\u02B1', 285,
+    '\u02B2', 286,
+    '\u02B3', 287,
+    '\u02B4', 288,
+    '\u02B5', 289,
+    '\u02B6', 290,
+    '\u02B7', 291,
+    '\u02B8', 292,
+    '\u02D8', 293,
+    '\u02D9', 294,
+    '\u02DA', 295,
+    '\u02DB', 296,
+    '\u02DC', 297,
+    '\u02DD', 298,
+    '\u02E0', 299,
+    '\u02E1', 300,
+    '\u02E2', 180,
+    '\u02E3', 301,
+    '\u02E4', 302,
+    '\u0340', 303,
+    '\u0341', 304,
+    '\u0343', 305,
+    '\u0344', 306,
+    '\u0374', 307,
+    '\u037A', 308,
+    '\u037E', 309,
+    '\u0384', 6,
+    '\u0385', 310,
+    '\u0386', 311,
+    '\u0387', 312,
+    '\u0388', 313,
+    '\u0389', 314,
+    '\u038A', 315,
+    '\u038C', 316,
+    '\u038E', 317,
+    '\u038F', 318,
+    '\u0390', 319,
+    '\u03AA', 320,
+    '\u03AB', 321,
+    '\u03AC', 322,
+    '\u03AD', 323,
+    '\u03AE', 324,
+    '\u03AF', 325,
+    '\u03B0', 326,
+    '\u03CA', 327,
+    '\u03CB', 328,
+    '\u03CC', 329,
+    '\u03CD', 330,
+    '\u03CE', 331,
+    '\u03D0', 332,
+    '\u03D1', 333,
+    '\u03D2', 334,
+    '\u03D3', 317,
+    '\u03D4', 321,
+    '\u03D5', 335,
+    '\u03D6', 336,
+    '\u03F0', 337,
+    '\u03F1', 338,
+    '\u03F2', 339,
+    '\u03F4', 340,
+    '\u03F5', 341,
+    '\u0400', 342,
+    '\u0401', 343,
+    '\u0403', 344,
+    '\u0407', 345,
+    '\u040C', 346,
+    '\u040D', 347,
+    '\u040E', 348,
+    '\u0419', 349,
+    '\u0439', 350,
+    '\u0450', 351,
+    '\u0451', 352,
+    '\u0453', 353,
+    '\u0457', 354,
+    '\u045C', 355,
+    '\u045D', 356,
+    '\u045E', 357,
+    '\u0476', 358,
+    '\u0477', 359,
+    '\u04C1', 360,
+    '\u04C2', 361,
+    '\u04D0', 362,
+    '\u04D1', 363,
+    '\u04D2', 364,
+    '\u04D3', 365,
+    '\u04D6', 366,
+    '\u04D7', 367,
+    '\u04DA', 368,
+    '\u04DB', 369,
+    '\u04DC', 370,
+    '\u04DD', 371,
+    '\u04DE', 372,
+    '\u04DF', 373,
+    '\u04E2', 374,
+    '\u04E3', 375,
+    '\u04E4', 376,
+    '\u04E5', 377,
+    '\u04E6', 378,
+    '\u04E7', 379,
+    '\u04EA', 380,
+    '\u04EB', 381,
+    '\u04EC', 382,
+    '\u04ED', 383,
+    '\u04EE', 384,
+    '\u04EF', 385,
+    '\u04F0', 386,
+    '\u04F1', 387,
+    '\u04F2', 388,
+    '\u04F3', 389,
+    '\u04F4', 390,
+    '\u04F5', 391,
+    '\u04F8', 392,
+    '\u04F9', 393,
+    '\u0587', 394,
+    '\u0622', 395,
+    '\u0623', 396,
+    '\u0624', 397,
+    '\u0625', 398,
+    '\u0626', 399,
+    '\u0675', 400,
+    '\u0676', 401,
+    '\u0677', 402,
+    '\u0678', 403,
+    '\u06C0', 404,
+    '\u06C2', 405,
+    '\u06D3', 406,
+    '\u0929', 407,
+    '\u0931', 408,
+    '\u0934', 409,
+    '\u0958', 410,
+    '\u0959', 411,
+    '\u095A', 412,
+    '\u095B', 413,
+    '\u095C', 414,
+    '\u095D', 415,
+    '\u095E', 416,
+    '\u095F', 417,
+    '\u09CB', 418,
+    '\u09CC', 419,
+    '\u09DC', 420,
+    '\u09DD', 421,
+    '\u09DF', 422,
+    '\u0A33', 423,
+    '\u0A36', 424,
+    '\u0A59', 425,
+    '\u0A5A', 426,
+    '\u0A5B', 427,
+    '\u0A5E', 428,
+    '\u0B48', 429,
+    '\u0B4B', 430,
+    '\u0B4C', 431,
+    '\u0B5C', 432,
+    '\u0B5D', 433,
+    '\u0B94', 434,
+    '\u0BCA', 435,
+    '\u0BCB', 436,
+    '\u0BCC', 437,
+    '\u0C48', 438,
+    '\u0CC0', 439,
+    '\u0CC7', 440,
+    '\u0CC8', 441,
+    '\u0CCA', 442,
+    '\u0CCB', 443,
+    '\u0D4A', 444,
+    '\u0D4B', 445,
+    '\u0D4C', 446,
+    '\u0DDA', 447,
+    '\u0DDC', 448,
+    '\u0DDD', 449,
+    '\u0DDE', 450,
+    '\u0E33', 451,
+    '\u0EB3', 452,
+    '\u0EDC', 453,
+    '\u0EDD', 454,
+    '\u0F0C', 455,
+    '\u0F43', 456,
+    '\u0F4D', 457,
+    '\u0F52', 458,
+    '\u0F57', 459,
+    '\u0F5C', 460,
+    '\u0F69', 461,
+    '\u0F73', 462,
+    '\u0F75', 463,
+    '\u0F76', 464,
+    '\u0F77', 465,
+    '\u0F78', 466,
+    '\u0F79', 467,
+    '\u0F81', 468,
+    '\u0F93', 469,
+    '\u0F9D', 470,
+    '\u0FA2', 471,
+    '\u0FA7', 472,
+    '\u0FAC', 473,
+    '\u0FB9', 474,
+    '\u1026', 475,
+    '\u1E00', 476,
+    '\u1E01', 477,
+    '\u1E02', 478,
+    '\u1E03', 479,
+    '\u1E04', 480,
+    '\u1E05', 481,
+    '\u1E06', 482,
+    '\u1E07', 483,
+    '\u1E08', 484,
+    '\u1E09', 485,
+    '\u1E0A', 486,
+    '\u1E0B', 487,
+    '\u1E0C', 488,
+    '\u1E0D', 489,
+    '\u1E0E', 490,
+    '\u1E0F', 491,
+    '\u1E10', 492,
+    '\u1E11', 493,
+    '\u1E12', 494,
+    '\u1E13', 495,
+    '\u1E14', 496,
+    '\u1E15', 497,
+    '\u1E16', 498,
+    '\u1E17', 499,
+    '\u1E18', 500,
+    '\u1E19', 501,
+    '\u1E1A', 502,
+    '\u1E1B', 503,
+    '\u1E1C', 504,
+    '\u1E1D', 505,
+    '\u1E1E', 506,
+    '\u1E1F', 507,
+    '\u1E20', 508,
+    '\u1E21', 509,
+    '\u1E22', 510,
+    '\u1E23', 511,
+    '\u1E24', 512,
+    '\u1E25', 513,
+    '\u1E26', 514,
+    '\u1E27', 515,
+    '\u1E28', 516,
+    '\u1E29', 517,
+    '\u1E2A', 518,
+    '\u1E2B', 519,
+    '\u1E2C', 520,
+    '\u1E2D', 521,
+    '\u1E2E', 522,
+    '\u1E2F', 523,
+    '\u1E30', 524,
+    '\u1E31', 525,
+    '\u1E32', 526,
+    '\u1E33', 527,
+    '\u1E34', 528,
+    '\u1E35', 529,
+    '\u1E36', 530,
+    '\u1E37', 531,
+    '\u1E38', 532,
+    '\u1E39', 533,
+    '\u1E3A', 534,
+    '\u1E3B', 535,
+    '\u1E3C', 536,
+    '\u1E3D', 537,
+    '\u1E3E', 538,
+    '\u1E3F', 539,
+    '\u1E40', 540,
+    '\u1E41', 541,
+    '\u1E42', 542,
+    '\u1E43', 543,
+    '\u1E44', 544,
+    '\u1E45', 545,
+    '\u1E46', 546,
+    '\u1E47', 547,
+    '\u1E48', 548,
+    '\u1E49', 549,
+    '\u1E4A', 550,
+    '\u1E4B', 551,
+    '\u1E4C', 552,
+    '\u1E4D', 553,
+    '\u1E4E', 554,
+    '\u1E4F', 555,
+    '\u1E50', 556,
+    '\u1E51', 557,
+    '\u1E52', 558,
+    '\u1E53', 559,
+    '\u1E54', 560,
+    '\u1E55', 561,
+    '\u1E56', 562,
+    '\u1E57', 563,
+    '\u1E58', 564,
+    '\u1E59', 565,
+    '\u1E5A', 566,
+    '\u1E5B', 567,
+    '\u1E5C', 568,
+    '\u1E5D', 569,
+    '\u1E5E', 570,
+    '\u1E5F', 571,
+    '\u1E60', 572,
+    '\u1E61', 573,
+    '\u1E62', 574,
+    '\u1E63', 575,
+    '\u1E64', 576,
+    '\u1E65', 577,
+    '\u1E66', 578,
+    '\u1E67', 579,
+    '\u1E68', 580,
+    '\u1E69', 581,
+    '\u1E6A', 582,
+    '\u1E6B', 583,
+    '\u1E6C', 584,
+    '\u1E6D', 585,
+    '\u1E6E', 586,
+    '\u1E6F', 587,
+    '\u1E70', 588,
+    '\u1E71', 589,
+    '\u1E72', 590,
+    '\u1E73', 591,
+    '\u1E74', 592,
+    '\u1E75', 593,
+    '\u1E76', 594,
+    '\u1E77', 595,
+    '\u1E78', 596,
+    '\u1E79', 597,
+    '\u1E7A', 598,
+    '\u1E7B', 599,
+    '\u1E7C', 600,
+    '\u1E7D', 601,
+    '\u1E7E', 602,
+    '\u1E7F', 603,
+    '\u1E80', 604,
+    '\u1E81', 605,
+    '\u1E82', 606,
+    '\u1E83', 607,
+    '\u1E84', 608,
+    '\u1E85', 609,
+    '\u1E86', 610,
+    '\u1E87', 611,
+    '\u1E88', 612,
+    '\u1E89', 613,
+    '\u1E8A', 614,
+    '\u1E8B', 615,
+    '\u1E8C', 616,
+    '\u1E8D', 617,
+    '\u1E8E', 618,
+    '\u1E8F', 619,
+    '\u1E90', 620,
+    '\u1E91', 621,
+    '\u1E92', 622,
+    '\u1E93', 623,
+    '\u1E94', 624,
+    '\u1E95', 625,
+    '\u1E96', 626,
+    '\u1E97', 627,
+    '\u1E98', 628,
+    '\u1E99', 629,
+    '\u1E9A', 630,
+    '\u1E9B', 573,
+    '\u1EA0', 631,
+    '\u1EA1', 632,
+    '\u1EA2', 633,
+    '\u1EA3', 634,
+    '\u1EA4', 635,
+    '\u1EA5', 636,
+    '\u1EA6', 637,
+    '\u1EA7', 638,
+    '\u1EA8', 639,
+    '\u1EA9', 640,
+    '\u1EAA', 641,
+    '\u1EAB', 642,
+    '\u1EAC', 643,
+    '\u1EAD', 644,
+    '\u1EAE', 645,
+    '\u1EAF', 646,
+    '\u1EB0', 647,
+    '\u1EB1', 648,
+    '\u1EB2', 649,
+    '\u1EB3', 650,
+    '\u1EB4', 651,
+    '\u1EB5', 652,
+    '\u1EB6', 653,
+    '\u1EB7', 654,
+    '\u1EB8', 655,
+    '\u1EB9', 656,
+    '\u1EBA', 657,
+    '\u1EBB', 658,
+    '\u1EBC', 659,
+    '\u1EBD', 660,
+    '\u1EBE', 661,
+    '\u1EBF', 662,
+    '\u1EC0', 663,
+    '\u1EC1', 664,
+    '\u1EC2', 665,
+    '\u1EC3', 666,
+    '\u1EC4', 667,
+    '\u1EC5', 668,
+    '\u1EC6', 669,
+    '\u1EC7', 670,
+    '\u1EC8', 671,
+    '\u1EC9', 672,
+    '\u1ECA', 673,
+    '\u1ECB', 674,
+    '\u1ECC', 675,
+    '\u1ECD', 676,
+    '\u1ECE', 677,
+    '\u1ECF', 678,
+    '\u1ED0', 679,
+    '\u1ED1', 680,
+    '\u1ED2', 681,
+    '\u1ED3', 682,
+    '\u1ED4', 683,
+    '\u1ED5', 684,
+    '\u1ED6', 685,
+    '\u1ED7', 686,
+    '\u1ED8', 687,
+    '\u1ED9', 688,
+    '\u1EDA', 689,
+    '\u1EDB', 690,
+    '\u1EDC', 691,
+    '\u1EDD', 692,
+    '\u1EDE', 693,
+    '\u1EDF', 694,
+    '\u1EE0', 695,
+    '\u1EE1', 696,
+    '\u1EE2', 697,
+    '\u1EE3', 698,
+    '\u1EE4', 699,
+    '\u1EE5', 700,
+    '\u1EE6', 701,
+    '\u1EE7', 702,
+    '\u1EE8', 703,
+    '\u1EE9', 704,
+    '\u1EEA', 705,
+    '\u1EEB', 706,
+    '\u1EEC', 707,
+    '\u1EED', 708,
+    '\u1EEE', 709,
+    '\u1EEF', 710,
+    '\u1EF0', 711,
+    '\u1EF1', 712,
+    '\u1EF2', 713,
+    '\u1EF3', 714,
+    '\u1EF4', 715,
+    '\u1EF5', 716,
+    '\u1EF6', 717,
+    '\u1EF7', 718,
+    '\u1EF8', 719,
+    '\u1EF9', 720,
+    '\u1F00', 721,
+    '\u1F01', 722,
+    '\u1F02', 723,
+    '\u1F03', 724,
+    '\u1F04', 725,
+    '\u1F05', 726,
+    '\u1F06', 727,
+    '\u1F07', 728,
+    '\u1F08', 729,
+    '\u1F09', 730,
+    '\u1F0A', 731,
+    '\u1F0B', 732,
+    '\u1F0C', 733,
+    '\u1F0D', 734,
+    '\u1F0E', 735,
+    '\u1F0F', 736,
+    '\u1F10', 737,
+    '\u1F11', 738,
+    '\u1F12', 739,
+    '\u1F13', 740,
+    '\u1F14', 741,
+    '\u1F15', 742,
+    '\u1F18', 743,
+    '\u1F19', 744,
+    '\u1F1A', 745,
+    '\u1F1B', 746,
+    '\u1F1C', 747,
+    '\u1F1D', 748,
+    '\u1F20', 749,
+    '\u1F21', 750,
+    '\u1F22', 751,
+    '\u1F23', 752,
+    '\u1F24', 753,
+    '\u1F25', 754,
+    '\u1F26', 755,
+    '\u1F27', 756,
+    '\u1F28', 757,
+    '\u1F29', 758,
+    '\u1F2A', 759,
+    '\u1F2B', 760,
+    '\u1F2C', 761,
+    '\u1F2D', 762,
+    '\u1F2E', 763,
+    '\u1F2F', 764,
+    '\u1F30', 765,
+    '\u1F31', 766,
+    '\u1F32', 767,
+    '\u1F33', 768,
+    '\u1F34', 769,
+    '\u1F35', 770,
+    '\u1F36', 771,
+    '\u1F37', 772,
+    '\u1F38', 773,
+    '\u1F39', 774,
+    '\u1F3A', 775,
+    '\u1F3B', 776,
+    '\u1F3C', 777,
+    '\u1F3D', 778,
+    '\u1F3E', 779,
+    '\u1F3F', 780,
+    '\u1F40', 781,
+    '\u1F41', 782,
+    '\u1F42', 783,
+    '\u1F43', 784,
+    '\u1F44', 785,
+    '\u1F45', 786,
+    '\u1F48', 787,
+    '\u1F49', 788,
+    '\u1F4A', 789,
+    '\u1F4B', 790,
+    '\u1F4C', 791,
+    '\u1F4D', 792,
+    '\u1F50', 793,
+    '\u1F51', 794,
+    '\u1F52', 795,
+    '\u1F53', 796,
+    '\u1F54', 797,
+    '\u1F55', 798,
+    '\u1F56', 799,
+    '\u1F57', 800,
+    '\u1F59', 801,
+    '\u1F5B', 802,
+    '\u1F5D', 803,
+    '\u1F5F', 804,
+    '\u1F60', 805,
+    '\u1F61', 806,
+    '\u1F62', 807,
+    '\u1F63', 808,
+    '\u1F64', 809,
+    '\u1F65', 810,
+    '\u1F66', 811,
+    '\u1F67', 812,
+    '\u1F68', 813,
+    '\u1F69', 814,
+    '\u1F6A', 815,
+    '\u1F6B', 816,
+    '\u1F6C', 817,
+    '\u1F6D', 818,
+    '\u1F6E', 819,
+    '\u1F6F', 820,
+    '\u1F70', 821,
+    '\u1F71', 322,
+    '\u1F72', 822,
+    '\u1F73', 323,
+    '\u1F74', 823,
+    '\u1F75', 324,
+    '\u1F76', 824,
+    '\u1F77', 325,
+    '\u1F78', 825,
+    '\u1F79', 329,
+    '\u1F7A', 826,
+    '\u1F7B', 330,
+    '\u1F7C', 827,
+    '\u1F7D', 331,
+    '\u1F80', 828,
+    '\u1F81', 829,
+    '\u1F82', 830,
+    '\u1F83', 831,
+    '\u1F84', 832,
+    '\u1F85', 833,
+    '\u1F86', 834,
+    '\u1F87', 835,
+    '\u1F88', 836,
+    '\u1F89', 837,
+    '\u1F8A', 838,
+    '\u1F8B', 839,
+    '\u1F8C', 840,
+    '\u1F8D', 841,
+    '\u1F8E', 842,
+    '\u1F8F', 843,
+    '\u1F90', 844,
+    '\u1F91', 845,
+    '\u1F92', 846,
+    '\u1F93', 847,
+    '\u1F94', 848,
+    '\u1F95', 849,
+    '\u1F96', 850,
+    '\u1F97', 851,
+    '\u1F98', 852,
+    '\u1F99', 853,
+    '\u1F9A', 854,
+    '\u1F9B', 855,
+    '\u1F9C', 856,
+    '\u1F9D', 857,
+    '\u1F9E', 858,
+    '\u1F9F', 859,
+    '\u1FA0', 860,
+    '\u1FA1', 861,
+    '\u1FA2', 862,
+    '\u1FA3', 863,
+    '\u1FA4', 864,
+    '\u1FA5', 865,
+    '\u1FA6', 866,
+    '\u1FA7', 867,
+    '\u1FA8', 868,
+    '\u1FA9', 869,
+    '\u1FAA', 870,
+    '\u1FAB', 871,
+    '\u1FAC', 872,
+    '\u1FAD', 873,
+    '\u1FAE', 874,
+    '\u1FAF', 875,
+    '\u1FB0', 876,
+    '\u1FB1', 877,
+    '\u1FB2', 878,
+    '\u1FB3', 879,
+    '\u1FB4', 880,
+    '\u1FB6', 881,
+    '\u1FB7', 882,
+    '\u1FB8', 883,
+    '\u1FB9', 884,
+    '\u1FBA', 885,
+    '\u1FBB', 311,
+    '\u1FBC', 886,
+    '\u1FBD', 887,
+    '\u1FBE', 888,
+    '\u1FBF', 887,
+    '\u1FC0', 889,
+    '\u1FC1', 890,
+    '\u1FC2', 891,
+    '\u1FC3', 892,
+    '\u1FC4', 893,
+    '\u1FC6', 894,
+    '\u1FC7', 895,
+    '\u1FC8', 896,
+    '\u1FC9', 313,
+    '\u1FCA', 897,
+    '\u1FCB', 314,
+    '\u1FCC', 898,
+    '\u1FCD', 899,
+    '\u1FCE', 900,
+    '\u1FCF', 901,
+    '\u1FD0', 902,
+    '\u1FD1', 903,
+    '\u1FD2', 904,
+    '\u1FD3', 319,
+    '\u1FD6', 905,
+    '\u1FD7', 906,
+    '\u1FD8', 907,
+    '\u1FD9', 908,
+    '\u1FDA', 909,
+    '\u1FDB', 315,
+    '\u1FDD', 910,
+    '\u1FDE', 911,
+    '\u1FDF', 912,
+    '\u1FE0', 913,
+    '\u1FE1', 914,
+    '\u1FE2', 915,
+    '\u1FE3', 326,
+    '\u1FE4', 916,
+    '\u1FE5', 917,
+    '\u1FE6', 918,
+    '\u1FE7', 919,
+    '\u1FE8', 920,
+    '\u1FE9', 921,
+    '\u1FEA', 922,
+    '\u1FEB', 317,
+    '\u1FEC', 923,
+    '\u1FED', 924,
+    '\u1FEE', 310,
+    '\u1FEF', 925,
+    '\u1FF2', 926,
+    '\u1FF3', 927,
+    '\u1FF4', 928,
+    '\u1FF6', 929,
+    '\u1FF7', 930,
+    '\u1FF8', 931,
+    '\u1FF9', 316,
+    '\u1FFA', 932,
+    '\u1FFB', 318,
+    '\u1FFC', 933,
+    '\u1FFD', 6,
+    '\u1FFE', 934,
+    '\u2000', 0,
+    '\u2001', 0,
+    '\u2002', 0,
+    '\u2003', 0,
+    '\u2004', 0,
+    '\u2005', 0,
+    '\u2006', 0,
+    '\u2007', 0,
+    '\u2008', 0,
+    '\u2009', 0,
+    '\u200A', 0,
+    '\u2011', 935,
+    '\u2017', 936,
+    '\u2024', 937,
+    '\u2025', 938,
+    '\u2026', 939,
+    '\u202F', 0,
+    '\u2033', 940,
+    '\u2034', 941,
+    '\u2036', 942,
+    '\u2037', 943,
+    '\u203C', 944,
+    '\u203E', 945,
+    '\u2047', 946,
+    '\u2048', 947,
+    '\u2049', 948,
+    '\u2057', 949,
+    '\u205F', 0,
+    '\u2070', 950,
+    '\u2071', 951,
+    '\u2074', 952,
+    '\u2075', 953,
+    '\u2076', 954,
+    '\u2077', 955,
+    '\u2078', 956,
+    '\u2079', 957,
+    '\u207A', 958,
+    '\u207B', 959,
+    '\u207C', 960,
+    '\u207D', 961,
+    '\u207E', 962,
+    '\u207F', 963,
+    '\u2080', 950,
+    '\u2081', 9,
+    '\u2082', 4,
+    '\u2083', 5,
+    '\u2084', 952,
+    '\u2085', 953,
+    '\u2086', 954,
+    '\u2087', 955,
+    '\u2088', 956,
+    '\u2089', 957,
+    '\u208A', 958,
+    '\u208B', 959,
+    '\u208C', 960,
+    '\u208D', 961,
+    '\u208E', 962,
+    '\u20A8', 964,
+    '\u2100', 965,
+    '\u2101', 966,
+    '\u2102', 967,
+    '\u2103', 968,
+    '\u2105', 969,
+    '\u2106', 970,
+    '\u2107', 971,
+    '\u2109', 972,
+    '\u210A', 973,
+    '\u210B', 974,
+    '\u210C', 974,
+    '\u210D', 974,
+    '\u210E', 284,
+    '\u210F', 975,
+    '\u2110', 976,
+    '\u2111', 976,
+    '\u2112', 977,
+    '\u2113', 300,
+    '\u2115', 978,
+    '\u2116', 979,
+    '\u2119', 980,
+    '\u211A', 981,
+    '\u211B', 982,
+    '\u211C', 982,
+    '\u211D', 982,
+    '\u2120', 983,
+    '\u2121', 984,
+    '\u2122', 985,
+    '\u2124', 986,
+    '\u2126', 987,
+    '\u2128', 986,
+    '\u212A', 988,
+    '\u212B', 19,
+    '\u212C', 989,
+    '\u212D', 967,
+    '\u212F', 990,
+    '\u2130', 991,
+    '\u2131', 992,
+    '\u2133', 993,
+    '\u2134', 10,
+    '\u2135', 994,
+    '\u2136', 995,
+    '\u2137', 996,
+    '\u2138', 997,
+    '\u2139', 951,
+    '\u213D', 998,
+    '\u213E', 999,
+    '\u213F', 1000,
+    '\u2140', 1001,
+    '\u2145', 1002,
+    '\u2146', 1003,
+    '\u2147', 990,
+    '\u2148', 951,
+    '\u2149', 286,
+    '\u2153', 1004,
+    '\u2154', 1005,
+    '\u2155', 1006,
+    '\u2156', 1007,
+    '\u2157', 1008,
+    '\u2158', 1009,
+    '\u2159', 1010,
+    '\u215A', 1011,
+    '\u215B', 1012,
+    '\u215C', 1013,
+    '\u215D', 1014,
+    '\u215E', 1015,
+    '\u215F', 1016,
+    '\u2160', 976,
+    '\u2161', 1017,
+    '\u2162', 1018,
+    '\u2163', 1019,
+    '\u2164', 1020,
+    '\u2165', 1021,
+    '\u2166', 1022,
+    '\u2167', 1023,
+    '\u2168', 1024,
+    '\u2169', 1025,
+    '\u216A', 1026,
+    '\u216B', 1027,
+    '\u216C', 977,
+    '\u216D', 967,
+    '\u216E', 1002,
+    '\u216F', 993,
+    '\u2170', 951,
+    '\u2171', 1028,
+    '\u2172', 1029,
+    '\u2173', 1030,
+    '\u2174', 1031,
+    '\u2175', 1032,
+    '\u2176', 1033,
+    '\u2177', 1034,
+    '\u2178', 1035,
+    '\u2179', 301,
+    '\u217A', 1036,
+    '\u217B', 1037,
+    '\u217C', 300,
+    '\u217D', 1038,
+    '\u217E', 1003,
+    '\u217F', 1039,
+    '\u219A', 1040,
+    '\u219B', 1041,
+    '\u21AE', 1042,
+    '\u21CD', 1043,
+    '\u21CE', 1044,
+    '\u21CF', 1045,
+    '\u2204', 1046,
+    '\u2209', 1047,
+    '\u220C', 1048,
+    '\u2224', 1049,
+    '\u2226', 1050,
+    '\u222C', 1051,
+    '\u222D', 1052,
+    '\u222F', 1053,
+    '\u2230', 1054,
+    '\u2241', 1055,
+    '\u2244', 1056,
+    '\u2247', 1057,
+    '\u2249', 1058,
+    '\u2260', 1059,
+    '\u2262', 1060,
+    '\u226D', 1061,
+    '\u226E', 1062,
+    '\u226F', 1063,
+    '\u2270', 1064,
+    '\u2271', 1065,
+    '\u2274', 1066,
+    '\u2275', 1067,
+    '\u2278', 1068,
+    '\u2279', 1069,
+    '\u2280', 1070,
+    '\u2281', 1071,
+    '\u2284', 1072,
+    '\u2285', 1073,
+    '\u2288', 1074,
+    '\u2289', 1075,
+    '\u22AC', 1076,
+    '\u22AD', 1077,
+    '\u22AE', 1078,
+    '\u22AF', 1079,
+    '\u22E0', 1080,
+    '\u22E1', 1081,
+    '\u22E2', 1082,
+    '\u22E3', 1083,
+    '\u22EA', 1084,
+    '\u22EB', 1085,
+    '\u22EC', 1086,
+    '\u22ED', 1087,
+    '\u2329', 1088,
+    '\u232A', 1089,
+    '\u2460', 9,
+    '\u2461', 4,
+    '\u2462', 5,
+    '\u2463', 952,
+    '\u2464', 953,
+    '\u2465', 954,
+    '\u2466', 955,
+    '\u2467', 956,
+    '\u2468', 957,
+    '\u2469', 1090,
+    '\u246A', 1091,
+    '\u246B', 1092,
+    '\u246C', 1093,
+    '\u246D', 1094,
+    '\u246E', 1095,
+    '\u246F', 1096,
+    '\u2470', 1097,
+    '\u2471', 1098,
+    '\u2472', 1099,
+    '\u2473', 1100,
+    '\u2474', 1101,
+    '\u2475', 1102,
+    '\u2476', 1103,
+    '\u2477', 1104,
+    '\u2478', 1105,
+    '\u2479', 1106,
+    '\u247A', 1107,
+    '\u247B', 1108,
+    '\u247C', 1109,
+    '\u247D', 1110,
+    '\u247E', 1111,
+    '\u247F', 1112,
+    '\u2480', 1113,
+    '\u2481', 1114,
+    '\u2482', 1115,
+    '\u2483', 1116,
+    '\u2484', 1117,
+    '\u2485', 1118,
+    '\u2486', 1119,
+    '\u2487', 1120,
+    '\u2488', 1121,
+    '\u2489', 1122,
+    '\u248A', 1123,
+    '\u248B', 1124,
+    '\u248C', 1125,
+    '\u248D', 1126,
+    '\u248E', 1127,
+    '\u248F', 1128,
+    '\u2490', 1129,
+    '\u2491', 1130,
+    '\u2492', 1131,
+    '\u2493', 1132,
+    '\u2494', 1133,
+    '\u2495', 1134,
+    '\u2496', 1135,
+    '\u2497', 1136,
+    '\u2498', 1137,
+    '\u2499', 1138,
+    '\u249A', 1139,
+    '\u249B', 1140,
+    '\u249C', 1141,
+    '\u249D', 1142,
+    '\u249E', 1143,
+    '\u249F', 1144,
+    '\u24A0', 1145,
+    '\u24A1', 1146,
+    '\u24A2', 1147,
+    '\u24A3', 1148,
+    '\u24A4', 1149,
+    '\u24A5', 1150,
+    '\u24A6', 1151,
+    '\u24A7', 1152,
+    '\u24A8', 1153,
+    '\u24A9', 1154,
+    '\u24AA', 1155,
+    '\u24AB', 1156,
+    '\u24AC', 1157,
+    '\u24AD', 1158,
+    '\u24AE', 1159,
+    '\u24AF', 1160,
+    '\u24B0', 1161,
+    '\u24B1', 1162,
+    '\u24B2', 1163,
+    '\u24B3', 1164,
+    '\u24B4', 1165,
+    '\u24B5', 1166,
+    '\u24B6', 1167,
+    '\u24B7', 989,
+    '\u24B8', 967,
+    '\u24B9', 1002,
+    '\u24BA', 991,
+    '\u24BB', 992,
+    '\u24BC', 1168,
+    '\u24BD', 974,
+    '\u24BE', 976,
+    '\u24BF', 1169,
+    '\u24C0', 988,
+    '\u24C1', 977,
+    '\u24C2', 993,
+    '\u24C3', 978,
+    '\u24C4', 1170,
+    '\u24C5', 980,
+    '\u24C6', 981,
+    '\u24C7', 982,
+    '\u24C8', 1171,
+    '\u24C9', 1172,
+    '\u24CA', 1173,
+    '\u24CB', 1020,
+    '\u24CC', 1174,
+    '\u24CD', 1025,
+    '\u24CE', 1175,
+    '\u24CF', 986,
+    '\u24D0', 2,
+    '\u24D1', 1176,
+    '\u24D2', 1038,
+    '\u24D3', 1003,
+    '\u24D4', 990,
+    '\u24D5', 1177,
+    '\u24D6', 973,
+    '\u24D7', 284,
+    '\u24D8', 951,
+    '\u24D9', 286,
+    '\u24DA', 1178,
+    '\u24DB', 300,
+    '\u24DC', 1039,
+    '\u24DD', 963,
+    '\u24DE', 10,
+    '\u24DF', 1179,
+    '\u24E0', 1180,
+    '\u24E1', 287,
+    '\u24E2', 180,
+    '\u24E3', 1181,
+    '\u24E4', 1182,
+    '\u24E5', 1031,
+    '\u24E6', 291,
+    '\u24E7', 301,
+    '\u24E8', 292,
+    '\u24E9', 1183,
+    '\u24EA', 950,
+    '\u2A0C', 1184,
+    '\u2A74', 1185,
+    '\u2A75', 1186,
+    '\u2A76', 1187,
+    '\u2ADC', 1188,
+    '\u2E9F', 1189,
+    '\u2EF3', 1190,
+    '\u2F00', 1191,
+    '\u2F01', 1192,
+    '\u2F02', 1193,
+    '\u2F03', 1194,
+    '\u2F04', 1195,
+    '\u2F05', 1196,
+    '\u2F06', 1197,
+    '\u2F07', 1198,
+    '\u2F08', 1199,
+    '\u2F09', 1200,
+    '\u2F0A', 1201,
+    '\u2F0B', 1202,
+    '\u2F0C', 1203,
+    '\u2F0D', 1204,
+    '\u2F0E', 1205,
+    '\u2F0F', 1206,
+    '\u2F10', 1207,
+    '\u2F11', 1208,
+    '\u2F12', 1209,
+    '\u2F13', 1210,
+    '\u2F14', 1211,
+    '\u2F15', 1212,
+    '\u2F16', 1213,
+    '\u2F17', 1214,
+    '\u2F18', 1215,
+    '\u2F19', 1216,
+    '\u2F1A', 1217,
+    '\u2F1B', 1218,
+    '\u2F1C', 1219,
+    '\u2F1D', 1220,
+    '\u2F1E', 1221,
+    '\u2F1F', 1222,
+    '\u2F20', 1223,
+    '\u2F21', 1224,
+    '\u2F22', 1225,
+    '\u2F23', 1226,
+    '\u2F24', 1227,
+    '\u2F25', 1228,
+    '\u2F26', 1229,
+    '\u2F27', 1230,
+    '\u2F28', 1231,
+    '\u2F29', 1232,
+    '\u2F2A', 1233,
+    '\u2F2B', 1234,
+    '\u2F2C', 1235,
+    '\u2F2D', 1236,
+    '\u2F2E', 1237,
+    '\u2F2F', 1238,
+    '\u2F30', 1239,
+    '\u2F31', 1240,
+    '\u2F32', 1241,
+    '\u2F33', 1242,
+    '\u2F34', 1243,
+    '\u2F35', 1244,
+    '\u2F36', 1245,
+    '\u2F37', 1246,
+    '\u2F38', 1247,
+    '\u2F39', 1248,
+    '\u2F3A', 1249,
+    '\u2F3B', 1250,
+    '\u2F3C', 1251,
+    '\u2F3D', 1252,
+    '\u2F3E', 1253,
+    '\u2F3F', 1254,
+    '\u2F40', 1255,
+    '\u2F41', 1256,
+    '\u2F42', 1257,
+    '\u2F43', 1258,
+    '\u2F44', 1259,
+    '\u2F45', 1260,
+    '\u2F46', 1261,
+    '\u2F47', 1262,
+    '\u2F48', 1263,
+    '\u2F49', 1264,
+    '\u2F4A', 1265,
+    '\u2F4B', 1266,
+    '\u2F4C', 1267,
+    '\u2F4D', 1268,
+    '\u2F4E', 1269,
+    '\u2F4F', 1270,
+    '\u2F50', 1271,
+    '\u2F51', 1272,
+    '\u2F52', 1273,
+    '\u2F53', 1274,
+    '\u2F54', 1275,
+    '\u2F55', 1276,
+    '\u2F56', 1277,
+    '\u2F57', 1278,
+    '\u2F58', 1279,
+    '\u2F59', 1280,
+    '\u2F5A', 1281,
+    '\u2F5B', 1282,
+    '\u2F5C', 1283,
+    '\u2F5D', 1284,
+    '\u2F5E', 1285,
+    '\u2F5F', 1286,
+    '\u2F60', 1287,
+    '\u2F61', 1288,
+    '\u2F62', 1289,
+    '\u2F63', 1290,
+    '\u2F64', 1291,
+    '\u2F65', 1292,
+    '\u2F66', 1293,
+    '\u2F67', 1294,
+    '\u2F68', 1295,
+    '\u2F69', 1296,
+    '\u2F6A', 1297,
+    '\u2F6B', 1298,
+    '\u2F6C', 1299,
+    '\u2F6D', 1300,
+    '\u2F6E', 1301,
+    '\u2F6F', 1302,
+    '\u2F70', 1303,
+    '\u2F71', 1304,
+    '\u2F72', 1305,
+    '\u2F73', 1306,
+    '\u2F74', 1307,
+    '\u2F75', 1308,
+    '\u2F76', 1309,
+    '\u2F77', 1310,
+    '\u2F78', 1311,
+    '\u2F79', 1312,
+    '\u2F7A', 1313,
+    '\u2F7B', 1314,
+    '\u2F7C', 1315,
+    '\u2F7D', 1316,
+    '\u2F7E', 1317,
+    '\u2F7F', 1318,
+    '\u2F80', 1319,
+    '\u2F81', 1320,
+    '\u2F82', 1321,
+    '\u2F83', 1322,
+    '\u2F84', 1323,
+    '\u2F85', 1324,
+    '\u2F86', 1325,
+    '\u2F87', 1326,
+    '\u2F88', 1327,
+    '\u2F89', 1328,
+    '\u2F8A', 1329,
+    '\u2F8B', 1330,
+    '\u2F8C', 1331,
+    '\u2F8D', 1332,
+    '\u2F8E', 1333,
+    '\u2F8F', 1334,
+    '\u2F90', 1335,
+    '\u2F91', 1336,
+    '\u2F92', 1337,
+    '\u2F93', 1338,
+    '\u2F94', 1339,
+    '\u2F95', 1340,
+    '\u2F96', 1341,
+    '\u2F97', 1342,
+    '\u2F98', 1343,
+    '\u2F99', 1344,
+    '\u2F9A', 1345,
+    '\u2F9B', 1346,
+    '\u2F9C', 1347,
+    '\u2F9D', 1348,
+    '\u2F9E', 1349,
+    '\u2F9F', 1350,
+    '\u2FA0', 1351,
+    '\u2FA1', 1352,
+    '\u2FA2', 1353,
+    '\u2FA3', 1354,
+    '\u2FA4', 1355,
+    '\u2FA5', 1356,
+    '\u2FA6', 1357,
+    '\u2FA7', 1358,
+    '\u2FA8', 1359,
+    '\u2FA9', 1360,
+    '\u2FAA', 1361,
+    '\u2FAB', 1362,
+    '\u2FAC', 1363,
+    '\u2FAD', 1364,
+    '\u2FAE', 1365,
+    '\u2FAF', 1366,
+    '\u2FB0', 1367,
+    '\u2FB1', 1368,
+    '\u2FB2', 1369,
+    '\u2FB3', 1370,
+    '\u2FB4', 1371,
+    '\u2FB5', 1372,
+    '\u2FB6', 1373,
+    '\u2FB7', 1374,
+    '\u2FB8', 1375,
+    '\u2FB9', 1376,
+    '\u2FBA', 1377,
+    '\u2FBB', 1378,
+    '\u2FBC', 1379,
+    '\u2FBD', 1380,
+    '\u2FBE', 1381,
+    '\u2FBF', 1382,
+    '\u2FC0', 1383,
+    '\u2FC1', 1384,
+    '\u2FC2', 1385,
+    '\u2FC3', 1386,
+    '\u2FC4', 1387,
+    '\u2FC5', 1388,
+    '\u2FC6', 1389,
+    '\u2FC7', 1390,
+    '\u2FC8', 1391,
+    '\u2FC9', 1392,
+    '\u2FCA', 1393,
+    '\u2FCB', 1394,
+    '\u2FCC', 1395,
+    '\u2FCD', 1396,
+    '\u2FCE', 1397,
+    '\u2FCF', 1398,
+    '\u2FD0', 1399,
+    '\u2FD1', 1400,
+    '\u2FD2', 1401,
+    '\u2FD3', 1402,
+    '\u2FD4', 1403,
+    '\u2FD5', 1404,
+    '\u3000', 0,
+    '\u3036', 1405,
+    '\u3038', 1214,
+    '\u3039', 1406,
+    '\u303A', 1407,
+    '\u304C', 1408,
+    '\u304E', 1409,
+    '\u3050', 1410,
+    '\u3052', 1411,
+    '\u3054', 1412,
+    '\u3056', 1413,
+    '\u3058', 1414,
+    '\u305A', 1415,
+    '\u305C', 1416,
+    '\u305E', 1417,
+    '\u3060', 1418,
+    '\u3062', 1419,
+    '\u3065', 1420,
+    '\u3067', 1421,
+    '\u3069', 1422,
+    '\u3070', 1423,
+    '\u3071', 1424,
+    '\u3073', 1425,
+    '\u3074', 1426,
+    '\u3076', 1427,
+    '\u3077', 1428,
+    '\u3079', 1429,
+    '\u307A', 1430,
+    '\u307C', 1431,
+    '\u307D', 1432,
+    '\u3094', 1433,
+    '\u309B', 1434,
+    '\u309C', 1435,
+    '\u309E', 1436,
+    '\u309F', 1437,
+    '\u30AC', 1438,
+    '\u30AE', 1439,
+    '\u30B0', 1440,
+    '\u30B2', 1441,
+    '\u30B4', 1442,
+    '\u30B6', 1443,
+    '\u30B8', 1444,
+    '\u30BA', 1445,
+    '\u30BC', 1446,
+    '\u30BE', 1447,
+    '\u30C0', 1448,
+    '\u30C2', 1449,
+    '\u30C5', 1450,
+    '\u30C7', 1451,
+    '\u30C9', 1452,
+    '\u30D0', 1453,
+    '\u30D1', 1454,
+    '\u30D3', 1455,
+    '\u30D4', 1456,
+    '\u30D6', 1457,
+    '\u30D7', 1458,
+    '\u30D9', 1459,
+    '\u30DA', 1460,
+    '\u30DC', 1461,
+    '\u30DD', 1462,
+    '\u30F4', 1463,
+    '\u30F7', 1464,
+    '\u30F8', 1465,
+    '\u30F9', 1466,
+    '\u30FA', 1467,
+    '\u30FE', 1468,
+    '\u30FF', 1469,
+    '\u3131', 1470,
+    '\u3132', 1471,
+    '\u3133', 1472,
+    '\u3134', 1473,
+    '\u3135', 1474,
+    '\u3136', 1475,
+    '\u3137', 1476,
+    '\u3138', 1477,
+    '\u3139', 1478,
+    '\u313A', 1479,
+    '\u313B', 1480,
+    '\u313C', 1481,
+    '\u313D', 1482,
+    '\u313E', 1483,
+    '\u313F', 1484,
+    '\u3140', 1485,
+    '\u3141', 1486,
+    '\u3142', 1487,
+    '\u3143', 1488,
+    '\u3144', 1489,
+    '\u3145', 1490,
+    '\u3146', 1491,
+    '\u3147', 1492,
+    '\u3148', 1493,
+    '\u3149', 1494,
+    '\u314A', 1495,
+    '\u314B', 1496,
+    '\u314C', 1497,
+    '\u314D', 1498,
+    '\u314E', 1499,
+    '\u314F', 1500,
+    '\u3150', 1501,
+    '\u3151', 1502,
+    '\u3152', 1503,
+    '\u3153', 1504,
+    '\u3154', 1505,
+    '\u3155', 1506,
+    '\u3156', 1507,
+    '\u3157', 1508,
+    '\u3158', 1509,
+    '\u3159', 1510,
+    '\u315A', 1511,
+    '\u315B', 1512,
+    '\u315C', 1513,
+    '\u315D', 1514,
+    '\u315E', 1515,
+    '\u315F', 1516,
+    '\u3160', 1517,
+    '\u3161', 1518,
+    '\u3162', 1519,
+    '\u3163', 1520,
+    '\u3164', 1521,
+    '\u3165', 1522,
+    '\u3166', 1523,
+    '\u3167', 1524,
+    '\u3168', 1525,
+    '\u3169', 1526,
+    '\u316A', 1527,
+    '\u316B', 1528,
+    '\u316C', 1529,
+    '\u316D', 1530,
+    '\u316E', 1531,
+    '\u316F', 1532,
+    '\u3170', 1533,
+    '\u3171', 1534,
+    '\u3172', 1535,
+    '\u3173', 1536,
+    '\u3174', 1537,
+    '\u3175', 1538,
+    '\u3176', 1539,
+    '\u3177', 1540,
+    '\u3178', 1541,
+    '\u3179', 1542,
+    '\u317A', 1543,
+    '\u317B', 1544,
+    '\u317C', 1545,
+    '\u317D', 1546,
+    '\u317E', 1547,
+    '\u317F', 1548,
+    '\u3180', 1549,
+    '\u3181', 1550,
+    '\u3182', 1551,
+    '\u3183', 1552,
+    '\u3184', 1553,
+    '\u3185', 1554,
+    '\u3186', 1555,
+    '\u3187', 1556,
+    '\u3188', 1557,
+    '\u3189', 1558,
+    '\u318A', 1559,
+    '\u318B', 1560,
+    '\u318C', 1561,
+    '\u318D', 1562,
+    '\u318E', 1563,
+    '\u3192', 1191,
+    '\u3193', 1197,
+    '\u3194', 1564,
+    '\u3195', 1565,
+    '\u3196', 1566,
+    '\u3197', 1567,
+    '\u3198', 1568,
+    '\u3199', 1569,
+    '\u319A', 1195,
+    '\u319B', 1570,
+    '\u319C', 1571,
+    '\u319D', 1572,
+    '\u319E', 1573,
+    '\u319F', 1199,
+    '\u3200', 1574,
+    '\u3201', 1575,
+    '\u3202', 1576,
+    '\u3203', 1577,
+    '\u3204', 1578,
+    '\u3205', 1579,
+    '\u3206', 1580,
+    '\u3207', 1581,
+    '\u3208', 1582,
+    '\u3209', 1583,
+    '\u320A', 1584,
+    '\u320B', 1585,
+    '\u320C', 1586,
+    '\u320D', 1587,
+    '\u320E', 1588,
+    '\u320F', 1589,
+    '\u3210', 1590,
+    '\u3211', 1591,
+    '\u3212', 1592,
+    '\u3213', 1593,
+    '\u3214', 1594,
+    '\u3215', 1595,
+    '\u3216', 1596,
+    '\u3217', 1597,
+    '\u3218', 1598,
+    '\u3219', 1599,
+    '\u321A', 1600,
+    '\u321B', 1601,
+    '\u321C', 1602,
+    '\u3220', 1603,
+    '\u3221', 1604,
+    '\u3222', 1605,
+    '\u3223', 1606,
+    '\u3224', 1607,
+    '\u3225', 1608,
+    '\u3226', 1609,
+    '\u3227', 1610,
+    '\u3228', 1611,
+    '\u3229', 1612,
+    '\u322A', 1613,
+    '\u322B', 1614,
+    '\u322C', 1615,
+    '\u322D', 1616,
+    '\u322E', 1617,
+    '\u322F', 1618,
+    '\u3230', 1619,
+    '\u3231', 1620,
+    '\u3232', 1621,
+    '\u3233', 1622,
+    '\u3234', 1623,
+    '\u3235', 1624,
+    '\u3236', 1625,
+    '\u3237', 1626,
+    '\u3238', 1627,
+    '\u3239', 1628,
+    '\u323A', 1629,
+    '\u323B', 1630,
+    '\u323C', 1631,
+    '\u323D', 1632,
+    '\u323E', 1633,
+    '\u323F', 1634,
+    '\u3240', 1635,
+    '\u3241', 1636,
+    '\u3242', 1637,
+    '\u3243', 1638,
+    '\u3251', 1639,
+    '\u3252', 1640,
+    '\u3253', 1641,
+    '\u3254', 1642,
+    '\u3255', 1643,
+    '\u3256', 1644,
+    '\u3257', 1645,
+    '\u3258', 1646,
+    '\u3259', 1647,
+    '\u325A', 1648,
+    '\u325B', 1649,
+    '\u325C', 1650,
+    '\u325D', 1651,
+    '\u325E', 1652,
+    '\u325F', 1653,
+    '\u3260', 1470,
+    '\u3261', 1473,
+    '\u3262', 1476,
+    '\u3263', 1478,
+    '\u3264', 1486,
+    '\u3265', 1487,
+    '\u3266', 1490,
+    '\u3267', 1492,
+    '\u3268', 1493,
+    '\u3269', 1495,
+    '\u326A', 1496,
+    '\u326B', 1497,
+    '\u326C', 1498,
+    '\u326D', 1499,
+    '\u326E', 1654,
+    '\u326F', 1655,
+    '\u3270', 1656,
+    '\u3271', 1657,
+    '\u3272', 1658,
+    '\u3273', 1659,
+    '\u3274', 1660,
+    '\u3275', 1661,
+    '\u3276', 1662,
+    '\u3277', 1663,
+    '\u3278', 1664,
+    '\u3279', 1665,
+    '\u327A', 1666,
+    '\u327B', 1667,
+    '\u3280', 1191,
+    '\u3281', 1197,
+    '\u3282', 1564,
+    '\u3283', 1565,
+    '\u3284', 1668,
+    '\u3285', 1669,
+    '\u3286', 1670,
+    '\u3287', 1202,
+    '\u3288', 1671,
+    '\u3289', 1214,
+    '\u328A', 1264,
+    '\u328B', 1276,
+    '\u328C', 1275,
+    '\u328D', 1265,
+    '\u328E', 1357,
+    '\u328F', 1222,
+    '\u3290', 1262,
+    '\u3291', 1672,
+    '\u3292', 1673,
+    '\u3293', 1674,
+    '\u3294', 1675,
+    '\u3295', 1676,
+    '\u3296', 1677,
+    '\u3297', 1678,
+    '\u3298', 1679,
+    '\u3299', 1680,
+    '\u329A', 1681,
+    '\u329B', 1228,
+    '\u329C', 1682,
+    '\u329D', 1683,
+    '\u329E', 1684,
+    '\u329F', 1685,
+    '\u32A0', 1686,
+    '\u32A1', 1687,
+    '\u32A2', 1688,
+    '\u32A3', 1689,
+    '\u32A4', 1566,
+    '\u32A5', 1567,
+    '\u32A6', 1568,
+    '\u32A7', 1690,
+    '\u32A8', 1691,
+    '\u32A9', 1692,
+    '\u32AA', 1693,
+    '\u32AB', 1694,
+    '\u32AC', 1695,
+    '\u32AD', 1696,
+    '\u32AE', 1697,
+    '\u32AF', 1698,
+    '\u32B0', 1699,
+    '\u32B1', 1700,
+    '\u32B2', 1701,
+    '\u32B3', 1702,
+    '\u32B4', 1703,
+    '\u32B5', 1704,
+    '\u32B6', 1705,
+    '\u32B7', 1706,
+    '\u32B8', 1707,
+    '\u32B9', 1708,
+    '\u32BA', 1709,
+    '\u32BB', 1710,
+    '\u32BC', 1711,
+    '\u32BD', 1712,
+    '\u32BE', 1713,
+    '\u32BF', 1714,
+    '\u32C0', 1715,
+    '\u32C1', 1716,
+    '\u32C2', 1717,
+    '\u32C3', 1718,
+    '\u32C4', 1719,
+    '\u32C5', 1720,
+    '\u32C6', 1721,
+    '\u32C7', 1722,
+    '\u32C8', 1723,
+    '\u32C9', 1724,
+    '\u32CA', 1725,
+    '\u32CB', 1726,
+    '\u32D0', 1727,
+    '\u32D1', 1728,
+    '\u32D2', 1729,
+    '\u32D3', 1730,
+    '\u32D4', 1731,
+    '\u32D5', 1732,
+    '\u32D6', 1733,
+    '\u32D7', 1734,
+    '\u32D8', 1735,
+    '\u32D9', 1736,
+    '\u32DA', 1737,
+    '\u32DB', 1738,
+    '\u32DC', 1739,
+    '\u32DD', 1740,
+    '\u32DE', 1741,
+    '\u32DF', 1742,
+    '\u32E0', 1743,
+    '\u32E1', 1744,
+    '\u32E2', 1745,
+    '\u32E3', 1746,
+    '\u32E4', 1747,
+    '\u32E5', 1748,
+    '\u32E6', 1749,
+    '\u32E7', 1750,
+    '\u32E8', 1751,
+    '\u32E9', 1752,
+    '\u32EA', 1753,
+    '\u32EB', 1754,
+    '\u32EC', 1755,
+    '\u32ED', 1756,
+    '\u32EE', 1757,
+    '\u32EF', 1758,
+    '\u32F0', 1759,
+    '\u32F1', 1760,
+    '\u32F2', 1761,
+    '\u32F3', 1762,
+    '\u32F4', 1763,
+    '\u32F5', 1764,
+    '\u32F6', 1765,
+    '\u32F7', 1766,
+    '\u32F8', 1767,
+    '\u32F9', 1768,
+    '\u32FA', 1769,
+    '\u32FB', 1770,
+    '\u32FC', 1771,
+    '\u32FD', 1772,
+    '\u32FE', 1773,
+    '\u3300', 1774,
+    '\u3301', 1775,
+    '\u3302', 1776,
+    '\u3303', 1777,
+    '\u3304', 1778,
+    '\u3305', 1779,
+    '\u3306', 1780,
+    '\u3307', 1781,
+    '\u3308', 1782,
+    '\u3309', 1783,
+    '\u330A', 1784,
+    '\u330B', 1785,
+    '\u330C', 1786,
+    '\u330D', 1787,
+    '\u330E', 1788,
+    '\u330F', 1789,
+    '\u3310', 1790,
+    '\u3311', 1791,
+    '\u3312', 1792,
+    '\u3313', 1793,
+    '\u3314', 1794,
+    '\u3315', 1795,
+    '\u3316', 1796,
+    '\u3317', 1797,
+    '\u3318', 1798,
+    '\u3319', 1799,
+    '\u331A', 1800,
+    '\u331B', 1801,
+    '\u331C', 1802,
+    '\u331D', 1803,
+    '\u331E', 1804,
+    '\u331F', 1805,
+    '\u3320', 1806,
+    '\u3321', 1807,
+    '\u3322', 1808,
+    '\u3323', 1809,
+    '\u3324', 1810,
+    '\u3325', 1811,
+    '\u3326', 1812,
+    '\u3327', 1813,
+    '\u3328', 1814,
+    '\u3329', 1815,
+    '\u332A', 1816,
+    '\u332B', 1817,
+    '\u332C', 1818,
+    '\u332D', 1819,
+    '\u332E', 1820,
+    '\u332F', 1821,
+    '\u3330', 1822,
+    '\u3331', 1823,
+    '\u3332', 1824,
+    '\u3333', 1825,
+    '\u3334', 1826,
+    '\u3335', 1827,
+    '\u3336', 1828,
+    '\u3337', 1829,
+    '\u3338', 1830,
+    '\u3339', 1831,
+    '\u333A', 1832,
+    '\u333B', 1833,
+    '\u333C', 1834,
+    '\u333D', 1835,
+    '\u333E', 1836,
+    '\u333F', 1837,
+    '\u3340', 1838,
+    '\u3341', 1839,
+    '\u3342', 1840,
+    '\u3343', 1841,
+    '\u3344', 1842,
+    '\u3345', 1843,
+    '\u3346', 1844,
+    '\u3347', 1845,
+    '\u3348', 1846,
+    '\u3349', 1847,
+    '\u334A', 1848,
+    '\u334B', 1849,
+    '\u334C', 1850,
+    '\u334D', 1851,
+    '\u334E', 1852,
+    '\u334F', 1853,
+    '\u3350', 1854,
+    '\u3351', 1855,
+    '\u3352', 1856,
+    '\u3353', 1857,
+    '\u3354', 1858,
+    '\u3355', 1859,
+    '\u3356', 1860,
+    '\u3357', 1861,
+    '\u3358', 1862,
+    '\u3359', 1863,
+    '\u335A', 1864,
+    '\u335B', 1865,
+    '\u335C', 1866,
+    '\u335D', 1867,
+    '\u335E', 1868,
+    '\u335F', 1869,
+    '\u3360', 1870,
+    '\u3361', 1871,
+    '\u3362', 1872,
+    '\u3363', 1873,
+    '\u3364', 1874,
+    '\u3365', 1875,
+    '\u3366', 1876,
+    '\u3367', 1877,
+    '\u3368', 1878,
+    '\u3369', 1879,
+    '\u336A', 1880,
+    '\u336B', 1881,
+    '\u336C', 1882,
+    '\u336D', 1883,
+    '\u336E', 1884,
+    '\u336F', 1885,
+    '\u3370', 1886,
+    '\u3371', 1887,
+    '\u3372', 1888,
+    '\u3373', 1889,
+    '\u3374', 1890,
+    '\u3375', 1891,
+    '\u3376', 1892,
+    '\u337B', 1893,
+    '\u337C', 1894,
+    '\u337D', 1895,
+    '\u337E', 1896,
+    '\u337F', 1897,
+    '\u3380', 1898,
+    '\u3381', 1899,
+    '\u3382', 1900,
+    '\u3383', 1901,
+    '\u3384', 1902,
+    '\u3385', 1903,
+    '\u3386', 1904,
+    '\u3387', 1905,
+    '\u3388', 1906,
+    '\u3389', 1907,
+    '\u338A', 1908,
+    '\u338B', 1909,
+    '\u338C', 1910,
+    '\u338D', 1911,
+    '\u338E', 1912,
+    '\u338F', 1913,
+    '\u3390', 1914,
+    '\u3391', 1915,
+    '\u3392', 1916,
+    '\u3393', 1917,
+    '\u3394', 1918,
+    '\u3395', 1919,
+    '\u3396', 1920,
+    '\u3397', 1921,
+    '\u3398', 1922,
+    '\u3399', 1923,
+    '\u339A', 1924,
+    '\u339B', 1925,
+    '\u339C', 1926,
+    '\u339D', 1927,
+    '\u339E', 1928,
+    '\u339F', 1929,
+    '\u33A0', 1930,
+    '\u33A1', 1931,
+    '\u33A2', 1932,
+    '\u33A3', 1933,
+    '\u33A4', 1934,
+    '\u33A5', 1935,
+    '\u33A6', 1936,
+    '\u33A7', 1937,
+    '\u33A8', 1938,
+    '\u33A9', 1939,
+    '\u33AA', 1940,
+    '\u33AB', 1941,
+    '\u33AC', 1942,
+    '\u33AD', 1943,
+    '\u33AE', 1944,
+    '\u33AF', 1945,
+    '\u33B0', 1946,
+    '\u33B1', 1947,
+    '\u33B2', 1948,
+    '\u33B3', 1949,
+    '\u33B4', 1950,
+    '\u33B5', 1951,
+    '\u33B6', 1952,
+    '\u33B7', 1953,
+    '\u33B8', 1954,
+    '\u33B9', 1955,
+    '\u33BA', 1956,
+    '\u33BB', 1957,
+    '\u33BC', 1958,
+    '\u33BD', 1959,
+    '\u33BE', 1960,
+    '\u33BF', 1961,
+    '\u33C0', 1962,
+    '\u33C1', 1963,
+    '\u33C2', 1964,
+    '\u33C3', 1965,
+    '\u33C4', 1966,
+    '\u33C5', 1967,
+    '\u33C6', 1968,
+    '\u33C7', 1969,
+    '\u33C8', 1970,
+    '\u33C9', 1971,
+    '\u33CA', 1972,
+    '\u33CB', 1973,
+    '\u33CC', 1974,
+    '\u33CD', 1975,
+    '\u33CE', 1976,
+    '\u33CF', 1977,
+    '\u33D0', 1978,
+    '\u33D1', 1979,
+    '\u33D2', 1980,
+    '\u33D3', 1981,
+    '\u33D4', 1982,
+    '\u33D5', 1983,
+    '\u33D6', 1984,
+    '\u33D7', 1985,
+    '\u33D8', 1986,
+    '\u33D9', 1987,
+    '\u33DA', 1988,
+    '\u33DB', 1989,
+    '\u33DC', 1990,
+    '\u33DD', 1991,
+    '\u33E0', 1992,
+    '\u33E1', 1993,
+    '\u33E2', 1994,
+    '\u33E3', 1995,
+    '\u33E4', 1996,
+    '\u33E5', 1997,
+    '\u33E6', 1998,
+    '\u33E7', 1999,
+    '\u33E8', 2000,
+    '\u33E9', 2001,
+    '\u33EA', 2002,
+    '\u33EB', 2003,
+    '\u33EC', 2004,
+    '\u33ED', 2005,
+    '\u33EE', 2006,
+    '\u33EF', 2007,
+    '\u33F0', 2008,
+    '\u33F1', 2009,
+    '\u33F2', 2010,
+    '\u33F3', 2011,
+    '\u33F4', 2012,
+    '\u33F5', 2013,
+    '\u33F6', 2014,
+    '\u33F7', 2015,
+    '\u33F8', 2016,
+    '\u33F9', 2017,
+    '\u33FA', 2018,
+    '\u33FB', 2019,
+    '\u33FC', 2020,
+    '\u33FD', 2021,
+    '\u33FE', 2022,
+    '\uF900', 2023,
+    '\uF901', 2024,
+    '\uF902', 1349,
+    '\uF903', 2025,
+    '\uF904', 2026,
+    '\uF905', 2027,
+    '\uF906', 2028,
+    '\uF907', 1403,
+    '\uF908', 1403,
+    '\uF909', 2029,
+    '\uF90A', 1357,
+    '\uF90B', 2030,
+    '\uF90C', 2031,
+    '\uF90D', 2032,
+    '\uF90E', 2033,
+    '\uF90F', 2034,
+    '\uF910', 2035,
+    '\uF911', 2036,
+    '\uF912', 2037,
+    '\uF913', 2038,
+    '\uF914', 2039,
+    '\uF915', 2040,
+    '\uF916', 2041,
+    '\uF917', 2042,
+    '\uF918', 2043,
+    '\uF919', 2044,
+    '\uF91A', 2045,
+    '\uF91B', 2046,
+    '\uF91C', 2047,
+    '\uF91D', 2048,
+    '\uF91E', 2049,
+    '\uF91F', 2050,
+    '\uF920', 2051,
+    '\uF921', 2052,
+    '\uF922', 2053,
+    '\uF923', 2054,
+    '\uF924', 2055,
+    '\uF925', 2056,
+    '\uF926', 2057,
+    '\uF927', 2058,
+    '\uF928', 2059,
+    '\uF929', 2060,
+    '\uF92A', 2061,
+    '\uF92B', 2062,
+    '\uF92C', 2063,
+    '\uF92D', 2064,
+    '\uF92E', 2065,
+    '\uF92F', 2066,
+    '\uF930', 2067,
+    '\uF931', 2068,
+    '\uF932', 2069,
+    '\uF933', 2070,
+    '\uF934', 1315,
+    '\uF935', 2071,
+    '\uF936', 2072,
+    '\uF937', 2073,
+    '\uF938', 2074,
+    '\uF939', 2075,
+    '\uF93A', 2076,
+    '\uF93B', 2077,
+    '\uF93C', 2078,
+    '\uF93D', 2079,
+    '\uF93E', 2080,
+    '\uF93F', 2081,
+    '\uF940', 1388,
+    '\uF941', 2082,
+    '\uF942', 2083,
+    '\uF943', 2084,
+    '\uF944', 2085,
+    '\uF945', 2086,
+    '\uF946', 2087,
+    '\uF947', 2088,
+    '\uF948', 2089,
+    '\uF949', 2090,
+    '\uF94A', 2091,
+    '\uF94B', 2092,
+    '\uF94C', 2093,
+    '\uF94D', 2094,
+    '\uF94E', 2095,
+    '\uF94F', 2096,
+    '\uF950', 2097,
+    '\uF951', 2098,
+    '\uF952', 2099,
+    '\uF953', 2100,
+    '\uF954', 2101,
+    '\uF955', 2102,
+    '\uF956', 2103,
+    '\uF957', 2104,
+    '\uF958', 2105,
+    '\uF959', 2106,
+    '\uF95A', 2107,
+    '\uF95B', 2108,
+    '\uF95C', 2039,
+    '\uF95D', 2109,
+    '\uF95E', 2110,
+    '\uF95F', 2111,
+    '\uF960', 2112,
+    '\uF961', 2113,
+    '\uF962', 2114,
+    '\uF963', 2115,
+    '\uF964', 2116,
+    '\uF965', 2117,
+    '\uF966', 2118,
+    '\uF967', 2119,
+    '\uF968', 2120,
+    '\uF969', 2121,
+    '\uF96A', 2122,
+    '\uF96B', 2123,
+    '\uF96C', 2124,
+    '\uF96D', 2125,
+    '\uF96E', 2126,
+    '\uF96F', 2127,
+    '\uF970', 2128,
+    '\uF971', 1351,
+    '\uF972', 2129,
+    '\uF973', 2130,
+    '\uF974', 2131,
+    '\uF975', 2132,
+    '\uF976', 2133,
+    '\uF977', 2134,
+    '\uF978', 2135,
+    '\uF979', 2136,
+    '\uF97A', 2137,
+    '\uF97B', 2138,
+    '\uF97C', 2139,
+    '\uF97D', 2140,
+    '\uF97E', 2141,
+    '\uF97F', 2142,
+    '\uF980', 2143,
+    '\uF981', 1228,
+    '\uF982', 2144,
+    '\uF983', 2145,
+    '\uF984', 2146,
+    '\uF985', 2147,
+    '\uF986', 2148,
+    '\uF987', 2149,
+    '\uF988', 2150,
+    '\uF989', 2151,
+    '\uF98A', 1209,
+    '\uF98B', 2152,
+    '\uF98C', 2153,
+    '\uF98D', 2154,
+    '\uF98E', 2155,
+    '\uF98F', 2156,
+    '\uF990', 2157,
+    '\uF991', 2158,
+    '\uF992', 2159,
+    '\uF993', 2160,
+    '\uF994', 2161,
+    '\uF995', 2162,
+    '\uF996', 2163,
+    '\uF997', 2164,
+    '\uF998', 2165,
+    '\uF999', 2166,
+    '\uF99A', 2167,
+    '\uF99B', 2168,
+    '\uF99C', 2169,
+    '\uF99D', 2170,
+    '\uF99E', 2171,
+    '\uF99F', 2172,
+    '\uF9A0', 2173,
+    '\uF9A1', 2127,
+    '\uF9A2', 2174,
+    '\uF9A3', 2175,
+    '\uF9A4', 2176,
+    '\uF9A5', 2177,
+    '\uF9A6', 2178,
+    '\uF9A7', 2179,
+    '\uF9A8', 2180,
+    '\uF9A9', 2181,
+    '\uF9AA', 2111,
+    '\uF9AB', 2182,
+    '\uF9AC', 2183,
+    '\uF9AD', 2184,
+    '\uF9AE', 2185,
+    '\uF9AF', 2186,
+    '\uF9B0', 2187,
+    '\uF9B1', 2188,
+    '\uF9B2', 2189,
+    '\uF9B3', 2190,
+    '\uF9B4', 2191,
+    '\uF9B5', 2192,
+    '\uF9B6', 2193,
+    '\uF9B7', 2194,
+    '\uF9B8', 2195,
+    '\uF9B9', 2196,
+    '\uF9BA', 2197,
+    '\uF9BB', 2198,
+    '\uF9BC', 2199,
+    '\uF9BD', 2200,
+    '\uF9BE', 2201,
+    '\uF9BF', 2039,
+    '\uF9C0', 2202,
+    '\uF9C1', 2203,
+    '\uF9C2', 2204,
+    '\uF9C3', 2205,
+    '\uF9C4', 1402,
+    '\uF9C5', 2206,
+    '\uF9C6', 2207,
+    '\uF9C7', 2208,
+    '\uF9C8', 2209,
+    '\uF9C9', 2210,
+    '\uF9CA', 2211,
+    '\uF9CB', 2212,
+    '\uF9CC', 2213,
+    '\uF9CD', 2214,
+    '\uF9CE', 2215,
+    '\uF9CF', 2216,
+    '\uF9D0', 2217,
+    '\uF9D1', 1669,
+    '\uF9D2', 2218,
+    '\uF9D3', 2219,
+    '\uF9D4', 2220,
+    '\uF9D5', 2221,
+    '\uF9D6', 2222,
+    '\uF9D7', 2223,
+    '\uF9D8', 2224,
+    '\uF9D9', 2225,
+    '\uF9DA', 2226,
+    '\uF9DB', 2113,
+    '\uF9DC', 2227,
+    '\uF9DD', 2228,
+    '\uF9DE', 2229,
+    '\uF9DF', 2230,
+    '\uF9E0', 2231,
+    '\uF9E1', 2232,
+    '\uF9E2', 2233,
+    '\uF9E3', 2234,
+    '\uF9E4', 2235,
+    '\uF9E5', 2236,
+    '\uF9E6', 2237,
+    '\uF9E7', 2238,
+    '\uF9E8', 2239,
+    '\uF9E9', 1356,
+    '\uF9EA', 2240,
+    '\uF9EB', 2241,
+    '\uF9EC', 2242,
+    '\uF9ED', 2243,
+    '\uF9EE', 2244,
+    '\uF9EF', 2245,
+    '\uF9F0', 2246,
+    '\uF9F1', 2247,
+    '\uF9F2', 2248,
+    '\uF9F3', 2249,
+    '\uF9F4', 2250,
+    '\uF9F5', 2251,
+    '\uF9F6', 2252,
+    '\uF9F7', 1307,
+    '\uF9F8', 2253,
+    '\uF9F9', 2254,
+    '\uF9FA', 2255,
+    '\uF9FB', 2256,
+    '\uF9FC', 2257,
+    '\uF9FD', 2258,
+    '\uF9FE', 2259,
+    '\uF9FF', 2260,
+    '\uFA00', 2261,
+    '\uFA01', 2262,
+    '\uFA02', 2263,
+    '\uFA03', 2264,
+    '\uFA04', 2265,
+    '\uFA05', 2266,
+    '\uFA06', 2267,
+    '\uFA07', 2268,
+    '\uFA08', 1334,
+    '\uFA09', 2269,
+    '\uFA0A', 1337,
+    '\uFA0B', 2270,
+    '\uFA0C', 2271,
+    '\uFA0D', 2272,
+    '\uFA10', 2273,
+    '\uFA12', 2274,
+    '\uFA15', 2275,
+    '\uFA16', 2276,
+    '\uFA17', 2277,
+    '\uFA18', 2278,
+    '\uFA19', 2279,
+    '\uFA1A', 2280,
+    '\uFA1B', 2281,
+    '\uFA1C', 2282,
+    '\uFA1D', 2283,
+    '\uFA1E', 1314,
+    '\uFA20', 2284,
+    '\uFA22', 2285,
+    '\uFA25', 2286,
+    '\uFA26', 2287,
+    '\uFA2A', 2288,
+    '\uFA2B', 2289,
+    '\uFA2C', 2290,
+    '\uFA2D', 2291,
+    '\uFA30', 2292,
+    '\uFA31', 2293,
+    '\uFA32', 2294,
+    '\uFA33', 2295,
+    '\uFA34', 2296,
+    '\uFA35', 2297,
+    '\uFA36', 2298,
+    '\uFA37', 2299,
+    '\uFA38', 2300,
+    '\uFA39', 2301,
+    '\uFA3A', 2302,
+    '\uFA3B', 2303,
+    '\uFA3C', 1235,
+    '\uFA3D', 2304,
+    '\uFA3E', 2305,
+    '\uFA3F', 2306,
+    '\uFA40', 2307,
+    '\uFA41', 2308,
+    '\uFA42', 2309,
+    '\uFA43', 2310,
+    '\uFA44', 2311,
+    '\uFA45', 2312,
+    '\uFA46', 2313,
+    '\uFA47', 2314,
+    '\uFA48', 2315,
+    '\uFA49', 2316,
+    '\uFA4A', 2317,
+    '\uFA4B', 2318,
+    '\uFA4C', 1674,
+    '\uFA4D', 2319,
+    '\uFA4E', 2320,
+    '\uFA4F', 2321,
+    '\uFA50', 2322,
+    '\uFA51', 1678,
+    '\uFA52', 2323,
+    '\uFA53', 2324,
+    '\uFA54', 2325,
+    '\uFA55', 2326,
+    '\uFA56', 2327,
+    '\uFA57', 2163,
+    '\uFA58', 2328,
+    '\uFA59', 2329,
+    '\uFA5A', 2330,
+    '\uFA5B', 2331,
+    '\uFA5C', 2332,
+    '\uFA5D', 2333,
+    '\uFA5E', 2333,
+    '\uFA5F', 2334,
+    '\uFA60', 2335,
+    '\uFA61', 2336,
+    '\uFA62', 2337,
+    '\uFA63', 2338,
+    '\uFA64', 2339,
+    '\uFA65', 2340,
+    '\uFA66', 2341,
+    '\uFA67', 2286,
+    '\uFA68', 2342,
+    '\uFA69', 2343,
+    '\uFA6A', 2344,
+    '\uFB00', 2345,
+    '\uFB01', 2346,
+    '\uFB02', 2347,
+    '\uFB03', 2348,
+    '\uFB04', 2349,
+    '\uFB05', 2350,
+    '\uFB06', 2350,
+    '\uFB13', 2351,
+    '\uFB14', 2352,
+    '\uFB15', 2353,
+    '\uFB16', 2354,
+    '\uFB17', 2355,
+    '\uFB1D', 2356,
+    '\uFB1F', 2357,
+    '\uFB20', 2358,
+    '\uFB21', 994,
+    '\uFB22', 997,
+    '\uFB23', 2359,
+    '\uFB24', 2360,
+    '\uFB25', 2361,
+    '\uFB26', 2362,
+    '\uFB27', 2363,
+    '\uFB28', 2364,
+    '\uFB29', 958,
+    '\uFB2A', 2365,
+    '\uFB2B', 2366,
+    '\uFB2C', 2367,
+    '\uFB2D', 2368,
+    '\uFB2E', 2369,
+    '\uFB2F', 2370,
+    '\uFB30', 2371,
+    '\uFB31', 2372,
+    '\uFB32', 2373,
+    '\uFB33', 2374,
+    '\uFB34', 2375,
+    '\uFB35', 2376,
+    '\uFB36', 2377,
+    '\uFB38', 2378,
+    '\uFB39', 2379,
+    '\uFB3A', 2380,
+    '\uFB3B', 2381,
+    '\uFB3C', 2382,
+    '\uFB3E', 2383,
+    '\uFB40', 2384,
+    '\uFB41', 2385,
+    '\uFB43', 2386,
+    '\uFB44', 2387,
+    '\uFB46', 2388,
+    '\uFB47', 2389,
+    '\uFB48', 2390,
+    '\uFB49', 2391,
+    '\uFB4A', 2392,
+    '\uFB4B', 2393,
+    '\uFB4C', 2394,
+    '\uFB4D', 2395,
+    '\uFB4E', 2396,
+    '\uFB4F', 2397,
+    '\uFB50', 2398,
+    '\uFB51', 2398,
+    '\uFB52', 2399,
+    '\uFB53', 2399,
+    '\uFB54', 2399,
+    '\uFB55', 2399,
+    '\uFB56', 2400,
+    '\uFB57', 2400,
+    '\uFB58', 2400,
+    '\uFB59', 2400,
+    '\uFB5A', 2401,
+    '\uFB5B', 2401,
+    '\uFB5C', 2401,
+    '\uFB5D', 2401,
+    '\uFB5E', 2402,
+    '\uFB5F', 2402,
+    '\uFB60', 2402,
+    '\uFB61', 2402,
+    '\uFB62', 2403,
+    '\uFB63', 2403,
+    '\uFB64', 2403,
+    '\uFB65', 2403,
+    '\uFB66', 2404,
+    '\uFB67', 2404,
+    '\uFB68', 2404,
+    '\uFB69', 2404,
+    '\uFB6A', 2405,
+    '\uFB6B', 2405,
+    '\uFB6C', 2405,
+    '\uFB6D', 2405,
+    '\uFB6E', 2406,
+    '\uFB6F', 2406,
+    '\uFB70', 2406,
+    '\uFB71', 2406,
+    '\uFB72', 2407,
+    '\uFB73', 2407,
+    '\uFB74', 2407,
+    '\uFB75', 2407,
+    '\uFB76', 2408,
+    '\uFB77', 2408,
+    '\uFB78', 2408,
+    '\uFB79', 2408,
+    '\uFB7A', 2409,
+    '\uFB7B', 2409,
+    '\uFB7C', 2409,
+    '\uFB7D', 2409,
+    '\uFB7E', 2410,
+    '\uFB7F', 2410,
+    '\uFB80', 2410,
+    '\uFB81', 2410,
+    '\uFB82', 2411,
+    '\uFB83', 2411,
+    '\uFB84', 2412,
+    '\uFB85', 2412,
+    '\uFB86', 2413,
+    '\uFB87', 2413,
+    '\uFB88', 2414,
+    '\uFB89', 2414,
+    '\uFB8A', 2415,
+    '\uFB8B', 2415,
+    '\uFB8C', 2416,
+    '\uFB8D', 2416,
+    '\uFB8E', 2417,
+    '\uFB8F', 2417,
+    '\uFB90', 2417,
+    '\uFB91', 2417,
+    '\uFB92', 2418,
+    '\uFB93', 2418,
+    '\uFB94', 2418,
+    '\uFB95', 2418,
+    '\uFB96', 2419,
+    '\uFB97', 2419,
+    '\uFB98', 2419,
+    '\uFB99', 2419,
+    '\uFB9A', 2420,
+    '\uFB9B', 2420,
+    '\uFB9C', 2420,
+    '\uFB9D', 2420,
+    '\uFB9E', 2421,
+    '\uFB9F', 2421,
+    '\uFBA0', 2422,
+    '\uFBA1', 2422,
+    '\uFBA2', 2422,
+    '\uFBA3', 2422,
+    '\uFBA4', 404,
+    '\uFBA5', 404,
+    '\uFBA6', 2423,
+    '\uFBA7', 2423,
+    '\uFBA8', 2423,
+    '\uFBA9', 2423,
+    '\uFBAA', 2424,
+    '\uFBAB', 2424,
+    '\uFBAC', 2424,
+    '\uFBAD', 2424,
+    '\uFBAE', 2425,
+    '\uFBAF', 2425,
+    '\uFBB0', 406,
+    '\uFBB1', 406,
+    '\uFBD3', 2426,
+    '\uFBD4', 2426,
+    '\uFBD5', 2426,
+    '\uFBD6', 2426,
+    '\uFBD7', 2427,
+    '\uFBD8', 2427,
+    '\uFBD9', 2428,
+    '\uFBDA', 2428,
+    '\uFBDB', 2429,
+    '\uFBDC', 2429,
+    '\uFBDD', 402,
+    '\uFBDE', 2430,
+    '\uFBDF', 2430,
+    '\uFBE0', 2431,
+    '\uFBE1', 2431,
+    '\uFBE2', 2432,
+    '\uFBE3', 2432,
+    '\uFBE4', 2433,
+    '\uFBE5', 2433,
+    '\uFBE6', 2433,
+    '\uFBE7', 2433,
+    '\uFBE8', 2434,
+    '\uFBE9', 2434,
+    '\uFBEA', 2435,
+    '\uFBEB', 2435,
+    '\uFBEC', 2436,
+    '\uFBED', 2436,
+    '\uFBEE', 2437,
+    '\uFBEF', 2437,
+    '\uFBF0', 2438,
+    '\uFBF1', 2438,
+    '\uFBF2', 2439,
+    '\uFBF3', 2439,
+    '\uFBF4', 2440,
+    '\uFBF5', 2440,
+    '\uFBF6', 2441,
+    '\uFBF7', 2441,
+    '\uFBF8', 2441,
+    '\uFBF9', 2442,
+    '\uFBFA', 2442,
+    '\uFBFB', 2442,
+    '\uFBFC', 2443,
+    '\uFBFD', 2443,
+    '\uFBFE', 2443,
+    '\uFBFF', 2443,
+    '\uFC00', 2444,
+    '\uFC01', 2445,
+    '\uFC02', 2446,
+    '\uFC03', 2442,
+    '\uFC04', 2447,
+    '\uFC05', 2448,
+    '\uFC06', 2449,
+    '\uFC07', 2450,
+    '\uFC08', 2451,
+    '\uFC09', 2452,
+    '\uFC0A', 2453,
+    '\uFC0B', 2454,
+    '\uFC0C', 2455,
+    '\uFC0D', 2456,
+    '\uFC0E', 2457,
+    '\uFC0F', 2458,
+    '\uFC10', 2459,
+    '\uFC11', 2460,
+    '\uFC12', 2461,
+    '\uFC13', 2462,
+    '\uFC14', 2463,
+    '\uFC15', 2464,
+    '\uFC16', 2465,
+    '\uFC17', 2466,
+    '\uFC18', 2467,
+    '\uFC19', 2468,
+    '\uFC1A', 2469,
+    '\uFC1B', 2470,
+    '\uFC1C', 2471,
+    '\uFC1D', 2472,
+    '\uFC1E', 2473,
+    '\uFC1F', 2474,
+    '\uFC20', 2475,
+    '\uFC21', 2476,
+    '\uFC22', 2477,
+    '\uFC23', 2478,
+    '\uFC24', 2479,
+    '\uFC25', 2480,
+    '\uFC26', 2481,
+    '\uFC27', 2482,
+    '\uFC28', 2483,
+    '\uFC29', 2484,
+    '\uFC2A', 2485,
+    '\uFC2B', 2486,
+    '\uFC2C', 2487,
+    '\uFC2D', 2488,
+    '\uFC2E', 2489,
+    '\uFC2F', 2490,
+    '\uFC30', 2491,
+    '\uFC31', 2492,
+    '\uFC32', 2493,
+    '\uFC33', 2494,
+    '\uFC34', 2495,
+    '\uFC35', 2496,
+    '\uFC36', 2497,
+    '\uFC37', 2498,
+    '\uFC38', 2499,
+    '\uFC39', 2500,
+    '\uFC3A', 2501,
+    '\uFC3B', 2502,
+    '\uFC3C', 2503,
+    '\uFC3D', 2504,
+    '\uFC3E', 2505,
+    '\uFC3F', 2506,
+    '\uFC40', 2507,
+    '\uFC41', 2508,
+    '\uFC42', 2509,
+    '\uFC43', 2510,
+    '\uFC44', 2511,
+    '\uFC45', 2512,
+    '\uFC46', 2513,
+    '\uFC47', 2514,
+    '\uFC48', 2515,
+    '\uFC49', 2516,
+    '\uFC4A', 2517,
+    '\uFC4B', 2518,
+    '\uFC4C', 2519,
+    '\uFC4D', 2520,
+    '\uFC4E', 2521,
+    '\uFC4F', 2522,
+    '\uFC50', 2523,
+    '\uFC51', 2524,
+    '\uFC52', 2525,
+    '\uFC53', 2526,
+    '\uFC54', 2527,
+    '\uFC55', 2528,
+    '\uFC56', 2529,
+    '\uFC57', 2530,
+    '\uFC58', 2531,
+    '\uFC59', 2532,
+    '\uFC5A', 2533,
+    '\uFC5B', 2534,
+    '\uFC5C', 2535,
+    '\uFC5D', 2536,
+    '\uFC5E', 2537,
+    '\uFC5F', 2538,
+    '\uFC60', 2539,
+    '\uFC61', 2540,
+    '\uFC62', 2541,
+    '\uFC63', 2542,
+    '\uFC64', 2543,
+    '\uFC65', 2544,
+    '\uFC66', 2446,
+    '\uFC67', 2545,
+    '\uFC68', 2442,
+    '\uFC69', 2447,
+    '\uFC6A', 2546,
+    '\uFC6B', 2547,
+    '\uFC6C', 2451,
+    '\uFC6D', 2548,
+    '\uFC6E', 2452,
+    '\uFC6F', 2453,
+    '\uFC70', 2549,
+    '\uFC71', 2550,
+    '\uFC72', 2457,
+    '\uFC73', 2551,
+    '\uFC74', 2458,
+    '\uFC75', 2459,
+    '\uFC76', 2552,
+    '\uFC77', 2553,
+    '\uFC78', 2461,
+    '\uFC79', 2554,
+    '\uFC7A', 2462,
+    '\uFC7B', 2463,
+    '\uFC7C', 2492,
+    '\uFC7D', 2493,
+    '\uFC7E', 2496,
+    '\uFC7F', 2497,
+    '\uFC80', 2498,
+    '\uFC81', 2502,
+    '\uFC82', 2503,
+    '\uFC83', 2504,
+    '\uFC84', 2505,
+    '\uFC85', 2509,
+    '\uFC86', 2510,
+    '\uFC87', 2511,
+    '\uFC88', 2555,
+    '\uFC89', 2515,
+    '\uFC8A', 2556,
+    '\uFC8B', 2557,
+    '\uFC8C', 2521,
+    '\uFC8D', 2558,
+    '\uFC8E', 2522,
+    '\uFC8F', 2523,
+    '\uFC90', 2536,
+    '\uFC91', 2559,
+    '\uFC92', 2560,
+    '\uFC93', 2531,
+    '\uFC94', 2561,
+    '\uFC95', 2532,
+    '\uFC96', 2533,
+    '\uFC97', 2444,
+    '\uFC98', 2445,
+    '\uFC99', 2562,
+    '\uFC9A', 2446,
+    '\uFC9B', 2563,
+    '\uFC9C', 2448,
+    '\uFC9D', 2449,
+    '\uFC9E', 2450,
+    '\uFC9F', 2451,
+    '\uFCA0', 2564,
+    '\uFCA1', 2454,
+    '\uFCA2', 2455,
+    '\uFCA3', 2456,
+    '\uFCA4', 2457,
+    '\uFCA5', 2565,
+    '\uFCA6', 2461,
+    '\uFCA7', 2464,
+    '\uFCA8', 2465,
+    '\uFCA9', 2466,
+    '\uFCAA', 2467,
+    '\uFCAB', 2468,
+    '\uFCAC', 2470,
+    '\uFCAD', 2471,
+    '\uFCAE', 2472,
+    '\uFCAF', 2473,
+    '\uFCB0', 2474,
+    '\uFCB1', 2475,
+    '\uFCB2', 2566,
+    '\uFCB3', 2476,
+    '\uFCB4', 2477,
+    '\uFCB5', 2478,
+    '\uFCB6', 2479,
+    '\uFCB7', 2480,
+    '\uFCB8', 2481,
+    '\uFCB9', 2483,
+    '\uFCBA', 2484,
+    '\uFCBB', 2485,
+    '\uFCBC', 2486,
+    '\uFCBD', 2487,
+    '\uFCBE', 2488,
+    '\uFCBF', 2489,
+    '\uFCC0', 2490,
+    '\uFCC1', 2491,
+    '\uFCC2', 2494,
+    '\uFCC3', 2495,
+    '\uFCC4', 2499,
+    '\uFCC5', 2500,
+    '\uFCC6', 2501,
+    '\uFCC7', 2502,
+    '\uFCC8', 2503,
+    '\uFCC9', 2506,
+    '\uFCCA', 2507,
+    '\uFCCB', 2508,
+    '\uFCCC', 2509,
+    '\uFCCD', 2567,
+    '\uFCCE', 2512,
+    '\uFCCF', 2513,
+    '\uFCD0', 2514,
+    '\uFCD1', 2515,
+    '\uFCD2', 2518,
+    '\uFCD3', 2519,
+    '\uFCD4', 2520,
+    '\uFCD5', 2521,
+    '\uFCD6', 2568,
+    '\uFCD7', 2524,
+    '\uFCD8', 2525,
+    '\uFCD9', 2569,
+    '\uFCDA', 2528,
+    '\uFCDB', 2529,
+    '\uFCDC', 2530,
+    '\uFCDD', 2531,
+    '\uFCDE', 2570,
+    '\uFCDF', 2446,
+    '\uFCE0', 2563,
+    '\uFCE1', 2451,
+    '\uFCE2', 2564,
+    '\uFCE3', 2457,
+    '\uFCE4', 2565,
+    '\uFCE5', 2461,
+    '\uFCE6', 2571,
+    '\uFCE7', 2474,
+    '\uFCE8', 2572,
+    '\uFCE9', 2573,
+    '\uFCEA', 2574,
+    '\uFCEB', 2502,
+    '\uFCEC', 2503,
+    '\uFCED', 2509,
+    '\uFCEE', 2521,
+    '\uFCEF', 2568,
+    '\uFCF0', 2531,
+    '\uFCF1', 2570,
+    '\uFCF2', 2575,
+    '\uFCF3', 2576,
+    '\uFCF4', 2577,
+    '\uFCF5', 2578,
+    '\uFCF6', 2579,
+    '\uFCF7', 2580,
+    '\uFCF8', 2581,
+    '\uFCF9', 2582,
+    '\uFCFA', 2583,
+    '\uFCFB', 2584,
+    '\uFCFC', 2585,
+    '\uFCFD', 2586,
+    '\uFCFE', 2587,
+    '\uFCFF', 2588,
+    '\uFD00', 2589,
+    '\uFD01', 2590,
+    '\uFD02', 2591,
+    '\uFD03', 2592,
+    '\uFD04', 2593,
+    '\uFD05', 2594,
+    '\uFD06', 2595,
+    '\uFD07', 2596,
+    '\uFD08', 2597,
+    '\uFD09', 2598,
+    '\uFD0A', 2599,
+    '\uFD0B', 2600,
+    '\uFD0C', 2573,
+    '\uFD0D', 2601,
+    '\uFD0E', 2602,
+    '\uFD0F', 2603,
+    '\uFD10', 2604,
+    '\uFD11', 2578,
+    '\uFD12', 2579,
+    '\uFD13', 2580,
+    '\uFD14', 2581,
+    '\uFD15', 2582,
+    '\uFD16', 2583,
+    '\uFD17', 2584,
+    '\uFD18', 2585,
+    '\uFD19', 2586,
+    '\uFD1A', 2587,
+    '\uFD1B', 2588,
+    '\uFD1C', 2589,
+    '\uFD1D', 2590,
+    '\uFD1E', 2591,
+    '\uFD1F', 2592,
+    '\uFD20', 2593,
+    '\uFD21', 2594,
+    '\uFD22', 2595,
+    '\uFD23', 2596,
+    '\uFD24', 2597,
+    '\uFD25', 2598,
+    '\uFD26', 2599,
+    '\uFD27', 2600,
+    '\uFD28', 2573,
+    '\uFD29', 2601,
+    '\uFD2A', 2602,
+    '\uFD2B', 2603,
+    '\uFD2C', 2604,
+    '\uFD2D', 2598,
+    '\uFD2E', 2599,
+    '\uFD2F', 2600,
+    '\uFD30', 2573,
+    '\uFD31', 2572,
+    '\uFD32', 2574,
+    '\uFD33', 2482,
+    '\uFD34', 2471,
+    '\uFD35', 2472,
+    '\uFD36', 2473,
+    '\uFD37', 2598,
+    '\uFD38', 2599,
+    '\uFD39', 2600,
+    '\uFD3A', 2482,
+    '\uFD3B', 2483,
+    '\uFD3C', 2605,
+    '\uFD3D', 2605,
+    '\uFD50', 2606,
+    '\uFD51', 2607,
+    '\uFD52', 2607,
+    '\uFD53', 2608,
+    '\uFD54', 2609,
+    '\uFD55', 2610,
+    '\uFD56', 2611,
+    '\uFD57', 2612,
+    '\uFD58', 2613,
+    '\uFD59', 2613,
+    '\uFD5A', 2614,
+    '\uFD5B', 2615,
+    '\uFD5C', 2616,
+    '\uFD5D', 2617,
+    '\uFD5E', 2618,
+    '\uFD5F', 2619,
+    '\uFD60', 2619,
+    '\uFD61', 2620,
+    '\uFD62', 2621,
+    '\uFD63', 2621,
+    '\uFD64', 2622,
+    '\uFD65', 2622,
+    '\uFD66', 2623,
+    '\uFD67', 2624,
+    '\uFD68', 2624,
+    '\uFD69', 2625,
+    '\uFD6A', 2626,
+    '\uFD6B', 2626,
+    '\uFD6C', 2627,
+    '\uFD6D', 2627,
+    '\uFD6E', 2628,
+    '\uFD6F', 2629,
+    '\uFD70', 2629,
+    '\uFD71', 2630,
+    '\uFD72', 2630,
+    '\uFD73', 2631,
+    '\uFD74', 2632,
+    '\uFD75', 2633,
+    '\uFD76', 2634,
+    '\uFD77', 2634,
+    '\uFD78', 2635,
+    '\uFD79', 2636,
+    '\uFD7A', 2637,
+    '\uFD7B', 2638,
+    '\uFD7C', 2639,
+    '\uFD7D', 2639,
+    '\uFD7E', 2640,
+    '\uFD7F', 2641,
+    '\uFD80', 2642,
+    '\uFD81', 2643,
+    '\uFD82', 2644,
+    '\uFD83', 2645,
+    '\uFD84', 2645,
+    '\uFD85', 2646,
+    '\uFD86', 2646,
+    '\uFD87', 2647,
+    '\uFD88', 2647,
+    '\uFD89', 2648,
+    '\uFD8A', 2649,
+    '\uFD8B', 2650,
+    '\uFD8C', 2651,
+    '\uFD8D', 2652,
+    '\uFD8E', 2653,
+    '\uFD8F', 2654,
+    '\uFD92', 2655,
+    '\uFD93', 2656,
+    '\uFD94', 2657,
+    '\uFD95', 2658,
+    '\uFD96', 2659,
+    '\uFD97', 2660,
+    '\uFD98', 2660,
+    '\uFD99', 2661,
+    '\uFD9A', 2662,
+    '\uFD9B', 2663,
+    '\uFD9C', 2664,
+    '\uFD9D', 2664,
+    '\uFD9E', 2665,
+    '\uFD9F', 2666,
+    '\uFDA0', 2667,
+    '\uFDA1', 2668,
+    '\uFDA2', 2669,
+    '\uFDA3', 2670,
+    '\uFDA4', 2671,
+    '\uFDA5', 2672,
+    '\uFDA6', 2673,
+    '\uFDA7', 2674,
+    '\uFDA8', 2675,
+    '\uFDA9', 2676,
+    '\uFDAA', 2677,
+    '\uFDAB', 2678,
+    '\uFDAC', 2679,
+    '\uFDAD', 2680,
+    '\uFDAE', 2681,
+    '\uFDAF', 2682,
+    '\uFDB0', 2683,
+    '\uFDB1', 2684,
+    '\uFDB2', 2685,
+    '\uFDB3', 2686,
+    '\uFDB4', 2640,
+    '\uFDB5', 2642,
+    '\uFDB6', 2687,
+    '\uFDB7', 2688,
+    '\uFDB8', 2689,
+    '\uFDB9', 2690,
+    '\uFDBA', 2691,
+    '\uFDBB', 2692,
+    '\uFDBC', 2691,
+    '\uFDBD', 2689,
+    '\uFDBE', 2693,
+    '\uFDBF', 2694,
+    '\uFDC0', 2695,
+    '\uFDC1', 2696,
+    '\uFDC2', 2697,
+    '\uFDC3', 2692,
+    '\uFDC4', 2633,
+    '\uFDC5', 2623,
+    '\uFDC6', 2698,
+    '\uFDC7', 2699,
+    '\uFDF0', 2700,
+    '\uFDF1', 2701,
+    '\uFDF2', 2702,
+    '\uFDF3', 2703,
+    '\uFDF4', 2704,
+    '\uFDF5', 2705,
+    '\uFDF6', 2706,
+    '\uFDF7', 2707,
+    '\uFDF8', 2708,
+    '\uFDF9', 2709,
+    '\uFDFA', 2710,
+    '\uFDFB', 2711,
+    '\uFDFC', 2712,
+    '\uFE30', 938,
+    '\uFE31', 2713,
+    '\uFE32', 2714,
+    '\uFE33', 2715,
+    '\uFE34', 2715,
+    '\uFE35', 961,
+    '\uFE36', 962,
+    '\uFE37', 2716,
+    '\uFE38', 2717,
+    '\uFE39', 2718,
+    '\uFE3A', 2719,
+    '\uFE3B', 2720,
+    '\uFE3C', 2721,
+    '\uFE3D', 2722,
+    '\uFE3E', 2723,
+    '\uFE3F', 1088,
+    '\uFE40', 1089,
+    '\uFE41', 2724,
+    '\uFE42', 2725,
+    '\uFE43', 2726,
+    '\uFE44', 2727,
+    '\uFE49', 945,
+    '\uFE4A', 945,
+    '\uFE4B', 945,
+    '\uFE4C', 945,
+    '\uFE4D', 2715,
+    '\uFE4E', 2715,
+    '\uFE4F', 2715,
+    '\uFE50', 2728,
+    '\uFE51', 2729,
+    '\uFE52', 937,
+    '\uFE54', 309,
+    '\uFE55', 2730,
+    '\uFE56', 2731,
+    '\uFE57', 2732,
+    '\uFE58', 2713,
+    '\uFE59', 961,
+    '\uFE5A', 962,
+    '\uFE5B', 2716,
+    '\uFE5C', 2717,
+    '\uFE5D', 2718,
+    '\uFE5E', 2719,
+    '\uFE5F', 2733,
+    '\uFE60', 2734,
+    '\uFE61', 2735,
+    '\uFE62', 958,
+    '\uFE63', 2736,
+    '\uFE64', 2737,
+    '\uFE65', 2738,
+    '\uFE66', 960,
+    '\uFE68', 2739,
+    '\uFE69', 2740,
+    '\uFE6A', 2741,
+    '\uFE6B', 2742,
+    '\uFE70', 2743,
+    '\uFE71', 2744,
+    '\uFE72', 2745,
+    '\uFE74', 2746,
+    '\uFE76', 2747,
+    '\uFE77', 2748,
+    '\uFE78', 2749,
+    '\uFE79', 2750,
+    '\uFE7A', 2751,
+    '\uFE7B', 2752,
+    '\uFE7C', 2753,
+    '\uFE7D', 2754,
+    '\uFE7E', 2755,
+    '\uFE7F', 2756,
+    '\uFE80', 2757,
+    '\uFE81', 395,
+    '\uFE82', 395,
+    '\uFE83', 396,
+    '\uFE84', 396,
+    '\uFE85', 397,
+    '\uFE86', 397,
+    '\uFE87', 398,
+    '\uFE88', 398,
+    '\uFE89', 399,
+    '\uFE8A', 399,
+    '\uFE8B', 399,
+    '\uFE8C', 399,
+    '\uFE8D', 2758,
+    '\uFE8E', 2758,
+    '\uFE8F', 2759,
+    '\uFE90', 2759,
+    '\uFE91', 2759,
+    '\uFE92', 2759,
+    '\uFE93', 2760,
+    '\uFE94', 2760,
+    '\uFE95', 2761,
+    '\uFE96', 2761,
+    '\uFE97', 2761,
+    '\uFE98', 2761,
+    '\uFE99', 2762,
+    '\uFE9A', 2762,
+    '\uFE9B', 2762,
+    '\uFE9C', 2762,
+    '\uFE9D', 2763,
+    '\uFE9E', 2763,
+    '\uFE9F', 2763,
+    '\uFEA0', 2763,
+    '\uFEA1', 2764,
+    '\uFEA2', 2764,
+    '\uFEA3', 2764,
+    '\uFEA4', 2764,
+    '\uFEA5', 2765,
+    '\uFEA6', 2765,
+    '\uFEA7', 2765,
+    '\uFEA8', 2765,
+    '\uFEA9', 2766,
+    '\uFEAA', 2766,
+    '\uFEAB', 2767,
+    '\uFEAC', 2767,
+    '\uFEAD', 2768,
+    '\uFEAE', 2768,
+    '\uFEAF', 2769,
+    '\uFEB0', 2769,
+    '\uFEB1', 2770,
+    '\uFEB2', 2770,
+    '\uFEB3', 2770,
+    '\uFEB4', 2770,
+    '\uFEB5', 2771,
+    '\uFEB6', 2771,
+    '\uFEB7', 2771,
+    '\uFEB8', 2771,
+    '\uFEB9', 2772,
+    '\uFEBA', 2772,
+    '\uFEBB', 2772,
+    '\uFEBC', 2772,
+    '\uFEBD', 2773,
+    '\uFEBE', 2773,
+    '\uFEBF', 2773,
+    '\uFEC0', 2773,
+    '\uFEC1', 2774,
+    '\uFEC2', 2774,
+    '\uFEC3', 2774,
+    '\uFEC4', 2774,
+    '\uFEC5', 2775,
+    '\uFEC6', 2775,
+    '\uFEC7', 2775,
+    '\uFEC8', 2775,
+    '\uFEC9', 2776,
+    '\uFECA', 2776,
+    '\uFECB', 2776,
+    '\uFECC', 2776,
+    '\uFECD', 2777,
+    '\uFECE', 2777,
+    '\uFECF', 2777,
+    '\uFED0', 2777,
+    '\uFED1', 2778,
+    '\uFED2', 2778,
+    '\uFED3', 2778,
+    '\uFED4', 2778,
+    '\uFED5', 2779,
+    '\uFED6', 2779,
+    '\uFED7', 2779,
+    '\uFED8', 2779,
+    '\uFED9', 2780,
+    '\uFEDA', 2780,
+    '\uFEDB', 2780,
+    '\uFEDC', 2780,
+    '\uFEDD', 2781,
+    '\uFEDE', 2781,
+    '\uFEDF', 2781,
+    '\uFEE0', 2781,
+    '\uFEE1', 2782,
+    '\uFEE2', 2782,
+    '\uFEE3', 2782,
+    '\uFEE4', 2782,
+    '\uFEE5', 2783,
+    '\uFEE6', 2783,
+    '\uFEE7', 2783,
+    '\uFEE8', 2783,
+    '\uFEE9', 2784,
+    '\uFEEA', 2784,
+    '\uFEEB', 2784,
+    '\uFEEC', 2784,
+    '\uFEED', 2785,
+    '\uFEEE', 2785,
+    '\uFEEF', 2434,
+    '\uFEF0', 2434,
+    '\uFEF1', 2786,
+    '\uFEF2', 2786,
+    '\uFEF3', 2786,
+    '\uFEF4', 2786,
+    '\uFEF5', 2787,
+    '\uFEF6', 2787,
+    '\uFEF7', 2788,
+    '\uFEF8', 2788,
+    '\uFEF9', 2789,
+    '\uFEFA', 2789,
+    '\uFEFB', 2790,
+    '\uFEFC', 2790,
+    '\uFF01', 2732,
+    '\uFF02', 2791,
+    '\uFF03', 2733,
+    '\uFF04', 2740,
+    '\uFF05', 2741,
+    '\uFF06', 2734,
+    '\uFF07', 2792,
+    '\uFF08', 961,
+    '\uFF09', 962,
+    '\uFF0A', 2735,
+    '\uFF0B', 958,
+    '\uFF0C', 2728,
+    '\uFF0D', 2736,
+    '\uFF0E', 937,
+    '\uFF0F', 2793,
+    '\uFF10', 950,
+    '\uFF11', 9,
+    '\uFF12', 4,
+    '\uFF13', 5,
+    '\uFF14', 952,
+    '\uFF15', 953,
+    '\uFF16', 954,
+    '\uFF17', 955,
+    '\uFF18', 956,
+    '\uFF19', 957,
+    '\uFF1A', 2730,
+    '\uFF1B', 309,
+    '\uFF1C', 2737,
+    '\uFF1D', 960,
+    '\uFF1E', 2738,
+    '\uFF1F', 2731,
+    '\uFF20', 2742,
+    '\uFF21', 1167,
+    '\uFF22', 989,
+    '\uFF23', 967,
+    '\uFF24', 1002,
+    '\uFF25', 991,
+    '\uFF26', 992,
+    '\uFF27', 1168,
+    '\uFF28', 974,
+    '\uFF29', 976,
+    '\uFF2A', 1169,
+    '\uFF2B', 988,
+    '\uFF2C', 977,
+    '\uFF2D', 993,
+    '\uFF2E', 978,
+    '\uFF2F', 1170,
+    '\uFF30', 980,
+    '\uFF31', 981,
+    '\uFF32', 982,
+    '\uFF33', 1171,
+    '\uFF34', 1172,
+    '\uFF35', 1173,
+    '\uFF36', 1020,
+    '\uFF37', 1174,
+    '\uFF38', 1025,
+    '\uFF39', 1175,
+    '\uFF3A', 986,
+    '\uFF3B', 2794,
+    '\uFF3C', 2739,
+    '\uFF3D', 2795,
+    '\uFF3E', 2796,
+    '\uFF3F', 2715,
+    '\uFF40', 925,
+    '\uFF41', 2,
+    '\uFF42', 1176,
+    '\uFF43', 1038,
+    '\uFF44', 1003,
+    '\uFF45', 990,
+    '\uFF46', 1177,
+    '\uFF47', 973,
+    '\uFF48', 284,
+    '\uFF49', 951,
+    '\uFF4A', 286,
+    '\uFF4B', 1178,
+    '\uFF4C', 300,
+    '\uFF4D', 1039,
+    '\uFF4E', 963,
+    '\uFF4F', 10,
+    '\uFF50', 1179,
+    '\uFF51', 1180,
+    '\uFF52', 287,
+    '\uFF53', 180,
+    '\uFF54', 1181,
+    '\uFF55', 1182,
+    '\uFF56', 1031,
+    '\uFF57', 291,
+    '\uFF58', 301,
+    '\uFF59', 292,
+    '\uFF5A', 1183,
+    '\uFF5B', 2716,
+    '\uFF5C', 2797,
+    '\uFF5D', 2717,
+    '\uFF5E', 2798,
+    '\uFF5F', 2799,
+    '\uFF60', 2800,
+    '\uFF61', 2801,
+    '\uFF62', 2724,
+    '\uFF63', 2725,
+    '\uFF64', 2729,
+    '\uFF65', 2802,
+    '\uFF66', 1773,
+    '\uFF67', 2803,
+    '\uFF68', 2804,
+    '\uFF69', 2805,
+    '\uFF6A', 2806,
+    '\uFF6B', 2807,
+    '\uFF6C', 2808,
+    '\uFF6D', 2809,
+    '\uFF6E', 2810,
+    '\uFF6F', 2811,
+    '\uFF70', 2812,
+    '\uFF71', 1727,
+    '\uFF72', 1728,
+    '\uFF73', 1729,
+    '\uFF74', 1730,
+    '\uFF75', 1731,
+    '\uFF76', 1732,
+    '\uFF77', 1733,
+    '\uFF78', 1734,
+    '\uFF79', 1735,
+    '\uFF7A', 1736,
+    '\uFF7B', 1737,
+    '\uFF7C', 1738,
+    '\uFF7D', 1739,
+    '\uFF7E', 1740,
+    '\uFF7F', 1741,
+    '\uFF80', 1742,
+    '\uFF81', 1743,
+    '\uFF82', 1744,
+    '\uFF83', 1745,
+    '\uFF84', 1746,
+    '\uFF85', 1747,
+    '\uFF86', 1748,
+    '\uFF87', 1749,
+    '\uFF88', 1750,
+    '\uFF89', 1751,
+    '\uFF8A', 1752,
+    '\uFF8B', 1753,
+    '\uFF8C', 1754,
+    '\uFF8D', 1755,
+    '\uFF8E', 1756,
+    '\uFF8F', 1757,
+    '\uFF90', 1758,
+    '\uFF91', 1759,
+    '\uFF92', 1760,
+    '\uFF93', 1761,
+    '\uFF94', 1762,
+    '\uFF95', 1763,
+    '\uFF96', 1764,
+    '\uFF97', 1765,
+    '\uFF98', 1766,
+    '\uFF99', 1767,
+    '\uFF9A', 1768,
+    '\uFF9B', 1769,
+    '\uFF9C', 1770,
+    '\uFF9D', 2813,
+    '\uFF9E', 2814,
+    '\uFF9F', 2815,
+    '\uFFA0', 1521,
+    '\uFFA1', 1470,
+    '\uFFA2', 1471,
+    '\uFFA3', 1472,
+    '\uFFA4', 1473,
+    '\uFFA5', 1474,
+    '\uFFA6', 1475,
+    '\uFFA7', 1476,
+    '\uFFA8', 1477,
+    '\uFFA9', 1478,
+    '\uFFAA', 1479,
+    '\uFFAB', 1480,
+    '\uFFAC', 1481,
+    '\uFFAD', 1482,
+    '\uFFAE', 1483,
+    '\uFFAF', 1484,
+    '\uFFB0', 1485,
+    '\uFFB1', 1486,
+    '\uFFB2', 1487,
+    '\uFFB3', 1488,
+    '\uFFB4', 1489,
+    '\uFFB5', 1490,
+    '\uFFB6', 1491,
+    '\uFFB7', 1492,
+    '\uFFB8', 1493,
+    '\uFFB9', 1494,
+    '\uFFBA', 1495,
+    '\uFFBB', 1496,
+    '\uFFBC', 1497,
+    '\uFFBD', 1498,
+    '\uFFBE', 1499,
+    '\uFFC2', 1500,
+    '\uFFC3', 1501,
+    '\uFFC4', 1502,
+    '\uFFC5', 1503,
+    '\uFFC6', 1504,
+    '\uFFC7', 1505,
+    '\uFFCA', 1506,
+    '\uFFCB', 1507,
+    '\uFFCC', 1508,
+    '\uFFCD', 1509,
+    '\uFFCE', 1510,
+    '\uFFCF', 1511,
+    '\uFFD2', 1512,
+    '\uFFD3', 1513,
+    '\uFFD4', 1514,
+    '\uFFD5', 1515,
+    '\uFFD6', 1516,
+    '\uFFD7', 1517,
+    '\uFFDA', 1518,
+    '\uFFDB', 1519,
+    '\uFFDC', 1520,
+    '\uFFE0', 2816,
+    '\uFFE1', 2817,
+    '\uFFE2', 2818,
+    '\uFFE3', 3,
+    '\uFFE4', 2819,
+    '\uFFE5', 2820,
+    '\uFFE6', 2821,
+    '\uFFE8', 2822,
+    '\uFFE9', 2823,
+    '\uFFEA', 2824,
+    '\uFFEB', 2825,
+    '\uFFEC', 2826,
+    '\uFFED', 2827,
+    '\uFFEE', 2828,
+  };
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNAException.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNAException.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/IDNAException.cs (revision 580)
@@ -0,0 +1,48 @@
+/// <summary>
+/// *
+/// Author: Alexander Gnauck AG-Software, mailto:gnauck@ag-software.de
+/// *
+/// This file is part of GNU Libidn.
+/// *
+/// This library is free software; you can redistribute it and/or
+/// modify it under the terms of the GNU Lesser General Public License
+/// as published by the Free Software Foundation; either version 2.1 of
+/// the License, or (at your option) any later version.
+/// *
+/// This library is distributed in the hope that it will be useful, but
+/// WITHOUT ANY WARRANTY; without even the implied warranty of
+/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+/// Lesser General Public License for more details.
+/// *
+/// You should have received a copy of the GNU Lesser General Public
+/// License along with this library; if not, write to the Free Software
+/// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301
+/// USA
+/// </summary>
+
+using System;
+
+namespace Gnu.Inet.Encoding
+{		
+	public class IDNAException : System.Exception
+	{
+		public static string CONTAINS_NON_LDH		= "Contains non-LDH characters.";
+		public static string CONTAINS_HYPHEN		= "Leading or trailing hyphen not allowed.";
+		public static string CONTAINS_ACE_PREFIX	= "ACE prefix (xn--) not allowed.";
+		public static string TOO_LONG				= "String too long.";
+		
+		public IDNAException(string m) : base(m)
+		{
+		
+		}
+
+		// TODO
+		public IDNAException(StringprepException e) :base( "", e)
+		{
+		}
+		
+		public IDNAException(PunycodeException e) : base( "", e)
+		{
+		}
+	}
+}
Index: /apps/outlook/branches/1.5/DotTelSystem/Punycode/RFC3454.cs
===================================================================
--- /apps/outlook/branches/1.5/DotTelSystem/Punycode/RFC3454.cs (revision 580)
+++ /apps/outlook/branches/1.5/DotTelSystem/Punycode/RFC3454.cs (revision 580)
@@ -0,0 +1,4275 @@
+// Do not edit !!!
+// this file is generated automatically
+
+using System;
+
+namespace Gnu.Inet.Encoding{
+
+public class RFC3454
+{
+  public static char[][] A1 = new char[][] {
+    new char[] { '\u0221' },	/* 0221 */
+    new char[] { '\u0234', '\u024F' },	/* 0234-024F */
+    new char[] { '\u02AE', '\u02AF' },	/* 02AE-02AF */
+    new char[] { '\u02EF', '\u02FF' },	/* 02EF-02FF */
+    new char[] { '\u0350', '\u035F' },	/* 0350-035F */
+    new char[] { '\u0370', '\u0373' },	/* 0370-0373 */
+    new char[] { '\u0376', '\u0379' },	/* 0376-0379 */
+    new char[] { '\u037B', '\u037D' },	/* 037B-037D */
+    new char[] { '\u037F', '\u0383' },	/* 037F-0383 */
+    new char[] { '\u038B' },	/* 038B */
+    new char[] { '\u038D' },	/* 038D */
+    new char[] { '\u03A2' },	/* 03A2 */
+    new char[] { '\u03CF' },	/* 03CF */
+    new char[] { '\u03F7', '\u03FF' },	/* 03F7-03FF */
+    new char[] { '\u0487' },	/* 0487 */
+    new char[] { '\u04CF' },	/* 04CF */
+    new char[] { '\u04F6', '\u04F7' },	/* 04F6-04F7 */
+    new char[] { '\u04FA', '\u04FF' },	/* 04FA-04FF */
+    new char[] { '\u0510', '\u0530' },	/* 0510-0530 */
+    new char[] { '\u0557', '\u0558' },	/* 0557-0558 */
+    new char[] { '\u0560' },	/* 0560 */
+    new char[] { '\u0588' },	/* 0588 */
+    new char[] { '\u058B', '\u0590' },	/* 058B-0590 */
+    new char[] { '\u05A2' },	/* 05A2 */
+    new char[] { '\u05BA' },	/* 05BA */
+    new char[] { '\u05C5', '\u05CF' },	/* 05C5-05CF */
+    new char[] { '\u05EB', '\u05EF' },	/* 05EB-05EF */
+    new char[] { '\u05F5', '\u060B' },	/* 05F5-060B */
+    new char[] { '\u060D', '\u061A' },	/* 060D-061A */
+    new char[] { '\u061C', '\u061E' },	/* 061C-061E */
+    new char[] { '\u0620' },	/* 0620 */
+    new char[] { '\u063B', '\u063F' },	/* 063B-063F */
+    new char[] { '\u0656', '\u065F' },	/* 0656-065F */
+    new char[] { '\u06EE', '\u06EF' },	/* 06EE-06EF */
+    new char[] { '\u06FF' },	/* 06FF */
+    new char[] { '\u070E' },	/* 070E */
+    new char[] { '\u072D', '\u072F' },	/* 072D-072F */
+    new char[] { '\u074B', '\u077F' },	/* 074B-077F */
+    new char[] { '\u07B2', '\u0900' },	/* 07B2-0900 */
+    new char[] { '\u0904' },	/* 0904 */
+    new char[] { '\u093A', '\u093B' },	/* 093A-093B */
+    new char[] { '\u094E', '\u094F' },	/* 094E-094F */
+    new char[] { '\u0955', '\u0957' },	/* 0955-0957 */
+    new char[] { '\u0971', '\u0980' },	/* 0971-0980 */
+    new char[] { '\u0984' },	/* 0984 */
+    new char[] { '\u098D', '\u098E' },	/* 098D-098E */
+    new char[] { '\u0991', '\u0992' },	/* 0991-0992 */
+    new char[] { '\u09A9' },	/* 09A9 */
+    new char[] { '\u09B1' },	/* 09B1 */
+    new char[] { '\u09B3', '\u09B5' },	/* 09B3-09B5 */
+    new char[] { '\u09BA', '\u09BB' },	/* 09BA-09BB */
+    new char[] { '\u09BD' },	/* 09BD */
+    new char[] { '\u09C5', '\u09C6' },	/* 09C5-09C6 */
+    new char[] { '\u09C9', '\u09CA' },	/* 09C9-09CA */
+    new char[] { '\u09CE', '\u09D6' },	/* 09CE-09D6 */
+    new char[] { '\u09D8', '\u09DB' },	/* 09D8-09DB */
+    new char[] { '\u09DE' },	/* 09DE */
+    new char[] { '\u09E4', '\u09E5' },	/* 09E4-09E5 */
+    new char[] { '\u09FB', '\u0A01' },	/* 09FB-0A01 */
+    new char[] { '\u0A03', '\u0A04' },	/* 0A03-0A04 */
+    new char[] { '\u0A0B', '\u0A0E' },	/* 0A0B-0A0E */
+    new char[] { '\u0A11', '\u0A12' },	/* 0A11-0A12 */
+    new char[] { '\u0A29' },	/* 0A29 */
+    new char[] { '\u0A31' },	/* 0A31 */
+    new char[] { '\u0A34' },	/* 0A34 */
+    new char[] { '\u0A37' },	/* 0A37 */
+    new char[] { '\u0A3A', '\u0A3B' },	/* 0A3A-0A3B */
+    new char[] { '\u0A3D' },	/* 0A3D */
+    new char[] { '\u0A43', '\u0A46' },	/* 0A43-0A46 */
+    new char[] { '\u0A49', '\u0A4A' },	/* 0A49-0A4A */
+    new char[] { '\u0A4E', '\u0A58' },	/* 0A4E-0A58 */
+    new char[] { '\u0A5D' },	/* 0A5D */
+    new char[] { '\u0A5F', '\u0A65' },	/* 0A5F-0A65 */
+    new char[] { '\u0A75', '\u0A80' },	/* 0A75-0A80 */
+    new char[] { '\u0A84' },	/* 0A84 */
+    new char[] { '\u0A8C' },	/* 0A8C */
+    new char[] { '\u0A8E' },	/* 0A8E */
+    new char[] { '\u0A92' },	/* 0A92 */
+    new char[] { '\u0AA9' },	/* 0AA9 */
+    new char[] { '\u0AB1' },	/* 0AB1 */
+    new char[] { '\u0AB4' },	/* 0AB4 */
+    new char[] { '\u0ABA', '\u0ABB' },	/* 0ABA-0ABB */
+    new char[] { '\u0AC6' },	/* 0AC6 */
+    new char[] { '\u0ACA' },	/* 0ACA */
+    new char[] { '\u0ACE', '\u0ACF' },	/* 0ACE-0ACF */
+    new char[] { '\u0AD1', '\u0ADF' },	/* 0AD1-0ADF */
+    new char[] { '\u0AE1', '\u0AE5' },	/* 0AE1-0AE5 */
+    new char[] { '\u0AF0', '\u0B00' },	/* 0AF0-0B00 */
+    new char[] { '\u0B04' },	/* 0B04 */
+    new char[] { '\u0B0D', '\u0B0E' },	/* 0B0D-0B0E */
+    new char[] { '\u0B11', '\u0B12' },	/* 0B11-0B12 */
+    new char[] { '\u0B29' },	/* 0B29 */
+    new char[] { '\u0B31' },	/* 0B31 */
+    new char[] { '\u0B34', '\u0B35' },	/* 0B34-0B35 */
+    new char[] { '\u0B3A', '\u0B3B' },	/* 0B3A-0B3B */
+    new char[] { '\u0B44', '\u0B46' },	/* 0B44-0B46 */
+    new char[] { '\u0B49', '\u0B4A' },	/* 0B49-0B4A */
+    new char[] { '\u0B4E', '\u0B55' },	/* 0B4E-0B55 */
+    new char[] { '\u0B58', '\u0B5B' },	/* 0B58-0B5B */
+    new char[] { '\u0B5E' },	/* 0B5E */
+    new char[] { '\u0B62', '\u0B65' },	/* 0B62-0B65 */
+    new char[] { '\u0B71', '\u0B81' },	/* 0B71-0B81 */
+    new char[] { '\u0B84' },	/* 0B84 */
+    new char[] { '\u0B8B', '\u0B8D' },	/* 0B8B-0B8D */
+    new char[] { '\u0B91' },	/* 0B91 */
+    new char[] { '\u0B96', '\u0B98' },	/* 0B96-0B98 */
+    new char[] { '\u0B9B' },	/* 0B9B */
+    new char[] { '\u0B9D' },	/* 0B9D */
+    new char[] { '\u0BA0', '\u0BA2' },	/* 0BA0-0BA2 */
+    new char[] { '\u0BA5', '\u0BA7' },	/* 0BA5-0BA7 */
+    new char[] { '\u0BAB', '\u0BAD' },	/* 0BAB-0BAD */
+    new char[] { '\u0BB6' },	/* 0BB6 */
+    new char[] { '\u0BBA', '\u0BBD' },	/* 0BBA-0BBD */
+    new char[] { '\u0BC3', '\u0BC5' },	/* 0BC3-0BC5 */
+    new char[] { '\u0BC9' },	/* 0BC9 */
+    new char[] { '\u0BCE', '\u0BD6' },	/* 0BCE-0BD6 */
+    new char[] { '\u0BD8', '\u0BE6' },	/* 0BD8-0BE6 */
+    new char[] { '\u0BF3', '\u0C00' },	/* 0BF3-0C00 */
+    new char[] { '\u0C04' },	/* 0C04 */
+    new char[] { '\u0C0D' },	/* 0C0D */
+    new char[] { '\u0C11' },	/* 0C11 */
+    new char[] { '\u0C29' },	/* 0C29 */
+    new char[] { '\u0C34' },	/* 0C34 */
+    new char[] { '\u0C3A', '\u0C3D' },	/* 0C3A-0C3D */
+    new char[] { '\u0C45' },	/* 0C45 */
+    new char[] { '\u0C49' },	/* 0C49 */
+    new char[] { '\u0C4E', '\u0C54' },	/* 0C4E-0C54 */
+    new char[] { '\u0C57', '\u0C5F' },	/* 0C57-0C5F */
+    new char[] { '\u0C62', '\u0C65' },	/* 0C62-0C65 */
+    new char[] { '\u0C70', '\u0C81' },	/* 0C70-0C81 */
+    new char[] { '\u0C84' },	/* 0C84 */
+    new char[] { '\u0C8D' },	/* 0C8D */
+    new char[] { '\u0C91' },	/* 0C91 */
+    new char[] { '\u0CA9' },	/* 0CA9 */
+    new char[] { '\u0CB4' },	/* 0CB4 */
+    new char[] { '\u0CBA', '\u0CBD' },	/* 0CBA-0CBD */
+    new char[] { '\u0CC5' },	/* 0CC5 */
+    new char[] { '\u0CC9' },	/* 0CC9 */
+    new char[] { '\u0CCE', '\u0CD4' },	/* 0CCE-0CD4 */
+    new char[] { '\u0CD7', '\u0CDD' },	/* 0CD7-0CDD */
+    new char[] { '\u0CDF' },	/* 0CDF */
+    new char[] { '\u0CE2', '\u0CE5' },	/* 0CE2-0CE5 */
+    new char[] { '\u0CF0', '\u0D01' },	/* 0CF0-0D01 */
+    new char[] { '\u0D04' },	/* 0D04 */
+    new char[] { '\u0D0D' },	/* 0D0D */
+    new char[] { '\u0D11' },	/* 0D11 */
+    new char[] { '\u0D29' },	/* 0D29 */
+    new char[] { '\u0D3A', '\u0D3D' },	/* 0D3A-0D3D */
+    new char[] { '\u0D44', '\u0D45' },	/* 0D44-0D45 */
+    new char[] { '\u0D49' },	/* 0D49 */
+    new char[] { '\u0D4E', '\u0D56' },	/* 0D4E-0D56 */
+    new char[] { '\u0D58', '\u0D5F' },	/* 0D58-0D5F */
+    new char[] { '\u0D62', '\u0D65' },	/* 0D62-0D65 */
+    new char[] { '\u0D70', '\u0D81' },	/* 0D70-0D81 */
+    new char[] { '\u0D84' },	/* 0D84 */
+    new char[] { '\u0D97', '\u0D99' },	/* 0D97-0D99 */
+    new char[] { '\u0DB2' },	/* 0DB2 */
+    new char[] { '\u0DBC' },	/* 0DBC */
+    new char[] { '\u0DBE', '\u0DBF' },	/* 0DBE-0DBF */
+    new char[] { '\u0DC7', '\u0DC9' },	/* 0DC7-0DC9 */
+    new char[] { '\u0DCB', '\u0DCE' },	/* 0DCB-0DCE */
+    new char[] { '\u0DD5' },	/* 0DD5 */
+    new char[] { '\u0DD7' },	/* 0DD7 */
+    new char[] { '\u0DE0', '\u0DF1' },	/* 0DE0-0DF1 */
+    new char[] { '\u0DF5', '\u0E00' },	/* 0DF5-0E00 */
+    new char[] { '\u0E3B', '\u0E3E' },	/* 0E3B-0E3E */
+    new char[] { '\u0E5C', '\u0E80' },	/* 0E5C-0E80 */
+    new char[] { '\u0E83' },	/* 0E83 */
+    new char[] { '\u0E85', '\u0E86' },	/* 0E85-0E86 */
+    new char[] { '\u0E89' },	/* 0E89 */
+    new char[] { '\u0E8B', '\u0E8C' },	/* 0E8B-0E8C */
+    new char[] { '\u0E8E', '\u0E93' },	/* 0E8E-0E93 */
+    new char[] { '\u0E98' },	/* 0E98 */
+    new char[] { '\u0EA0' },	/* 0EA0 */
+    new char[] { '\u0EA4' },	/* 0EA4 */
+    new char[] { '\u0EA6' },	/* 0EA6 */
+    new char[] { '\u0EA8', '\u0EA9' },	/* 0EA8-0EA9 */
+    new char[] { '\u0EAC' },	/* 0EAC */
+    new char[] { '\u0EBA' },	/* 0EBA */
+    new char[] { '\u0EBE', '\u0EBF' },	/* 0EBE-0EBF */
+    new char[] { '\u0EC5' },	/* 0EC5 */
+    new char[] { '\u0EC7' },	/* 0EC7 */
+    new char[] { '\u0ECE', '\u0ECF' },	/* 0ECE-0ECF */
+    new char[] { '\u0EDA', '\u0EDB' },	/* 0EDA-0EDB */
+    new char[] { '\u0EDE', '\u0EFF' },	/* 0EDE-0EFF */
+    new char[] { '\u0F48' },	/* 0F48 */
+    new char[] { '\u0F6B', '\u0F70' },	/* 0F6B-0F70 */
+    new char[] { '\u0F8C', '\u0F8F' },	/* 0F8C-0F8F */
+    new char[] { '\u0F98' },	/* 0F98 */
+    new char[] { '\u0FBD' },	/* 0FBD */
+    new char[] { '\u0FCD', '\u0FCE' },	/* 0FCD-0FCE */
+    new char[] { '\u0FD0', '\u0FFF' },	/* 0FD0-0FFF */
+    new char[] { '\u1022' },	/* 1022 */
+    new char[] { '\u1028' },	/* 1028 */
+    new char[] { '\u102B' },	/* 102B */
+    new char[] { '\u1033', '\u1035' },	/* 1033-1035 */
+    new char[] { '\u103A', '\u103F' },	/* 103A-103F */
+    new char[] { '\u105A', '\u109F' },	/* 105A-109F */
+    new char[] { '\u10C6', '\u10CF' },	/* 10C6-10CF */
+    new char[] { '\u10F9', '\u10FA' },	/* 10F9-10FA */
+    new char[] { '\u10FC', '\u10FF' },	/* 10FC-10FF */
+    new char[] { '\u115A', '\u115E' },	/* 115A-115E */
+    new char[] { '\u11A3', '\u11A7' },	/* 11A3-11A7 */
+    new char[] { '\u11FA', '\u11FF' },	/* 11FA-11FF */
+    new char[] { '\u1207' },	/* 1207 */
+    new char[] { '\u1247' },	/* 1247 */
+    new char[] { '\u1249' },	/* 1249 */
+    new char[] { '\u124E', '\u124F' },	/* 124E-124F */
+    new char[] { '\u1257' },	/* 1257 */
+    new char[] { '\u1259' },	/* 1259 */
+    new char[] { '\u125E', '\u125F' },	/* 125E-125F */
+    new char[] { '\u1287' },	/* 1287 */
+    new char[] { '\u1289' },	/* 1289 */
+    new char[] { '\u128E', '\u128F' },	/* 128E-128F */
+    new char[] { '\u12AF' },	/* 12AF */
+    new char[] { '\u12B1' },	/* 12B1 */
+    new char[] { '\u12B6', '\u12B7' },	/* 12B6-12B7 */
+    new char[] { '\u12BF' },	/* 12BF */
+    new char[] { '\u12C1' },	/* 12C1 */
+    new char[] { '\u12C6', '\u12C7' },	/* 12C6-12C7 */
+    new char[] { '\u12CF' },	/* 12CF */
+    new char[] { '\u12D7' },	/* 12D7 */
+    new char[] { '\u12EF' },	/* 12EF */
+    new char[] { '\u130F' },	/* 130F */
+    new char[] { '\u1311' },	/* 1311 */
+    new char[] { '\u1316', '\u1317' },	/* 1316-1317 */
+    new char[] { '\u131F' },	/* 131F */
+    new char[] { '\u1347' },	/* 1347 */
+    new char[] { '\u135B', '\u1360' },	/* 135B-1360 */
+    new char[] { '\u137D', '\u139F' },	/* 137D-139F */
+    new char[] { '\u13F5', '\u1400' },	/* 13F5-1400 */
+    new char[] { '\u1677', '\u167F' },	/* 1677-167F */
+    new char[] { '\u169D', '\u169F' },	/* 169D-169F */
+    new char[] { '\u16F1', '\u16FF' },	/* 16F1-16FF */
+    new char[] { '\u170D' },	/* 170D */
+    new char[] { '\u1715', '\u171F' },	/* 1715-171F */
+    new char[] { '\u1737', '\u173F' },	/* 1737-173F */
+    new char[] { '\u1754', '\u175F' },	/* 1754-175F */
+    new char[] { '\u176D' },	/* 176D */
+    new char[] { '\u1771' },	/* 1771 */
+    new char[] { '\u1774', '\u177F' },	/* 1774-177F */
+    new char[] { '\u17DD', '\u17DF' },	/* 17DD-17DF */
+    new char[] { '\u17EA', '\u17FF' },	/* 17EA-17FF */
+    new char[] { '\u180F' },	/* 180F */
+    new char[] { '\u181A', '\u181F' },	/* 181A-181F */
+    new char[] { '\u1878', '\u187F' },	/* 1878-187F */
+    new char[] { '\u18AA', '\u1DFF' },	/* 18AA-1DFF */
+    new char[] { '\u1E9C', '\u1E9F' },	/* 1E9C-1E9F */
+    new char[] { '\u1EFA', '\u1EFF' },	/* 1EFA-1EFF */
+    new char[] { '\u1F16', '\u1F17' },	/* 1F16-1F17 */
+    new char[] { '\u1F1E', '\u1F1F' },	/* 1F1E-1F1F */
+    new char[] { '\u1F46', '\u1F47' },	/* 1F46-1F47 */
+    new char[] { '\u1F4E', '\u1F4F' },	/* 1F4E-1F4F */
+    new char[] { '\u1F58' },	/* 1F58 */
+    new char[] { '\u1F5A' },	/* 1F5A */
+    new char[] { '\u1F5C' },	/* 1F5C */
+    new char[] { '\u1F5E' },	/* 1F5E */
+    new char[] { '\u1F7E', '\u1F7F' },	/* 1F7E-1F7F */
+    new char[] { '\u1FB5' },	/* 1FB5 */
+    new char[] { '\u1FC5' },	/* 1FC5 */
+    new char[] { '\u1FD4', '\u1FD5' },	/* 1FD4-1FD5 */
+    new char[] { '\u1FDC' },	/* 1FDC */
+    new char[] { '\u1FF0', '\u1FF1' },	/* 1FF0-1FF1 */
+    new char[] { '\u1FF5' },	/* 1FF5 */
+    new char[] { '\u1FFF' },	/* 1FFF */
+    new char[] { '\u2053', '\u2056' },	/* 2053-2056 */
+    new char[] { '\u2058', '\u205E' },	/* 2058-205E */
+    new char[] { '\u2064', '\u2069' },	/* 2064-2069 */
+    new char[] { '\u2072', '\u2073' },	/* 2072-2073 */
+    new char[] { '\u208F', '\u209F' },	/* 208F-209F */
+    new char[] { '\u20B2', '\u20CF' },	/* 20B2-20CF */
+    new char[] { '\u20EB', '\u20FF' },	/* 20EB-20FF */
+    new char[] { '\u213B', '\u213C' },	/* 213B-213C */
+    new char[] { '\u214C', '\u2152' },	/* 214C-2152 */
+    new char[] { '\u2184', '\u218F' },	/* 2184-218F */
+    new char[] { '\u23CF', '\u23FF' },	/* 23CF-23FF */
+    new char[] { '\u2427', '\u243F' },	/* 2427-243F */
+    new char[] { '\u244B', '\u245F' },	/* 244B-245F */
+    new char[] { '\u24FF' },	/* 24FF */
+    new char[] { '\u2614', '\u2615' },	/* 2614-2615 */
+    new char[] { '\u2618' },	/* 2618 */
+    new char[] { '\u267E', '\u267F' },	/* 267E-267F */
+    new char[] { '\u268A', '\u2700' },	/* 268A-2700 */
+    new char[] { '\u2705' },	/* 2705 */
+    new char[] { '\u270A', '\u270B' },	/* 270A-270B */
+    new char[] { '\u2728' },	/* 2728 */
+    new char[] { '\u274C' },	/* 274C */
+    new char[] { '\u274E' },	/* 274E */
+    new char[] { '\u2753', '\u2755' },	/* 2753-2755 */
+    new char[] { '\u2757' },	/* 2757 */
+    new char[] { '\u275F', '\u2760' },	/* 275F-2760 */
+    new char[] { '\u2795', '\u2797' },	/* 2795-2797 */
+    new char[] { '\u27B0' },	/* 27B0 */
+    new char[] { '\u27BF', '\u27CF' },	/* 27BF-27CF */
+    new char[] { '\u27EC', '\u27EF' },	/* 27EC-27EF */
+    new char[] { '\u2B00', '\u2E7F' },	/* 2B00-2E7F */
+    new char[] { '\u2E9A' },	/* 2E9A */
+    new char[] { '\u2EF4', '\u2EFF' },	/* 2EF4-2EFF */
+    new char[] { '\u2FD6', '\u2FEF' },	/* 2FD6-2FEF */
+    new char[] { '\u2FFC', '\u2FFF' },	/* 2FFC-2FFF */
+    new char[] { '\u3040' },	/* 3040 */
+    new char[] { '\u3097', '\u3098' },	/* 3097-3098 */
+    new char[] { '\u3100', '\u3104' },	/* 3100-3104 */
+    new char[] { '\u312D', '\u3130' },	/* 312D-3130 */
+    new char[] { '\u318F' },	/* 318F */
+    new char[] { '\u31B8', '\u31EF' },	/* 31B8-31EF */
+    new char[] { '\u321D', '\u321F' },	/* 321D-321F */
+    new char[] { '\u3244', '\u3250' },	/* 3244-3250 */
+    new char[] { '\u327C', '\u327E' },	/* 327C-327E */
+    new char[] { '\u32CC', '\u32CF' },	/* 32CC-32CF */
+    new char[] { '\u32FF' },	/* 32FF */
+    new char[] { '\u3377', '\u337A' },	/* 3377-337A */
+    new char[] { '\u33DE', '\u33DF' },	/* 33DE-33DF */
+    new char[] { '\u33FF' },	/* 33FF */
+    new char[] { '\u4DB6', '\u4DFF' },	/* 4DB6-4DFF */
+    new char[] { '\u9FA6', '\u9FFF' },	/* 9FA6-9FFF */
+    new char[] { '\uA48D', '\uA48F' },	/* A48D-A48F */
+    new char[] { '\uA4C7', '\uABFF' },	/* A4C7-ABFF */
+    new char[] { '\uD7A4', '\uD7FF' },	/* D7A4-D7FF */
+    new char[] { '\uFA2E', '\uFA2F' },	/* FA2E-FA2F */
+    new char[] { '\uFA6B', '\uFAFF' },	/* FA6B-FAFF */
+    new char[] { '\uFB07', '\uFB12' },	/* FB07-FB12 */
+    new char[] { '\uFB18', '\uFB1C' },	/* FB18-FB1C */
+    new char[] { '\uFB37' },	/* FB37 */
+    new char[] { '\uFB3D' },	/* FB3D */
+    new char[] { '\uFB3F' },	/* FB3F */
+    new char[] { '\uFB42' },	/* FB42 */
+    new char[] { '\uFB45' },	/* FB45 */
+    new char[] { '\uFBB2', '\uFBD2' },	/* FBB2-FBD2 */
+    new char[] { '\uFD40', '\uFD4F' },	/* FD40-FD4F */
+    new char[] { '\uFD90', '\uFD91' },	/* FD90-FD91 */
+    new char[] { '\uFDC8', '\uFDCF' },	/* FDC8-FDCF */
+    new char[] { '\uFDFD', '\uFDFF' },	/* FDFD-FDFF */
+    new char[] { '\uFE10', '\uFE1F' },	/* FE10-FE1F */
+    new char[] { '\uFE24', '\uFE2F' },	/* FE24-FE2F */
+    new char[] { '\uFE47', '\uFE48' },	/* FE47-FE48 */
+    new char[] { '\uFE53' },	/* FE53 */
+    new char[] { '\uFE67' },	/* FE67 */
+    new char[] { '\uFE6C', '\uFE6F' },	/* FE6C-FE6F */
+    new char[] { '\uFE75' },	/* FE75 */
+    new char[] { '\uFEFD', '\uFEFE' },	/* FEFD-FEFE */
+    new char[] { '\uFF00' },	/* FF00 */
+    new char[] { '\uFFBF', '\uFFC1' },	/* FFBF-FFC1 */
+    new char[] { '\uFFC8', '\uFFC9' },	/* FFC8-FFC9 */
+    new char[] { '\uFFD0', '\uFFD1' },	/* FFD0-FFD1 */
+    new char[] { '\uFFD8', '\uFFD9' },	/* FFD8-FFD9 */
+    new char[] { '\uFFDD', '\uFFDF' },	/* FFDD-FFDF */
+    new char[] { '\uFFE7' },	/* FFE7 */
+    new char[] { '\uFFEF', '\uFFF8' },	/* FFEF-FFF8 */
+	/* Skip characters outside the range of .NET unicode 10000-102FF */
+	/* Skip characters outside the range of .NET unicode 1031F */
+	/* Skip characters outside the range of .NET unicode 10324-1032F */
+	/* Skip characters outside the range of .NET unicode 1034B-103FF */
+	/* Skip characters outside the range of .NET unicode 10426-10427 */
+	/* Skip characters outside the range of .NET unicode 1044E-1CFFF */
+	/* Skip characters outside the range of .NET unicode 1D0F6-1D0FF */
+	/* Skip characters outside the range of .NET unicode 1D127-1D129 */
+	/* Skip characters outside the range of .NET unicode 1D1DE-1D3FF */
+	/* Skip characters outside the range of .NET unicode 1D455 */
+	/* Skip characters outside the range of .NET unicode 1D49D */
+	/* Skip characters outside the range of .NET unicode 1D4A0-1D4A1 */
+	/* Skip characters outside the range of .NET unicode 1D4A3-1D4A4 */
+	/* Skip characters outside the range of .NET unicode 1D4A7-1D4A8 */
+	/* Skip characters outside the range of .NET unicode 1D4AD */
+	/* Skip characters outside the range of .NET unicode 1D4BA */
+	/* Skip characters outside the range of .NET unicode 1D4BC */
+	/* Skip characters outside the range of .NET unicode 1D4C1 */
+	/* Skip characters outside the range of .NET unicode 1D4C4 */
+	/* Skip characters outside the range of .NET unicode 1D506 */
+	/* Skip characters outside the range of .NET unicode 1D50B-1D50C */
+	/* Skip characters outside the range of .NET unicode 1D515 */
+	/* Skip characters outside the range of .NET unicode 1D51D */
+	/* Skip characters outside the range of .NET unicode 1D53A */
+	/* Skip characters outside the range of .NET unicode 1D53F */
+	/* Skip characters outside the range of .NET unicode 1D545 */
+	/* Skip characters outside the range of .NET unicode 1D547-1D549 */
+	/* Skip characters outside the range of .NET unicode 1D551 */
+	/* Skip characters outside the range of .NET unicode 1D6A4-1D6A7 */
+	/* Skip characters outside the range of .NET unicode 1D7CA-1D7CD */
+	/* Skip characters outside the range of .NET unicode 1D800-1FFFD */
+	/* Skip characters outside the range of .NET unicode 2A6D7-2F7FF */
+	/* Skip characters outside the range of .NET unicode 2FA1E-2FFFD */
+	/* Skip characters outside the range of .NET unicode 30000-3FFFD */
+	/* Skip characters outside the range of .NET unicode 40000-4FFFD */
+	/* Skip characters outside the range of .NET unicode 50000-5FFFD */
+	/* Skip characters outside the range of .NET unicode 60000-6FFFD */
+	/* Skip characters outside the range of .NET unicode 70000-7FFFD */
+	/* Skip characters outside the range of .NET unicode 80000-8FFFD */
+	/* Skip characters outside the range of .NET unicode 90000-9FFFD */
+	/* Skip characters outside the range of .NET unicode A0000-AFFFD */
+	/* Skip characters outside the range of .NET unicode B0000-BFFFD */
+	/* Skip characters outside the range of .NET unicode C0000-CFFFD */
+	/* Skip characters outside the range of .NET unicode D0000-DFFFD */
+	/* Skip characters outside the range of .NET unicode E0000 */
+	/* Skip characters outside the range of .NET unicode E0002-E001F */
+	/* Skip characters outside the range of .NET unicode E0080-EFFFD */
+  };
+
+  public static char[] B1 = new char[] {
+    '\u00AD',	/* 00AD; ; Map to nothing */
+    '\u034F',	/* 034F; ; Map to nothing */
+    '\u1806',	/* 1806; ; Map to nothing */
+    '\u180B',	/* 180B; ; Map to nothing */
+    '\u180C',	/* 180C; ; Map to nothing */
+    '\u180D',	/* 180D; ; Map to nothing */
+    '\u200B',	/* 200B; ; Map to nothing */
+    '\u200C',	/* 200C; ; Map to nothing */
+    '\u200D',	/* 200D; ; Map to nothing */
+    '\u2060',	/* 2060; ; Map to nothing */
+    '\uFE00',	/* FE00; ; Map to nothing */
+    '\uFE01',	/* FE01; ; Map to nothing */
+    '\uFE02',	/* FE02; ; Map to nothing */
+    '\uFE03',	/* FE03; ; Map to nothing */
+    '\uFE04',	/* FE04; ; Map to nothing */
+    '\uFE05',	/* FE05; ; Map to nothing */
+    '\uFE06',	/* FE06; ; Map to nothing */
+    '\uFE07',	/* FE07; ; Map to nothing */
+    '\uFE08',	/* FE08; ; Map to nothing */
+    '\uFE09',	/* FE09; ; Map to nothing */
+    '\uFE0A',	/* FE0A; ; Map to nothing */
+    '\uFE0B',	/* FE0B; ; Map to nothing */
+    '\uFE0C',	/* FE0C; ; Map to nothing */
+    '\uFE0D',	/* FE0D; ; Map to nothing */
+    '\uFE0E',	/* FE0E; ; Map to nothing */
+    '\uFE0F',	/* FE0F; ; Map to nothing */
+    '\uFEFF',	/* FEFF; ; Map to nothing */
+  };
+
+  public static char[] B2search = new char[] {
+    '\u0041',	/*0041; 0061; Case map*/
+    '\u0042',	/*0042; 0062; Case map*/
+    '\u0043',	/*0043; 0063; Case map*/
+    '\u0044',	/*0044; 0064; Case map*/
+    '\u0045',	/*0045; 0065; Case map*/
+    '\u0046',	/*0046; 0066; Case map*/
+    '\u0047',	/*0047; 0067; Case map*/
+    '\u0048',	/*0048; 0068; Case map*/
+    '\u0049',	/*0049; 0069; Case map*/
+    '\u004A',	/*004A; 006A; Case map*/
+    '\u004B',	/*004B; 006B; Case map*/
+    '\u004C',	/*004C; 006C; Case map*/
+    '\u004D',	/*004D; 006D; Case map*/
+    '\u004E',	/*004E; 006E; Case map*/
+    '\u004F',	/*004F; 006F; Case map*/
+    '\u0050',	/*0050; 0070; Case map*/
+    '\u0051',	/*0051; 0071; Case map*/
+    '\u0052',	/*0052; 0072; Case map*/
+    '\u0053',	/*0053; 0073; Case map*/
+    '\u0054',	/*0054; 0074; Case map*/
+    '\u0055',	/*0055; 0075; Case map*/
+    '\u0056',	/*0056; 0076; Case map*/
+    '\u0057',	/*0057; 0077; Case map*/
+    '\u0058',	/*0058; 0078; Case map*/
+    '\u0059',	/*0059; 0079; Case map*/
+    '\u005A',	/*005A; 007A; Case map*/
+    '\u00B5',	/*00B5; 03BC; Case map*/
+    '\u00C0',	/*00C0; 00E0; Case map*/
+    '\u00C1',	/*00C1; 00E1; Case map*/
+    '\u00C2',	/*00C2; 00E2; Case map*/
+    '\u00C3',	/*00C3; 00E3; Case map*/
+    '\u00C4',	/*00C4; 00E4; Case map*/
+    '\u00C5',	/*00C5; 00E5; Case map*/
+    '\u00C6',	/*00C6; 00E6; Case map*/
+    '\u00C7',	/*00C7; 00E7; Case map*/
+    '\u00C8',	/*00C8; 00E8; Case map*/
+    '\u00C9',	/*00C9; 00E9; Case map*/
+    '\u00CA',	/*00CA; 00EA; Case map*/
+    '\u00CB',	/*00CB; 00EB; Case map*/
+    '\u00CC',	/*00CC; 00EC; Case map*/
+    '\u00CD',	/*00CD; 00ED; Case map*/
+    '\u00CE',	/*00CE; 00EE; Case map*/
+    '\u00CF',	/*00CF; 00EF; Case map*/
+    '\u00D0',	/*00D0; 00F0; Case map*/
+    '\u00D1',	/*00D1; 00F1; Case map*/
+    '\u00D2',	/*00D2; 00F2; Case map*/
+    '\u00D3',	/*00D3; 00F3; Case map*/
+    '\u00D4',	/*00D4; 00F4; Case map*/
+    '\u00D5',	/*00D5; 00F5; Case map*/
+    '\u00D6',	/*00D6; 00F6; Case map*/
+    '\u00D8',	/*00D8; 00F8; Case map*/
+    '\u00D9',	/*00D9; 00F9; Case map*/
+    '\u00DA',	/*00DA; 00FA; Case map*/
+    '\u00DB',	/*00DB; 00FB; Case map*/
+    '\u00DC',	/*00DC; 00FC; Case map*/
+    '\u00DD',	/*00DD; 00FD; Case map*/
+    '\u00DE',	/*00DE; 00FE; Case map*/
+    '\u00DF',	/*00DF; 0073 0073; Case map*/
+    '\u0100',	/*0100; 0101; Case map*/
+    '\u0102',	/*0102; 0103; Case map*/
+    '\u0104',	/*0104; 0105; Case map*/
+    '\u0106',	/*0106; 0107; Case map*/
+    '\u0108',	/*0108; 0109; Case map*/
+    '\u010A',	/*010A; 010B; Case map*/
+    '\u010C',	/*010C; 010D; Case map*/
+    '\u010E',	/*010E; 010F; Case map*/
+    '\u0110',	/*0110; 0111; Case map*/
+    '\u0112',	/*0112; 0113; Case map*/
+    '\u0114',	/*0114; 0115; Case map*/
+    '\u0116',	/*0116; 0117; Case map*/
+    '\u0118',	/*0118; 0119; Case map*/
+    '\u011A',	/*011A; 011B; Case map*/
+    '\u011C',	/*011C; 011D; Case map*/
+    '\u011E',	/*011E; 011F; Case map*/
+    '\u0120',	/*0120; 0121; Case map*/
+    '\u0122',	/*0122; 0123; Case map*/
+    '\u0124',	/*0124; 0125; Case map*/
+    '\u0126',	/*0126; 0127; Case map*/
+    '\u0128',	/*0128; 0129; Case map*/
+    '\u012A',	/*012A; 012B; Case map*/
+    '\u012C',	/*012C; 012D; Case map*/
+    '\u012E',	/*012E; 012F; Case map*/
+    '\u0130',	/*0130; 0069 0307; Case map*/
+    '\u0132',	/*0132; 0133; Case map*/
+    '\u0134',	/*0134; 0135; Case map*/
+    '\u0136',	/*0136; 0137; Case map*/
+    '\u0139',	/*0139; 013A; Case map*/
+    '\u013B',	/*013B; 013C; Case map*/
+    '\u013D',	/*013D; 013E; Case map*/
+    '\u013F',	/*013F; 0140; Case map*/
+    '\u0141',	/*0141; 0142; Case map*/
+    '\u0143',	/*0143; 0144; Case map*/
+    '\u0145',	/*0145; 0146; Case map*/
+    '\u0147',	/*0147; 0148; Case map*/
+    '\u0149',	/*0149; 02BC 006E; Case map*/
+    '\u014A',	/*014A; 014B; Case map*/
+    '\u014C',	/*014C; 014D; Case map*/
+    '\u014E',	/*014E; 014F; Case map*/
+    '\u0150',	/*0150; 0151; Case map*/
+    '\u0152',	/*0152; 0153; Case map*/
+    '\u0154',	/*0154; 0155; Case map*/
+    '\u0156',	/*0156; 0157; Case map*/
+    '\u0158',	/*0158; 0159; Case map*/
+    '\u015A',	/*015A; 015B; Case map*/
+    '\u015C',	/*015C; 015D; Case map*/
+    '\u015E',	/*015E; 015F; Case map*/
+    '\u0160',	/*0160; 0161; Case map*/
+    '\u0162',	/*0162; 0163; Case map*/
+    '\u0164',	/*0164; 0165; Case map*/
+    '\u0166',	/*0166; 0167; Case map*/
+    '\u0168',	/*0168; 0169; Case map*/
+    '\u016A',	/*016A; 016B; Case map*/
+    '\u016C',	/*016C; 016D; Case map*/
+    '\u016E',	/*016E; 016F; Case map*/
+    '\u0170',	/*0170; 0171; Case map*/
+    '\u0172',	/*0172; 0173; Case map*/
+    '\u0174',	/*0174; 0175; Case map*/
+    '\u0176',	/*0176; 0177; Case map*/
+    '\u0178',	/*0178; 00FF; Case map*/
+    '\u0179',	/*0179; 017A; Case map*/
+    '\u017B',	/*017B; 017C; Case map*/
+    '\u017D',	/*017D; 017E; Case map*/
+    '\u017F',	/*017F; 0073; Case map*/
+    '\u0181',	/*0181; 0253; Case map*/
+    '\u0182',	/*0182; 0183; Case map*/
+    '\u0184',	/*0184; 0185; Case map*/
+    '\u0186',	/*0186; 0254; Case map*/
+    '\u0187',	/*0187; 0188; Case map*/
+    '\u0189',	/*0189; 0256; Case map*/
+    '\u018A',	/*018A; 0257; Case map*/
+    '\u018B',	/*018B; 018C; Case map*/
+    '\u018E',	/*018E; 01DD; Case map*/
+    '\u018F',	/*018F; 0259; Case map*/
+    '\u0190',	/*0190; 025B; Case map*/
+    '\u0191',	/*0191; 0192; Case map*/
+    '\u0193',	/*0193; 0260; Case map*/
+    '\u0194',	/*0194; 0263; Case map*/
+    '\u0196',	/*0196; 0269; Case map*/
+    '\u0197',	/*0197; 0268; Case map*/
+    '\u0198',	/*0198; 0199; Case map*/
+    '\u019C',	/*019C; 026F; Case map*/
+    '\u019D',	/*019D; 0272; Case map*/
+    '\u019F',	/*019F; 0275; Case map*/
+    '\u01A0',	/*01A0; 01A1; Case map*/
+    '\u01A2',	/*01A2; 01A3; Case map*/
+    '\u01A4',	/*01A4; 01A5; Case map*/
+    '\u01A6',	/*01A6; 0280; Case map*/
+    '\u01A7',	/*01A7; 01A8; Case map*/
+    '\u01A9',	/*01A9; 0283; Case map*/
+    '\u01AC',	/*01AC; 01AD; Case map*/
+    '\u01AE',	/*01AE; 0288; Case map*/
+    '\u01AF',	/*01AF; 01B0; Case map*/
+    '\u01B1',	/*01B1; 028A; Case map*/
+    '\u01B2',	/*01B2; 028B; Case map*/
+    '\u01B3',	/*01B3; 01B4; Case map*/
+    '\u01B5',	/*01B5; 01B6; Case map*/
+    '\u01B7',	/*01B7; 0292; Case map*/
+    '\u01B8',	/*01B8; 01B9; Case map*/
+    '\u01BC',	/*01BC; 01BD; Case map*/
+    '\u01C4',	/*01C4; 01C6; Case map*/
+    '\u01C5',	/*01C5; 01C6; Case map*/
+    '\u01C7',	/*01C7; 01C9; Case map*/
+    '\u01C8',	/*01C8; 01C9; Case map*/
+    '\u01CA',	/*01CA; 01CC; Case map*/
+    '\u01CB',	/*01CB; 01CC; Case map*/
+    '\u01CD',	/*01CD; 01CE; Case map*/
+    '\u01CF',	/*01CF; 01D0; Case map*/
+    '\u01D1',	/*01D1; 01D2; Case map*/
+    '\u01D3',	/*01D3; 01D4; Case map*/
+    '\u01D5',	/*01D5; 01D6; Case map*/
+    '\u01D7',	/*01D7; 01D8; Case map*/
+    '\u01D9',	/*01D9; 01DA; Case map*/
+    '\u01DB',	/*01DB; 01DC; Case map*/
+    '\u01DE',	/*01DE; 01DF; Case map*/
+    '\u01E0',	/*01E0; 01E1; Case map*/
+    '\u01E2',	/*01E2; 01E3; Case map*/
+    '\u01E4',	/*01E4; 01E5; Case map*/
+    '\u01E6',	/*01E6; 01E7; Case map*/
+    '\u01E8',	/*01E8; 01E9; Case map*/
+    '\u01EA',	/*01EA; 01EB; Case map*/
+    '\u01EC',	/*01EC; 01ED; Case map*/
+    '\u01EE',	/*01EE; 01EF; Case map*/
+    '\u01F0',	/*01F0; 006A 030C; Case map*/
+    '\u01F1',	/*01F1; 01F3; Case map*/
+    '\u01F2',	/*01F2; 01F3; Case map*/
+    '\u01F4',	/*01F4; 01F5; Case map*/
+    '\u01F6',	/*01F6; 0195; Case map*/
+    '\u01F7',	/*01F7; 01BF; Case map*/
+    '\u01F8',	/*01F8; 01F9; Case map*/
+    '\u01FA',	/*01FA; 01FB; Case map*/
+    '\u01FC',	/*01FC; 01FD; Case map*/
+    '\u01FE',	/*01FE; 01FF; Case map*/
+    '\u0200',	/*0200; 0201; Case map*/
+    '\u0202',	/*0202; 0203; Case map*/
+    '\u0204',	/*0204; 0205; Case map*/
+    '\u0206',	/*0206; 0207; Case map*/
+    '\u0208',	/*0208; 0209; Case map*/
+    '\u020A',	/*020A; 020B; Case map*/
+    '\u020C',	/*020C; 020D; Case map*/
+    '\u020E',	/*020E; 020F; Case map*/
+    '\u0210',	/*0210; 0211; Case map*/
+    '\u0212',	/*0212; 0213; Case map*/
+    '\u0214',	/*0214; 0215; Case map*/
+    '\u0216',	/*0216; 0217; Case map*/
+    '\u0218',	/*0218; 0219; Case map*/
+    '\u021A',	/*021A; 021B; Case map*/
+    '\u021C',	/*021C; 021D; Case map*/
+    '\u021E',	/*021E; 021F; Case map*/
+    '\u0220',	/*0220; 019E; Case map*/
+    '\u0222',	/*0222; 0223; Case map*/
+    '\u0224',	/*0224; 0225; Case map*/
+    '\u0226',	/*0226; 0227; Case map*/
+    '\u0228',	/*0228; 0229; Case map*/
+    '\u022A',	/*022A; 022B; Case map*/
+    '\u022C',	/*022C; 022D; Case map*/
+    '\u022E',	/*022E; 022F; Case map*/
+    '\u0230',	/*0230; 0231; Case map*/
+    '\u0232',	/*0232; 0233; Case map*/
+    '\u0345',	/*0345; 03B9; Case map*/
+    '\u037A',	/*037A; 0020 03B9; Additional folding*/
+    '\u0386',	/*0386; 03AC; Case map*/
+    '\u0388',	/*0388; 03AD; Case map*/
+    '\u0389',	/*0389; 03AE; Case map*/
+    '\u038A',	/*038A; 03AF; Case map*/
+    '\u038C',	/*038C; 03CC; Case map*/
+    '\u038E',	/*038E; 03CD; Case map*/
+    '\u038F',	/*038F; 03CE; Case map*/
+    '\u0390',	/*0390; 03B9 0308 0301; Case map*/
+    '\u0391',	/*0391; 03B1; Case map*/
+    '\u0392',	/*0392; 03B2; Case map*/
+    '\u0393',	/*0393; 03B3; Case map*/
+    '\u0394',	/*0394; 03B4; Case map*/
+    '\u0395',	/*0395; 03B5; Case map*/
+    '\u0396',	/*0396; 03B6; Case map*/
+    '\u0397',	/*0397; 03B7; Case map*/
+    '\u0398',	/*0398; 03B8; Case map*/
+    '\u0399',	/*0399; 03B9; Case map*/
+    '\u039A',	/*039A; 03BA; Case map*/
+    '\u039B',	/*039B; 03BB; Case map*/
+    '\u039C',	/*039C; 03BC; Case map*/
+    '\u039D',	/*039D; 03BD; Case map*/
+    '\u039E',	/*039E; 03BE; Case map*/
+    '\u039F',	/*039F; 03BF; Case map*/
+    '\u03A0',	/*03A0; 03C0; Case map*/
+    '\u03A1',	/*03A1; 03C1; Case map*/
+    '\u03A3',	/*03A3; 03C3; Case map*/
+    '\u03A4',	/*03A4; 03C4; Case map*/
+    '\u03A5',	/*03A5; 03C5; Case map*/
+    '\u03A6',	/*03A6; 03C6; Case map*/
+    '\u03A7',	/*03A7; 03C7; Case map*/
+    '\u03A8',	/*03A8; 03C8; Case map*/
+    '\u03A9',	/*03A9; 03C9; Case map*/
+    '\u03AA',	/*03AA; 03CA; Case map*/
+    '\u03AB',	/*03AB; 03CB; Case map*/
+    '\u03B0',	/*03B0; 03C5 0308 0301; Case map*/
+    '\u03C2',	/*03C2; 03C3; Case map*/
+    '\u03D0',	/*03D0; 03B2; Case map*/
+    '\u03D1',	/*03D1; 03B8; Case map*/
+    '\u03D2',	/*03D2; 03C5; Additional folding*/
+    '\u03D3',	/*03D3; 03CD; Additional folding*/
+    '\u03D4',	/*03D4; 03CB; Additional folding*/
+    '\u03D5',	/*03D5; 03C6; Case map*/
+    '\u03D6',	/*03D6; 03C0; Case map*/
+    '\u03D8',	/*03D8; 03D9; Case map*/
+    '\u03DA',	/*03DA; 03DB; Case map*/
+    '\u03DC',	/*03DC; 03DD; Case map*/
+    '\u03DE',	/*03DE; 03DF; Case map*/
+    '\u03E0',	/*03E0; 03E1; Case map*/
+    '\u03E2',	/*03E2; 03E3; Case map*/
+    '\u03E4',	/*03E4; 03E5; Case map*/
+    '\u03E6',	/*03E6; 03E7; Case map*/
+    '\u03E8',	/*03E8; 03E9; Case map*/
+    '\u03EA',	/*03EA; 03EB; Case map*/
+    '\u03EC',	/*03EC; 03ED; Case map*/
+    '\u03EE',	/*03EE; 03EF; Case map*/
+    '\u03F0',	/*03F0; 03BA; Case map*/
+    '\u03F1',	/*03F1; 03C1; Case map*/
+    '\u03F2',	/*03F2; 03C3; Case map*/
+    '\u03F4',	/*03F4; 03B8; Case map*/
+    '\u03F5',	/*03F5; 03B5; Case map*/
+    '\u0400',	/*0400; 0450; Case map*/
+    '\u0401',	/*0401; 0451; Case map*/
+    '\u0402',	/*0402; 0452; Case map*/
+    '\u0403',	/*0403; 0453; Case map*/
+    '\u0404',	/*0404; 0454; Case map*/
+    '\u0405',	/*0405; 0455; Case map*/
+    '\u0406',	/*0406; 0456; Case map*/
+    '\u0407',	/*0407; 0457; Case map*/
+    '\u0408',	/*0408; 0458; Case map*/
+    '\u0409',	/*0409; 0459; Case map*/
+    '\u040A',	/*040A; 045A; Case map*/
+    '\u040B',	/*040B; 045B; Case map*/
+    '\u040C',	/*040C; 045C; Case map*/
+    '\u040D',	/*040D; 045D; Case map*/
+    '\u040E',	/*040E; 045E; Case map*/
+    '\u040F',	/*040F; 045F; Case map*/
+    '\u0410',	/*0410; 0430; Case map*/
+    '\u0411',	/*0411; 0431; Case map*/
+    '\u0412',	/*0412; 0432; Case map*/
+    '\u0413',	/*0413; 0433; Case map*/
+    '\u0414',	/*0414; 0434; Case map*/
+    '\u0415',	/*0415; 0435; Case map*/
+    '\u0416',	/*0416; 0436; Case map*/
+    '\u0417',	/*0417; 0437; Case map*/
+    '\u0418',	/*0418; 0438; Case map*/
+    '\u0419',	/*0419; 0439; Case map*/
+    '\u041A',	/*041A; 043A; Case map*/
+    '\u041B',	/*041B; 043B; Case map*/
+    '\u041C',	/*041C; 043C; Case map*/
+    '\u041D',	/*041D; 043D; Case map*/
+    '\u041E',	/*041E; 043E; Case map*/
+    '\u041F',	/*041F; 043F; Case map*/
+    '\u0420',	/*0420; 0440; Case map*/
+    '\u0421',	/*0421; 0441; Case map*/
+    '\u0422',	/*0422; 0442; Case map*/
+    '\u0423',	/*0423; 0443; Case map*/
+    '\u0424',	/*0424; 0444; Case map*/
+    '\u0425',	/*0425; 0445; Case map*/
+    '\u0426',	/*0426; 0446; Case map*/
+    '\u0427',	/*0427; 0447; Case map*/
+    '\u0428',	/*0428; 0448; Case map*/
+    '\u0429',	/*0429; 0449; Case map*/
+    '\u042A',	/*042A; 044A; Case map*/
+    '\u042B',	/*042B; 044B; Case map*/
+    '\u042C',	/*042C; 044C; Case map*/
+    '\u042D',	/*042D; 044D; Case map*/
+    '\u042E',	/*042E; 044E; Case map*/
+    '\u042F',	/*042F; 044F; Case map*/
+    '\u0460',	/*0460; 0461; Case map*/
+    '\u0462',	/*0462; 0463; Case map*/
+    '\u0464',	/*0464; 0465; Case map*/
+    '\u0466',	/*0466; 0467; Case map*/
+    '\u0468',	/*0468; 0469; Case map*/
+    '\u046A',	/*046A; 046B; Case map*/
+    '\u046C',	/*046C; 046D; Case map*/
+    '\u046E',	/*046E; 046F; Case map*/
+    '\u0470',	/*0470; 0471; Case map*/
+    '\u0472',	/*0472; 0473; Case map*/
+    '\u0474',	/*0474; 0475; Case map*/
+    '\u0476',	/*0476; 0477; Case map*/
+    '\u0478',	/*0478; 0479; Case map*/
+    '\u047A',	/*047A; 047B; Case map*/
+    '\u047C',	/*047C; 047D; Case map*/
+    '\u047E',	/*047E; 047F; Case map*/
+    '\u0480',	/*0480; 0481; Case map*/
+    '\u048A',	/*048A; 048B; Case map*/
+    '\u048C',	/*048C; 048D; Case map*/
+    '\u048E',	/*048E; 048F; Case map*/
+    '\u0490',	/*0490; 0491; Case map*/
+    '\u0492',	/*0492; 0493; Case map*/
+    '\u0494',	/*0494; 0495; Case map*/
+    '\u0496',	/*0496; 0497; Case map*/
+    '\u0498',	/*0498; 0499; Case map*/
+    '\u049A',	/*049A; 049B; Case map*/
+    '\u049C',	/*049C; 049D; Case map*/
+    '\u049E',	/*049E; 049F; Case map*/
+    '\u04A0',	/*04A0; 04A1; Case map*/
+    '\u04A2',	/*04A2; 04A3; Case map*/
+    '\u04A4',	/*04A4; 04A5; Case map*/
+    '\u04A6',	/*04A6; 04A7; Case map*/
+    '\u04A8',	/*04A8; 04A9; Case map*/
+    '\u04AA',	/*04AA; 04AB; Case map*/
+    '\u04AC',	/*04AC; 04AD; Case map*/
+    '\u04AE',	/*04AE; 04AF; Case map*/
+    '\u04B0',	/*04B0; 04B1; Case map*/
+    '\u04B2',	/*04B2; 04B3; Case map*/
+    '\u04B4',	/*04B4; 04B5; Case map*/
+    '\u04B6',	/*04B6; 04B7; Case map*/
+    '\u04B8',	/*04B8; 04B9; Case map*/
+    '\u04BA',	/*04BA; 04BB; Case map*/
+    '\u04BC',	/*04BC; 04BD; Case map*/
+    '\u04BE',	/*04BE; 04BF; Case map*/
+    '\u04C1',	/*04C1; 04C2; Case map*/
+    '\u04C3',	/*04C3; 04C4; Case map*/
+    '\u04C5',	/*04C5; 04C6; Case map*/
+    '\u04C7',	/*04C7; 04C8; Case map*/
+    '\u04C9',	/*04C9; 04CA; Case map*/
+    '\u04CB',	/*04CB; 04CC; Case map*/
+    '\u04CD',	/*04CD; 04CE; Case map*/
+    '\u04D0',	/*04D0; 04D1; Case map*/
+    '\u04D2',	/*04D2; 04D3; Case map*/
+    '\u04D4',	/*04D4; 04D5; Case map*/
+    '\u04D6',	/*04D6; 04D7; Case map*/
+    '\u04D8',	/*04D8; 04D9; Case map*/
+    '\u04DA',	/*04DA; 04DB; Case map*/
+    '\u04DC',	/*04DC; 04DD; Case map*/
+    '\u04DE',	/*04DE; 04DF; Case map*/
+    '\u04E0',	/*04E0; 04E1; Case map*/
+    '\u04E2',	/*04E2; 04E3; Case map*/
+    '\u04E4',	/*04E4; 04E5; Case map*/
+    '\u04E6',	/*04E6; 04E7; Case map*/
+    '\u04E8',	/*04E8; 04E9; Case map*/
+    '\u04EA',	/*04EA; 04EB; Case map*/
+    '\u04EC',	/*04EC; 04ED; Case map*/
+    '\u04EE',	/*04EE; 04EF; Case map*/
+    '\u04F0',	/*04F0; 04F1; Case map*/
+    '\u04F2',	/*04F2; 04F3; Case map*/
+    '\u04F4',	/*04F4; 04F5; Case map*/
+    '\u04F8',	/*04F8; 04F9; Case map*/
+    '\u0500',	/*0500; 0501; Case map*/
+    '\u0502',	/*0502; 0503; Case map*/
+    '\u0504',	/*0504; 0505; Case map*/
+    '\u0506',	/*0506; 0507; Case map*/
+    '\u0508',	/*0508; 0509; Case map*/
+    '\u050A',	/*050A; 050B; Case map*/
+    '\u050C',	/*050C; 050D; Case map*/
+    '\u050E',	/*050E; 050F; Case map*/
+    '\u0531',	/*0531; 0561; Case map*/
+    '\u0532',	/*0532; 0562; Case map*/
+    '\u0533',	/*0533; 0563; Case map*/
+    '\u0534',	/*0534; 0564; Case map*/
+    '\u0535',	/*0535; 0565; Case map*/
+    '\u0536',	/*0536; 0566; Case map*/
+    '\u0537',	/*0537; 0567; Case map*/
+    '\u0538',	/*0538; 0568; Case map*/
+    '\u0539',	/*0539; 0569; Case map*/
+    '\u053A',	/*053A; 056A; Case map*/
+    '\u053B',	/*053B; 056B; Case map*/
+    '\u053C',	/*053C; 056C; Case map*/
+    '\u053D',	/*053D; 056D; Case map*/
+    '\u053E',	/*053E; 056E; Case map*/
+    '\u053F',	/*053F; 056F; Case map*/
+    '\u0540',	/*0540; 0570; Case map*/
+    '\u0541',	/*0541; 0571; Case map*/
+    '\u0542',	/*0542; 0572; Case map*/
+    '\u0543',	/*0543; 0573; Case map*/
+    '\u0544',	/*0544; 0574; Case map*/
+    '\u0545',	/*0545; 0575; Case map*/
+    '\u0546',	/*0546; 0576; Case map*/
+    '\u0547',	/*0547; 0577; Case map*/
+    '\u0548',	/*0548; 0578; Case map*/
+    '\u0549',	/*0549; 0579; Case map*/
+    '\u054A',	/*054A; 057A; Case map*/
+    '\u054B',	/*054B; 057B; Case map*/
+    '\u054C',	/*054C; 057C; Case map*/
+    '\u054D',	/*054D; 057D; Case map*/
+    '\u054E',	/*054E; 057E; Case map*/
+    '\u054F',	/*054F; 057F; Case map*/
+    '\u0550',	/*0550; 0580; Case map*/
+    '\u0551',	/*0551; 0581; Case map*/
+    '\u0552',	/*0552; 0582; Case map*/
+    '\u0553',	/*0553; 0583; Case map*/
+    '\u0554',	/*0554; 0584; Case map*/
+    '\u0555',	/*0555; 0585; Case map*/
+    '\u0556',	/*0556; 0586; Case map*/
+    '\u0587',	/*0587; 0565 0582; Case map*/
+    '\u1E00',	/*1E00; 1E01; Case map*/
+    '\u1E02',	/*1E02; 1E03; Case map*/
+    '\u1E04',	/*1E04; 1E05; Case map*/
+    '\u1E06',	/*1E06; 1E07; Case map*/
+    '\u1E08',	/*1E08; 1E09; Case map*/
+    '\u1E0A',	/*1E0A; 1E0B; Case map*/
+    '\u1E0C',	/*1E0C; 1E0D; Case map*/
+    '\u1E0E',	/*1E0E; 1E0F; Case map*/
+    '\u1E10',	/*1E10; 1E11; Case map*/
+    '\u1E12',	/*1E12; 1E13; Case map*/
+    '\u1E14',	/*1E14; 1E15; Case map*/
+    '\u1E16',	/*1E16; 1E17; Case map*/
+    '\u1E18',	/*1E18; 1E19; Case map*/
+    '\u1E1A',	/*1E1A; 1E1B; Case map*/
+    '\u1E1C',	/*1E1C; 1E1D; Case map*/
+    '\u1E1E',	/*1E1E; 1E1F; Case map*/
+    '\u1E20',	/*1E20; 1E21; Case map*/
+    '\u1E22',	/*1E22; 1E23; Case map*/
+    '\u1E24',	/*1E24; 1E25; Case map*/
+    '\u1E26',	/*1E26; 1E27; Case map*/
+    '\u1E28',	/*1E28; 1E29; Case map*/
+    '\u1E2A',	/*1E2A; 1E2B; Case map*/
+    '\u1E2C',	/*1E2C; 1E2D; Case map*/
+    '\u1E2E',	/*1E2E; 1E2F; Case map*/
+    '\u1E30',	/*1E30; 1E31; Case map*/
+    '\u1E32',	/*1E32; 1E33; Case map*/
+    '\u1E34',	/*1E34; 1E35; Case map*/
+    '\u1E36',	/*1E36; 1E37; Case map*/
+    '\u1E38',	/*1E38; 1E39; Case map*/
+    '\u1E3A',	/*1E3A; 1E3B; Case map*/
+    '\u1E3C',	/*1E3C; 1E3D; Case map*/
+    '\u1E3E',	/*1E3E; 1E3F; Case map*/
+    '\u1E40',	/*1E40; 1E41; Case map*/
+    '\u1E42',	/*1E42; 1E43; Case map*/
+    '\u1E44',	/*1E44; 1E45; Case map*/
+    '\u1E46',	/*1E46; 1E47; Case map*/
+    '\u1E48',	/*1E48; 1E49; Case map*/
+    '\u1E4A',	/*1E4A; 1E4B; Case map*/
+    '\u1E4C',	/*1E4C; 1E4D; Case map*/
+    '\u1E4E',	/*1E4E; 1E4F; Case map*/
+    '\u1E50',	/*1E50; 1E51; Case map*/
+    '\u1E52',	/*1E52; 1E53; Case map*/
+    '\u1E54',	/*1E54; 1E55; Case map*/
+    '\u1E56',	/*1E56; 1E57; Case map*/
+    '\u1E58',	/*1E58; 1E59; Case map*/
+    '\u1E5A',	/*1E5A; 1E5B; Case map*/
+    '\u1E5C',	/*1E5C; 1E5D; Case map*/
+    '\u1E5E',	/*1E5E; 1E5F; Case map*/
+    '\u1E60',	/*1E60; 1E61; Case map*/
+    '\u1E62',	/*1E62; 1E63; Case map*/
+    '\u1E64',	/*1E64; 1E65; Case map*/
+    '\u1E66',	/*1E66; 1E67; Case map*/
+    '\u1E68',	/*1E68; 1E69; Case map*/
+    '\u1E6A',	/*1E6A; 1E6B; Case map*/
+    '\u1E6C',	/*1E6C; 1E6D; Case map*/
+    '\u1E6E',	/*1E6E; 1E6F; Case map*/
+    '\u1E70',	/*1E70; 1E71; Case map*/
+    '\u1E72',	/*1E72; 1E73; Case map*/
+    '\u1E74',	/*1E74; 1E75; Case map*/
+    '\u1E76',	/*1E76; 1E77; Case map*/
+    '\u1E78',	/*1E78; 1E79; Case map*/
+    '\u1E7A',	/*1E7A; 1E7B; Case map*/
+    '\u1E7C',	/*1E7C; 1E7D; Case map*/
+    '\u1E7E',	/*1E7E; 1E7F; Case map*/
+    '\u1E80',	/*1E80; 1E81; Case map*/
+    '\u1E82',	/*1E82; 1E83; Case map*/
+    '\u1E84',	/*1E84; 1E85; Case map*/
+    '\u1E86',	/*1E86; 1E87; Case map*/
+    '\u1E88',	/*1E88; 1E89; Case map*/
+    '\u1E8A',	/*1E8A; 1E8B; Case map*/
+    '\u1E8C',	/*1E8C; 1E8D; Case map*/
+    '\u1E8E',	/*1E8E; 1E8F; Case map*/
+    '\u1E90',	/*1E90; 1E91; Case map*/
+    '\u1E92',	/*1E92; 1E93; Case map*/
+    '\u1E94',	/*1E94; 1E95; Case map*/
+    '\u1E96',	/*1E96; 0068 0331; Case map*/
+    '\u1E97',	/*1E97; 0074 0308; Case map*/
+    '\u1E98',	/*1E98; 0077 030A; Case map*/
+    '\u1E99',	/*1E99; 0079 030A; Case map*/
+    '\u1E9A',	/*1E9A; 0061 02BE; Case map*/
+    '\u1E9B',	/*1E9B; 1E61; Case map*/
+    '\u1EA0',	/*1EA0; 1EA1; Case map*/
+    '\u1EA2',	/*1EA2; 1EA3; Case map*/
+    '\u1EA4',	/*1EA4; 1EA5; Case map*/
+    '\u1EA6',	/*1EA6; 1EA7; Case map*/
+    '\u1EA8',	/*1EA8; 1EA9; Case map*/
+    '\u1EAA',	/*1EAA; 1EAB; Case map*/
+    '\u1EAC',	/*1EAC; 1EAD; Case map*/
+    '\u1EAE',	/*1EAE; 1EAF; Case map*/
+    '\u1EB0',	/*1EB0; 1EB1; Case map*/
+    '\u1EB2',	/*1EB2; 1EB3; Case map*/
+    '\u1EB4',	/*1EB4; 1EB5; Case map*/
+    '\u1EB6',	/*1EB6; 1EB7; Case map*/
+    '\u1EB8',	/*1EB8; 1EB9; Case map*/
+    '\u1EBA',	/*1EBA; 1EBB; Case map*/
+    '\u1EBC',	/*1EBC; 1EBD; Case map*/
+    '\u1EBE',	/*1EBE; 1EBF; Case map*/
+    '\u1EC0',	/*1EC0; 1EC1; Case map*/
+    '\u1EC2',	/*1EC2; 1EC3; Case map*/
+    '\u1EC4',	/*1EC4; 1EC5; Case map*/
+    '\u1EC6',	/*1EC6; 1EC7; Case map*/
+    '\u1EC8',	/*1EC8; 1EC9; Case map*/
+    '\u1ECA',	/*1ECA; 1ECB; Case map*/
+    '\u1ECC',	/*1ECC; 1ECD; Case map*/
+    '\u1ECE',	/*1ECE; 1ECF; Case map*/
+    '\u1ED0',	/*1ED0; 1ED1; Case map*/
+    '\u1ED2',	/*1ED2; 1ED3; Case map*/
+    '\u1ED4',	/*1ED4; 1ED5; Case map*/
+    '\u1ED6',	/*1ED6; 1ED7; Case map*/
+    '\u1ED8',	/*1ED8; 1ED9; Case map*/
+    '\u1EDA',	/*1EDA; 1EDB; Case map*/
+    '\u1EDC',	/*1EDC; 1EDD; Case map*/
+    '\u1EDE',	/*1EDE; 1EDF; Case map*/
+    '\u1EE0',	/*1EE0; 1EE1; Case map*/
+    '\u1EE2',	/*1EE2; 1EE3; Case map*/
+    '\u1EE4',	/*1EE4; 1EE5; Case map*/
+    '\u1EE6',	/*1EE6; 1EE7; Case map*/
+    '\u1EE8',	/*1EE8; 1EE9; Case map*/
+    '\u1EEA',	/*1EEA; 1EEB; Case map*/
+    '\u1EEC',	/*1EEC; 1EED; Case map*/
+    '\u1EEE',	/*1EEE; 1EEF; Case map*/
+    '\u1EF0',	/*1EF0; 1EF1; Case map*/
+    '\u1EF2',	/*1EF2; 1EF3; Case map*/
+    '\u1EF4',	/*1EF4; 1EF5; Case map*/
+    '\u1EF6',	/*1EF6; 1EF7; Case map*/
+    '\u1EF8',	/*1EF8; 1EF9; Case map*/
+    '\u1F08',	/*1F08; 1F00; Case map*/
+    '\u1F09',	/*1F09; 1F01; Case map*/
+    '\u1F0A',	/*1F0A; 1F02; Case map*/
+    '\u1F0B',	/*1F0B; 1F03; Case map*/
+    '\u1F0C',	/*1F0C; 1F04; Case map*/
+    '\u1F0D',	/*1F0D; 1F05; Case map*/
+    '\u1F0E',	/*1F0E; 1F06; Case map*/
+    '\u1F0F',	/*1F0F; 1F07; Case map*/
+    '\u1F18',	/*1F18; 1F10; Case map*/
+    '\u1F19',	/*1F19; 1F11; Case map*/
+    '\u1F1A',	/*1F1A; 1F12; Case map*/
+    '\u1F1B',	/*1F1B; 1F13; Case map*/
+    '\u1F1C',	/*1F1C; 1F14; Case map*/
+    '\u1F1D',	/*1F1D; 1F15; Case map*/
+    '\u1F28',	/*1F28; 1F20; Case map*/
+    '\u1F29',	/*1F29; 1F21; Case map*/
+    '\u1F2A',	/*1F2A; 1F22; Case map*/
+    '\u1F2B',	/*1F2B; 1F23; Case map*/
+    '\u1F2C',	/*1F2C; 1F24; Case map*/
+    '\u1F2D',	/*1F2D; 1F25; Case map*/
+    '\u1F2E',	/*1F2E; 1F26; Case map*/
+    '\u1F2F',	/*1F2F; 1F27; Case map*/
+    '\u1F38',	/*1F38; 1F30; Case map*/
+    '\u1F39',	/*1F39; 1F31; Case map*/
+    '\u1F3A',	/*1F3A; 1F32; Case map*/
+    '\u1F3B',	/*1F3B; 1F33; Case map*/
+    '\u1F3C',	/*1F3C; 1F34; Case map*/
+    '\u1F3D',	/*1F3D; 1F35; Case map*/
+    '\u1F3E',	/*1F3E; 1F36; Case map*/
+    '\u1F3F',	/*1F3F; 1F37; Case map*/
+    '\u1F48',	/*1F48; 1F40; Case map*/
+    '\u1F49',	/*1F49; 1F41; Case map*/
+    '\u1F4A',	/*1F4A; 1F42; Case map*/
+    '\u1F4B',	/*1F4B; 1F43; Case map*/
+    '\u1F4C',	/*1F4C; 1F44; Case map*/
+    '\u1F4D',	/*1F4D; 1F45; Case map*/
+    '\u1F50',	/*1F50; 03C5 0313; Case map*/
+    '\u1F52',	/*1F52; 03C5 0313 0300; Case map*/
+    '\u1F54',	/*1F54; 03C5 0313 0301; Case map*/
+    '\u1F56',	/*1F56; 03C5 0313 0342; Case map*/
+    '\u1F59',	/*1F59; 1F51; Case map*/
+    '\u1F5B',	/*1F5B; 1F53; Case map*/
+    '\u1F5D',	/*1F5D; 1F55; Case map*/
+    '\u1F5F',	/*1F5F; 1F57; Case map*/
+    '\u1F68',	/*1F68; 1F60; Case map*/
+    '\u1F69',	/*1F69; 1F61; Case map*/
+    '\u1F6A',	/*1F6A; 1F62; Case map*/
+    '\u1F6B',	/*1F6B; 1F63; Case map*/
+    '\u1F6C',	/*1F6C; 1F64; Case map*/
+    '\u1F6D',	/*1F6D; 1F65; Case map*/
+    '\u1F6E',	/*1F6E; 1F66; Case map*/
+    '\u1F6F',	/*1F6F; 1F67; Case map*/
+    '\u1F80',	/*1F80; 1F00 03B9; Case map*/
+    '\u1F81',	/*1F81; 1F01 03B9; Case map*/
+    '\u1F82',	/*1F82; 1F02 03B9; Case map*/
+    '\u1F83',	/*1F83; 1F03 03B9; Case map*/
+    '\u1F84',	/*1F84; 1F04 03B9; Case map*/
+    '\u1F85',	/*1F85; 1F05 03B9; Case map*/
+    '\u1F86',	/*1F86; 1F06 03B9; Case map*/
+    '\u1F87',	/*1F87; 1F07 03B9; Case map*/
+    '\u1F88',	/*1F88; 1F00 03B9; Case map*/
+    '\u1F89',	/*1F89; 1F01 03B9; Case map*/
+    '\u1F8A',	/*1F8A; 1F02 03B9; Case map*/
+    '\u1F8B',	/*1F8B; 1F03 03B9; Case map*/
+    '\u1F8C',	/*1F8C; 1F04 03B9; Case map*/
+    '\u1F8D',	/*1F8D; 1F05 03B9; Case map*/
+    '\u1F8E',	/*1F8E; 1F06 03B9; Case map*/
+    '\u1F8F',	/*1F8F; 1F07 03B9; Case map*/
+    '\u1F90',	/*1F90; 1F20 03B9; Case map*/
+    '\u1F91',	/*1F91; 1F21 03B9; Case map*/
+    '\u1F92',	/*1F92; 1F22 03B9; Case map*/
+    '\u1F93',	/*1F93; 1F23 03B9; Case map*/
+    '\u1F94',	/*1F94; 1F24 03B9; Case map*/
+    '\u1F95',	/*1F95; 1F25 03B9; Case map*/
+    '\u1F96',	/*1F96; 1F26 03B9; Case map*/
+    '\u1F97',	/*1F97; 1F27 03B9; Case map*/
+    '\u1F98',	/*1F98; 1F20 03B9; Case map*/
+    '\u1F99',	/*1F99; 1F21 03B9; Case map*/
+    '\u1F9A',	/*1F9A; 1F22 03B9; Case map*/
+    '\u1F9B',	/*1F9B; 1F23 03B9; Case map*/
+    '\u1F9C',	/*1F9C; 1F24 03B9; Case map*/
+    '\u1F9D',	/*1F9D; 1F25 03B9; Case map*/
+    '\u1F9E',	/*1F9E; 1F26 03B9; Case map*/
+    '\u1F9F',	/*1F9F; 1F27 03B9; Case map*/
+    '\u1FA0',	/*1FA0; 1F60 03B9; Case map*/
+    '\u1FA1',	/*1FA1; 1F61 03B9; Case map*/
+    '\u1FA2',	/*1FA2; 1F62 03B9; Case map*/
+    '\u1FA3',	/*1FA3; 1F63 03B9; Case map*/
+    '\u1FA4',	/*1FA4; 1F64 03B9; Case map*/
+    '\u1FA5',	/*1FA5; 1F65 03B9; Case map*/
+    '\u1FA6',	/*1FA6; 1F66 03B9; Case map*/
+    '\u1FA7',	/*1FA7; 1F67 03B9; Case map*/
+    '\u1FA8',	/*1FA8; 1F60 03B9; Case map*/
+    '\u1FA9',	/*1FA9; 1F61 03B9; Case map*/
+    '\u1FAA',	/*1FAA; 1F62 03B9; Case map*/
+    '\u1FAB',	/*1FAB; 1F63 03B9; Case map*/
+    '\u1FAC',	/*1FAC; 1F64 03B9; Case map*/
+    '\u1FAD',	/*1FAD; 1F65 03B9; Case map*/
+    '\u1FAE',	/*1FAE; 1F66 03B9; Case map*/
+    '\u1FAF',	/*1FAF; 1F67 03B9; Case map*/
+    '\u1FB2',	/*1FB2; 1F70 03B9; Case map*/
+    '\u1FB3',	/*1FB3; 03B1 03B9; Case map*/
+    '\u1FB4',	/*1FB4; 03AC 03B9; Case map*/
+    '\u1FB6',	/*1FB6; 03B1 0342; Case map*/
+    '\u1FB7',	/*1FB7; 03B1 0342 03B9; Case map*/
+    '\u1FB8',	/*1FB8; 1FB0; Case map*/
+    '\u1FB9',	/*1FB9; 1FB1; Case map*/
+    '\u1FBA',	/*1FBA; 1F70; Case map*/
+    '\u1FBB',	/*1FBB; 1F71; Case map*/
+    '\u1FBC',	/*1FBC; 03B1 03B9; Case map*/
+    '\u1FBE',	/*1FBE; 03B9; Case map*/
+    '\u1FC2',	/*1FC2; 1F74 03B9; Case map*/
+    '\u1FC3',	/*1FC3; 03B7 03B9; Case map*/
+    '\u1FC4',	/*1FC4; 03AE 03B9; Case map*/
+    '\u1FC6',	/*1FC6; 03B7 0342; Case map*/
+    '\u1FC7',	/*1FC7; 03B7 0342 03B9; Case map*/
+    '\u1FC8',	/*1FC8; 1F72; Case map*/
+    '\u1FC9',	/*1FC9; 1F73; Case map*/
+    '\u1FCA',	/*1FCA; 1F74; Case map*/
+    '\u1FCB',	/*1FCB; 1F75; Case map*/
+    '\u1FCC',	/*1FCC; 03B7 03B9; Case map*/
+    '\u1FD2',	/*1FD2; 03B9 0308 0300; Case map*/
+    '\u1FD3',	/*1FD3; 03B9 0308 0301; Case map*/
+    '\u1FD6',	/*1FD6; 03B9 0342; Case map*/
+    '\u1FD7',	/*1FD7; 03B9 0308 0342; Case map*/
+    '\u1FD8',	/*1FD8; 1FD0; Case map*/
+    '\u1FD9',	/*1FD9; 1FD1; Case map*/
+    '\u1FDA',	/*1FDA; 1F76; Case map*/
+    '\u1FDB',	/*1FDB; 1F77; Case map*/
+    '\u1FE2',	/*1FE2; 03C5 0308 0300; Case map*/
+    '\u1FE3',	/*1FE3; 03C5 0308 0301; Case map*/
+    '\u1FE4',	/*1FE4; 03C1 0313; Case map*/
+    '\u1FE6',	/*1FE6; 03C5 0342; Case map*/
+    '\u1FE7',	/*1FE7; 03C5 0308 0342; Case map*/
+    '\u1FE8',	/*1FE8; 1FE0; Case map*/
+    '\u1FE9',	/*1FE9; 1FE1; Case map*/
+    '\u1FEA',	/*1FEA; 1F7A; Case map*/
+    '\u1FEB',	/*1FEB; 1F7B; Case map*/
+    '\u1FEC',	/*1FEC; 1FE5; Case map*/
+    '\u1FF2',	/*1FF2; 1F7C 03B9; Case map*/
+    '\u1FF3',	/*1FF3; 03C9 03B9; Case map*/
+    '\u1FF4',	/*1FF4; 03CE 03B9; Case map*/
+    '\u1FF6',	/*1FF6; 03C9 0342; Case map*/
+    '\u1FF7',	/*1FF7; 03C9 0342 03B9; Case map*/
+    '\u1FF8',	/*1FF8; 1F78; Case map*/
+    '\u1FF9',	/*1FF9; 1F79; Case map*/
+    '\u1FFA',	/*1FFA; 1F7C; Case map*/
+    '\u1FFB',	/*1FFB; 1F7D; Case map*/
+    '\u1FFC',	/*1FFC; 03C9 03B9; Case map*/
+    '\u20A8',	/*20A8; 0072 0073; Additional folding*/
+    '\u2102',	/*2102; 0063; Additional folding*/
+    '\u2103',	/*2103; 00B0 0063; Additional folding*/
+    '\u2107',	/*2107; 025B; Additional folding*/
+    '\u2109',	/*2109; 00B0 0066; Additional folding*/
+    '\u210B',	/*210B; 0068; Additional folding*/
+    '\u210C',	/*210C; 0068; Additional folding*/
+    '\u210D',	/*210D; 0068; Additional folding*/
+    '\u2110',	/*2110; 0069; Additional folding*/
+    '\u2111',	/*2111; 0069; Additional folding*/
+    '\u2112',	/*2112; 006C; Additional folding*/
+    '\u2115',	/*2115; 006E; Additional folding*/
+    '\u2116',	/*2116; 006E 006F; Additional folding*/
+    '\u2119',	/*2119; 0070; Additional folding*/
+    '\u211A',	/*211A; 0071; Additional folding*/
+    '\u211B',	/*211B; 0072; Additional folding*/
+    '\u211C',	/*211C; 0072; Additional folding*/
+    '\u211D',	/*211D; 0072; Additional folding*/
+    '\u2120',	/*2120; 0073 006D; Additional folding*/
+    '\u2121',	/*2121; 0074 0065 006C; Additional folding*/
+    '\u2122',	/*2122; 0074 006D; Additional folding*/
+    '\u2124',	/*2124; 007A; Additional folding*/
+    '\u2126',	/*2126; 03C9; Case map*/
+    '\u2128',	/*2128; 007A; Additional folding*/
+    '\u212A',	/*212A; 006B; Case map*/
+    '\u212B',	/*212B; 00E5; Case map*/
+    '\u212C',	/*212C; 0062; Additional folding*/
+    '\u212D',	/*212D; 0063; Additional folding*/
+    '\u2130',	/*2130; 0065; Additional folding*/
+    '\u2131',	/*2131; 0066; Additional folding*/
+    '\u2133',	/*2133; 006D; Additional folding*/
+    '\u213E',	/*213E; 03B3; Additional folding*/
+    '\u213F',	/*213F; 03C0; Additional folding*/
+    '\u2145',	/*2145; 0064; Additional folding*/
+    '\u2160',	/*2160; 2170; Case map*/
+    '\u2161',	/*2161; 2171; Case map*/
+    '\u2162',	/*2162; 2172; Case map*/
+    '\u2163',	/*2163; 2173; Case map*/
+    '\u2164',	/*2164; 2174; Case map*/
+    '\u2165',	/*2165; 2175; Case map*/
+    '\u2166',	/*2166; 2176; Case map*/
+    '\u2167',	/*2167; 2177; Case map*/
+    '\u2168',	/*2168; 2178; Case map*/
+    '\u2169',	/*2169; 2179; Case map*/
+    '\u216A',	/*216A; 217A; Case map*/
+    '\u216B',	/*216B; 217B; Case map*/
+    '\u216C',	/*216C; 217C; Case map*/
+    '\u216D',	/*216D; 217D; Case map*/
+    '\u216E',	/*216E; 217E; Case map*/
+    '\u216F',	/*216F; 217F; Case map*/
+    '\u24B6',	/*24B6; 24D0; Case map*/
+    '\u24B7',	/*24B7; 24D1; Case map*/
+    '\u24B8',	/*24B8; 24D2; Case map*/
+    '\u24B9',	/*24B9; 24D3; Case map*/
+    '\u24BA',	/*24BA; 24D4; Case map*/
+    '\u24BB',	/*24BB; 24D5; Case map*/
+    '\u24BC',	/*24BC; 24D6; Case map*/
+    '\u24BD',	/*24BD; 24D7; Case map*/
+    '\u24BE',	/*24BE; 24D8; Case map*/
+    '\u24BF',	/*24BF; 24D9; Case map*/
+    '\u24C0',	/*24C0; 24DA; Case map*/
+    '\u24C1',	/*24C1; 24DB; Case map*/
+    '\u24C2',	/*24C2; 24DC; Case map*/
+    '\u24C3',	/*24C3; 24DD; Case map*/
+    '\u24C4',	/*24C4; 24DE; Case map*/
+    '\u24C5',	/*24C5; 24DF; Case map*/
+    '\u24C6',	/*24C6; 24E0; Case map*/
+    '\u24C7',	/*24C7; 24E1; Case map*/
+    '\u24C8',	/*24C8; 24E2; Case map*/
+    '\u24C9',	/*24C9; 24E3; Case map*/
+    '\u24CA',	/*24CA; 24E4; Case map*/
+    '\u24CB',	/*24CB; 24E5; Case map*/
+    '\u24CC',	/*24CC; 24E6; Case map*/
+    '\u24CD',	/*24CD; 24E7; Case map*/
+    '\u24CE',	/*24CE; 24E8; Case map*/
+    '\u24CF',	/*24CF; 24E9; Case map*/
+    '\u3371',	/*3371; 0068 0070 0061; Additional folding*/
+    '\u3373',	/*3373; 0061 0075; Additional folding*/
+    '\u3375',	/*3375; 006F 0076; Additional folding*/
+    '\u3380',	/*3380; 0070 0061; Additional folding*/
+    '\u3381',	/*3381; 006E 0061; Additional folding*/
+    '\u3382',	/*3382; 03BC 0061; Additional folding*/
+    '\u3383',	/*3383; 006D 0061; Additional folding*/
+    '\u3384',	/*3384; 006B 0061; Additional folding*/
+    '\u3385',	/*3385; 006B 0062; Additional folding*/
+    '\u3386',	/*3386; 006D 0062; Additional folding*/
+    '\u3387',	/*3387; 0067 0062; Additional folding*/
+    '\u338A',	/*338A; 0070 0066; Additional folding*/
+    '\u338B',	/*338B; 006E 0066; Additional folding*/
+    '\u338C',	/*338C; 03BC 0066; Additional folding*/
+    '\u3390',	/*3390; 0068 007A; Additional folding*/
+    '\u3391',	/*3391; 006B 0068 007A; Additional folding*/
+    '\u3392',	/*3392; 006D 0068 007A; Additional folding*/
+    '\u3393',	/*3393; 0067 0068 007A; Additional folding*/
+    '\u3394',	/*3394; 0074 0068 007A; Additional folding*/
+    '\u33A9',	/*33A9; 0070 0061; Additional folding*/
+    '\u33AA',	/*33AA; 006B 0070 0061; Additional folding*/
+    '\u33AB',	/*33AB; 006D 0070 0061; Additional folding*/
+    '\u33AC',	/*33AC; 0067 0070 0061; Additional folding*/
+    '\u33B4',	/*33B4; 0070 0076; Additional folding*/
+    '\u33B5',	/*33B5; 006E 0076; Additional folding*/
+    '\u33B6',	/*33B6; 03BC 0076; Additional folding*/
+    '\u33B7',	/*33B7; 006D 0076; Additional folding*/
+    '\u33B8',	/*33B8; 006B 0076; Additional folding*/
+    '\u33B9',	/*33B9; 006D 0076; Additional folding*/
+    '\u33BA',	/*33BA; 0070 0077; Additional folding*/
+    '\u33BB',	/*33BB; 006E 0077; Additional folding*/
+    '\u33BC',	/*33BC; 03BC 0077; Additional folding*/
+    '\u33BD',	/*33BD; 006D 0077; Additional folding*/
+    '\u33BE',	/*33BE; 006B 0077; Additional folding*/
+    '\u33BF',	/*33BF; 006D 0077; Additional folding*/
+    '\u33C0',	/*33C0; 006B 03C9; Additional folding*/
+    '\u33C1',	/*33C1; 006D 03C9; Additional folding*/
+    '\u33C3',	/*33C3; 0062 0071; Additional folding*/
+    '\u33C6',	/*33C6; 0063 2215 006B 0067; Additional folding*/
+    '\u33C7',	/*33C7; 0063 006F 002E; Additional folding*/
+    '\u33C8',	/*33C8; 0064 0062; Additional folding*/
+    '\u33C9',	/*33C9; 0067 0079; Additional folding*/
+    '\u33CB',	/*33CB; 0068 0070; Additional folding*/
+    '\u33CD',	/*33CD; 006B 006B; Additional folding*/
+    '\u33CE',	/*33CE; 006B 006D; Additional folding*/
+    '\u33D7',	/*33D7; 0070 0068; Additional folding*/
+    '\u33D9',	/*33D9; 0070 0070 006D; Additional folding*/
+    '\u33DA',	/*33DA; 0070 0072; Additional folding*/
+    '\u33DC',	/*33DC; 0073 0076; Additional folding*/
+    '\u33DD',	/*33DD; 0077 0062; Additional folding*/
+    '\uFB00',	/*FB00; 0066 0066; Case map*/
+    '\uFB01',	/*FB01; 0066 0069; Case map*/
+    '\uFB02',	/*FB02; 0066 006C; Case map*/
+    '\uFB03',	/*FB03; 0066 0066 0069; Case map*/
+    '\uFB04',	/*FB04; 0066 0066 006C; Case map*/
+    '\uFB05',	/*FB05; 0073 0074; Case map*/
+    '\uFB06',	/*FB06; 0073 0074; Case map*/
+    '\uFB13',	/*FB13; 0574 0576; Case map*/
+    '\uFB14',	/*FB14; 0574 0565; Case map*/
+    '\uFB15',	/*FB15; 0574 056B; Case map*/
+    '\uFB16',	/*FB16; 057E 0576; Case map*/
+    '\uFB17',	/*FB17; 0574 056D; Case map*/
+    '\uFF21',	/*FF21; FF41; Case map*/
+    '\uFF22',	/*FF22; FF42; Case map*/
+    '\uFF23',	/*FF23; FF43; Case map*/
+    '\uFF24',	/*FF24; FF44; Case map*/
+    '\uFF25',	/*FF25; FF45; Case map*/
+    '\uFF26',	/*FF26; FF46; Case map*/
+    '\uFF27',	/*FF27; FF47; Case map*/
+    '\uFF28',	/*FF28; FF48; Case map*/
+    '\uFF29',	/*FF29; FF49; Case map*/
+    '\uFF2A',	/*FF2A; FF4A; Case map*/
+    '\uFF2B',	/*FF2B; FF4B; Case map*/
+    '\uFF2C',	/*FF2C; FF4C; Case map*/
+    '\uFF2D',	/*FF2D; FF4D; Case map*/
+    '\uFF2E',	/*FF2E; FF4E; Case map*/
+    '\uFF2F',	/*FF2F; FF4F; Case map*/
+    '\uFF30',	/*FF30; FF50; Case map*/
+    '\uFF31',	/*FF31; FF51; Case map*/
+    '\uFF32',	/*FF32; FF52; Case map*/
+    '\uFF33',	/*FF33; FF53; Case map*/
+    '\uFF34',	/*FF34; FF54; Case map*/
+    '\uFF35',	/*FF35; FF55; Case map*/
+    '\uFF36',	/*FF36; FF56; Case map*/
+    '\uFF37',	/*FF37; FF57; Case map*/
+    '\uFF38',	/*FF38; FF58; Case map*/
+    '\uFF39',	/*FF39; FF59; Case map*/
+    '\uFF3A',	/*FF3A; FF5A; Case map*/
+  };
+
+  public static string[] B2replace = new string[] {
+    "\u0061",	/*0041; 0061; Case map*/
+    "\u0062",	/*0042; 0062; Case map*/
+    "\u0063",	/*0043; 0063; Case map*/
+    "\u0064",	/*0044; 0064; Case map*/
+    "\u0065",	/*0045; 0065; Case map*/
+    "\u0066",	/*0046; 0066; Case map*/
+    "\u0067",	/*0047; 0067; Case map*/
+    "\u0068",	/*0048; 0068; Case map*/
+    "\u0069",	/*0049; 0069; Case map*/
+    "\u006A",	/*004A; 006A; Case map*/
+    "\u006B",	/*004B; 006B; Case map*/
+    "\u006C",	/*004C; 006C; Case map*/
+    "\u006D",	/*004D; 006D; Case map*/
+    "\u006E",	/*004E; 006E; Case map*/
+    "\u006F",	/*004F; 006F; Case map*/
+    "\u0070",	/*0050; 0070; Case map*/
+    "\u0071",	/*0051; 0071; Case map*/
+    "\u0072",	/*0052; 0072; Case map*/
+    "\u0073",	/*0053; 0073; Case map*/
+    "\u0074",	/*0054; 0074; Case map*/
+    "\u0075",	/*0055; 0075; Case map*/
+    "\u0076",	/*0056; 0076; Case map*/
+    "\u0077",	/*0057; 0077; Case map*/
+    "\u0078",	/*0058; 0078; Case map*/
+    "\u0079",	/*0059; 0079; Case map*/
+    "\u007A",	/*005A; 007A; Case map*/
+    "\u03BC",	/*00B5; 03BC; Case map*/
+    "\u00E0",	/*00C0; 00E0; Case map*/
+    "\u00E1",	/*00C1; 00E1; Case map*/
+    "\u00E2",	/*00C2; 00E2; Case map*/
+    "\u00E3",	/*00C3; 00E3; Case map*/
+    "\u00E4",	/*00C4; 00E4; Case map*/
+    "\u00E5",	/*00C5; 00E5; Case map*/
+    "\u00E6",	/*00C6; 00E6; Case map*/
+    "\u00E7",	/*00C7; 00E7; Case map*/
+    "\u00E8",	/*00C8; 00E8; Case map*/
+    "\u00E9",	/*00C9; 00E9; Case map*/
+    "\u00EA",	/*00CA; 00EA; Case map*/
+    "\u00EB",	/*00CB; 00EB; Case map*/
+    "\u00EC",	/*00CC; 00EC; Case map*/
+    "\u00ED",	/*00CD; 00ED; Case map*/
+    "\u00EE",	/*00CE; 00EE; Case map*/
+    "\u00EF",	/*00CF; 00EF; Case map*/
+    "\u00F0",	/*00D0; 00F0; Case map*/
+    "\u00F1",	/*00D1; 00F1; Case map*/
+    "\u00F2",	/*00D2; 00F2; Case map*/
+    "\u00F3",	/*00D3; 00F3; Case map*/
+    "\u00F4",	/*00D4; 00F4; Case map*/
+    "\u00F5",	/*00D5; 00F5; Case map*/
+    "\u00F6",	/*00D6; 00F6; Case map*/
+    "\u00F8",	/*00D8; 00F8; Case map*/
+    "\u00F9",	/*00D9; 00F9; Case map*/
+    "\u00FA",	/*00DA; 00FA; Case map*/
+    "\u00FB",	/*00DB; 00FB; Case map*/
+    "\u00FC",	/*00DC; 00FC; Case map*/
+    "\u00FD",	/*00DD; 00FD; Case map*/
+    "\u00FE",	/*00DE; 00FE; Case map*/
+    "\u0073\u0073",	/*00DF; 0073 0073; Case map*/
+    "\u0101",	/*0100; 0101; Case map*/
+    "\u0103",	/*0102; 0103; Case map*/
+    "\u0105",	/*0104; 0105; Case map*/
+    "\u0107",	/*0106; 0107; Case map*/
+    "\u0109",	/*0108; 0109; Case map*/
+    "\u010B",	/*010A; 010B; Case map*/
+    "\u010D",	/*010C; 010D; Case map*/
+    "\u010F",	/*010E; 010F; Case map*/
+    "\u0111",	/*0110; 0111; Case map*/
+    "\u0113",	/*0112; 0113; Case map*/
+    "\u0115",	/*0114; 0115; Case map*/
+    "\u0117",	/*0116; 0117; Case map*/
+    "\u0119",	/*0118; 0119; Case map*/
+    "\u011B",	/*011A; 011B; Case map*/
+    "\u011D",	/*011C; 011D; Case map*/
+    "\u011F",	/*011E; 011F; Case map*/
+    "\u0121",	/*0120; 0121; Case map*/
+    "\u0123",	/*0122; 0123; Case map*/
+    "\u0125",	/*0124; 0125; Case map*/
+    "\u0127",	/*0126; 0127; Case map*/
+    "\u0129",	/*0128; 0129; Case map*/
+    "\u012B",	/*012A; 012B; Case map*/
+    "\u012D",	/*012C; 012D; Case map*/
+    "\u012F",	/*012E; 012F; Case map*/
+    "\u0069\u0307",	/*0130; 0069 0307; Case map*/
+    "\u0133",	/*0132; 0133; Case map*/
+    "\u0135",	/*0134; 0135; Case map*/
+    "\u0137",	/*0136; 0137; Case map*/
+    "\u013A",	/*0139; 013A; Case map*/
+    "\u013C",	/*013B; 013C; Case map*/
+    "\u013E",	/*013D; 013E; Case map*/
+    "\u0140",	/*013F; 0140; Case map*/
+    "\u0142",	/*0141; 0142; Case map*/
+    "\u0144",	/*0143; 0144; Case map*/
+    "\u0146",	/*0145; 0146; Case map*/
+    "\u0148",	/*0147; 0148; Case map*/
+    "\u02BC\u006E",	/*0149; 02BC 006E; Case map*/
+    "\u014B",	/*014A; 014B; Case map*/
+    "\u014D",	/*014C; 014D; Case map*/
+    "\u014F",	/*014E; 014F; Case map*/
+    "\u0151",	/*0150; 0151; Case map*/
+    "\u0153",	/*0152; 0153; Case map*/
+    "\u0155",	/*0154; 0155; Case map*/
+    "\u0157",	/*0156; 0157; Case map*/
+    "\u0159",	/*0158; 0159; Case map*/
+    "\u015B",	/*015A; 015B; Case map*/
+    "\u015D",	/*015C; 015D; Case map*/
+    "\u015F",	/*015E; 015F; Case map*/
+    "\u0161",	/*0160; 0161; Case map*/
+    "\u0163",	/*0162; 0163; Case map*/
+    "\u0165",	/*0164; 0165; Case map*/
+    "\u0167",	/*0166; 0167; Case map*/
+    "\u0169",	/*0168; 0169; Case map*/
+    "\u016B",	/*016A; 016B; Case map*/
+    "\u016D",	/*016C; 016D; Case map*/
+    "\u016F",	/*016E; 016F; Case map*/
+    "\u0171",	/*0170; 0171; Case map*/
+    "\u0173",	/*0172; 0173; Case map*/
+    "\u0175",	/*0174; 0175; Case map*/
+    "\u0177",	/*0176; 0177; Case map*/
+    "\u00FF",	/*0178; 00FF; Case map*/
+    "\u017A",	/*0179; 017A; Case map*/
+    "\u017C",	/*017B; 017C; Case map*/
+    "\u017E",	/*017D; 017E; Case map*/
+    "\u0073",	/*017F; 0073; Case map*/
+    "\u0253",	/*0181; 0253; Case map*/
+    "\u0183",	/*0182; 0183; Case map*/
+    "\u0185",	/*0184; 0185; Case map*/
+    "\u0254",	/*0186; 0254; Case map*/
+    "\u0188",	/*0187; 0188; Case map*/
+    "\u0256",	/*0189; 0256; Case map*/
+    "\u0257",	/*018A; 0257; Case map*/
+    "\u018C",	/*018B; 018C; Case map*/
+    "\u01DD",	/*018E; 01DD; Case map*/
+    "\u0259",	/*018F; 0259; Case map*/
+    "\u025B",	/*0190; 025B; Case map*/
+    "\u0192",	/*0191; 0192; Case map*/
+    "\u0260",	/*0193; 0260; Case map*/
+    "\u0263",	/*0194; 0263; Case map*/
+    "\u0269",	/*0196; 0269; Case map*/
+    "\u0268",	/*0197; 0268; Case map*/
+    "\u0199",	/*0198; 0199; Case map*/
+    "\u026F",	/*019C; 026F; Case map*/
+    "\u0272",	/*019D; 0272; Case map*/
+    "\u0275",	/*019F; 0275; Case map*/
+    "\u01A1",	/*01A0; 01A1; Case map*/
+    "\u01A3",	/*01A2; 01A3; Case map*/
+    "\u01A5",	/*01A4; 01A5; Case map*/
+    "\u0280",	/*01A6; 0280; Case map*/
+    "\u01A8",	/*01A7; 01A8; Case map*/
+    "\u0283",	/*01A9; 0283; Case map*/
+    "\u01AD",	/*01AC; 01AD; Case map*/
+    "\u0288",	/*01AE; 0288; Case map*/
+    "\u01B0",	/*01AF; 01B0; Case map*/
+    "\u028A",	/*01B1; 028A; Case map*/
+    "\u028B",	/*01B2; 028B; Case map*/
+    "\u01B4",	/*01B3; 01B4; Case map*/
+    "\u01B6",	/*01B5; 01B6; Case map*/
+    "\u0292",	/*01B7; 0292; Case map*/
+    "\u01B9",	/*01B8; 01B9; Case map*/
+    "\u01BD",	/*01BC; 01BD; Case map*/
+    "\u01C6",	/*01C4; 01C6; Case map*/
+    "\u01C6",	/*01C5; 01C6; Case map*/
+    "\u01C9",	/*01C7; 01C9; Case map*/
+    "\u01C9",	/*01C8; 01C9; Case map*/
+    "\u01CC",	/*01CA; 01CC; Case map*/
+    "\u01CC",	/*01CB; 01CC; Case map*/
+    "\u01CE",	/*01CD; 01CE; Case map*/
+    "\u01D0",	/*01CF; 01D0; Case map*/
+    "\u01D2",	/*01D1; 01D2; Case map*/
+    "\u01D4",	/*01D3; 01D4; Case map*/
+    "\u01D6",	/*01D5; 01D6; Case map*/
+    "\u01D8",	/*01D7; 01D8; Case map*/
+    "\u01DA",	/*01D9; 01DA; Case map*/
+    "\u01DC",	/*01DB; 01DC; Case map*/
+    "\u01DF",	/*01DE; 01DF; Case map*/
+    "\u01E1",	/*01E0; 01E1; Case map*/
+    "\u01E3",	/*01E2; 01E3; Case map*/
+    "\u01E5",	/*01E4; 01E5; Case map*/
+    "\u01E7",	/*01E6; 01E7; Case map*/
+    "\u01E9",	/*01E8; 01E9; Case map*/
+    "\u01EB",	/*01EA; 01EB; Case map*/
+    "\u01ED",	/*01EC; 01ED; Case map*/
+    "\u01EF",	/*01EE; 01EF; Case map*/
+    "\u006A\u030C",	/*01F0; 006A 030C; Case map*/
+    "\u01F3",	/*01F1; 01F3; Case map*/
+    "\u01F3",	/*01F2; 01F3; Case map*/
+    "\u01F5",	/*01F4; 01F5; Case map*/
+    "\u0195",	/*01F6; 0195; Case map*/
+    "\u01BF",	/*01F7; 01BF; Case map*/
+    "\u01F9",	/*01F8; 01F9; Case map*/
+    "\u01FB",	/*01FA; 01FB; Case map*/
+    "\u01FD",	/*01FC; 01FD; Case map*/
+    "\u01FF",	/*01FE; 01FF; Case map*/
+    "\u0201",	/*0200; 0201; Case map*/
+    "\u0203",	/*0202; 0203; Case map*/
+    "\u0205",	/*0204; 0205; Case map*/
+    "\u0207",	/*0206; 0207; Case map*/
+    "\u0209",	/*0208; 0209; Case map*/
+    "\u020B",	/*020A; 020B; Case map*/
+    "\u020D",	/*020C; 020D; Case map*/
+    "\u020F",	/*020E; 020F; Case map*/
+    "\u0211",	/*0210; 0211; Case map*/
+    "\u0213",	/*0212; 0213; Case map*/
+    "\u0215",	/*0214; 0215; Case map*/
+    "\u0217",	/*0216; 0217; Case map*/
+    "\u0219",	/*0218; 0219; Case map*/
+    "\u021B",	/*021A; 021B; Case map*/
+    "\u021D",	/*021C; 021D; Case map*/
+    "\u021F",	/*021E; 021F; Case map*/
+    "\u019E",	/*0220; 019E; Case map*/
+    "\u0223",	/*0222; 0223; Case map*/
+    "\u0225",	/*0224; 0225; Case map*/
+    "\u0227",	/*0226; 0227; Case map*/
+    "\u0229",	/*0228; 0229; Case map*/
+    "\u022B",	/*022A; 022B; Case map*/
+    "\u022D",	/*022C; 022D; Case map*/
+    "\u022F",	/*022E; 022F; Case map*/
+    "\u0231",	/*0230; 0231; Case map*/
+    "\u0233",	/*0232; 0233; Case map*/
+    "\u03B9",	/*0345; 03B9; Case map*/
+    "\u0020\u03B9",	/*037A; 0020 03B9; Additional folding*/
+    "\u03AC",	/*0386; 03AC; Case map*/
+    "\u03AD",	/*0388; 03AD; Case map*/
+    "\u03AE",	/*0389; 03AE; Case map*/
+    "\u03AF",	/*038A; 03AF; Case map*/
+    "\u03CC",	/*038C; 03CC; Case map*/
+    "\u03CD",	/*038E; 03CD; Case map*/
+    "\u03CE",	/*038F; 03CE; Case map*/
+    "\u03B9\u0308\u0301",	/*0390; 03B9 0308 0301; Case map*/
+    "\u03B1",	/*0391; 03B1; Case map*/
+    "\u03B2",	/*0392; 03B2; Case map*/
+    "\u03B3",	/*0393; 03B3; Case map*/
+    "\u03B4",	/*0394; 03B4; Case map*/
+    "\u03B5",	/*0395; 03B5; Case map*/
+    "\u03B6",	/*0396; 03B6; Case map*/
+    "\u03B7",	/*0397; 03B7; Case map*/
+    "\u03B8",	/*0398; 03B8; Case map*/
+    "\u03B9",	/*0399; 03B9; Case map*/
+    "\u03BA",	/*039A; 03BA; Case map*/
+    "\u03BB",	/*039B; 03BB; Case map*/
+    "\u03BC",	/*039C; 03BC; Case map*/
+    "\u03BD",	/*039D; 03BD; Case map*/
+    "\u03BE",	/*039E; 03BE; Case map*/
+    "\u03BF",	/*039F; 03BF; Case map*/
+    "\u03C0",	/*03A0; 03C0; Case map*/
+    "\u03C1",	/*03A1; 03C1; Case map*/
+    "\u03C3",	/*03A3; 03C3; Case map*/
+    "\u03C4",	/*03A4; 03C4; Case map*/
+    "\u03C5",	/*03A5; 03C5; Case map*/
+    "\u03C6",	/*03A6; 03C6; Case map*/
+    "\u03C7",	/*03A7; 03C7; Case map*/
+    "\u03C8",	/*03A8; 03C8; Case map*/
+    "\u03C9",	/*03A9; 03C9; Case map*/
+    "\u03CA",	/*03AA; 03CA; Case map*/
+    "\u03CB",	/*03AB; 03CB; Case map*/
+    "\u03C5\u0308\u0301",	/*03B0; 03C5 0308 0301; Case map*/
+    "\u03C3",	/*03C2; 03C3; Case map*/
+    "\u03B2",	/*03D0; 03B2; Case map*/
+    "\u03B8",	/*03D1; 03B8; Case map*/
+    "\u03C5",	/*03D2; 03C5; Additional folding*/
+    "\u03CD",	/*03D3; 03CD; Additional folding*/
+    "\u03CB",	/*03D4; 03CB; Additional folding*/
+    "\u03C6",	/*03D5; 03C6; Case map*/
+    "\u03C0",	/*03D6; 03C0; Case map*/
+    "\u03D9",	/*03D8; 03D9; Case map*/
+    "\u03DB",	/*03DA; 03DB; Case map*/
+    "\u03DD",	/*03DC; 03DD; Case map*/
+    "\u03DF",	/*03DE; 03DF; Case map*/
+    "\u03E1",	/*03E0; 03E1; Case map*/
+    "\u03E3",	/*03E2; 03E3; Case map*/
+    "\u03E5",	/*03E4; 03E5; Case map*/
+    "\u03E7",	/*03E6; 03E7; Case map*/
+    "\u03E9",	/*03E8; 03E9; Case map*/
+    "\u03EB",	/*03EA; 03EB; Case map*/
+    "\u03ED",	/*03EC; 03ED; Case map*/
+    "\u03EF",	/*03EE; 03EF; Case map*/
+    "\u03BA",	/*03F0; 03BA; Case map*/
+    "\u03C1",	/*03F1; 03C1; Case map*/
+    "\u03C3",	/*03F2; 03C3; Case map*/
+    "\u03B8",	/*03F4; 03B8; Case map*/
+    "\u03B5",	/*03F5; 03B5; Case map*/
+    "\u0450",	/*0400; 0450; Case map*/
+    "\u0451",	/*0401; 0451; Case map*/
+    "\u0452",	/*0402; 0452; Case map*/
+    "\u0453",	/*0403; 0453; Case map*/
+    "\u0454",	/*0404; 0454; Case map*/
+    "\u0455",	/*0405; 0455; Case map*/
+    "\u0456",	/*0406; 0456; Case map*/
+    "\u0457",	/*0407; 0457; Case map*/
+    "\u0458",	/*0408; 0458; Case map*/
+    "\u0459",	/*0409; 0459; Case map*/
+    "\u045A",	/*040A; 045A; Case map*/
+    "\u045B",	/*040B; 045B; Case map*/
+    "\u045C",	/*040C; 045C; Case map*/
+    "\u045D",	/*040D; 045D; Case map*/
+    "\u045E",	/*040E; 045E; Case map*/
+    "\u045F",	/*040F; 045F; Case map*/
+    "\u0430",	/*0410; 0430; Case map*/
+    "\u0431",	/*0411; 0431; Case map*/
+    "\u0432",	/*0412; 0432; Case map*/
+    "\u0433",	/*0413; 0433; Case map*/
+    "\u0434",	/*0414; 0434; Case map*/
+    "\u0435",	/*0415; 0435; Case map*/
+    "\u0436",	/*0416; 0436; Case map*/
+    "\u0437",	/*0417; 0437; Case map*/
+    "\u0438",	/*0418; 0438; Case map*/
+    "\u0439",	/*0419; 0439; Case map*/
+    "\u043A",	/*041A; 043A; Case map*/
+    "\u043B",	/*041B; 043B; Case map*/
+    "\u043C",	/*041C; 043C; Case map*/
+    "\u043D",	/*041D; 043D; Case map*/
+    "\u043E",	/*041E; 043E; Case map*/
+    "\u043F",	/*041F; 043F; Case map*/
+    "\u0440",	/*0420; 0440; Case map*/
+    "\u0441",	/*0421; 0441; Case map*/
+    "\u0442",	/*0422; 0442; Case map*/
+    "\u0443",	/*0423; 0443; Case map*/
+    "\u0444",	/*0424; 0444; Case map*/
+    "\u0445",	/*0425; 0445; Case map*/
+    "\u0446",	/*0426; 0446; Case map*/
+    "\u0447",	/*0427; 0447; Case map*/
+    "\u0448",	/*0428; 0448; Case map*/
+    "\u0449",	/*0429; 0449; Case map*/
+    "\u044A",	/*042A; 044A; Case map*/
+    "\u044B",	/*042B; 044B; Case map*/
+    "\u044C",	/*042C; 044C; Case map*/
+    "\u044D",	/*042D; 044D; Case map*/
+    "\u044E",	/*042E; 044E; Case map*/
+    "\u044F",	/*042F; 044F; Case map*/
+    "\u0461",	/*0460; 0461; Case map*/
+    "\u0463",	/*0462; 0463; Case map*/
+    "\u0465",	/*0464; 0465; Case map*/
+    "\u0467",	/*0466; 0467; Case map*/
+    "\u0469",	/*0468; 0469; Case map*/
+    "\u046B",	/*046A; 046B; Case map*/
+    "\u046D",	/*046C; 046D; Case map*/
+    "\u046F",	/*046E; 046F; Case map*/
+    "\u0471",	/*0470; 0471; Case map*/
+    "\u0473",	/*0472; 0473; Case map*/
+    "\u0475",	/*0474; 0475; Case map*/
+    "\u0477",	/*0476; 0477; Case map*/
+    "\u0479",	/*0478; 0479; Case map*/
+    "\u047B",	/*047A; 047B; Case map*/
+    "\u047D",	/*047C; 047D; Case map*/
+    "\u047F",	/*047E; 047F; Case map*/
+    "\u0481",	/*0480; 0481; Case map*/
+    "\u048B",	/*048A; 048B; Case map*/
+    "\u048D",	/*048C; 048D; Case map*/
+    "\u048F",	/*048E; 048F; Case map*/
+    "\u0491",	/*0490; 0491; Case map*/
+    "\u0493",	/*0492; 0493; Case map*/
+    "\u0495",	/*0494; 0495; Case map*/
+    "\u0497",	/*0496; 0497; Case map*/
+    "\u0499",	/*0498; 0499; Case map*/
+    "\u049B",	/*049A; 049B; Case map*/
+    "\u049D",	/*049C; 049D; Case map*/
+    "\u049F",	/*049E; 049F; Case map*/
+    "\u04A1",	/*04A0; 04A1; Case map*/
+    "\u04A3",	/*04A2; 04A3; Case map*/
+    "\u04A5",	/*04A4; 04A5; Case map*/
+    "\u04A7",	/*04A6; 04A7; Case map*/
+    "\u04A9",	/*04A8; 04A9; Case map*/
+    "\u04AB",	/*04AA; 04AB; Case map*/
+    "\u04AD",	/*04AC; 04AD; Case map*/
+    "\u04AF",	/*04AE; 04AF; Case map*/
+    "\u04B1",	/*04B0; 04B1; Case map*/
+    "\u04B3",	/*04B2; 04B3; Case map*/
+    "\u04B5",	/*04B4; 04B5; Case map*/
+    "\u04B7",	/*04B6; 04B7; Case map*/
+    "\u04B9",	/*04B8; 04B9; Case map*/
+    "\u04BB",	/*04BA; 04BB; Case map*/
+    "\u04BD",	/*04BC; 04BD; Case map*/
+    "\u04BF",	/*04BE; 04BF; Case map*/
+    "\u04C2",	/*04C1; 04C2; Case map*/
+    "\u04C4",	/*04C3; 04C4; Case map*/
+    "\u04C6",	/*04C5; 04C6; Case map*/
+    "\u04C8",	/*04C7; 04C8; Case map*/
+    "\u04CA",	/*04C9; 04CA; Case map*/
+    "\u04CC",	/*04CB; 04CC; Case map*/
+    "\u04CE",	/*04CD; 04CE; Case map*/
+    "\u04D1",	/*04D0; 04D1; Case map*/
+    "\u04D3",	/*04D2; 04D3; Case map*/
+    "\u04D5",	/*04D4; 04D5; Case map*/
+    "\u04D7",	/*04D6; 04D7; Case map*/
+    "\u04D9",	/*04D8; 04D9; Case map*/
+    "\u04DB",	/*04DA; 04DB; Case map*/
+    "\u04DD",	/*04DC; 04DD; Case map*/
+    "\u04DF",	/*04DE; 04DF; Case map*/
+    "\u04E1",	/*04E0; 04E1; Case map*/
+    "\u04E3",	/*04E2; 04E3; Case map*/
+    "\u04E5",	/*04E4; 04E5; Case map*/
+    "\u04E7",	/*04E6; 04E7; Case map*/
+    "\u04E9",	/*04E8; 04E9; Case map*/
+    "\u04EB",	/*04EA; 04EB; Case map*/
+    "\u04ED",	/*04EC; 04ED; Case map*/
+    "\u04EF",	/*04EE; 04EF; Case map*/
+    "\u04F1",	/*04F0; 04F1; Case map*/
+    "\u04F3",	/*04F2; 04F3; Case map*/
+    "\u04F5",	/*04F4; 04F5; Case map*/
+    "\u04F9",	/*04F8; 04F9; Case map*/
+    "\u0501",	/*0500; 0501; Case map*/
+    "\u0503",	/*0502; 0503; Case map*/
+    "\u0505",	/*0504; 0505; Case map*/
+    "\u0507",	/*0506; 0507; Case map*/
+    "\u0509",	/*0508; 0509; Case map*/
+    "\u050B",	/*050A; 050B; Case map*/
+    "\u050D",	/*050C; 050D; Case map*/
+    "\u050F",	/*050E; 050F; Case map*/
+    "\u0561",	/*0531; 0561; Case map*/
+    "\u0562",	/*0532; 0562; Case map*/
+    "\u0563",	/*0533; 0563; Case map*/
+    "\u0564",	/*0534; 0564; Case map*/
+    "\u0565",	/*0535; 0565; Case map*/
+    "\u0566",	/*0536; 0566; Case map*/
+    "\u0567",	/*0537; 0567; Case map*/
+    "\u0568",	/*0538; 0568; Case map*/
+    "\u0569",	/*0539; 0569; Case map*/
+    "\u056A",	/*053A; 056A; Case map*/
+    "\u056B",	/*053B; 056B; Case map*/
+    "\u056C",	/*053C; 056C; Case map*/
+    "\u056D",	/*053D; 056D; Case map*/
+    "\u056E",	/*053E; 056E; Case map*/
+    "\u056F",	/*053F; 056F; Case map*/
+    "\u0570",	/*0540; 0570; Case map*/
+    "\u0571",	/*0541; 0571; Case map*/
+    "\u0572",	/*0542; 0572; Case map*/
+    "\u0573",	/*0543; 0573; Case map*/
+    "\u0574",	/*0544; 0574; Case map*/
+    "\u0575",	/*0545; 0575; Case map*/
+    "\u0576",	/*0546; 0576; Case map*/
+    "\u0577",	/*0547; 0577; Case map*/
+    "\u0578",	/*0548; 0578; Case map*/
+    "\u0579",	/*0549; 0579; Case map*/
+    "\u057A",	/*054A; 057A; Case map*/
+    "\u057B",	/*054B; 057B; Case map*/
+    "\u057C",	/*054C; 057C; Case map*/
+    "\u057D",	/*054D; 057D; Case map*/
+    "\u057E",	/*054E; 057E; Case map*/
+    "\u057F",	/*054F; 057F; Case map*/
+    "\u0580",	/*0550; 0580; Case map*/
+    "\u0581",	/*0551; 0581; Case map*/
+    "\u0582",	/*0552; 0582; Case map*/
+    "\u0583",	/*0553; 0583; Case map*/
+    "\u0584",	/*0554; 0584; Case map*/
+    "\u0585",	/*0555; 0585; Case map*/
+    "\u0586",	/*0556; 0586; Case map*/
+    "\u0565\u0582",	/*0587; 0565 0582; Case map*/
+    "\u1E01",	/*1E00; 1E01; Case map*/
+    "\u1E03",	/*1E02; 1E03; Case map*/
+    "\u1E05",	/*1E04; 1E05; Case map*/
+    "\u1E07",	/*1E06; 1E07; Case map*/
+    "\u1E09",	/*1E08; 1E09; Case map*/
+    "\u1E0B",	/*1E0A; 1E0B; Case map*/
+    "\u1E0D",	/*1E0C; 1E0D; Case map*/
+    "\u1E0F",	/*1E0E; 1E0F; Case map*/
+    "\u1E11",	/*1E10; 1E11; Case map*/
+    "\u1E13",	/*1E12; 1E13; Case map*/
+    "\u1E15",	/*1E14; 1E15; Case map*/
+    "\u1E17",	/*1E16; 1E17; Case map*/
+    "\u1E19",	/*1E18; 1E19; Case map*/
+    "\u1E1B",	/*1E1A; 1E1B; Case map*/
+    "\u1E1D",	/*1E1C; 1E1D; Case map*/
+    "\u1E1F",	/*1E1E; 1E1F; Case map*/
+    "\u1E21",	/*1E20; 1E21; Case map*/
+    "\u1E23",	/*1E22; 1E23; Case map*/
+    "\u1E25",	/*1E24; 1E25; Case map*/
+    "\u1E27",	/*1E26; 1E27; Case map*/
+    "\u1E29",	/*1E28; 1E29; Case map*/
+    "\u1E2B",	/*1E2A; 1E2B; Case map*/
+    "\u1E2D",	/*1E2C; 1E2D; Case map*/
+    "\u1E2F",	/*1E2E; 1E2F; Case map*/
+    "\u1E31",	/*1E30; 1E31; Case map*/
+    "\u1E33",	/*1E32; 1E33; Case map*/
+    "\u1E35",	/*1E34; 1E35; Case map*/
+    "\u1E37",	/*1E36; 1E37; Case map*/
+    "\u1E39",	/*1E38; 1E39; Case map*/
+    "\u1E3B",	/*1E3A; 1E3B; Case map*/
+    "\u1E3D",	/*1E3C; 1E3D; Case map*/
+    "\u1E3F",	/*1E3E; 1E3F; Case map*/
+    "\u1E41",	/*1E40; 1E41; Case map*/
+    "\u1E43",	/*1E42; 1E43; Case map*/
+    "\u1E45",	/*1E44; 1E45; Case map*/
+    "\u1E47",	/*1E46; 1E47; Case map*/
+    "\u1E49",	/*1E48; 1E49; Case map*/
+    "\u1E4B",	/*1E4A; 1E4B; Case map*/
+    "\u1E4D",	/*1E4C; 1E4D; Case map*/
+    "\u1E4F",	/*1E4E; 1E4F; Case map*/
+    "\u1E51",	/*1E50; 1E51; Case map*/
+    "\u1E53",	/*1E52; 1E53; Case map*/
+    "\u1E55",	/*1E54; 1E55; Case map*/
+    "\u1E57",	/*1E56; 1E57; Case map*/
+    "\u1E59",	/*1E58; 1E59; Case map*/
+    "\u1E5B",	/*1E5A; 1E5B; Case map*/
+    "\u1E5D",	/*1E5C; 1E5D; Case map*/
+    "\u1E5F",	/*1E5E; 1E5F; Case map*/
+    "\u1E61",	/*1E60; 1E61; Case map*/
+    "\u1E63",	/*1E62; 1E63; Case map*/
+    "\u1E65",	/*1E64; 1E65; Case map*/
+    "\u1E67",	/*1E66; 1E67; Case map*/
+    "\u1E69",	/*1E68; 1E69; Case map*/
+    "\u1E6B",	/*1E6A; 1E6B; Case map*/
+    "\u1E6D",	/*1E6C; 1E6D; Case map*/
+    "\u1E6F",	/*1E6E; 1E6F; Case map*/
+    "\u1E71",	/*1E70; 1E71; Case map*/
+    "\u1E73",	/*1E72; 1E73; Case map*/
+    "\u1E75",	/*1E74; 1E75; Case map*/
+    "\u1E77",	/*1E76; 1E77; Case map*/
+    "\u1E79",	/*1E78; 1E79; Case map*/
+    "\u1E7B",	/*1E7A; 1E7B; Case map*/
+    "\u1E7D",	/*1E7C; 1E7D; Case map*/
+    "\u1E7F",	/*1E7E; 1E7F; Case map*/
+    "\u1E81",	/*1E80; 1E81; Case map*/
+    "\u1E83",	/*1E82; 1E83; Case map*/
+    "\u1E85",	/*1E84; 1E85; Case map*/
+    "\u1E87",	/*1E86; 1E87; Case map*/
+    "\u1E89",	/*1E88; 1E89; Case map*/
+    "\u1E8B",	/*1E8A; 1E8B; Case map*/
+    "\u1E8D",	/*1E8C; 1E8D; Case map*/
+    "\u1E8F",	/*1E8E; 1E8F; Case map*/
+    "\u1E91",	/*1E90; 1E91; Case map*/
+    "\u1E93",	/*1E92; 1E93; Case map*/
+    "\u1E95",	/*1E94; 1E95; Case map*/
+    "\u0068\u0331",	/*1E96; 0068 0331; Case map*/
+    "\u0074\u0308",	/*1E97; 0074 0308; Case map*/
+    "\u0077\u030A",	/*1E98; 0077 030A; Case map*/
+    "\u0079\u030A",	/*1E99; 0079 030A; Case map*/
+    "\u0061\u02BE",	/*1E9A; 0061 02BE; Case map*/
+    "\u1E61",	/*1E9B; 1E61; Case map*/
+    "\u1EA1",	/*1EA0; 1EA1; Case map*/
+    "\u1EA3",	/*1EA2; 1EA3; Case map*/
+    "\u1EA5",	/*1EA4; 1EA5; Case map*/
+    "\u1EA7",	/*1EA6; 1EA7; Case map*/
+    "\u1EA9",	/*1EA8; 1EA9; Case map*/
+    "\u1EAB",	/*1EAA; 1EAB; Case map*/
+    "\u1EAD",	/*1EAC; 1EAD; Case map*/
+    "\u1EAF",	/*1EAE; 1EAF; Case map*/
+    "\u1EB1",	/*1EB0; 1EB1; Case map*/
+    "\u1EB3",	/*1EB2; 1EB3; Case map*/
+    "\u1EB5",	/*1EB4; 1EB5; Case map*/
+    "\u1EB7",	/*1EB6; 1EB7; Case map*/
+    "\u1EB9",	/*1EB8; 1EB9; Case map*/
+    "\u1EBB",	/*1EBA; 1EBB; Case map*/
+    "\u1EBD",	/*1EBC; 1EBD; Case map*/
+    "\u1EBF",	/*1EBE; 1EBF; Case map*/
+    "\u1EC1",	/*1EC0; 1EC1; Case map*/
+    "\u1EC3",	/*1EC2; 1EC3; Case map*/
+    "\u1EC5",	/*1EC4; 1EC5; Case map*/
+    "\u1EC7",	/*1EC6; 1EC7; Case map*/
+    "\u1EC9",	/*1EC8; 1EC9; Case map*/
+    "\u1ECB",	/*1ECA; 1ECB; Case map*/
+    "\u1ECD",	/*1ECC; 1ECD; Case map*/
+    "\u1ECF",	/*1ECE; 1ECF; Case map*/
+    "\u1ED1",	/*1ED0; 1ED1; Case map*/
+    "\u1ED3",	/*1ED2; 1ED3; Case map*/
+    "\u1ED5",	/*1ED4; 1ED5; Case map*/
+    "\u1ED7",	/*1ED6; 1ED7; Case map*/
+    "\u1ED9",	/*1ED8; 1ED9; Case map*/
+    "\u1EDB",	/*1EDA; 1EDB; Case map*/
+    "\u1EDD",	/*1EDC; 1EDD; Case map*/
+    "\u1EDF",	/*1EDE; 1EDF; Case map*/
+    "\u1EE1",	/*1EE0; 1EE1; Case map*/
+    "\u1EE3",	/*1EE2; 1EE3; Case map*/
+    "\u1EE5",	/*1EE4; 1EE5; Case map*/
+    "\u1EE7",	/*1EE6; 1EE7; Case map*/
+    "\u1EE9",	/*1EE8; 1EE9; Case map*/
+    "\u1EEB",	/*1EEA; 1EEB; Case map*/
+    "\u1EED",	/*1EEC; 1EED; Case map*/
+    "\u1EEF",	/*1EEE; 1EEF; Case map*/
+    "\u1EF1",	/*1EF0; 1EF1; Case map*/
+    "\u1EF3",	/*1EF2; 1EF3; Case map*/
+    "\u1EF5",	/*1EF4; 1EF5; Case map*/
+    "\u1EF7",	/*1EF6; 1EF7; Case map*/
+    "\u1EF9",	/*1EF8; 1EF9; Case map*/
+    "\u1F00",	/*1F08; 1F00; Case map*/
+    "\u1F01",	/*1F09; 1F01; Case map*/
+    "\u1F02",	/*1F0A; 1F02; Case map*/
+    "\u1F03",	/*1F0B; 1F03; Case map*/
+    "\u1F04",	/*1F0C; 1F04; Case map*/
+    "\u1F05",	/*1F0D; 1F05; Case map*/
+    "\u1F06",	/*1F0E; 1F06; Case map*/
+    "\u1F07",	/*1F0F; 1F07; Case map*/
+    "\u1F10",	/*1F18; 1F10; Case map*/
+    "\u1F11",	/*1F19; 1F11; Case map*/
+    "\u1F12",	/*1F1A; 1F12; Case map*/
+    "\u1F13",	/*1F1B; 1F13; Case map*/
+    "\u1F14",	/*1F1C; 1F14; Case map*/
+    "\u1F15",	/*1F1D; 1F15; Case map*/
+    "\u1F20",	/*1F28; 1F20; Case map*/
+    "\u1F21",	/*1F29; 1F21; Case map*/
+    "\u1F22",	/*1F2A; 1F22; Case map*/
+    "\u1F23",	/*1F2B; 1F23; Case map*/
+    "\u1F24",	/*1F2C; 1F24; Case map*/
+    "\u1F25",	/*1F2D; 1F25; Case map*/
+    "\u1F26",	/*1F2E; 1F26; Case map*/
+    "\u1F27",	/*1F2F; 1F27; Case map*/
+    "\u1F30",	/*1F38; 1F30; Case map*/
+    "\u1F31",	/*1F39; 1F31; Case map*/
+    "\u1F32",	/*1F3A; 1F32; Case map*/
+    "\u1F33",	/*1F3B; 1F33; Case map*/
+    "\u1F34",	/*1F3C; 1F34; Case map*/
+    "\u1F35",	/*1F3D; 1F35; Case map*/
+    "\u1F36",	/*1F3E; 1F36; Case map*/
+    "\u1F37",	/*1F3F; 1F37; Case map*/
+    "\u1F40",	/*1F48; 1F40; Case map*/
+    "\u1F41",	/*1F49; 1F41; Case map*/
+    "\u1F42",	/*1F4A; 1F42; Case map*/
+    "\u1F43",	/*1F4B; 1F43; Case map*/
+    "\u1F44",	/*1F4C; 1F44; Case map*/
+    "\u1F45",	/*1F4D; 1F45; Case map*/
+    "\u03C5\u0313",	/*1F50; 03C5 0313; Case map*/
+    "\u03C5\u0313\u0300",	/*1F52; 03C5 0313 0300; Case map*/
+    "\u03C5\u0313\u0301",	/*1F54; 03C5 0313 0301; Case map*/
+    "\u03C5\u0313\u0342",	/*1F56; 03C5 0313 0342; Case map*/
+    "\u1F51",	/*1F59; 1F51; Case map*/
+    "\u1F53",	/*1F5B; 1F53; Case map*/
+    "\u1F55",	/*1F5D; 1F55; Case map*/
+    "\u1F57",	/*1F5F; 1F57; Case map*/
+    "\u1F60",	/*1F68; 1F60; Case map*/
+    "\u1F61",	/*1F69; 1F61; Case map*/
+    "\u1F62",	/*1F6A; 1F62; Case map*/
+    "\u1F63",	/*1F6B; 1F63; Case map*/
+    "\u1F64",	/*1F6C; 1F64; Case map*/
+    "\u1F65",	/*1F6D; 1F65; Case map*/
+    "\u1F66",	/*1F6E; 1F66; Case map*/
+    "\u1F67",	/*1F6F; 1F67; Case map*/
+    "\u1F00\u03B9",	/*1F80; 1F00 03B9; Case map*/
+    "\u1F01\u03B9",	/*1F81; 1F01 03B9; Case map*/
+    "\u1F02\u03B9",	/*1F82; 1F02 03B9; Case map*/
+    "\u1F03\u03B9",	/*1F83; 1F03 03B9; Case map*/
+    "\u1F04\u03B9",	/*1F84; 1F04 03B9; Case map*/
+    "\u1F05\u03B9",	/*1F85; 1F05 03B9; Case map*/
+    "\u1F06\u03B9",	/*1F86; 1F06 03B9; Case map*/
+    "\u1F07\u03B9",	/*1F87; 1F07 03B9; Case map*/
+    "\u1F00\u03B9",	/*1F88; 1F00 03B9; Case map*/
+    "\u1F01\u03B9",	/*1F89; 1F01 03B9; Case map*/
+    "\u1F02\u03B9",	/*1F8A; 1F02 03B9; Case map*/
+    "\u1F03\u03B9",	/*1F8B; 1F03 03B9; Case map*/
+    "\u1F04\u03B9",	/*1F8C; 1F04 03B9; Case map*/
+    "\u1F05\u03B9",	/*1F8D; 1F05 03B9; Case map*/
+    "\u1F06\u03B9",	/*1F8E; 1F06 03B9; Case map*/
+    "\u1F07\u03B9",	/*1F8F; 1F07 03B9; Case map*/
+    "\u1F20\u03B9",	/*1F90; 1F20 03B9; Case map*/
+    "\u1F21\u03B9",	/*1F91; 1F21 03B9; Case map*/
+    "\u1F22\u03B9",	/*1F92; 1F22 03B9; Case map*/
+    "\u1F23\u03B9",	/*1F93; 1F23 03B9; Case map*/
+    "\u1F24\u03B9",	/*1F94; 1F24 03B9; Case map*/
+    "\u1F25\u03B9",	/*1F95; 1F25 03B9; Case map*/
+    "\u1F26\u03B9",	/*1F96; 1F26 03B9; Case map*/
+    "\u1F27\u03B9",	/*1F97; 1F27 03B9; Case map*/
+    "\u1F20\u03B9",	/*1F98; 1F20 03B9; Case map*/
+    "\u1F21\u03B9",	/*1F99; 1F21 03B9; Case map*/
+    "\u1F22\u03B9",	/*1F9A; 1F22 03B9; Case map*/
+    "\u1F23\u03B9",	/*1F9B; 1F23 03B9; Case map*/
+    "\u1F24\u03B9",	/*1F9C; 1F24 03B9; Case map*/
+    "\u1F25\u03B9",	/*1F9D; 1F25 03B9; Case map*/
+    "\u1F26\u03B9",	/*1F9E; 1F26 03B9; Case map*/
+    "\u1F27\u03B9",	/*1F9F; 1F27 03B9; Case map*/
+    "\u1F60\u03B9",	/*1FA0; 1F60 03B9; Case map*/
+    "\u1F61\u03B9",	/*1FA1; 1F61 03B9; Case map*/
+    "\u1F62\u03B9",	/*1FA2; 1F62 03B9; Case map*/
+    "\u1F63\u03B9",	/*1FA3; 1F63 03B9; Case map*/
+    "\u1F64\u03B9",	/*1FA4; 1F64 03B9; Case map*/
+    "\u1F65\u03B9",	/*1FA5; 1F65 03B9; Case map*/
+    "\u1F66\u03B9",	/*1FA6; 1F66 03B9; Case map*/
+    "\u1F67\u03B9",	/*1FA7; 1F67 03B9; Case map*/
+    "\u1F60\u03B9",	/*1FA8; 1F60 03B9; Case map*/
+    "\u1F61\u03B9",	/*1FA9; 1F61 03B9; Case map*/
+    "\u1F62\u03B9",	/*1FAA; 1F62 03B9; Case map*/
+    "\u1F63\u03B9",	/*1FAB; 1F63 03B9; Case map*/
+    "\u1F64\u03B9",	/*1FAC; 1F64 03B9; Case map*/
+    "\u1F65\u03B9",	/*1FAD; 1F65 03B9; Case map*/
+    "\u1F66\u03B9",	/*1FAE; 1F66 03B9; Case map*/
+    "\u1F67\u03B9",	/*1FAF; 1F67 03B9; Case map*/
+    "\u1F70\u03B9",	/*1FB2; 1F70 03B9; Case map*/
+    "\u03B1\u03B9",	/*1FB3; 03B1 03B9; Case map*/
+    "\u03AC\u03B9",	/*1FB4; 03AC 03B9; Case map*/
+    "\u03B1\u0342",	/*1FB6; 03B1 0342; Case map*/
+    "\u03B1\u0342\u03B9",	/*1FB7; 03B1 0342 03B9; Case map*/
+    "\u1FB0",	/*1FB8; 1FB0; Case map*/
+    "\u1FB1",	/*1FB9; 1FB1; Case map*/
+    "\u1F70",	/*1FBA; 1F70; Case map*/
+    "\u1F71",	/*1FBB; 1F71; Case map*/
+    "\u03B1\u03B9",	/*1FBC; 03B1 03B9; Case map*/
+    "\u03B9",	/*1FBE; 03B9; Case map*/
+    "\u1F74\u03B9",	/*1FC2; 1F74 03B9; Case map*/
+    "\u03B7\u03B9",	/*1FC3; 03B7 03B9; Case map*/
+    "\u03AE\u03B9",	/*1FC4; 03AE 03B9; Case map*/
+    "\u03B7\u0342",	/*1FC6; 03B7 0342; Case map*/
+    "\u03B7\u0342\u03B9",	/*1FC7; 03B7 0342 03B9; Case map*/
+    "\u1F72",	/*1FC8; 1F72; Case map*/
+    "\u1F73",	/*1FC9; 1F73; Case map*/
+    "\u1F74",	/*1FCA; 1F74; Case map*/
+    "\u1F75",	/*1FCB; 1F75; Case map*/
+    "\u03B7\u03B9",	/*1FCC; 03B7 03B9; Case map*/
+    "\u03B9\u0308\u0300",	/*1FD2; 03B9 0308 0300; Case map*/
+    "\u03B9\u0308\u0301",	/*1FD3; 03B9 0308 0301; Case map*/
+    "\u03B9\u0342",	/*1FD6; 03B9 0342; Case map*/
+    "\u03B9\u0308\u0342",	/*1FD7; 03B9 0308 0342; Case map*/
+    "\u1FD0",	/*1FD8; 1FD0; Case map*/
+    "\u1FD1",	/*1FD9; 1FD1; Case map*/
+    "\u1F76",	/*1FDA; 1F76; Case map*/
+    "\u1F77",	/*1FDB; 1F77; Case map*/
+    "\u03C5\u0308\u0300",	/*1FE2; 03C5 0308 0300; Case map*/
+    "\u03C5\u0308\u0301",	/*1FE3; 03C5 0308 0301; Case map*/
+    "\u03C1\u0313",	/*1FE4; 03C1 0313; Case map*/
+    "\u03C5\u0342",	/*1FE6; 03C5 0342; Case map*/
+    "\u03C5\u0308\u0342",	/*1FE7; 03C5 0308 0342; Case map*/
+    "\u1FE0",	/*1FE8; 1FE0; Case map*/
+    "\u1FE1",	/*1FE9; 1FE1; Case map*/
+    "\u1F7A",	/*1FEA; 1F7A; Case map*/
+    "\u1F7B",	/*1FEB; 1F7B; Case map*/
+    "\u1FE5",	/*1FEC; 1FE5; Case map*/
+    "\u1F7C\u03B9",	/*1FF2; 1F7C 03B9; Case map*/
+    "\u03C9\u03B9",	/*1FF3; 03C9 03B9; Case map*/
+    "\u03CE\u03B9",	/*1FF4; 03CE 03B9; Case map*/
+    "\u03C9\u0342",	/*1FF6; 03C9 0342; Case map*/
+    "\u03C9\u0342\u03B9",	/*1FF7; 03C9 0342 03B9; Case map*/
+    "\u1F78",	/*1FF8; 1F78; Case map*/
+    "\u1F79",	/*1FF9; 1F79; Case map*/
+    "\u1F7C",	/*1FFA; 1F7C; Case map*/
+    "\u1F7D",	/*1FFB; 1F7D; Case map*/
+    "\u03C9\u03B9",	/*1FFC; 03C9 03B9; Case map*/
+    "\u0072\u0073",	/*20A8; 0072 0073; Additional folding*/
+    "\u0063",	/*2102; 0063; Additional folding*/
+    "\u00B0\u0063",	/*2103; 00B0 0063; Additional folding*/
+    "\u025B",	/*2107; 025B; Additional folding*/
+    "\u00B0\u0066",	/*2109; 00B0 0066; Additional folding*/
+    "\u0068",	/*210B; 0068; Additional folding*/
+    "\u0068",	/*210C; 0068; Additional folding*/
+    "\u0068",	/*210D; 0068; Additional folding*/
+    "\u0069",	/*2110; 0069; Additional folding*/
+    "\u0069",	/*2111; 0069; Additional folding*/
+    "\u006C",	/*2112; 006C; Additional folding*/
+    "\u006E",	/*2115; 006E; Additional folding*/
+    "\u006E\u006F",	/*2116; 006E 006F; Additional folding*/
+    "\u0070",	/*2119; 0070; Additional folding*/
+    "\u0071",	/*211A; 0071; Additional folding*/
+    "\u0072",	/*211B; 0072; Additional folding*/
+    "\u0072",	/*211C; 0072; Additional folding*/
+    "\u0072",	/*211D; 0072; Additional folding*/
+    "\u0073\u006D",	/*2120; 0073 006D; Additional folding*/
+    "\u0074\u0065\u006C",	/*2121; 0074 0065 006C; Additional folding*/
+    "\u0074\u006D",	/*2122; 0074 006D; Additional folding*/
+    "\u007A",	/*2124; 007A; Additional folding*/
+    "\u03C9",	/*2126; 03C9; Case map*/
+    "\u007A",	/*2128; 007A; Additional folding*/
+    "\u006B",	/*212A; 006B; Case map*/
+    "\u00E5",	/*212B; 00E5; Case map*/
+    "\u0062",	/*212C; 0062; Additional folding*/
+    "\u0063",	/*212D; 0063; Additional folding*/
+    "\u0065",	/*2130; 0065; Additional folding*/
+    "\u0066",	/*2131; 0066; Additional folding*/
+    "\u006D",	/*2133; 006D; Additional folding*/
+    "\u03B3",	/*213E; 03B3; Additional folding*/
+    "\u03C0",	/*213F; 03C0; Additional folding*/
+    "\u0064",	/*2145; 0064; Additional folding*/
+    "\u2170",	/*2160; 2170; Case map*/
+    "\u2171",	/*2161; 2171; Case map*/
+    "\u2172",	/*2162; 2172; Case map*/
+    "\u2173",	/*2163; 2173; Case map*/
+    "\u2174",	/*2164; 2174; Case map*/
+    "\u2175",	/*2165; 2175; Case map*/
+    "\u2176",	/*2166; 2176; Case map*/
+    "\u2177",	/*2167; 2177; Case map*/
+    "\u2178",	/*2168; 2178; Case map*/
+    "\u2179",	/*2169; 2179; Case map*/
+    "\u217A",	/*216A; 217A; Case map*/
+    "\u217B",	/*216B; 217B; Case map*/
+    "\u217C",	/*216C; 217C; Case map*/
+    "\u217D",	/*216D; 217D; Case map*/
+    "\u217E",	/*216E; 217E; Case map*/
+    "\u217F",	/*216F; 217F; Case map*/
+    "\u24D0",	/*24B6; 24D0; Case map*/
+    "\u24D1",	/*24B7; 24D1; Case map*/
+    "\u24D2",	/*24B8; 24D2; Case map*/
+    "\u24D3",	/*24B9; 24D3; Case map*/
+    "\u24D4",	/*24BA; 24D4; Case map*/
+    "\u24D5",	/*24BB; 24D5; Case map*/
+    "\u24D6",	/*24BC; 24D6; Case map*/
+    "\u24D7",	/*24BD; 24D7; Case map*/
+    "\u24D8",	/*24BE; 24D8; Case map*/
+    "\u24D9",	/*24BF; 24D9; Case map*/
+    "\u24DA",	/*24C0; 24DA; Case map*/
+    "\u24DB",	/*24C1; 24DB; Case map*/
+    "\u24DC",	/*24C2; 24DC; Case map*/
+    "\u24DD",	/*24C3; 24DD; Case map*/
+    "\u24DE",	/*24C4; 24DE; Case map*/
+    "\u24DF",	/*24C5; 24DF; Case map*/
+    "\u24E0",	/*24C6; 24E0; Case map*/
+    "\u24E1",	/*24C7; 24E1; Case map*/
+    "\u24E2",	/*24C8; 24E2; Case map*/
+    "\u24E3",	/*24C9; 24E3; Case map*/
+    "\u24E4",	/*24CA; 24E4; Case map*/
+    "\u24E5",	/*24CB; 24E5; Case map*/
+    "\u24E6",	/*24CC; 24E6; Case map*/
+    "\u24E7",	/*24CD; 24E7; Case map*/
+    "\u24E8",	/*24CE; 24E8; Case map*/
+    "\u24E9",	/*24CF; 24E9; Case map*/
+    "\u0068\u0070\u0061",	/*3371; 0068 0070 0061; Additional folding*/
+    "\u0061\u0075",	/*3373; 0061 0075; Additional folding*/
+    "\u006F\u0076",	/*3375; 006F 0076; Additional folding*/
+    "\u0070\u0061",	/*3380; 0070 0061; Additional folding*/
+    "\u006E\u0061",	/*3381; 006E 0061; Additional folding*/
+    "\u03BC\u0061",	/*3382; 03BC 0061; Additional folding*/
+    "\u006D\u0061",	/*3383; 006D 0061; Additional folding*/
+    "\u006B\u0061",	/*3384; 006B 0061; Additional folding*/
+    "\u006B\u0062",	/*3385; 006B 0062; Additional folding*/
+    "\u006D\u0062",	/*3386; 006D 0062; Additional folding*/
+    "\u0067\u0062",	/*3387; 0067 0062; Additional folding*/
+    "\u0070\u0066",	/*338A; 0070 0066; Additional folding*/
+    "\u006E\u0066",	/*338B; 006E 0066; Additional folding*/
+    "\u03BC\u0066",	/*338C; 03BC 0066; Additional folding*/
+    "\u0068\u007A",	/*3390; 0068 007A; Additional folding*/
+    "\u006B\u0068\u007A",	/*3391; 006B 0068 007A; Additional folding*/
+    "\u006D\u0068\u007A",	/*3392; 006D 0068 007A; Additional folding*/
+    "\u0067\u0068\u007A",	/*3393; 0067 0068 007A; Additional folding*/
+    "\u0074\u0068\u007A",	/*3394; 0074 0068 007A; Additional folding*/
+    "\u0070\u0061",	/*33A9; 0070 0061; Additional folding*/
+    "\u006B\u0070\u0061",	/*33AA; 006B 0070 0061; Additional folding*/
+    "\u006D\u0070\u0061",	/*33AB; 006D 0070 0061; Additional folding*/
+    "\u0067\u0070\u0061",	/*33AC; 0067 0070 0061; Additional folding*/
+    "\u0070\u0076",	/*33B4; 0070 0076; Additional folding*/
+    "\u006E\u0076",	/*33B5; 006E 0076; Additional folding*/
+    "\u03BC\u0076",	/*33B6; 03BC 0076; Additional folding*/
+    "\u006D\u0076",	/*33B7; 006D 0076; Additional folding*/
+    "\u006B\u0076",	/*33B8; 006B 0076; Additional folding*/
+    "\u006D\u0076",	/*33B9; 006D 0076; Additional folding*/
+    "\u0070\u0077",	/*33BA; 0070 0077; Additional folding*/
+    "\u006E\u0077",	/*33BB; 006E 0077; Additional folding*/
+    "\u03BC\u0077",	/*33BC; 03BC 0077; Additional folding*/
+    "\u006D\u0077",	/*33BD; 006D 0077; Additional folding*/
+    "\u006B\u0077",	/*33BE; 006B 0077; Additional folding*/
+    "\u006D\u0077",	/*33BF; 006D 0077; Additional folding*/
+    "\u006B\u03C9",	/*33C0; 006B 03C9; Additional folding*/
+    "\u006D\u03C9",	/*33C1; 006D 03C9; Additional folding*/
+    "\u0062\u0071",	/*33C3; 0062 0071; Additional folding*/
+    "\u0063\u2215\u006B\u0067",	/*33C6; 0063 2215 006B 0067; Additional folding*/
+    "\u0063\u006F\u002E",	/*33C7; 0063 006F 002E; Additional folding*/
+    "\u0064\u0062",	/*33C8; 0064 0062; Additional folding*/
+    "\u0067\u0079",	/*33C9; 0067 0079; Additional folding*/
+    "\u0068\u0070",	/*33CB; 0068 0070; Additional folding*/
+    "\u006B\u006B",	/*33CD; 006B 006B; Additional folding*/
+    "\u006B\u006D",	/*33CE; 006B 006D; Additional folding*/
+    "\u0070\u0068",	/*33D7; 0070 0068; Additional folding*/
+    "\u0070\u0070\u006D",	/*33D9; 0070 0070 006D; Additional folding*/
+    "\u0070\u0072",	/*33DA; 0070 0072; Additional folding*/
+    "\u0073\u0076",	/*33DC; 0073 0076; Additional folding*/
+    "\u0077\u0062",	/*33DD; 0077 0062; Additional folding*/
+    "\u0066\u0066",	/*FB00; 0066 0066; Case map*/
+    "\u0066\u0069",	/*FB01; 0066 0069; Case map*/
+    "\u0066\u006C",	/*FB02; 0066 006C; Case map*/
+    "\u0066\u0066\u0069",	/*FB03; 0066 0066 0069; Case map*/
+    "\u0066\u0066\u006C",	/*FB04; 0066 0066 006C; Case map*/
+    "\u0073\u0074",	/*FB05; 0073 0074; Case map*/
+    "\u0073\u0074",	/*FB06; 0073 0074; Case map*/
+    "\u0574\u0576",	/*FB13; 0574 0576; Case map*/
+    "\u0574\u0565",	/*FB14; 0574 0565; Case map*/
+    "\u0574\u056B",	/*FB15; 0574 056B; Case map*/
+    "\u057E\u0576",	/*FB16; 057E 0576; Case map*/
+    "\u0574\u056D",	/*FB17; 0574 056D; Case map*/
+    "\uFF41",	/*FF21; FF41; Case map*/
+    "\uFF42",	/*FF22; FF42; Case map*/
+    "\uFF43",	/*FF23; FF43; Case map*/
+    "\uFF44",	/*FF24; FF44; Case map*/
+    "\uFF45",	/*FF25; FF45; Case map*/
+    "\uFF46",	/*FF26; FF46; Case map*/
+    "\uFF47",	/*FF27; FF47; Case map*/
+    "\uFF48",	/*FF28; FF48; Case map*/
+    "\uFF49",	/*FF29; FF49; Case map*/
+    "\uFF4A",	/*FF2A; FF4A; Case map*/
+    "\uFF4B",	/*FF2B; FF4B; Case map*/
+    "\uFF4C",	/*FF2C; FF4C; Case map*/
+    "\uFF4D",	/*FF2D; FF4D; Case map*/
+    "\uFF4E",	/*FF2E; FF4E; Case map*/
+    "\uFF4F",	/*FF2F; FF4F; Case map*/
+    "\uFF50",	/*FF30; FF50; Case map*/
+    "\uFF51",	/*FF31; FF51; Case map*/
+    "\uFF52",	/*FF32; FF52; Case map*/
+    "\uFF53",	/*FF33; FF53; Case map*/
+    "\uFF54",	/*FF34; FF54; Case map*/
+    "\uFF55",	/*FF35; FF55; Case map*/
+    "\uFF56",	/*FF36; FF56; Case map*/
+    "\uFF57",	/*FF37; FF57; Case map*/
+    "\uFF58",	/*FF38; FF58; Case map*/
+    "\uFF59",	/*FF39; FF59; Case map*/
+    "\uFF5A",	/*FF3A; FF5A; Case map*/
+  };
+
+  public static char[] B3search = new char[] {
+    '\u0041',	/*0041; 0061; Case map*/
+    '\u0042',	/*0042; 0062; Case map*/
+    '\u0043',	/*0043; 0063; Case map*/
+    '\u0044',	/*0044; 0064; Case map*/
+    '\u0045',	/*0045; 0065; Case map*/
+    '\u0046',	/*0046; 0066; Case map*/
+    '\u0047',	/*0047; 0067; Case map*/
+    '\u0048',	/*0048; 0068; Case map*/
+    '\u0049',	/*0049; 0069; Case map*/
+    '\u004A',	/*004A; 006A; Case map*/
+    '\u004B',	/*004B; 006B; Case map*/
+    '\u004C',	/*004C; 006C; Case map*/
+    '\u004D',	/*004D; 006D; Case map*/
+    '\u004E',	/*004E; 006E; Case map*/
+    '\u004F',	/*004F; 006F; Case map*/
+    '\u0050',	/*0050; 0070; Case map*/
+    '\u0051',	/*0051; 0071; Case map*/
+    '\u0052',	/*0052; 0072; Case map*/
+    '\u0053',	/*0053; 0073; Case map*/
+    '\u0054',	/*0054; 0074; Case map*/
+    '\u0055',	/*0055; 0075; Case map*/
+    '\u0056',	/*0056; 0076; Case map*/
+    '\u0057',	/*0057; 0077; Case map*/
+    '\u0058',	/*0058; 0078; Case map*/
+    '\u0059',	/*0059; 0079; Case map*/
+    '\u005A',	/*005A; 007A; Case map*/
+    '\u00B5',	/*00B5; 03BC; Case map*/
+    '\u00C0',	/*00C0; 00E0; Case map*/
+    '\u00C1',	/*00C1; 00E1; Case map*/
+    '\u00C2',	/*00C2; 00E2; Case map*/
+    '\u00C3',	/*00C3; 00E3; Case map*/
+    '\u00C4',	/*00C4; 00E4; Case map*/
+    '\u00C5',	/*00C5; 00E5; Case map*/
+    '\u00C6',	/*00C6; 00E6; Case map*/
+    '\u00C7',	/*00C7; 00E7; Case map*/
+    '\u00C8',	/*00C8; 00E8; Case map*/
+    '\u00C9',	/*00C9; 00E9; Case map*/
+    '\u00CA',	/*00CA; 00EA; Case map*/
+    '\u00CB',	/*00CB; 00EB; Case map*/
+    '\u00CC',	/*00CC; 00EC; Case map*/
+    '\u00CD',	/*00CD; 00ED; Case map*/
+    '\u00CE',	/*00CE; 00EE; Case map*/
+    '\u00CF',	/*00CF; 00EF; Case map*/
+    '\u00D0',	/*00D0; 00F0; Case map*/
+    '\u00D1',	/*00D1; 00F1; Case map*/
+    '\u00D2',	/*00D2; 00F2; Case map*/
+    '\u00D3',	/*00D3; 00F3; Case map*/
+    '\u00D4',	/*00D4; 00F4; Case map*/
+    '\u00D5',	/*00D5; 00F5; Case map*/
+    '\u00D6',	/*00D6; 00F6; Case map*/
+    '\u00D8',	/*00D8; 00F8; Case map*/
+    '\u00D9',	/*00D9; 00F9; Case map*/
+    '\u00DA',	/*00DA; 00FA; Case map*/
+    '\u00DB',	/*00DB; 00FB; Case map*/
+    '\u00DC',	/*00DC; 00FC; Case map*/
+    '\u00DD',	/*00DD; 00FD; Case map*/
+    '\u00DE',	/*00DE; 00FE; Case map*/
+    '\u00DF',	/*00DF; 0073 0073; Case map*/
+    '\u0100',	/*0100; 0101; Case map*/
+    '\u0102',	/*0102; 0103; Case map*/
+    '\u0104',	/*0104; 0105; Case map*/
+    '\u0106',	/*0106; 0107; Case map*/
+    '\u0108',	/*0108; 0109; Case map*/
+    '\u010A',	/*010A; 010B; Case map*/
+    '\u010C',	/*010C; 010D; Case map*/
+    '\u010E',	/*010E; 010F; Case map*/
+    '\u0110',	/*0110; 0111; Case map*/
+    '\u0112',	/*0112; 0113; Case map*/
+    '\u0114',	/*0114; 0115; Case map*/
+    '\u0116',	/*0116; 0117; Case map*/
+    '\u0118',	/*0118; 0119; Case map*/
+    '\u011A',	/*011A; 011B; Case map*/
+    '\u011C',	/*011C; 011D; Case map*/
+    '\u011E',	/*011E; 011F; Case map*/
+    '\u0120',	/*0120; 0121; Case map*/
+    '\u0122',	/*0122; 0123; Case map*/
+    '\u0124',	/*0124; 0125; Case map*/
+    '\u0126',	/*0126; 0127; Case map*/
+    '\u0128',	/*0128; 0129; Case map*/
+    '\u012A',	/*012A; 012B; Case map*/
+    '\u012C',	/*012C; 012D; Case map*/
+    '\u012E',	/*012E; 012F; Case map*/
+    '\u0130',	/*0130; 0069 0307; Case map*/
+    '\u0132',	/*0132; 0133; Case map*/
+    '\u0134',	/*0134; 0135; Case map*/
+    '\u0136',	/*0136; 0137; Case map*/
+    '\u0139',	/*0139; 013A; Case map*/
+    '\u013B',	/*013B; 013C; Case map*/
+    '\u013D',	/*013D; 013E; Case map*/
+    '\u013F',	/*013F; 0140; Case map*/
+    '\u0141',	/*0141; 0142; Case map*/
+    '\u0143',	/*0143; 0144; Case map*/
+    '\u0145',	/*0145; 0146; Case map*/
+    '\u0147',	/*0147; 0148; Case map*/
+    '\u0149',	/*0149; 02BC 006E; Case map*/
+    '\u014A',	/*014A; 014B; Case map*/
+    '\u014C',	/*014C; 014D; Case map*/
+    '\u014E',	/*014E; 014F; Case map*/
+    '\u0150',	/*0150; 0151; Case map*/
+    '\u0152',	/*0152; 0153; Case map*/
+    '\u0154',	/*0154; 0155; Case map*/
+    '\u0156',	/*0156; 0157; Case map*/
+    '\u0158',	/*0158; 0159; Case map*/
+    '\u015A',	/*015A; 015B; Case map*/
+    '\u015C',	/*015C; 015D; Case map*/
+    '\u015E',	/*015E; 015F; Case map*/
+    '\u0160',	/*0160; 0161; Case map*/
+    '\u0162',	/*0162; 0163; Case map*/
+    '\u0164',	/*0164; 0165; Case map*/
+    '\u0166',	/*0166; 0167; Case map*/
+    '\u0168',	/*0168; 0169; Case map*/
+    '\u016A',	/*016A; 016B; Case map*/
+    '\u016C',	/*016C; 016D; Case map*/
+    '\u016E',	/*016E; 016F; Case map*/
+    '\u0170',	/*0170; 0171; Case map*/
+    '\u0172',	/*0172; 0173; Case map*/
+    '\u0174',	/*0174; 0175; Case map*/
+    '\u0176',	/*0176; 0177; Case map*/
+    '\u0178',	/*0178; 00FF; Case map*/
+    '\u0179',	/*0179; 017A; Case map*/
+    '\u017B',	/*017B; 017C; Case map*/
+    '\u017D',	/*017D; 017E; Case map*/
+    '\u017F',	/*017F; 0073; Case map*/
+    '\u0181',	/*0181; 0253; Case map*/
+    '\u0182',	/*0182; 0183; Case map*/
+    '\u0184',	/*0184; 0185; Case map*/
+    '\u0186',	/*0186; 0254; Case map*/
+    '\u0187',	/*0187; 0188; Case map*/
+    '\u0189',	/*0189; 0256; Case map*/
+    '\u018A',	/*018A; 0257; Case map*/
+    '\u018B',	/*018B; 018C; Case map*/
+    '\u018E',	/*018E; 01DD; Case map*/
+    '\u018F',	/*018F; 0259; Case map*/
+    '\u0190',	/*0190; 025B; Case map*/
+    '\u0191',	/*0191; 0192; Case map*/
+    '\u0193',	/*0193; 0260; Case map*/
+    '\u0194',	/*0194; 0263; Case map*/
+    '\u0196',	/*0196; 0269; Case map*/
+    '\u0197',	/*0197; 0268; Case map*/
+    '\u0198',	/*0198; 0199; Case map*/
+    '\u019C',	/*019C; 026F; Case map*/
+    '\u019D',	/*019D; 0272; Case map*/
+    '\u019F',	/*019F; 0275; Case map*/
+    '\u01A0',	/*01A0; 01A1; Case map*/
+    '\u01A2',	/*01A2; 01A3; Case map*/
+    '\u01A4',	/*01A4; 01A5; Case map*/
+    '\u01A6',	/*01A6; 0280; Case map*/
+    '\u01A7',	/*01A7; 01A8; Case map*/
+    '\u01A9',	/*01A9; 0283; Case map*/
+    '\u01AC',	/*01AC; 01AD; Case map*/
+    '\u01AE',	/*01AE; 0288; Case map*/
+    '\u01AF',	/*01AF; 01B0; Case map*/
+    '\u01B1',	/*01B1; 028A; Case map*/
+    '\u01B2',	/*01B2; 028B; Case map*/
+    '\u01B3',	/*01B3; 01B4; Case map*/
+    '\u01B5',	/*01B5; 01B6; Case map*/
+    '\u01B7',	/*01B7; 0292; Case map*/
+    '\u01B8',	/*01B8; 01B9; Case map*/
+    '\u01BC',	/*01BC; 01BD; Case map*/
+    '\u01C4',	/*01C4; 01C6; Case map*/
+    '\u01C5',	/*01C5; 01C6; Case map*/
+    '\u01C7',	/*01C7; 01C9; Case map*/
+    '\u01C8',	/*01C8; 01C9; Case map*/
+    '\u01CA',	/*01CA; 01CC; Case map*/
+    '\u01CB',	/*01CB; 01CC; Case map*/
+    '\u01CD',	/*01CD; 01CE; Case map*/
+    '\u01CF',	/*01CF; 01D0; Case map*/
+    '\u01D1',	/*01D1; 01D2; Case map*/
+    '\u01D3',	/*01D3; 01D4; Case map*/
+    '\u01D5',	/*01D5; 01D6; Case map*/
+    '\u01D7',	/*01D7; 01D8; Case map*/
+    '\u01D9',	/*01D9; 01DA; Case map*/
+    '\u01DB',	/*01DB; 01DC; Case map*/
+    '\u01DE',	/*01DE; 01DF; Case map*/
+    '\u01E0',	/*01E0; 01E1; Case map*/
+    '\u01E2',	/*01E2; 01E3; Case map*/
+    '\u01E4',	/*01E4; 01E5; Case map*/
+    '\u01E6',	/*01E6; 01E7; Case map*/
+    '\u01E8',	/*01E8; 01E9; Case map*/
+    '\u01EA',	/*01EA; 01EB; Case map*/
+    '\u01EC',	/*01EC; 01ED; Case map*/
+    '\u01EE',	/*01EE; 01EF; Case map*/
+    '\u01F0',	/*01F0; 006A 030C; Case map*/
+    '\u01F1',	/*01F1; 01F3; Case map*/
+    '\u01F2',	/*01F2; 01F3; Case map*/
+    '\u01F4',	/*01F4; 01F5; Case map*/
+    '\u01F6',	/*01F6; 0195; Case map*/
+    '\u01F7',	/*01F7; 01BF; Case map*/
+    '\u01F8',	/*01F8; 01F9; Case map*/
+    '\u01FA',	/*01FA; 01FB; Case map*/
+    '\u01FC',	/*01FC; 01FD; Case map*/
+    '\u01FE',	/*01FE; 01FF; Case map*/
+    '\u0200',	/*0200; 0201; Case map*/
+    '\u0202',	/*0202; 0203; Case map*/
+    '\u0204',	/*0204; 0205; Case map*/
+    '\u0206',	/*0206; 0207; Case map*/
+    '\u0208',	/*0208; 0209; Case map*/
+    '\u020A',	/*020A; 020B; Case map*/
+    '\u020C',	/*020C; 020D; Case map*/
+    '\u020E',	/*020E; 020F; Case map*/
+    '\u0210',	/*0210; 0211; Case map*/
+    '\u0212',	/*0212; 0213; Case map*/
+    '\u0214',	/*0214; 0215; Case map*/
+    '\u0216',	/*0216; 0217; Case map*/
+    '\u0218',	/*0218; 0219; Case map*/
+    '\u021A',	/*021A; 021B; Case map*/
+    '\u021C',	/*021C; 021D; Case map*/
+    '\u021E',	/*021E; 021F; Case map*/
+    '\u0220',	/*0220; 019E; Case map*/
+    '\u0222',	/*0222; 0223; Case map*/
+    '\u0224',	/*0224; 0225; Case map*/
+    '\u0226',	/*0226; 0227; Case map*/
+    '\u0228',	/*0228; 0229; Case map*/
+    '\u022A',	/*022A; 022B; Case map*/
+    '\u022C',	/*022C; 022D; Case map*/
+    '\u022E',	/*022E; 022F; Case map*/
+    '\u0230',	/*0230; 0231; Case map*/
+    '\u0232',	/*0232; 0233; Case map*/
+    '\u0345',	/*0345; 03B9; Case map*/
+    '\u0386',	/*0386; 03AC; Case map*/
+    '\u0388',	/*0388; 03AD; Case map*/
+    '\u0389',	/*0389; 03AE; Case map*/
+    '\u038A',	/*038A; 03AF; Case map*/
+    '\u038C',	/*038C; 03CC; Case map*/
+    '\u038E',	/*038E; 03CD; Case map*/
+    '\u038F',	/*038F; 03CE; Case map*/
+    '\u0390',	/*0390; 03B9 0308 0301; Case map*/
+    '\u0391',	/*0391; 03B1; Case map*/
+    '\u0392',	/*0392; 03B2; Case map*/
+    '\u0393',	/*0393; 03B3; Case map*/
+    '\u0394',	/*0394; 03B4; Case map*/
+    '\u0395',	/*0395; 03B5; Case map*/
+    '\u0396',	/*0396; 03B6; Case map*/
+    '\u0397',	/*0397; 03B7; Case map*/
+    '\u0398',	/*0398; 03B8; Case map*/
+    '\u0399',	/*0399; 03B9; Case map*/
+    '\u039A',	/*039A; 03BA; Case map*/
+    '\u039B',	/*039B; 03BB; Case map*/
+    '\u039C',	/*039C; 03BC; Case map*/
+    '\u039D',	/*039D; 03BD; Case map*/
+    '\u039E',	/*039E; 03BE; Case map*/
+    '\u039F',	/*039F; 03BF; Case map*/
+    '\u03A0',	/*03A0; 03C0; Case map*/
+    '\u03A1',	/*03A1; 03C1; Case map*/
+    '\u03A3',	/*03A3; 03C3; Case map*/
+    '\u03A4',	/*03A4; 03C4; Case ma