| package com.vincent.rsf.server.common.utils; | 
|   | 
| import java.io.*; | 
| import java.net.URL; | 
| import java.nio.charset.Charset; | 
| import java.nio.charset.UnsupportedCharsetException; | 
|   | 
| /** | 
|  * 文件编码检测工具, 核心代码来自 cpDetector 和 jChardet, 可以检测大多数文件的编码 | 
|  * | 
|  * @author vincent | 
|  * @since 2020-09-15 09:24:20 | 
|  */ | 
| public class JChardetFacadeUtil { | 
|   | 
|     public static String detectCodepage(URL url) { | 
|         try { | 
|             Charset ret = JChardetFacade.getInstance().detectCodepage(url); | 
|             return ret == null ? null : ret.name(); | 
|         } catch (Exception ignored) { | 
|         } | 
|         return null; | 
|     } | 
|   | 
|     /** | 
|      * 下面代码来自: https://github.com/r91987/cpdetector | 
|      */ | 
|     public static class JChardetFacade extends AbstractCodepageDetector implements nsICharsetDetectionObserver { | 
|         private static JChardetFacade instance = null; | 
|         private static nsDetector det; | 
|         private byte[] buf = new byte[4096]; | 
|         private Charset codpage = null; | 
|         private boolean m_guessing = true; | 
|         private int amountOfVerifiers = 0; | 
|   | 
|         private JChardetFacade() { | 
|             det = new nsDetector(0); | 
|             det.Init(this); | 
|             this.amountOfVerifiers = det.getProbableCharsets().length; | 
|         } | 
|   | 
|         public static JChardetFacade getInstance() { | 
|             if (instance == null) { | 
|                 instance = new JChardetFacade(); | 
|             } | 
|   | 
|             return instance; | 
|         } | 
|   | 
|         public synchronized Charset detectCodepage(InputStream in, int length) throws IOException { | 
|             this.Reset(); | 
|             int read = 0; | 
|             boolean done = false; | 
|             boolean isAscii = true; | 
|             Charset ret = null; | 
|   | 
|             int len; | 
|             do { | 
|                 len = in.read(this.buf, 0, Math.min(this.buf.length, length - read)); | 
|                 if (len > 0) { | 
|                     read += len; | 
|                 } | 
|   | 
|                 if (!done) { | 
|                     done = det.DoIt(this.buf, len, false); | 
|                 } | 
|             } while (len > 0 && !done); | 
|   | 
|             det.DataEnd(); | 
|             if (this.codpage == null) { | 
|                 if (this.m_guessing) { | 
|                     ret = this.guess(); | 
|                 } | 
|             } else { | 
|                 ret = this.codpage; | 
|             } | 
|             return ret; | 
|         } | 
|   | 
|         private Charset guess() { | 
|             Charset ret = null; | 
|             String[] possibilities = det.getProbableCharsets(); | 
|             if (possibilities.length == this.amountOfVerifiers) { | 
|                 ret = Charset.forName("US-ASCII"); | 
|             } else { | 
|                 String check = possibilities[0]; | 
|                 if (!check.equalsIgnoreCase("nomatch")) { | 
|                     for (int i = 0; ret == null && i < possibilities.length; ++i) { | 
|                         try { | 
|                             ret = Charset.forName(possibilities[i]); | 
|                         } catch (UnsupportedCharsetException ignored) { | 
|                         } | 
|                     } | 
|                 } | 
|             } | 
|             return ret; | 
|         } | 
|   | 
|         public void Notify(String charset) { | 
|             this.codpage = Charset.forName(charset); | 
|         } | 
|   | 
|         public void Reset() { | 
|             det.Reset(); | 
|             this.codpage = null; | 
|         } | 
|   | 
|         public boolean isGuessing() { | 
|             return this.m_guessing; | 
|         } | 
|   | 
|         public synchronized void setGuessing(boolean guessing) { | 
|             this.m_guessing = guessing; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static abstract class AbstractCodepageDetector implements ICodepageDetector { | 
|         public AbstractCodepageDetector() { | 
|         } | 
|   | 
|         public Charset detectCodepage(URL url) throws IOException { | 
|             BufferedInputStream in = new BufferedInputStream(url.openStream()); | 
|             Charset result = this.detectCodepage(in, 2147483647); | 
|             in.close(); | 
|             return result; | 
|         } | 
|   | 
|         public final Reader open(URL url) throws IOException { | 
|             Reader ret = null; | 
|             Charset cs = this.detectCodepage(url); | 
|             if (cs != null) { | 
|                 ret = new InputStreamReader(new BufferedInputStream(url.openStream()), cs); | 
|             } | 
|   | 
|             return ret; | 
|         } | 
|   | 
|         public int compareTo(Object o) { | 
|             String other = o.getClass().getName(); | 
|             String mine = this.getClass().getName(); | 
|             return mine.compareTo(other); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     interface ICodepageDetector extends Serializable, Comparable { | 
|         Reader open(URL var1) throws IOException; | 
|   | 
|         Charset detectCodepage(URL var1) throws IOException; | 
|   | 
|         Charset detectCodepage(InputStream var1, int var2) throws IOException; | 
|     } | 
|   | 
|     /** | 
|      * 以下代码开始是由Mozilla组织提供的JChardet, 它可以检测大多数文件的编码 | 
|      * http://jchardet.sourceforge.net/ | 
|      */ | 
|     public static class nsDetector extends nsPSMDetector implements nsICharsetDetector { | 
|         nsICharsetDetectionObserver mObserver = null; | 
|   | 
|         public nsDetector() { | 
|         } | 
|   | 
|         public nsDetector(int var1) { | 
|             super(var1); | 
|         } | 
|   | 
|         public void Init(nsICharsetDetectionObserver var1) { | 
|             this.mObserver = var1; | 
|         } | 
|   | 
|         public boolean DoIt(byte[] var1, int var2, boolean var3) { | 
|             if (var1 != null && !var3) { | 
|                 this.HandleData(var1, var2); | 
|                 return this.mDone; | 
|             } else { | 
|                 return false; | 
|             } | 
|         } | 
|   | 
|         public void Done() { | 
|             this.DataEnd(); | 
|         } | 
|   | 
|         public void Report(String var1) { | 
|             if (this.mObserver != null) { | 
|                 this.mObserver.Notify(var1); | 
|             } | 
|   | 
|         } | 
|   | 
|         public boolean isAscii(byte[] var1, int var2) { | 
|             for (int var3 = 0; var3 < var2; ++var3) { | 
|                 if ((128 & var1[var3]) != 0) { | 
|                     return false; | 
|                 } | 
|             } | 
|   | 
|             return true; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static abstract class nsPSMDetector { | 
|         public static final int ALL = 0; | 
|         public static final int JAPANESE = 1; | 
|         public static final int CHINESE = 2; | 
|         public static final int SIMPLIFIED_CHINESE = 3; | 
|         public static final int TRADITIONAL_CHINESE = 4; | 
|         public static final int KOREAN = 5; | 
|         public static final int NO_OF_LANGUAGES = 6; | 
|         public static final int MAX_VERIFIERS = 16; | 
|         nsVerifier[] mVerifier; | 
|         nsEUCStatistics[] mStatisticsData; | 
|         nsEUCSampler mSampler = new nsEUCSampler(); | 
|         byte[] mState = new byte[16]; | 
|         int[] mItemIdx = new int[16]; | 
|         int mItems; | 
|         int mClassItems; | 
|         boolean mDone; | 
|         boolean mRunSampler; | 
|         boolean mClassRunSampler; | 
|   | 
|         public nsPSMDetector() { | 
|             this.initVerifiers(0); | 
|             this.Reset(); | 
|         } | 
|   | 
|         public nsPSMDetector(int var1) { | 
|             this.initVerifiers(var1); | 
|             this.Reset(); | 
|         } | 
|   | 
|         public nsPSMDetector(int var1, nsVerifier[] var2, nsEUCStatistics[] var3) { | 
|             this.mClassRunSampler = var3 != null; | 
|             this.mStatisticsData = var3; | 
|             this.mVerifier = var2; | 
|             this.mClassItems = var1; | 
|             this.Reset(); | 
|         } | 
|   | 
|         public void Reset() { | 
|             this.mRunSampler = this.mClassRunSampler; | 
|             this.mDone = false; | 
|             this.mItems = this.mClassItems; | 
|   | 
|             for (int var1 = 0; var1 < this.mItems; this.mItemIdx[var1] = var1++) { | 
|                 this.mState[var1] = 0; | 
|             } | 
|   | 
|             this.mSampler.Reset(); | 
|         } | 
|   | 
|         protected void initVerifiers(int var1) { | 
|             boolean var2 = false; | 
|             int var3; | 
|             if (var1 >= 0 && var1 < 6) { | 
|                 var3 = var1; | 
|             } else { | 
|                 var3 = 0; | 
|             } | 
|   | 
|             this.mVerifier = null; | 
|             this.mStatisticsData = null; | 
|             if (var3 == 4) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|                 this.mStatisticsData = new nsEUCStatistics[]{null, new Big5Statistics(), null, new EUCTWStatistics(), null, null, null}; | 
|             } else if (var3 == 5) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|             } else if (var3 == 3) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|             } else if (var3 == 1) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|             } else if (var3 == 2) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsBIG5Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsEUCTWVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|                 this.mStatisticsData = new nsEUCStatistics[]{null, new GB2312Statistics(), null, new Big5Statistics(), null, null, new EUCTWStatistics(), null, null, null}; | 
|             } else if (var3 == 0) { | 
|                 this.mVerifier = new nsVerifier[]{new nsUTF8Verifier(), new nsSJISVerifier(), new nsEUCJPVerifier(), new nsISO2022JPVerifier(), new nsEUCKRVerifier(), new nsISO2022KRVerifier(), new nsBIG5Verifier(), new nsEUCTWVerifier(), new nsGB2312Verifier(), new nsGB18030Verifier(), new nsISO2022CNVerifier(), new nsHZVerifier(), new nsCP1252Verifier(), new nsUCS2BEVerifier(), new nsUCS2LEVerifier()}; | 
|                 this.mStatisticsData = new nsEUCStatistics[]{null, null, new EUCJPStatistics(), null, new EUCKRStatistics(), null, new Big5Statistics(), new EUCTWStatistics(), new GB2312Statistics(), null, null, null, null, null, null}; | 
|             } | 
|   | 
|             this.mClassRunSampler = this.mStatisticsData != null; | 
|             this.mClassItems = this.mVerifier.length; | 
|         } | 
|   | 
|         public abstract void Report(String var1); | 
|   | 
|         public boolean HandleData(byte[] var1, int var2) { | 
|             for (int var3 = 0; var3 < var2; ++var3) { | 
|                 byte var5 = var1[var3]; | 
|                 int var4 = 0; | 
|   | 
|                 while (var4 < this.mItems) { | 
|                     byte var6 = nsVerifier.getNextState(this.mVerifier[this.mItemIdx[var4]], var5, this.mState[var4]); | 
|                     if (var6 == 2) { | 
|                         this.Report(this.mVerifier[this.mItemIdx[var4]].charset()); | 
|                         this.mDone = true; | 
|                         return this.mDone; | 
|                     } | 
|   | 
|                     if (var6 == 1) { | 
|                         --this.mItems; | 
|                         if (var4 < this.mItems) { | 
|                             this.mItemIdx[var4] = this.mItemIdx[this.mItems]; | 
|                             this.mState[var4] = this.mState[this.mItems]; | 
|                         } | 
|                     } else { | 
|                         this.mState[var4++] = var6; | 
|                     } | 
|                 } | 
|   | 
|                 if (this.mItems <= 1) { | 
|                     if (1 == this.mItems) { | 
|                         this.Report(this.mVerifier[this.mItemIdx[0]].charset()); | 
|                     } | 
|   | 
|                     this.mDone = true; | 
|                     return this.mDone; | 
|                 } | 
|   | 
|                 int var7 = 0; | 
|                 int var8 = 0; | 
|   | 
|                 for (var4 = 0; var4 < this.mItems; ++var4) { | 
|                     if (!this.mVerifier[this.mItemIdx[var4]].isUCS2() && !this.mVerifier[this.mItemIdx[var4]].isUCS2()) { | 
|                         ++var7; | 
|                         var8 = var4; | 
|                     } | 
|                 } | 
|   | 
|                 if (1 == var7) { | 
|                     this.Report(this.mVerifier[this.mItemIdx[var8]].charset()); | 
|                     this.mDone = true; | 
|                     return this.mDone; | 
|                 } | 
|             } | 
|   | 
|             if (this.mRunSampler) { | 
|                 this.Sample(var1, var2); | 
|             } | 
|   | 
|             return this.mDone; | 
|         } | 
|   | 
|         public void DataEnd() { | 
|             if (!this.mDone) { | 
|                 if (this.mItems == 2) { | 
|                     if (this.mVerifier[this.mItemIdx[0]].charset().equals("GB18030")) { | 
|                         this.Report(this.mVerifier[this.mItemIdx[1]].charset()); | 
|                         this.mDone = true; | 
|                     } else if (this.mVerifier[this.mItemIdx[1]].charset().equals("GB18030")) { | 
|                         this.Report(this.mVerifier[this.mItemIdx[0]].charset()); | 
|                         this.mDone = true; | 
|                     } | 
|                 } | 
|   | 
|                 if (this.mRunSampler) { | 
|                     this.Sample((byte[]) null, 0, true); | 
|                 } | 
|   | 
|             } | 
|         } | 
|   | 
|         public void Sample(byte[] var1, int var2) { | 
|             this.Sample(var1, var2, false); | 
|         } | 
|   | 
|         public void Sample(byte[] var1, int var2, boolean var3) { | 
|             int var4 = 0; | 
|             int var6 = 0; | 
|   | 
|             int var5; | 
|             for (var5 = 0; var5 < this.mItems; ++var5) { | 
|                 if (null != this.mStatisticsData[this.mItemIdx[var5]]) { | 
|                     ++var6; | 
|                 } | 
|   | 
|                 if (!this.mVerifier[this.mItemIdx[var5]].isUCS2() && !this.mVerifier[this.mItemIdx[var5]].charset().equals("GB18030")) { | 
|                     ++var4; | 
|                 } | 
|             } | 
|   | 
|             this.mRunSampler = var6 > 1; | 
|             if (this.mRunSampler) { | 
|                 this.mRunSampler = this.mSampler.Sample(var1, var2); | 
|                 if ((var3 && this.mSampler.GetSomeData() || this.mSampler.EnoughData()) && var6 == var4) { | 
|                     this.mSampler.CalFreq(); | 
|                     int var7 = -1; | 
|                     int var8 = 0; | 
|                     float var9 = 0.0F; | 
|   | 
|                     for (var5 = 0; var5 < this.mItems; ++var5) { | 
|                         if (null != this.mStatisticsData[this.mItemIdx[var5]] && !this.mVerifier[this.mItemIdx[var5]].charset().equals("Big5")) { | 
|                             float var10 = this.mSampler.GetScore(this.mStatisticsData[this.mItemIdx[var5]].mFirstByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mFirstByteWeight(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteFreq(), this.mStatisticsData[this.mItemIdx[var5]].mSecondByteWeight()); | 
|                             if (0 == var8++ || var9 > var10) { | 
|                                 var9 = var10; | 
|                                 var7 = var5; | 
|                             } | 
|                         } | 
|                     } | 
|   | 
|                     if (var7 >= 0) { | 
|                         this.Report(this.mVerifier[this.mItemIdx[var7]].charset()); | 
|                         this.mDone = true; | 
|                     } | 
|                 } | 
|             } | 
|   | 
|         } | 
|   | 
|         public String[] getProbableCharsets() { | 
|             String[] var1; | 
|             if (this.mItems <= 0) { | 
|                 var1 = new String[]{"nomatch"}; | 
|                 return var1; | 
|             } else { | 
|                 var1 = new String[this.mItems]; | 
|   | 
|                 for (int var2 = 0; var2 < this.mItems; ++var2) { | 
|                     var1[var2] = this.mVerifier[this.mItemIdx[var2]].charset(); | 
|                 } | 
|   | 
|                 return var1; | 
|             } | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static interface nsICharsetDetectionObserver { | 
|         void Notify(String var1); | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static interface nsICharsetDetector { | 
|         void Init(nsICharsetDetectionObserver var1); | 
|   | 
|         boolean DoIt(byte[] var1, int var2, boolean var3); | 
|   | 
|         void Done(); | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static abstract class nsVerifier { | 
|         static final byte eStart = 0; | 
|         static final byte eError = 1; | 
|         static final byte eItsMe = 2; | 
|         static final int eidxSft4bits = 3; | 
|         static final int eSftMsk4bits = 7; | 
|         static final int eBitSft4bits = 2; | 
|         static final int eUnitMsk4bits = 15; | 
|   | 
|         nsVerifier() { | 
|         } | 
|   | 
|         public abstract String charset(); | 
|   | 
|         public abstract int stFactor(); | 
|   | 
|         public abstract int[] cclass(); | 
|   | 
|         public abstract int[] states(); | 
|   | 
|         public abstract boolean isUCS2(); | 
|   | 
|         public static byte getNextState(nsVerifier var0, byte var1, byte var2) { | 
|             return (byte) (255 & var0.states()[(var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255) >> 3] >> ((var2 * var0.stFactor() + (var0.cclass()[(var1 & 255) >> 3] >> ((var1 & 7) << 2) & 15) & 255 & 7) << 2) & 15); | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsEUCSampler { | 
|         int mTotal = 0; | 
|         int mThreshold = 200; | 
|         int mState = 0; | 
|         public int[] mFirstByteCnt = new int[94]; | 
|         public int[] mSecondByteCnt = new int[94]; | 
|         public float[] mFirstByteFreq = new float[94]; | 
|         public float[] mSecondByteFreq = new float[94]; | 
|   | 
|         public nsEUCSampler() { | 
|             this.Reset(); | 
|         } | 
|   | 
|         public void Reset() { | 
|             this.mTotal = 0; | 
|             this.mState = 0; | 
|   | 
|             for (int var1 = 0; var1 < 94; ++var1) { | 
|                 this.mFirstByteCnt[var1] = this.mSecondByteCnt[var1] = 0; | 
|             } | 
|   | 
|         } | 
|   | 
|         boolean EnoughData() { | 
|             return this.mTotal > this.mThreshold; | 
|         } | 
|   | 
|         boolean GetSomeData() { | 
|             return this.mTotal > 1; | 
|         } | 
|   | 
|         boolean Sample(byte[] var1, int var2) { | 
|             if (this.mState == 1) { | 
|                 return false; | 
|             } else { | 
|                 int var3 = 0; | 
|   | 
|                 for (int var4 = 0; var4 < var2 && 1 != this.mState; ++var3) { | 
|                     int var10002; | 
|                     switch (this.mState) { | 
|                         case 0: | 
|                             if ((var1[var3] & 128) != 0) { | 
|                                 if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { | 
|                                     ++this.mTotal; | 
|                                     var10002 = this.mFirstByteCnt[(255 & var1[var3]) - 161]++; | 
|                                     this.mState = 2; | 
|                                 } else { | 
|                                     this.mState = 1; | 
|                                 } | 
|                             } | 
|                         case 1: | 
|                             break; | 
|                         case 2: | 
|                             if ((var1[var3] & 128) != 0) { | 
|                                 if (255 != (255 & var1[var3]) && 161 <= (255 & var1[var3])) { | 
|                                     ++this.mTotal; | 
|                                     var10002 = this.mSecondByteCnt[(255 & var1[var3]) - 161]++; | 
|                                     this.mState = 0; | 
|                                 } else { | 
|                                     this.mState = 1; | 
|                                 } | 
|                             } else { | 
|                                 this.mState = 1; | 
|                             } | 
|                             break; | 
|                         default: | 
|                             this.mState = 1; | 
|                     } | 
|   | 
|                     ++var4; | 
|                 } | 
|   | 
|                 return 1 != this.mState; | 
|             } | 
|         } | 
|   | 
|         void CalFreq() { | 
|             for (int var1 = 0; var1 < 94; ++var1) { | 
|                 this.mFirstByteFreq[var1] = (float) this.mFirstByteCnt[var1] / (float) this.mTotal; | 
|                 this.mSecondByteFreq[var1] = (float) this.mSecondByteCnt[var1] / (float) this.mTotal; | 
|             } | 
|   | 
|         } | 
|   | 
|         float GetScore(float[] var1, float var2, float[] var3, float var4) { | 
|             return var2 * this.GetScore(var1, this.mFirstByteFreq) + var4 * this.GetScore(var3, this.mSecondByteFreq); | 
|         } | 
|   | 
|         float GetScore(float[] var1, float[] var2) { | 
|             float var4 = 0.0F; | 
|   | 
|             for (int var5 = 0; var5 < 94; ++var5) { | 
|                 float var3 = var1[var5] - var2[var5]; | 
|                 var4 += var3 * var3; | 
|             } | 
|   | 
|             return (float) Math.sqrt((double) var4) / 94.0F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static abstract class nsEUCStatistics { | 
|         public abstract float[] mFirstByteFreq(); | 
|   | 
|         public abstract float mFirstByteStdDev(); | 
|   | 
|         public abstract float mFirstByteMean(); | 
|   | 
|         public abstract float mFirstByteWeight(); | 
|   | 
|         public abstract float[] mSecondByteFreq(); | 
|   | 
|         public abstract float mSecondByteStdDev(); | 
|   | 
|         public abstract float mSecondByteMean(); | 
|   | 
|         public abstract float mSecondByteWeight(); | 
|   | 
|         public nsEUCStatistics() { | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class EUCJPStatistics extends nsEUCStatistics { | 
|         static float[] mFirstByteFreq; | 
|         static float mFirstByteStdDev; | 
|         static float mFirstByteMean; | 
|         static float mFirstByteWeight; | 
|         static float[] mSecondByteFreq; | 
|         static float mSecondByteStdDev; | 
|         static float mSecondByteMean; | 
|         static float mSecondByteWeight; | 
|   | 
|         public float[] mFirstByteFreq() { | 
|             return mFirstByteFreq; | 
|         } | 
|   | 
|         public float mFirstByteStdDev() { | 
|             return mFirstByteStdDev; | 
|         } | 
|   | 
|         public float mFirstByteMean() { | 
|             return mFirstByteMean; | 
|         } | 
|   | 
|         public float mFirstByteWeight() { | 
|             return mFirstByteWeight; | 
|         } | 
|   | 
|         public float[] mSecondByteFreq() { | 
|             return mSecondByteFreq; | 
|         } | 
|   | 
|         public float mSecondByteStdDev() { | 
|             return mSecondByteStdDev; | 
|         } | 
|   | 
|         public float mSecondByteMean() { | 
|             return mSecondByteMean; | 
|         } | 
|   | 
|         public float mSecondByteWeight() { | 
|             return mSecondByteWeight; | 
|         } | 
|   | 
|         public EUCJPStatistics() { | 
|             mFirstByteFreq = new float[]{0.364808F, 0.0F, 0.0F, 0.145325F, 0.304891F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.001835F, 0.010771F, 0.006462F, 0.001157F, 0.002114F, 0.003231F, 0.001356F, 0.00742F, 0.004189F, 0.003231F, 0.003032F, 0.03319F, 0.006303F, 0.006064F, 0.009973F, 0.002354F, 0.00367F, 0.009135F, 0.001675F, 0.002792F, 0.002194F, 0.01472F, 0.011928F, 8.78E-4F, 0.013124F, 0.001077F, 0.009295F, 0.003471F, 0.002872F, 0.002433F, 9.57E-4F, 0.001636F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 2.79E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 8.0E-5F, 0.0F}; | 
|             mFirstByteStdDev = 0.050407F; | 
|             mFirstByteMean = 0.010638F; | 
|             mFirstByteWeight = 0.640871F; | 
|             mSecondByteFreq = new float[]{0.002473F, 0.039134F, 0.152745F, 0.009694F, 3.59E-4F, 0.02218F, 7.58E-4F, 0.004308F, 1.6E-4F, 0.002513F, 0.003072F, 0.001316F, 0.00383F, 0.001037F, 0.00359F, 9.57E-4F, 1.6E-4F, 2.39E-4F, 0.006462F, 0.001596F, 0.031554F, 0.001316F, 0.002194F, 0.016555F, 0.003271F, 6.78E-4F, 5.98E-4F, 0.206438F, 7.18E-4F, 0.001077F, 0.00371F, 0.001356F, 0.001356F, 4.39E-4F, 0.004388F, 0.005704F, 8.78E-4F, 0.010172F, 0.007061F, 0.01468F, 6.38E-4F, 0.02573F, 0.002792F, 7.18E-4F, 0.001795F, 0.091551F, 7.58E-4F, 0.003909F, 5.58E-4F, 0.031195F, 0.007061F, 0.001316F, 0.022579F, 0.006981F, 0.00726F, 0.001117F, 2.39E-4F, 0.012127F, 8.78E-4F, 0.00379F, 0.001077F, 7.58E-4F, 0.002114F, 0.002234F, 6.78E-4F, 0.002992F, 0.003311F, 0.023416F, 0.001237F, 0.002753F, 0.005146F, 0.002194F, 0.007021F, 0.008497F, 0.013763F, 0.011768F, 0.006303F, 0.001915F, 6.38E-4F, 0.008776F, 9.18E-4F, 0.003431F, 0.057603F, 4.39E-4F, 4.39E-4F, 7.58E-4F, 0.002872F, 0.001675F, 0.01105F, 0.0F, 2.79E-4F, 0.012127F, 7.18E-4F, 0.00738F}; | 
|             mSecondByteStdDev = 0.028247F; | 
|             mSecondByteMean = 0.010638F; | 
|             mSecondByteWeight = 0.359129F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsEUCJPVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsEUCJPVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 1145324612; | 
|             cclass[1] = 1430537284; | 
|             cclass[2] = 1145324612; | 
|             cclass[3] = 1145328708; | 
|             cclass[4] = 1145324612; | 
|             cclass[5] = 1145324612; | 
|             cclass[6] = 1145324612; | 
|             cclass[7] = 1145324612; | 
|             cclass[8] = 1145324612; | 
|             cclass[9] = 1145324612; | 
|             cclass[10] = 1145324612; | 
|             cclass[11] = 1145324612; | 
|             cclass[12] = 1145324612; | 
|             cclass[13] = 1145324612; | 
|             cclass[14] = 1145324612; | 
|             cclass[15] = 1145324612; | 
|             cclass[16] = 1431655765; | 
|             cclass[17] = 827675989; | 
|             cclass[18] = 1431655765; | 
|             cclass[19] = 1431655765; | 
|             cclass[20] = 572662309; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 0; | 
|             cclass[29] = 0; | 
|             cclass[30] = 0; | 
|             cclass[31] = 1342177280; | 
|             states = new int[5]; | 
|             states[0] = 286282563; | 
|             states[1] = 572657937; | 
|             states[2] = 286265378; | 
|             states[3] = 319885329; | 
|             states[4] = 4371; | 
|             charset = "EUC-JP"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class EUCKRStatistics extends nsEUCStatistics { | 
|         static float[] mFirstByteFreq; | 
|         static float mFirstByteStdDev; | 
|         static float mFirstByteMean; | 
|         static float mFirstByteWeight; | 
|         static float[] mSecondByteFreq; | 
|         static float mSecondByteStdDev; | 
|         static float mSecondByteMean; | 
|         static float mSecondByteWeight; | 
|   | 
|         public float[] mFirstByteFreq() { | 
|             return mFirstByteFreq; | 
|         } | 
|   | 
|         public float mFirstByteStdDev() { | 
|             return mFirstByteStdDev; | 
|         } | 
|   | 
|         public float mFirstByteMean() { | 
|             return mFirstByteMean; | 
|         } | 
|   | 
|         public float mFirstByteWeight() { | 
|             return mFirstByteWeight; | 
|         } | 
|   | 
|         public float[] mSecondByteFreq() { | 
|             return mSecondByteFreq; | 
|         } | 
|   | 
|         public float mSecondByteStdDev() { | 
|             return mSecondByteStdDev; | 
|         } | 
|   | 
|         public float mSecondByteMean() { | 
|             return mSecondByteMean; | 
|         } | 
|   | 
|         public float mSecondByteWeight() { | 
|             return mSecondByteWeight; | 
|         } | 
|   | 
|         public EUCKRStatistics() { | 
|             mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 4.12E-4F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.057502F, 0.033182F, 0.002267F, 0.016076F, 0.014633F, 0.032976F, 0.004122F, 0.011336F, 0.058533F, 0.024526F, 0.025969F, 0.054411F, 0.01958F, 0.063273F, 0.113974F, 0.029885F, 0.150041F, 0.059151F, 0.002679F, 0.009893F, 0.014839F, 0.026381F, 0.015045F, 0.069456F, 0.08986F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; | 
|             mFirstByteStdDev = 0.025593F; | 
|             mFirstByteMean = 0.010638F; | 
|             mFirstByteWeight = 0.647437F; | 
|             mSecondByteFreq = new float[]{0.016694F, 0.0F, 0.012778F, 0.030091F, 0.002679F, 0.006595F, 0.001855F, 8.24E-4F, 0.005977F, 0.00474F, 0.003092F, 8.24E-4F, 0.01958F, 0.037304F, 0.008244F, 0.014633F, 0.001031F, 0.0F, 0.003298F, 0.002061F, 0.006183F, 0.005977F, 8.24E-4F, 0.021847F, 0.014839F, 0.052968F, 0.017312F, 0.007626F, 4.12E-4F, 8.24E-4F, 0.011129F, 0.0F, 4.12E-4F, 0.001649F, 0.005977F, 0.065746F, 0.020198F, 0.021434F, 0.014633F, 0.004122F, 0.001649F, 8.24E-4F, 8.24E-4F, 0.051937F, 0.01958F, 0.023289F, 0.026381F, 0.040396F, 0.009068F, 0.001443F, 0.00371F, 0.00742F, 0.001443F, 0.01319F, 0.002885F, 4.12E-4F, 0.003298F, 0.025969F, 4.12E-4F, 4.12E-4F, 0.006183F, 0.003298F, 0.066983F, 0.002679F, 0.002267F, 0.011129F, 4.12E-4F, 0.010099F, 0.015251F, 0.007626F, 0.043899F, 0.00371F, 0.002679F, 0.001443F, 0.010923F, 0.002885F, 0.009068F, 0.019992F, 4.12E-4F, 0.00845F, 0.005153F, 0.0F, 0.010099F, 0.0F, 0.001649F, 0.01216F, 0.011542F, 0.006595F, 0.001855F, 0.010923F, 4.12E-4F, 0.023702F, 0.00371F, 0.001855F}; | 
|             mSecondByteStdDev = 0.013937F; | 
|             mSecondByteMean = 0.010638F; | 
|             mSecondByteWeight = 0.352563F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsEUCKRVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsEUCKRVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331153; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 286331153; | 
|             cclass[7] = 286331153; | 
|             cclass[8] = 286331153; | 
|             cclass[9] = 286331153; | 
|             cclass[10] = 286331153; | 
|             cclass[11] = 286331153; | 
|             cclass[12] = 286331153; | 
|             cclass[13] = 286331153; | 
|             cclass[14] = 286331153; | 
|             cclass[15] = 286331153; | 
|             cclass[16] = 0; | 
|             cclass[17] = 0; | 
|             cclass[18] = 0; | 
|             cclass[19] = 0; | 
|             cclass[20] = 572662304; | 
|             cclass[21] = 858923554; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662322; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 572662306; | 
|             cclass[29] = 572662306; | 
|             cclass[30] = 572662306; | 
|             cclass[31] = 35791394; | 
|             states = new int[2]; | 
|             states[0] = 286331649; | 
|             states[1] = 1122850; | 
|             charset = "EUC-KR"; | 
|             stFactor = 4; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class EUCTWStatistics extends nsEUCStatistics { | 
|         static float[] mFirstByteFreq; | 
|         static float mFirstByteStdDev; | 
|         static float mFirstByteMean; | 
|         static float mFirstByteWeight; | 
|         static float[] mSecondByteFreq; | 
|         static float mSecondByteStdDev; | 
|         static float mSecondByteMean; | 
|         static float mSecondByteWeight; | 
|   | 
|         public float[] mFirstByteFreq() { | 
|             return mFirstByteFreq; | 
|         } | 
|   | 
|         public float mFirstByteStdDev() { | 
|             return mFirstByteStdDev; | 
|         } | 
|   | 
|         public float mFirstByteMean() { | 
|             return mFirstByteMean; | 
|         } | 
|   | 
|         public float mFirstByteWeight() { | 
|             return mFirstByteWeight; | 
|         } | 
|   | 
|         public float[] mSecondByteFreq() { | 
|             return mSecondByteFreq; | 
|         } | 
|   | 
|         public float mSecondByteStdDev() { | 
|             return mSecondByteStdDev; | 
|         } | 
|   | 
|         public float mSecondByteMean() { | 
|             return mSecondByteMean; | 
|         } | 
|   | 
|         public float mSecondByteWeight() { | 
|             return mSecondByteWeight; | 
|         } | 
|   | 
|         public EUCTWStatistics() { | 
|             mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.119286F, 0.052233F, 0.044126F, 0.052494F, 0.045906F, 0.019038F, 0.032465F, 0.026252F, 0.025502F, 0.015963F, 0.052493F, 0.019256F, 0.015137F, 0.031782F, 0.01737F, 0.018494F, 0.015575F, 0.016621F, 0.007444F, 0.011642F, 0.013916F, 0.019159F, 0.016445F, 0.007851F, 0.011079F, 0.022842F, 0.015513F, 0.010033F, 0.00995F, 0.010347F, 0.013103F, 0.015371F, 0.012502F, 0.007436F, 0.018253F, 0.014134F, 0.008907F, 0.005411F, 0.00957F, 0.013598F, 0.006092F, 0.007409F, 0.008432F, 0.005816F, 0.009349F, 0.005472F, 0.00717F, 0.00742F, 0.003681F, 0.007523F, 0.00461F, 0.006154F, 0.003348F, 0.005074F, 0.005922F, 0.005254F, 0.004682F, 0.002093F, 0.0F}; | 
|             mFirstByteStdDev = 0.016681F; | 
|             mFirstByteMean = 0.010638F; | 
|             mFirstByteWeight = 0.715599F; | 
|             mSecondByteFreq = new float[]{0.028933F, 0.011371F, 0.011053F, 0.007232F, 0.010192F, 0.004093F, 0.015043F, 0.011752F, 0.022387F, 0.00841F, 0.012448F, 0.007473F, 0.003594F, 0.007139F, 0.018912F, 0.006083F, 0.003302F, 0.010215F, 0.008791F, 0.024236F, 0.014107F, 0.014108F, 0.010303F, 0.009728F, 0.007877F, 0.009719F, 0.007952F, 0.021028F, 0.005764F, 0.009341F, 0.006591F, 0.012517F, 0.005921F, 0.008982F, 0.008771F, 0.012802F, 0.005926F, 0.008342F, 0.003086F, 0.006843F, 0.007576F, 0.004734F, 0.016404F, 0.008803F, 0.008071F, 0.005349F, 0.008566F, 0.01084F, 0.015401F, 0.031904F, 0.00867F, 0.011479F, 0.010936F, 0.007617F, 0.008995F, 0.008114F, 0.008658F, 0.005934F, 0.010452F, 0.009142F, 0.004519F, 0.008339F, 0.007476F, 0.007027F, 0.006025F, 0.021804F, 0.024248F, 0.015895F, 0.003768F, 0.010171F, 0.010007F, 0.010178F, 0.008316F, 0.006832F, 0.006364F, 0.009141F, 0.009148F, 0.012081F, 0.011914F, 0.004464F, 0.014257F, 0.006907F, 0.011292F, 0.018622F, 0.008149F, 0.004636F, 0.006612F, 0.013478F, 0.012614F, 0.005186F, 0.048285F, 0.006816F, 0.006743F, 0.008671F}; | 
|             mSecondByteStdDev = 0.00663F; | 
|             mSecondByteMean = 0.010638F; | 
|             mSecondByteWeight = 0.284401F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsEUCTWVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsEUCTWVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 572662306; | 
|             cclass[1] = 2236962; | 
|             cclass[2] = 572662306; | 
|             cclass[3] = 572654114; | 
|             cclass[4] = 572662306; | 
|             cclass[5] = 572662306; | 
|             cclass[6] = 572662306; | 
|             cclass[7] = 572662306; | 
|             cclass[8] = 572662306; | 
|             cclass[9] = 572662306; | 
|             cclass[10] = 572662306; | 
|             cclass[11] = 572662306; | 
|             cclass[12] = 572662306; | 
|             cclass[13] = 572662306; | 
|             cclass[14] = 572662306; | 
|             cclass[15] = 572662306; | 
|             cclass[16] = 0; | 
|             cclass[17] = 100663296; | 
|             cclass[18] = 0; | 
|             cclass[19] = 0; | 
|             cclass[20] = 1145324592; | 
|             cclass[21] = 286331221; | 
|             cclass[22] = 286331153; | 
|             cclass[23] = 286331153; | 
|             cclass[24] = 858985233; | 
|             cclass[25] = 858993459; | 
|             cclass[26] = 858993459; | 
|             cclass[27] = 858993459; | 
|             cclass[28] = 858993459; | 
|             cclass[29] = 858993459; | 
|             cclass[30] = 858993459; | 
|             cclass[31] = 53687091; | 
|             states = new int[6]; | 
|             states[0] = 338898961; | 
|             states[1] = 571543825; | 
|             states[2] = 269623842; | 
|             states[3] = 286330880; | 
|             states[4] = 1052949; | 
|             states[5] = 16; | 
|             charset = "x-euc-tw"; | 
|             stFactor = 7; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class Big5Statistics extends nsEUCStatistics { | 
|         static float[] mFirstByteFreq; | 
|         static float mFirstByteStdDev; | 
|         static float mFirstByteMean; | 
|         static float mFirstByteWeight; | 
|         static float[] mSecondByteFreq; | 
|         static float mSecondByteStdDev; | 
|         static float mSecondByteMean; | 
|         static float mSecondByteWeight; | 
|   | 
|         public float[] mFirstByteFreq() { | 
|             return mFirstByteFreq; | 
|         } | 
|   | 
|         public float mFirstByteStdDev() { | 
|             return mFirstByteStdDev; | 
|         } | 
|   | 
|         public float mFirstByteMean() { | 
|             return mFirstByteMean; | 
|         } | 
|   | 
|         public float mFirstByteWeight() { | 
|             return mFirstByteWeight; | 
|         } | 
|   | 
|         public float[] mSecondByteFreq() { | 
|             return mSecondByteFreq; | 
|         } | 
|   | 
|         public float mSecondByteStdDev() { | 
|             return mSecondByteStdDev; | 
|         } | 
|   | 
|         public float mSecondByteMean() { | 
|             return mSecondByteMean; | 
|         } | 
|   | 
|         public float mSecondByteWeight() { | 
|             return mSecondByteWeight; | 
|         } | 
|   | 
|         public Big5Statistics() { | 
|             mFirstByteFreq = new float[]{0.0F, 0.0F, 0.0F, 0.114427F, 0.061058F, 0.075598F, 0.048386F, 0.063966F, 0.027094F, 0.095787F, 0.029525F, 0.031331F, 0.036915F, 0.021805F, 0.019349F, 0.037496F, 0.018068F, 0.01276F, 0.030053F, 0.017339F, 0.016731F, 0.019501F, 0.01124F, 0.032973F, 0.016658F, 0.015872F, 0.021458F, 0.012378F, 0.017003F, 0.020802F, 0.012454F, 0.009239F, 0.012829F, 0.007922F, 0.010079F, 0.009815F, 0.010104F, 0.0F, 0.0F, 0.0F, 5.3E-5F, 3.5E-5F, 1.05E-4F, 3.1E-5F, 8.8E-5F, 2.7E-5F, 2.7E-5F, 2.6E-5F, 3.5E-5F, 2.4E-5F, 3.4E-5F, 3.75E-4F, 2.5E-5F, 2.8E-5F, 2.0E-5F, 2.4E-5F, 2.8E-5F, 3.1E-5F, 5.9E-5F, 4.0E-5F, 3.0E-5F, 7.9E-5F, 3.7E-5F, 4.0E-5F, 2.3E-5F, 3.0E-5F, 2.7E-5F, 6.4E-5F, 2.0E-5F, 2.7E-5F, 2.5E-5F, 7.4E-5F, 1.9E-5F, 2.3E-5F, 2.1E-5F, 1.8E-5F, 1.7E-5F, 3.5E-5F, 2.1E-5F, 1.9E-5F, 2.5E-5F, 1.7E-5F, 3.7E-5F, 1.8E-5F, 1.8E-5F, 1.9E-5F, 2.2E-5F, 3.3E-5F, 3.2E-5F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; | 
|             mFirstByteStdDev = 0.020606F; | 
|             mFirstByteMean = 0.010638F; | 
|             mFirstByteWeight = 0.675261F; | 
|             mSecondByteFreq = new float[]{0.020256F, 0.003293F, 0.045811F, 0.01665F, 0.007066F, 0.004146F, 0.009229F, 0.007333F, 0.003296F, 0.005239F, 0.008282F, 0.003791F, 0.006116F, 0.003536F, 0.004024F, 0.016654F, 0.009334F, 0.005429F, 0.033392F, 0.006121F, 0.008983F, 0.002801F, 0.004221F, 0.010357F, 0.014695F, 0.077937F, 0.006314F, 0.00402F, 0.007331F, 0.00715F, 0.005341F, 0.009195F, 0.00535F, 0.005698F, 0.004472F, 0.007242F, 0.004039F, 0.011154F, 0.016184F, 0.004741F, 0.012814F, 0.007679F, 0.008045F, 0.016631F, 0.009451F, 0.016487F, 0.007287F, 0.012688F, 0.017421F, 0.013205F, 0.03148F, 0.003404F, 0.009149F, 0.008921F, 0.007514F, 0.008683F, 0.008203F, 0.031403F, 0.011733F, 0.015617F, 0.015306F, 0.004004F, 0.010899F, 0.009961F, 0.008388F, 0.01092F, 0.003925F, 0.008585F, 0.009108F, 0.015546F, 0.004659F, 0.006934F, 0.007023F, 0.020252F, 0.005387F, 0.024704F, 0.006963F, 0.002625F, 0.009512F, 0.002971F, 0.008233F, 0.01F, 0.011973F, 0.010553F, 0.005945F, 0.006349F, 0.009401F, 0.008577F, 0.008186F, 0.008159F, 0.005033F, 0.008714F, 0.010614F, 0.006554F}; | 
|             mSecondByteStdDev = 0.009909F; | 
|             mSecondByteMean = 0.010638F; | 
|             mSecondByteWeight = 0.324739F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsBIG5Verifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsBIG5Verifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331153; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 286331153; | 
|             cclass[7] = 286331153; | 
|             cclass[8] = 572662306; | 
|             cclass[9] = 572662306; | 
|             cclass[10] = 572662306; | 
|             cclass[11] = 572662306; | 
|             cclass[12] = 572662306; | 
|             cclass[13] = 572662306; | 
|             cclass[14] = 572662306; | 
|             cclass[15] = 304226850; | 
|             cclass[16] = 1145324612; | 
|             cclass[17] = 1145324612; | 
|             cclass[18] = 1145324612; | 
|             cclass[19] = 1145324612; | 
|             cclass[20] = 858993460; | 
|             cclass[21] = 858993459; | 
|             cclass[22] = 858993459; | 
|             cclass[23] = 858993459; | 
|             cclass[24] = 858993459; | 
|             cclass[25] = 858993459; | 
|             cclass[26] = 858993459; | 
|             cclass[27] = 858993459; | 
|             cclass[28] = 858993459; | 
|             cclass[29] = 858993459; | 
|             cclass[30] = 858993459; | 
|             cclass[31] = 53687091; | 
|             states = new int[3]; | 
|             states[0] = 286339073; | 
|             states[1] = 304226833; | 
|             states[2] = 1; | 
|             charset = "Big5"; | 
|             stFactor = 5; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class GB2312Statistics extends nsEUCStatistics { | 
|         static float[] mFirstByteFreq; | 
|         static float mFirstByteStdDev; | 
|         static float mFirstByteMean; | 
|         static float mFirstByteWeight; | 
|         static float[] mSecondByteFreq; | 
|         static float mSecondByteStdDev; | 
|         static float mSecondByteMean; | 
|         static float mSecondByteWeight; | 
|   | 
|         public float[] mFirstByteFreq() { | 
|             return mFirstByteFreq; | 
|         } | 
|   | 
|         public float mFirstByteStdDev() { | 
|             return mFirstByteStdDev; | 
|         } | 
|   | 
|         public float mFirstByteMean() { | 
|             return mFirstByteMean; | 
|         } | 
|   | 
|         public float mFirstByteWeight() { | 
|             return mFirstByteWeight; | 
|         } | 
|   | 
|         public float[] mSecondByteFreq() { | 
|             return mSecondByteFreq; | 
|         } | 
|   | 
|         public float mSecondByteStdDev() { | 
|             return mSecondByteStdDev; | 
|         } | 
|   | 
|         public float mSecondByteMean() { | 
|             return mSecondByteMean; | 
|         } | 
|   | 
|         public float mSecondByteWeight() { | 
|             return mSecondByteWeight; | 
|         } | 
|   | 
|         public GB2312Statistics() { | 
|             mFirstByteFreq = new float[]{0.011628F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.011628F, 0.012403F, 0.009302F, 0.003876F, 0.017829F, 0.037209F, 0.008527F, 0.010078F, 0.01938F, 0.054264F, 0.010078F, 0.041085F, 0.02093F, 0.018605F, 0.010078F, 0.013178F, 0.016279F, 0.006202F, 0.009302F, 0.017054F, 0.011628F, 0.008527F, 0.004651F, 0.006202F, 0.017829F, 0.024806F, 0.020155F, 0.013953F, 0.032558F, 0.035659F, 0.068217F, 0.010853F, 0.036434F, 0.117054F, 0.027907F, 0.100775F, 0.010078F, 0.017829F, 0.062016F, 0.012403F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.00155F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F, 0.0F}; | 
|             mFirstByteStdDev = 0.020081F; | 
|             mFirstByteMean = 0.010638F; | 
|             mFirstByteWeight = 0.586533F; | 
|             mSecondByteFreq = new float[]{0.006202F, 0.031008F, 0.005426F, 0.003101F, 0.00155F, 0.003101F, 0.082171F, 0.014729F, 0.006977F, 0.00155F, 0.013953F, 0.0F, 0.013953F, 0.010078F, 0.008527F, 0.006977F, 0.004651F, 0.003101F, 0.003101F, 0.003101F, 0.008527F, 0.003101F, 0.005426F, 0.005426F, 0.005426F, 0.003101F, 0.00155F, 0.006202F, 0.014729F, 0.010853F, 0.0F, 0.011628F, 0.0F, 0.031783F, 0.013953F, 0.030233F, 0.039535F, 0.008527F, 0.015504F, 0.0F, 0.003101F, 0.008527F, 0.016279F, 0.005426F, 0.00155F, 0.013953F, 0.013953F, 0.044961F, 0.003101F, 0.004651F, 0.006977F, 0.00155F, 0.005426F, 0.012403F, 0.00155F, 0.015504F, 0.0F, 0.006202F, 0.00155F, 0.0F, 0.007752F, 0.006977F, 0.00155F, 0.009302F, 0.011628F, 0.004651F, 0.010853F, 0.012403F, 0.017829F, 0.005426F, 0.024806F, 0.0F, 0.006202F, 0.0F, 0.082171F, 0.015504F, 0.004651F, 0.0F, 0.006977F, 0.004651F, 0.0F, 0.008527F, 0.012403F, 0.004651F, 0.003876F, 0.003101F, 0.022481F, 0.024031F, 0.00155F, 0.047287F, 0.009302F, 0.00155F, 0.005426F, 0.017054F}; | 
|             mSecondByteStdDev = 0.014156F; | 
|             mSecondByteMean = 0.010638F; | 
|             mSecondByteWeight = 0.413467F; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsGB2312Verifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsGB2312Verifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331153; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 286331153; | 
|             cclass[7] = 286331153; | 
|             cclass[8] = 286331153; | 
|             cclass[9] = 286331153; | 
|             cclass[10] = 286331153; | 
|             cclass[11] = 286331153; | 
|             cclass[12] = 286331153; | 
|             cclass[13] = 286331153; | 
|             cclass[14] = 286331153; | 
|             cclass[15] = 286331153; | 
|             cclass[16] = 0; | 
|             cclass[17] = 0; | 
|             cclass[18] = 0; | 
|             cclass[19] = 0; | 
|             cclass[20] = 572662304; | 
|             cclass[21] = 858993442; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 572662306; | 
|             cclass[29] = 572662306; | 
|             cclass[30] = 572662306; | 
|             cclass[31] = 35791394; | 
|             states = new int[2]; | 
|             states[0] = 286331649; | 
|             states[1] = 1122850; | 
|             charset = "GB2312"; | 
|             stFactor = 4; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsGB18030Verifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsGB18030Verifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331153; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 858993459; | 
|             cclass[7] = 286331187; | 
|             cclass[8] = 572662306; | 
|             cclass[9] = 572662306; | 
|             cclass[10] = 572662306; | 
|             cclass[11] = 572662306; | 
|             cclass[12] = 572662306; | 
|             cclass[13] = 572662306; | 
|             cclass[14] = 572662306; | 
|             cclass[15] = 1109533218; | 
|             cclass[16] = 1717986917; | 
|             cclass[17] = 1717986918; | 
|             cclass[18] = 1717986918; | 
|             cclass[19] = 1717986918; | 
|             cclass[20] = 1717986918; | 
|             cclass[21] = 1717986918; | 
|             cclass[22] = 1717986918; | 
|             cclass[23] = 1717986918; | 
|             cclass[24] = 1717986918; | 
|             cclass[25] = 1717986918; | 
|             cclass[26] = 1717986918; | 
|             cclass[27] = 1717986918; | 
|             cclass[28] = 1717986918; | 
|             cclass[29] = 1717986918; | 
|             cclass[30] = 1717986918; | 
|             cclass[31] = 107374182; | 
|             states = new int[6]; | 
|             states[0] = 318767105; | 
|             states[1] = 571543825; | 
|             states[2] = 17965602; | 
|             states[3] = 286326804; | 
|             states[4] = 303109393; | 
|             states[5] = 17; | 
|             charset = "GB18030"; | 
|             stFactor = 7; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsISO2022CNVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsISO2022CNVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 2; | 
|             cclass[1] = 0; | 
|             cclass[2] = 0; | 
|             cclass[3] = 4096; | 
|             cclass[4] = 0; | 
|             cclass[5] = 48; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 16384; | 
|             cclass[9] = 0; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 0; | 
|             cclass[16] = 572662306; | 
|             cclass[17] = 572662306; | 
|             cclass[18] = 572662306; | 
|             cclass[19] = 572662306; | 
|             cclass[20] = 572662306; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 572662306; | 
|             cclass[29] = 572662306; | 
|             cclass[30] = 572662306; | 
|             cclass[31] = 572662306; | 
|             states = new int[8]; | 
|             states[0] = 304; | 
|             states[1] = 286331152; | 
|             states[2] = 572662289; | 
|             states[3] = 336663074; | 
|             states[4] = 286335249; | 
|             states[5] = 286331237; | 
|             states[6] = 286335249; | 
|             states[7] = 18944273; | 
|             charset = "ISO-2022-CN"; | 
|             stFactor = 9; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsISO2022JPVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsISO2022JPVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 2; | 
|             cclass[1] = 570425344; | 
|             cclass[2] = 0; | 
|             cclass[3] = 4096; | 
|             cclass[4] = 458752; | 
|             cclass[5] = 3; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 1030; | 
|             cclass[9] = 1280; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 0; | 
|             cclass[16] = 572662306; | 
|             cclass[17] = 572662306; | 
|             cclass[18] = 572662306; | 
|             cclass[19] = 572662306; | 
|             cclass[20] = 572662306; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 572662306; | 
|             cclass[29] = 572662306; | 
|             cclass[30] = 572662306; | 
|             cclass[31] = 572662306; | 
|             states = new int[6]; | 
|             states[0] = 304; | 
|             states[1] = 286331153; | 
|             states[2] = 572662306; | 
|             states[3] = 1091653905; | 
|             states[4] = 303173905; | 
|             states[5] = 287445265; | 
|             charset = "ISO-2022-JP"; | 
|             stFactor = 8; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsISO2022KRVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsISO2022KRVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 2; | 
|             cclass[1] = 0; | 
|             cclass[2] = 0; | 
|             cclass[3] = 4096; | 
|             cclass[4] = 196608; | 
|             cclass[5] = 64; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 20480; | 
|             cclass[9] = 0; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 0; | 
|             cclass[16] = 572662306; | 
|             cclass[17] = 572662306; | 
|             cclass[18] = 572662306; | 
|             cclass[19] = 572662306; | 
|             cclass[20] = 572662306; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 572662306; | 
|             cclass[29] = 572662306; | 
|             cclass[30] = 572662306; | 
|             cclass[31] = 572662306; | 
|             states = new int[5]; | 
|             states[0] = 285212976; | 
|             states[1] = 572657937; | 
|             states[2] = 289476898; | 
|             states[3] = 286593297; | 
|             states[4] = 8465; | 
|             charset = "ISO-2022-KR"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsUCS2BEVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsUCS2BEVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 0; | 
|             cclass[1] = 2097408; | 
|             cclass[2] = 0; | 
|             cclass[3] = 12288; | 
|             cclass[4] = 0; | 
|             cclass[5] = 3355440; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 0; | 
|             cclass[9] = 0; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 0; | 
|             cclass[16] = 0; | 
|             cclass[17] = 0; | 
|             cclass[18] = 0; | 
|             cclass[19] = 0; | 
|             cclass[20] = 0; | 
|             cclass[21] = 0; | 
|             cclass[22] = 0; | 
|             cclass[23] = 0; | 
|             cclass[24] = 0; | 
|             cclass[25] = 0; | 
|             cclass[26] = 0; | 
|             cclass[27] = 0; | 
|             cclass[28] = 0; | 
|             cclass[29] = 0; | 
|             cclass[30] = 0; | 
|             cclass[31] = 1409286144; | 
|             states = new int[7]; | 
|             states[0] = 288626549; | 
|             states[1] = 572657937; | 
|             states[2] = 291923490; | 
|             states[3] = 1713792614; | 
|             states[4] = 393569894; | 
|             states[5] = 1717659269; | 
|             states[6] = 1140326; | 
|             charset = "UTF-16BE"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return true; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsUCS2LEVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsUCS2LEVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 0; | 
|             cclass[1] = 2097408; | 
|             cclass[2] = 0; | 
|             cclass[3] = 12288; | 
|             cclass[4] = 0; | 
|             cclass[5] = 3355440; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 0; | 
|             cclass[9] = 0; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 0; | 
|             cclass[16] = 0; | 
|             cclass[17] = 0; | 
|             cclass[18] = 0; | 
|             cclass[19] = 0; | 
|             cclass[20] = 0; | 
|             cclass[21] = 0; | 
|             cclass[22] = 0; | 
|             cclass[23] = 0; | 
|             cclass[24] = 0; | 
|             cclass[25] = 0; | 
|             cclass[26] = 0; | 
|             cclass[27] = 0; | 
|             cclass[28] = 0; | 
|             cclass[29] = 0; | 
|             cclass[30] = 0; | 
|             cclass[31] = 1409286144; | 
|             states = new int[7]; | 
|             states[0] = 288647014; | 
|             states[1] = 572657937; | 
|             states[2] = 303387938; | 
|             states[3] = 1712657749; | 
|             states[4] = 357927015; | 
|             states[5] = 1427182933; | 
|             states[6] = 1381717; | 
|             charset = "UTF-16LE"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return true; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsCP1252Verifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsCP1252Verifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 572662305; | 
|             cclass[1] = 2236962; | 
|             cclass[2] = 572662306; | 
|             cclass[3] = 572654114; | 
|             cclass[4] = 572662306; | 
|             cclass[5] = 572662306; | 
|             cclass[6] = 572662306; | 
|             cclass[7] = 572662306; | 
|             cclass[8] = 572662306; | 
|             cclass[9] = 572662306; | 
|             cclass[10] = 572662306; | 
|             cclass[11] = 572662306; | 
|             cclass[12] = 572662306; | 
|             cclass[13] = 572662306; | 
|             cclass[14] = 572662306; | 
|             cclass[15] = 572662306; | 
|             cclass[16] = 572662274; | 
|             cclass[17] = 16851234; | 
|             cclass[18] = 572662304; | 
|             cclass[19] = 285286690; | 
|             cclass[20] = 572662306; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 286331153; | 
|             cclass[25] = 286331153; | 
|             cclass[26] = 554766609; | 
|             cclass[27] = 286331153; | 
|             cclass[28] = 286331153; | 
|             cclass[29] = 286331153; | 
|             cclass[30] = 554766609; | 
|             cclass[31] = 286331153; | 
|             states = new int[3]; | 
|             states[0] = 571543601; | 
|             states[1] = 340853778; | 
|             states[2] = 65; | 
|             charset = "windows-1252"; | 
|             stFactor = 3; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsHZVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsHZVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 1; | 
|             cclass[1] = 0; | 
|             cclass[2] = 0; | 
|             cclass[3] = 4096; | 
|             cclass[4] = 0; | 
|             cclass[5] = 0; | 
|             cclass[6] = 0; | 
|             cclass[7] = 0; | 
|             cclass[8] = 0; | 
|             cclass[9] = 0; | 
|             cclass[10] = 0; | 
|             cclass[11] = 0; | 
|             cclass[12] = 0; | 
|             cclass[13] = 0; | 
|             cclass[14] = 0; | 
|             cclass[15] = 38813696; | 
|             cclass[16] = 286331153; | 
|             cclass[17] = 286331153; | 
|             cclass[18] = 286331153; | 
|             cclass[19] = 286331153; | 
|             cclass[20] = 286331153; | 
|             cclass[21] = 286331153; | 
|             cclass[22] = 286331153; | 
|             cclass[23] = 286331153; | 
|             cclass[24] = 286331153; | 
|             cclass[25] = 286331153; | 
|             cclass[26] = 286331153; | 
|             cclass[27] = 286331153; | 
|             cclass[28] = 286331153; | 
|             cclass[29] = 286331153; | 
|             cclass[30] = 286331153; | 
|             cclass[31] = 286331153; | 
|             states = new int[6]; | 
|             states[0] = 285213456; | 
|             states[1] = 572657937; | 
|             states[2] = 335548706; | 
|             states[3] = 341120533; | 
|             states[4] = 336872468; | 
|             states[5] = 36; | 
|             charset = "HZ-GB-2312"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsSJISVerifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsSJISVerifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331152; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 286331153; | 
|             cclass[7] = 286331153; | 
|             cclass[8] = 572662306; | 
|             cclass[9] = 572662306; | 
|             cclass[10] = 572662306; | 
|             cclass[11] = 572662306; | 
|             cclass[12] = 572662306; | 
|             cclass[13] = 572662306; | 
|             cclass[14] = 572662306; | 
|             cclass[15] = 304226850; | 
|             cclass[16] = 858993459; | 
|             cclass[17] = 858993459; | 
|             cclass[18] = 858993459; | 
|             cclass[19] = 858993459; | 
|             cclass[20] = 572662308; | 
|             cclass[21] = 572662306; | 
|             cclass[22] = 572662306; | 
|             cclass[23] = 572662306; | 
|             cclass[24] = 572662306; | 
|             cclass[25] = 572662306; | 
|             cclass[26] = 572662306; | 
|             cclass[27] = 572662306; | 
|             cclass[28] = 858993459; | 
|             cclass[29] = 1145393971; | 
|             cclass[30] = 1145324612; | 
|             cclass[31] = 279620; | 
|             states = new int[3]; | 
|             states[0] = 286339073; | 
|             states[1] = 572657937; | 
|             states[2] = 4386; | 
|             charset = "Shift_JIS"; | 
|             stFactor = 6; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
|     /** | 
|      * | 
|      */ | 
|     public static class nsUTF8Verifier extends nsVerifier { | 
|         static int[] cclass; | 
|         static int[] states; | 
|         static int stFactor; | 
|         static String charset; | 
|   | 
|         public int[] cclass() { | 
|             return cclass; | 
|         } | 
|   | 
|         public int[] states() { | 
|             return states; | 
|         } | 
|   | 
|         public int stFactor() { | 
|             return stFactor; | 
|         } | 
|   | 
|         public String charset() { | 
|             return charset; | 
|         } | 
|   | 
|         public nsUTF8Verifier() { | 
|             cclass = new int[32]; | 
|             cclass[0] = 286331153; | 
|             cclass[1] = 1118481; | 
|             cclass[2] = 286331153; | 
|             cclass[3] = 286327057; | 
|             cclass[4] = 286331153; | 
|             cclass[5] = 286331153; | 
|             cclass[6] = 286331153; | 
|             cclass[7] = 286331153; | 
|             cclass[8] = 286331153; | 
|             cclass[9] = 286331153; | 
|             cclass[10] = 286331153; | 
|             cclass[11] = 286331153; | 
|             cclass[12] = 286331153; | 
|             cclass[13] = 286331153; | 
|             cclass[14] = 286331153; | 
|             cclass[15] = 286331153; | 
|             cclass[16] = 858989090; | 
|             cclass[17] = 1145324612; | 
|             cclass[18] = 1145324612; | 
|             cclass[19] = 1145324612; | 
|             cclass[20] = 1431655765; | 
|             cclass[21] = 1431655765; | 
|             cclass[22] = 1431655765; | 
|             cclass[23] = 1431655765; | 
|             cclass[24] = 1717986816; | 
|             cclass[25] = 1717986918; | 
|             cclass[26] = 1717986918; | 
|             cclass[27] = 1717986918; | 
|             cclass[28] = -2004318073; | 
|             cclass[29] = -2003269496; | 
|             cclass[30] = -1145324614; | 
|             cclass[31] = 16702940; | 
|             states = new int[26]; | 
|             states[0] = -1408167679; | 
|             states[1] = 878082233; | 
|             states[2] = 286331153; | 
|             states[3] = 286331153; | 
|             states[4] = 572662306; | 
|             states[5] = 572662306; | 
|             states[6] = 290805009; | 
|             states[7] = 286331153; | 
|             states[8] = 290803985; | 
|             states[9] = 286331153; | 
|             states[10] = 293041937; | 
|             states[11] = 286331153; | 
|             states[12] = 293015825; | 
|             states[13] = 286331153; | 
|             states[14] = 295278865; | 
|             states[15] = 286331153; | 
|             states[16] = 294719761; | 
|             states[17] = 286331153; | 
|             states[18] = 298634257; | 
|             states[19] = 286331153; | 
|             states[20] = 297865489; | 
|             states[21] = 286331153; | 
|             states[22] = 287099921; | 
|             states[23] = 286331153; | 
|             states[24] = 285212689; | 
|             states[25] = 286331153; | 
|             charset = "UTF-8"; | 
|             stFactor = 16; | 
|         } | 
|   | 
|         public boolean isUCS2() { | 
|             return false; | 
|         } | 
|     } | 
|   | 
| } |