Author: nextgens
Date: 2007-08-13 21:20:49 +0000 (Mon, 13 Aug 2007)
New Revision: 14667

Removed:
   trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
Modified:
   trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.jflex
Log:
Doh

Deleted: trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java       
2007-08-13 21:06:08 UTC (rev 14666)
+++ trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.java       
2007-08-13 21:20:49 UTC (rev 14667)
@@ -1,1657 +0,0 @@
-/* The following code was generated by JFlex 1.4.1 on 13-ao?-07 7:55:11  */
-
-/* This code is part of Freenet. It is distributed under the GNU General
- * Public License, version 2 (or at your option any later version). See
- * http://www.gnu.org/ for further details of the GPL. */ 
-package freenet.clients.http.filter;
-import java.io.*;
-import freenet.l10n.L10n;
-/* This class tokenizes a CSS2 Reader stream, writes it out to the output 
Writer, and filters any URLs found */
-// WARNING: this is not as thorough as the HTML parser - new versions of the 
standard could lead to anonymity risks. See comments in SaferFilter.java
-// FIXME: Rewrite this as a proper whitelist filter. It's about half way 
there, it
-// just needs somebody to go over the standard carefully and eliminate 
everything that isn't sufficiently specific (e.g. matching a '-' on its own).
-// Mostly from http://www.w3.org/TR/REC-CSS2/grammar.html
-
-
-/**
- * This class is a scanner generated by 
- * <a href="http://www.jflex.de/";>JFlex</a> 1.4.1
- * on 13-ao?-07 7:55:11  from the specification file
- * <tt>freenet/clients/http/filter/CSSTokenizerFilter.jflex</tt>
- */
-class CSSTokenizerFilter {
-
-  /** This character denotes the end of file */
-  public static final int YYEOF = -1;
-
-  /** initial size of the lookahead buffer */
-  private static final int ZZ_BUFFERSIZE = 16384;
-
-  /** lexical states */
-  public static final int YYINITIAL = 0;
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final String ZZ_CMAP_PACKED = 
-    "\11\0\1\3\1\3\1\0\1\3\1\3\22\0\1\5\1\41\1\11"+
-    "\1\17\1\4\1\63\1\4\1\12\1\23\1\15\1\37\1\55\1\24"+
-    "\1\13\1\14\1\36\12\1\1\64\1\33\1\40\1\44\1\42\1\16"+
-    "\1\25\1\46\1\6\1\54\1\51\1\50\1\52\1\47\1\60\1\26"+
-    "\1\7\1\62\1\22\1\27\1\53\1\31\1\30\1\7\1\21\1\57"+
-    "\1\32\1\20\2\7\1\56\1\7\1\61\1\4\1\2\2\4\1\10"+
-    "\1\4\1\46\1\6\1\54\1\51\1\50\1\52\1\47\1\60\1\26"+
-    "\1\7\1\62\1\22\1\27\1\53\1\31\1\30\1\7\1\21\1\57"+
-    "\1\32\1\20\2\7\1\56\1\7\1\61\1\34\1\45\1\35\1\43"+
-    "\uff81\0";
-
-  /** 
-   * Translates characters to character classes
-   */
-  private static final char [] ZZ_CMAP = zzUnpackCMap(ZZ_CMAP_PACKED);
-
-  /** 
-   * Translates DFA states to action switch labels.
-   */
-  private static final int [] ZZ_ACTION = zzUnpackAction();
-
-  private static final String ZZ_ACTION_PACKED_0 =
-    "\1\0\1\1\1\2\1\1\1\3\2\1\2\4\1\5"+
-    "\1\1\1\2\1\1\1\6\1\7\1\10\1\4\4\1"+
-    "\2\0\1\11\1\0\1\12\1\2\2\0\1\13\2\0"+
-    "\1\14\1\0\1\15\2\0\1\16\1\0\1\16\1\2"+
-    "\1\0\1\17\1\0\5\17\4\0\1\20\1\21\2\0"+
-    "\1\2\2\13\1\0\10\15\1\22\2\15\1\22\1\0"+
-    "\1\15\1\23\1\14\2\16\1\2\2\24\6\17\4\0"+
-    "\1\2\2\15\1\0\1\15\12\0\1\25\1\16\1\11"+
-    "\1\24\1\0\1\24\6\17\1\26\1\27\2\0\1\2"+
-    "\1\0\1\15\2\0\2\16\5\0\1\30\2\24\1\31"+
-    "\3\17\1\32\2\17\2\0\1\2\1\0\1\15\2\16"+
-    "\1\30\3\0\2\24\1\31\5\17\2\0\1\2\1\0"+
-    "\1\15\1\25\1\16\2\0\2\24\1\31\2\17\1\33"+
-    "\2\0\2\17\6\0\1\34\1\15\1\16\2\30\2\24"+
-    "\1\31\1\17\1\0\1\17\4\0\1\17\1\35\2\33"+
-    "\2\17\2\0\1\34\3\0\1\31\1\0\2\17\1\35"+
-    "\4\0\1\17\1\33\1\17\6\0\1\31\1\17\5\0"+
-    "\1\35\1\0\1\17\1\33\1\36\3\0\1\37\2\34"+
-    "\1\17\4\0\1\35\5\0\1\35\1\0\1\33\1\0"+
-    "\1\40\1\0\1\17\15\0\1\33\2\40\1\17\11\0"+
-    "\1\33\1\17\6\0\1\35\23\0\1\35\3\0\1\35"+
-    "\32\0";
-
-  private static int [] zzUnpackAction() {
-    int [] result = new int[355];
-    int offset = 0;
-    offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAction(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /** 
-   * Translates a state to a row index in the transition table
-   */
-  private static final int [] ZZ_ROWMAP = zzUnpackRowMap();
-
-  private static final String ZZ_ROWMAP_PACKED_0 =
-    "\0\0\0\65\0\152\0\237\0\324\0\u0109\0\u013e\0\u0173"+
-    "\0\65\0\65\0\u01a8\0\u01dd\0\u0212\0\65\0\u0247\0\u027c"+
-    "\0\u02b1\0\u02e6\0\u031b\0\u0350\0\u0385\0\237\0\u03ba\0\65"+
-    "\0\u03ef\0\65\0\u0424\0\u0109\0\u0459\0\65\0\u013e\0\u048e"+
-    "\0\u04c3\0\u04f8\0\u052d\0\u0562\0\u0597\0\u05cc\0\u0601\0\u0636"+
-    "\0\u066b\0\u06a0\0\u06d5\0\u070a\0\u073f\0\u0774\0\u07a9\0\u07de"+
-    "\0\u0813\0\u0848\0\u087d\0\u031b\0\u08b2\0\65\0\65\0\u08e7"+
-    "\0\u091c\0\u0951\0\u0109\0\u013e\0\u0986\0\u09bb\0\u09f0\0\u0a25"+
-    "\0\u0a5a\0\u0a8f\0\u0ac4\0\u0af9\0\u0b2e\0\u052d\0\u0b63\0\u0b98"+
-    "\0\65\0\u0bcd\0\u0c02\0\65\0\u0c37\0\u0c6c\0\u0ca1\0\u0cd6"+
-    "\0\u0d0b\0\u0d40\0\u0d75\0\u0daa\0\u0ddf\0\u0e14\0\u0e49\0\u0e7e"+
-    "\0\u0eb3\0\u0ee8\0\u0f1d\0\u0f52\0\u0f87\0\u0fbc\0\u0ff1\0\u1026"+
-    "\0\u105b\0\u1090\0\u10c5\0\u10fa\0\u112f\0\u1164\0\u1199\0\u11ce"+
-    "\0\u1203\0\u1238\0\u126d\0\u12a2\0\u12d7\0\u130c\0\u1341\0\u1376"+
-    "\0\u13ab\0\u13e0\0\u1415\0\u144a\0\u147f\0\u14b4\0\u14e9\0\65"+
-    "\0\65\0\u151e\0\u1553\0\u1588\0\u15bd\0\u15f2\0\u1627\0\u165c"+
-    "\0\u1691\0\u16c6\0\u16fb\0\u1730\0\u130c\0\u1765\0\u179a\0\65"+
-    "\0\u17cf\0\u1804\0\u1839\0\u186e\0\u18a3\0\u18d8\0\u06d5\0\u190d"+
-    "\0\u1942\0\u1977\0\u19ac\0\u19e1\0\u1a16\0\u1a4b\0\u1a80\0\u1ab5"+
-    "\0\u16fb\0\u1aea\0\u1b1f\0\u1b54\0\u1b89\0\u1bbe\0\u1bf3\0\u1c28"+
-    "\0\u1c5d\0\u1c92\0\u1cc7\0\u1cfc\0\u1d31\0\u1d66\0\u1d9b\0\u1dd0"+
-    "\0\u1e05\0\u0636\0\u1e3a\0\u1e6f\0\u1ea4\0\u1ed9\0\u1f0e\0\u1f43"+
-    "\0\u1f78\0\u1fad\0\u1fe2\0\u2017\0\u204c\0\u2081\0\u20b6\0\u20eb"+
-    "\0\u2120\0\u2155\0\u218a\0\u21bf\0\u21f4\0\65\0\u2229\0\u225e"+
-    "\0\u1765\0\u179a\0\u2293\0\65\0\u22c8\0\u22fd\0\u2332\0\u2367"+
-    "\0\u239c\0\u23d1\0\u2406\0\u243b\0\u2470\0\u2332\0\u24a5\0\u24da"+
-    "\0\u250f\0\u2544\0\u2579\0\u25ae\0\u2155\0\u25e3\0\u2618\0\u264d"+
-    "\0\u2682\0\u26b7\0\u26ec\0\u2721\0\u2367\0\u2756\0\u278b\0\u27c0"+
-    "\0\u27f5\0\u282a\0\u285f\0\u2894\0\u28c9\0\u28fe\0\u2933\0\u2968"+
-    "\0\u299d\0\u29d2\0\65\0\u2a07\0\u2a3c\0\u2a71\0\u2aa6\0\u2adb"+
-    "\0\u2b10\0\65\0\u2b45\0\u2b7a\0\u2baf\0\u06d5\0\u2be4\0\u2c19"+
-    "\0\u2c4e\0\65\0\u21bf\0\u21f4\0\u2c83\0\u2cb8\0\u2ced\0\u2d22"+
-    "\0\u2d57\0\u2406\0\u2d8c\0\u2dc1\0\u2df6\0\u2e2b\0\u2e60\0\u243b"+
-    "\0\u2e95\0\u2eca\0\u2eff\0\65\0\u2f34\0\u2f69\0\u2f9e\0\u2fd3"+
-    "\0\u3008\0\u303d\0\u3072\0\u30a7\0\u30dc\0\u3111\0\u3146\0\u317b"+
-    "\0\u31b0\0\u31e5\0\u321a\0\u324f\0\u28fe\0\u2933\0\u3284\0\u32b9"+
-    "\0\u32ee\0\u3323\0\u3358\0\u338d\0\u33c2\0\u33f7\0\u342c\0\u3461"+
-    "\0\u3496\0\u34cb\0\u3500\0\u3535\0\u356a\0\u359f\0\u35d4\0\u3609"+
-    "\0\u317b\0\u363e\0\u3673\0\u36a8\0\u36dd\0\u3712\0\u3747\0\u377c"+
-    "\0\u37b1\0\u37e6\0\u381b\0\u3850\0\u3885\0\u38ba\0\u38ef\0\u3924"+
-    "\0\u3959\0\u398e\0\u39c3\0\u39f8\0\u31e5\0\u3a2d\0\u3a62\0\u3a97"+
-    "\0\u321a\0\u3acc\0\u3b01\0\u3b36\0\u3b6b\0\u3ba0\0\u3bd5\0\u3c0a"+
-    "\0\u3c3f\0\u3c74\0\u3ca9\0\u3cde\0\u3d13\0\u3d48\0\u3d7d\0\u3db2"+
-    "\0\u3de7\0\u3e1c\0\u3e51\0\u3e86\0\u3ebb\0\u3ef0\0\u3f25\0\u3f5a"+
-    "\0\u3f8f\0\u3fc4\0\u3ff9";
-
-  private static int [] zzUnpackRowMap() {
-    int [] result = new int[355];
-    int offset = 0;
-    offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackRowMap(String packed, int offset, int [] result) {
-    int i = 0;  /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int high = packed.charAt(i++) << 16;
-      result[j++] = high | packed.charAt(i++);
-    }
-    return j;
-  }
-
-  /** 
-   * The transition table of the DFA
-   */
-  private static final int [] ZZ_TRANS = zzUnpackTrans();
-
-  private static final String ZZ_TRANS_PACKED_0 =
-    "\1\2\1\3\1\4\1\5\1\2\1\5\2\3\1\2"+
-    "\1\6\1\7\1\10\1\11\1\12\1\2\1\13\1\14"+
-    "\2\3\1\2\1\11\1\15\5\3\1\16\1\17\1\20"+
-    "\1\21\1\11\1\22\1\23\1\11\1\24\1\2\1\25"+
-    "\7\3\1\11\5\3\1\2\1\11\66\0\1\3\1\26"+
-    "\1\27\1\0\1\27\3\3\2\0\1\3\4\0\3\3"+
-    "\1\30\1\31\1\0\5\3\1\32\12\0\7\3\1\0"+
-    "\5\3\3\0\1\33\1\3\1\0\2\3\1\33\37\3"+
-    "\1\33\1\3\3\33\1\3\1\33\10\3\3\0\1\5"+
-    "\1\0\1\5\26\0\1\17\1\20\27\0\2\34\1\35"+
-    "\6\34\1\36\53\34\2\37\1\40\7\37\1\36\52\37"+
-    "\1\0\1\41\1\42\3\0\2\43\3\0\1\44\1\45"+
-    "\3\0\3\43\3\0\5\43\13\0\7\43\1\0\5\43"+
-    "\3\0\1\46\1\47\3\0\1\46\2\50\2\0\1\50"+
-    "\4\0\3\50\3\0\5\50\13\0\1\46\1\50\3\46"+
-    "\1\50\1\46\1\0\5\50\3\0\1\3\1\26\1\27"+
-    "\1\0\1\27\3\3\2\0\1\3\4\0\1\3\1\51"+
-    "\1\3\1\30\1\31\1\0\5\3\1\32\12\0\7\3"+
-    "\1\52\5\3\3\0\1\53\1\54\3\0\2\53\10\0"+
-    "\3\53\3\0\1\55\1\56\1\57\2\53\13\0\4\53"+
-    "\1\60\1\53\1\61\1\0\5\53\5\0\1\17\1\0"+
-    "\1\17\62\0\1\20\1\0\1\20\116\0\1\62\66\0"+
-    "\1\63\26\0\1\64\1\0\1\64\20\0\1\65\102\0"+
-    "\1\66\64\0\1\67\23\0\1\27\1\0\1\27\16\0"+
-    "\1\31\6\0\1\32\32\0\1\70\1\71\1\31\1\0"+
-    "\1\31\2\70\10\0\3\70\3\0\5\70\13\0\7\70"+
-    "\1\0\5\70\3\0\1\72\1\26\1\3\1\0\1\3"+
-    "\1\72\2\3\2\0\1\3\4\0\3\3\1\30\1\31"+
-    "\1\0\5\3\1\32\12\0\1\72\1\3\3\72\1\3"+
-    "\1\72\1\0\5\3\2\0\2\34\1\35\6\34\1\73"+
-    "\53\34\2\37\1\40\7\37\1\74\52\37\1\0\1\41"+
-    "\1\42\1\75\1\0\1\75\3\43\2\0\1\43\1\45"+
-    "\3\0\1\43\1\76\1\43\3\0\1\77\1\100\1\101"+
-    "\2\43\13\0\1\43\1\102\1\103\1\104\2\43\1\105"+
-    "\1\0\1\43\1\106\1\107\1\43\1\110\1\111\1\112"+
-    "\1\0\1\113\1\43\1\0\2\43\1\113\37\43\1\113"+
-    "\1\43\3\113\1\43\1\113\10\43\1\0\1\43\1\42"+
-    "\1\75\1\0\1\75\3\43\2\0\1\43\4\0\3\43"+
-    "\3\0\5\43\13\0\7\43\1\0\5\43\1\0\1\112"+
-    "\42\0\1\114\23\0\1\115\64\0\1\116\1\47\3\0"+
-    "\1\116\2\50\2\0\1\50\4\0\3\50\3\0\5\50"+
-    "\13\0\1\116\1\50\3\116\1\50\1\116\1\0\5\50"+
-    "\3\0\1\117\1\50\1\0\2\50\1\117\37\50\1\117"+
-    "\1\50\3\117\1\50\1\117\10\50\1\0\1\50\1\47"+
-    "\3\0\3\50\2\0\1\50\4\0\3\50\3\0\5\50"+
-    "\13\0\7\50\1\0\5\50\3\0\1\3\1\26\1\27"+
-    "\1\0\1\27\3\3\2\0\1\3\4\0\2\3\1\120"+
-    "\1\30\1\31\1\0\5\3\1\32\12\0\7\3\1\0"+
-    "\5\3\3\0\1\121\4\0\1\121\7\0\1\122\27\0"+
-    "\1\121\1\0\3\121\1\0\1\121\11\0\1\53\1\54"+
-    "\3\0\3\53\2\0\1\53\4\0\3\53\3\0\5\53"+
-    "\13\0\7\53\1\0\5\53\3\0\1\123\1\53\1\0"+
-    "\2\53\1\123\37\53\1\123\1\53\3\123\1\53\1\123"+
-    "\10\53\1\0\1\53\1\54\3\0\3\53\2\0\1\53"+
-    "\4\0\3\53\3\0\1\53\1\124\3\53\13\0\7\53"+
-    "\1\0\5\53\3\0\1\53\1\54\3\0\3\53\2\0"+
-    "\1\53\4\0\3\53\3\0\5\53\13\0\2\53\1\125"+
-    "\4\53\1\0\5\53\3\0\1\53\1\54\3\0\3\53"+
-    "\2\0\1\53\4\0\3\53\3\0\5\53\13\0\1\126"+
-    "\6\53\1\0\5\53\3\0\1\53\1\54\3\0\3\53"+
-    "\2\0\1\53\4\0\3\53\3\0\3\53\1\127\1\53"+
-    "\13\0\7\53\1\0\5\53\3\0\1\53\1\54\3\0"+
-    "\3\53\2\0\1\53\4\0\3\53\3\0\5\53\13\0"+
-    "\7\53\1\0\2\53\1\130\2\53\2\0\37\62\1\131"+
-    "\25\62\13\0\1\132\100\0\1\133\36\0\1\70\1\71"+
-    "\1\27\1\0\1\27\3\70\2\0\1\70\4\0\3\70"+
-    "\1\0\1\31\1\0\5\70\1\32\12\0\7\70\1\0"+
-    "\5\70\3\0\1\134\1\70\1\0\2\70\1\134\37\70"+
-    "\1\134\1\70\3\134\1\70\1\134\10\70\1\0\1\135"+
-    "\1\26\1\3\1\0\1\3\1\135\2\3\2\0\1\3"+
-    "\4\0\3\3\1\30\1\31\1\0\5\3\1\32\12\0"+
-    "\1\135\1\3\3\135\1\3\1\135\1\0\5\3\5\0"+
-    "\1\75\1\0\1\75\56\0\1\112\1\0\1\43\1\42"+
-    "\1\75\1\0\1\75\3\43\2\0\1\43\4\0\3\43"+
-    "\3\0\5\43\13\0\1\136\6\43\1\0\5\43\1\0"+
-    "\1\112\1\0\1\43\1\42\1\75\1\0\1\75\3\43"+
-    "\2\0\1\43\4\0\3\43\3\0\5\43\13\0\5\43"+
-    "\1\106\1\43\1\0\5\43\1\0\1\112\1\0\1\43"+
-    "\1\42\1\75\1\0\1\75\3\43\2\0\1\43\4\0"+
-    "\3\43\3\0\1\43\1\106\3\43\13\0\7\43\1\0"+
-    "\1\43\1\106\3\43\1\0\1\112\1\0\1\43\1\42"+
-    "\1\75\1\0\1\75\3\43\2\0\1\43\4\0\3\43"+
-    "\3\0\5\43\13\0\6\43\1\106\1\0\1\106\4\43"+
-    "\1\0\1\112\1\0\1\43\1\42\1\75\1\0\1\75"+
-    "\3\43\2\0\1\43\4\0\1\43\1\76\1\43\3\0"+
-    "\5\43\13\0\7\43\1\0\5\43\1\0\1\112\1\0"+
-    "\1\43\1\42\1\75\1\0\1\75\3\43\2\0\1\43"+
-    "\4\0\3\43\3\0\1\43\1\106\3\43\13\0\7\43"+
-    "\1\0\1\106\4\43\1\0\1\112\1\0\1\43\1\42"+
-    "\1\75\1\0\1\75\3\43\2\0\1\43\4\0\3\43"+
-    "\3\0\5\43\13\0\2\43\1\137\4\43\1\0\5\43"+
-    "\1\0\1\112\1\0\1\43\1\42\1\75\1\0\1\75"+
-    "\3\43\2\0\1\43\4\0\3\43\3\0\1\43\1\106"+
-    "\3\43\13\0\7\43\1\0\5\43\1\0\1\112\1\0"+
-    "\1\43\1\42\1\75\1\0\1\75\3\43\2\0\1\43"+
-    "\4\0\3\43\3\0\5\43\13\0\7\43\1\0\3\43"+
-    "\1\106\1\43\1\0\1\112\1\0\1\43\1\42\1\75"+
-    "\1\0\1\75\3\43\2\0\1\43\4\0\3\43\3\0"+
-    "\5\43\13\0\7\43\1\0\2\43\1\107\2\43\1\0"+
-    "\1\112\3\0\1\112\1\0\1\112\12\0\1\140\45\0"+
-    "\1\141\1\42\1\43\1\0\1\43\1\141\2\43\2\0"+
-    "\1\43\4\0\3\43\3\0\5\43\13\0\1\141\1\43"+
-    "\3\141\1\43\1\141\1\0\5\43\1\0\1\112\1\0"+
-    "\1\115\17\0\1\142\4\0\1\143\1\144\1\145\16\0"+
-    "\1\146\1\147\1\150\2\0\1\151\2\0\1\111\1\152"+
-    "\1\0\1\153\1\111\2\0\1\154\1\47\3\0\1\154"+
-    "\2\50\2\0\1\50\4\0\3\50\3\0\5\50\13\0"+
-    "\1\154\1\50\3\154\1\50\1\154\1\0\5\50\3\0"+
-    "\1\155\1\47\1\50\1\0\1\50\1\155\2\50\2\0"+
-    "\1\50\4\0\3\50\3\0\5\50\13\0\1\155\1\50"+
-    "\3\155\1\50\1\155\1\0\5\50\3\0\1\3\1\26"+
-    "\1\27\1\0\1\27\3\3\2\0\1\3\4\0\3\3"+
-    "\1\156\1\31\1\0\5\3\1\32\12\0\7\3\1\0"+
-    "\5\3\3\0\1\157\4\0\1\157\4\0\1\160\2\0"+
-    "\1\161\27\0\1\157\1\0\3\157\1\0\1\157\26\0"+
-    "\1\161\47\0\1\162\1\54\1\53\1\0\1\53\1\162"+
-    "\2\53\2\0\1\53\4\0\3\53\3\0\5\53\13\0"+
-    "\1\162\1\53\3\162\1\53\1\162\1\0\5\53\3\0"+
-    "\1\53\1\54\3\0\3\53\2\0\1\53\4\0\3\53"+
-    "\3\0\2\53\1\163\2\53\13\0\7\53\1\0\5\53"+
-    "\3\0\1\53\1\54\3\0\3\53\2\0\1\53\4\0"+
-    "\3\53\3\0\5\53\13\0\3\53\1\164\3\53\1\0"+
-    "\5\53\3\0\1\53\1\54\3\0\3\53\2\0\1\53"+
-    "\4\0\3\53\3\0\5\53\13\0\1\53\1\165\5\53"+
-    "\1\0\5\53\3\0\1\53\1\54\3\0\3\53\2\0"+
-    "\1\53\4\0\3\53\3\0\5\53\13\0\5\53\1\166"+
-    "\1\53\1\0\5\53\3\0\1\53\1\54\3\0\3\53"+
-    "\2\0\1\53\4\0\3\53\3\0\5\53\13\0\1\167"+
-    "\6\53\1\0\5\53\2\0\36\62\1\170\1\131\25\62"+
-    "\13\0\1\171\101\0\1\172\35\0\1\173\1\71\1\70"+
-    "\1\0\1\70\1\173\2\70\2\0\1\70\4\0\3\70"+
-    "\1\0\1\31\1\0\5\70\1\32\12\0\1\173\1\70"+
-    "\3\173\1\70\1\173\1\0\5\70\3\0\1\174\1\26"+
-    "\1\3\1\0\1\3\1\174\2\3\2\0\1\3\4\0"+
-    "\3\3\1\30\1\31\1\0\5\3\1\32\12\0\1\174"+
-    "\1\3\3\174\1\3\1\174\1\0\5\3\3\0\1\43"+
-    "\1\42\1\75\1\0\1\75\3\43\2\0\1\43\4\0"+
-    "\3\43\3\0\5\43\13\0\3\43\1\106\3\43\1\0"+
-    "\5\43\1\0\1\112\1\0\1\43\1\42\1\75\1\0"+
-    "\1\75\3\43\2\0\1\43\4\0\3\43\3\0\5\43"+
-    "\13\0\1\43\1\106\5\43\1\0\5\43\1\0\1\112"+
-    "\21\0\1\175\44\0\1\176\1\42\1\43\1\0\1\43"+
-    "\1\176\2\43\2\0\1\43\4\0\3\43\3\0\5\43"+
-    "\13\0\1\176\1\43\3\176\1\43\1\176\1\0\5\43"+
-    "\1\0\1\112\46\0\1\177\71\0\1\111\40\0\1\111"+
-    "\27\0\1\111\61\0\1\111\1\0\1\111\27\0\1\142"+
-    "\72\0\1\111\26\0\1\111\56\0\1\200\43\0\1\111"+
-    "\116\0\1\111\63\0\1\152\5\0\1\201\1\47\3\0"+
-    "\1\201\2\50\2\0\1\50\4\0\3\50\3\0\5\50"+
-    "\13\0\1\201\1\50\3\201\1\50\1\201\1\0\5\50"+
-    "\3\0\1\202\1\47\1\50\1\0\1\50\1\202\2\50"+
-    "\2\0\1\50\4\0\3\50\3\0\5\50\13\0\1\202"+
-    "\1\50\3\202\1\50\1\202\1\0\5\50\2\0\2\203"+
-    "\1\204\1\205\1\203\1\205\3\203\1\206\1\207\2\203"+
-    "\1\210\5\203\1\0\41\203\1\0\1\211\4\0\1\211"+
-    "\4\0\1\160\2\0\1\212\27\0\1\211\1\0\3\211"+
-    "\1\0\1\211\11\0\1\213\4\0\1\213\37\0\1\213"+
-    "\1\0\3\213\1\0\1\213\26\0\1\212\47\0\1\214"+
-    "\1\54\1\53\1\0\1\53\1\214\2\53\2\0\1\53"+
-    "\4\0\3\53\3\0\5\53\13\0\1\214\1\53\3\214"+
-    "\1\53\1\214\1\0\5\53\3\0\1\53\1\54\3\0"+
-    "\3\53\2\0\1\53\4\0\3\53\3\0\3\53\1\215"+
-    "\1\53\13\0\7\53\1\0\5\53\3\0\1\53\1\54"+
-    "\3\0\3\53\2\0\1\53\4\0\3\53\3\0\1\216"+
-    "\4\53\13\0\7\53\1\0\5\53\3\0\1\53\1\54"+
-    "\3\0\3\53\2\0\1\53\4\0\3\53\3\0\5\53"+
-    "\13\0\2\53\1\217\4\53\1\0\5\53\3\0\1\53"+
-    "\1\54\3\0\3\53\2\0\1\53\4\0\3\53\3\0"+
-    "\4\53\1\220\13\0\7\53\1\0\5\53\3\0\1\53"+
-    "\1\54\3\0\3\53\2\0\1\53\4\0\1\53\1\221"+
-    "\1\53\3\0\5\53\13\0\7\53\1\0\5\53\33\0"+
-    "\1\222\34\0\1\223\1\71\1\70\1\0\1\70\1\223"+
-    "\2\70\2\0\1\70\4\0\3\70\1\0\1\31\1\0"+
-    "\5\70\1\32\12\0\1\223\1\70\3\223\1\70\1\223"+
-    "\1\0\5\70\3\0\1\224\1\26\1\3\1\0\1\3"+
-    "\1\224\2\3\2\0\1\3\4\0\3\3\1\30\1\31"+
-    "\1\0\5\3\1\32\12\0\1\224\1\3\3\224\1\3"+
-    "\1\224\1\0\5\3\24\0\1\225\43\0\1\226\1\42"+
-    "\1\43\1\0\1\43\1\226\2\43\2\0\1\43\4\0"+
-    "\3\43\3\0\5\43\13\0\1\226\1\43\3\226\1\43"+
-    "\1\226\1\0\5\43\1\0\1\112\51\0\1\111\62\0"+
-    "\1\111\16\0\1\227\1\47\3\0\1\227\2\50\2\0"+
-    "\1\50\4\0\3\50\3\0\5\50\13\0\1\227\1\50"+
-    "\3\227\1\50\1\227\1\0\5\50\3\0\1\230\1\47"+
-    "\1\50\1\0\1\50\1\230\2\50\2\0\1\50\4\0"+
-    "\3\50\3\0\5\50\13\0\1\230\1\50\3\230\1\50"+
-    "\1\230\1\0\5\50\2\0\2\203\1\204\6\203\2\0"+
-    "\2\203\1\210\5\203\1\0\43\203\1\204\12\203\1\231"+
-    "\47\203\2\206\1\232\6\206\1\233\53\206\2\207\1\234"+
-    "\7\207\1\233\52\207\1\0\1\235\4\0\1\235\4\0"+
-    "\1\160\2\0\1\236\27\0\1\235\1\0\3\235\1\0"+
-    "\1\235\26\0\1\236\47\0\1\237\4\0\1\237\37\0"+
-    "\1\237\1\0\3\237\1\0\1\237\11\0\1\240\1\54"+
-    "\1\53\1\0\1\53\1\240\2\53\2\0\1\53\4\0"+
-    "\3\53\3\0\5\53\13\0\1\240\1\53\3\240\1\53"+
-    "\1\240\1\0\5\53\3\0\1\53\1\54\3\0\3\53"+
-    "\2\0\1\53\4\0\1\53\1\241\1\53\3\0\5\53"+
-    "\13\0\7\53\1\0\5\53\3\0\1\53\1\54\3\0"+
-    "\3\53\2\0\1\53\4\0\3\53\3\0\5\53\13\0"+
-    "\1\242\6\53\1\0\5\53\3\0\1\53\1\54\3\0"+
-    "\3\53\2\0\1\243\4\0\3\53\3\0\5\53\13\0"+
-    "\7\53\1\0\5\53\3\0\1\53\1\54\3\0\3\53"+
-    "\2\0\1\53\4\0\3\53\3\0\5\53\13\0\7\53"+
-    "\1\0\1\53\1\244\3\53\23\0\1\245\44\0\1\246"+
-    "\1\71\1\70\1\0\1\70\1\246\2\70\2\0\1\70"+
-    "\4\0\3\70\1\0\1\31\1\0\5\70\1\32\12\0"+
-    "\1\246\1\70\3\246\1\70\1\246\1\0\5\70\3\0"+
-    "\1\247\1\26\1\3\1\0\1\3\1\247\2\3\2\0"+
-    "\1\3\4\0\3\3\1\30\1\31\1\0\5\3\1\32"+
-    "\12\0\1\247\1\3\3\247\1\3\1\247\1\0\5\3"+
-    "\25\0\1\250\42\0\1\251\1\42\1\43\1\0\1\43"+
-    "\1\251\2\43\2\0\1\43\4\0\3\43\3\0\5\43"+
-    "\13\0\1\251\1\43\3\251\1\43\1\251\1\0\5\43"+
-    "\1\0\1\112\1\0\1\252\1\47\3\0\1\252\2\50"+
-    "\2\0\1\50\4\0\3\50\3\0\5\50\13\0\1\252"+
-    "\1\50\3\252\1\50\1\252\1\0\5\50\3\0\1\253"+
-    "\1\47\1\50\1\0\1\50\1\253\2\50\2\0\1\50"+
-    "\4\0\3\50\3\0\5\50\13\0\1\253\1\50\3\253"+
-    "\1\50\1\253\1\0\5\50\2\0\2\206\1\232\6\206"+
-    "\1\254\53\206\3\0\1\233\1\0\1\233\7\0\1\210"+
-    "\47\0\2\207\1\234\7\207\1\255\52\207\1\0\1\256"+
-    "\4\0\1\256\4\0\1\160\2\0\1\257\27\0\1\256"+
-    "\1\0\3\256\1\0\1\256\26\0\1\257\47\0\1\260"+
-    "\4\0\1\260\37\0\1\260\1\0\3\260\1\0\1\260"+
-    "\11\0\1\261\1\54\1\53\1\0\1\53\1\261\2\53"+
-    "\2\0\1\53\4\0\3\53\3\0\5\53\13\0\1\261"+
-    "\1\53\3\261\1\53\1\261\1\0\5\53\3\0\1\53"+
-    "\1\54\3\0\3\53\2\0\1\53\4\0\3\53\3\0"+
-    "\4\53\1\262\13\0\7\53\1\0\5\53\3\0\1\263"+
-    "\1\264\1\265\1\0\1\265\2\263\1\53\2\0\1\53"+
-    "\4\0\3\263\3\0\5\263\13\0\7\263\1\0\5\263"+
-    "\3\0\1\53\1\54\3\0\3\53\2\0\1\53\4\0"+
-    "\3\53\3\0\5\53\13\0\4\53\1\266\2\53\1\0"+
-    "\5\53\3\0\1\53\1\54\3\0\3\53\2\0\1\53"+
-    "\4\0\3\53\3\0\5\53\13\0\2\53\1\267\4\53"+
-    "\1\0\5\53\34\0\1\270\33\0\1\271\1\71\1\70"+
-    "\1\0\1\70\1\271\2\70\2\0\1\70\4\0\3\70"+
-    "\1\0\1\31\1\0\5\70\1\32\12\0\1\271\1\70"+
-    "\3\271\1\70\1\271\1\0\5\70\3\0\1\3\1\26"+
-    "\1\3\1\0\4\3\2\0\1\3\4\0\3\3\1\30"+
-    "\1\31\1\0\5\3\1\32\12\0\7\3\1\0\5\3"+
-    "\2\0\2\272\1\273\1\250\1\272\1\250\3\272\1\274"+
-    "\1\275\2\272\1\276\5\272\1\0\41\272\1\0\1\277"+
-    "\1\42\1\43\1\0\1\43\1\277\2\43\2\0\1\43"+
-    "\4\0\3\43\3\0\5\43\13\0\1\277\1\43\3\277"+
-    "\1\43\1\277\1\0\5\43\1\0\1\112\1\0\1\300"+
-    "\1\47\1\50\1\0\1\50\1\300\2\50\2\0\1\50"+
-    "\4\0\3\50\3\0\5\50\13\0\1\300\1\50\3\300"+
-    "\1\50\1\300\1\0\5\50\2\0\2\206\1\232\1\254"+
-    "\1\206\1\254\3\206\1\233\3\206\1\301\47\206\2\207"+
-    "\1\234\1\255\1\207\1\255\4\207\1\233\2\207\1\302"+
-    "\47\207\1\0\1\303\4\0\1\303\4\0\1\160\2\0"+
-    "\1\304\27\0\1\303\1\0\3\303\1\0\1\303\26\0"+
-    "\1\304\47\0\1\305\4\0\1\305\37\0\1\305\1\0"+
-    "\3\305\1\0\1\305\11\0\1\306\1\54\1\53\1\0"+
-    "\1\53\1\306\2\53\2\0\1\53\4\0\3\53\3\0"+
-    "\5\53\13\0\1\306\1\53\3\306\1\53\1\306\1\0"+
-    "\5\53\2\0\1\307\1\310\1\311\1\312\1\307\1\312"+
-    "\3\310\1\313\1\314\1\310\1\307\1\0\2\307\1\315"+
-    "\2\310\1\0\2\307\5\310\1\316\12\307\7\310\1\307"+
-    "\5\310\2\307\1\0\1\263\1\264\1\317\1\0\1\317"+
-    "\3\263\2\0\1\263\4\0\3\263\1\0\1\265\1\0"+
-    "\5\263\13\0\7\263\1\0\5\263\3\0\1\320\1\263"+
-    "\1\0\2\263\1\320\37\263\1\320\1\263\3\320\1\263"+
-    "\1\320\10\263\1\0\1\263\1\264\1\265\1\0\1\265"+
-    "\2\263\10\0\3\263\3\0\5\263\13\0\7\263\1\0"+
-    "\5\263\3\0\1\53\1\54\3\0\3\53\2\0\1\53"+
-    "\4\0\3\53\3\0\5\53\13\0\1\321\6\53\1\0"+
-    "\5\53\3\0\1\53\1\54\3\0\3\53\2\0\1\53"+
-    "\4\0\3\53\3\0\4\53\1\322\13\0\7\53\1\0"+
-    "\5\53\50\0\1\323\17\0\1\324\1\71\1\70\1\0"+
-    "\1\70\1\324\2\70\2\0\1\70\4\0\3\70\1\0"+
-    "\1\31\1\0\5\70\1\32\12\0\1\324\1\70\3\324"+
-    "\1\70\1\324\1\0\5\70\2\0\2\272\1\273\6\272"+
-    "\2\0\2\272\1\276\5\272\1\0\43\272\1\273\12\272"+
-    "\1\325\47\272\2\274\1\326\6\274\1\327\53\274\2\275"+
-    "\1\330\7\275\1\327\52\275\1\0\1\43\1\42\1\43"+
-    "\1\0\4\43\2\0\1\43\4\0\3\43\3\0\5\43"+
-    "\13\0\7\43\1\0\5\43\1\0\1\112\1\0\1\50"+
-    "\1\47\1\50\1\0\4\50\2\0\1\50\4\0\3\50"+
-    "\3\0\5\50\13\0\7\50\1\0\5\50\15\0\1\160"+
-    "\52\0\1\331\4\0\1\331\37\0\1\331\1\0\3\331"+
-    "\1\0\1\331\11\0\1\53\1\54\1\53\1\0\4\53"+
-    "\2\0\1\53\4\0\3\53\3\0\5\53\13\0\7\53"+
-    "\1\0\5\53\2\0\2\307\1\332\6\307\2\0\2\307"+
-    "\1\0\5\307\1\0\7\307\1\316\32\307\1\310\1\311"+
-    "\3\307\3\310\2\0\1\310\1\307\1\0\2\307\3\310"+
-    "\1\0\2\307\5\310\1\316\12\307\7\310\1\307\5\310"+
-    "\3\307\1\333\1\334\1\307\2\310\1\333\24\310\1\335"+
-    "\12\310\1\333\1\310\3\333\1\310\1\333\10\310\2\307"+
-    "\1\332\1\312\1\307\1\312\3\307\1\313\1\314\2\307"+
-    "\1\0\2\307\1\336\2\307\1\0\7\307\1\316\31\307"+
-    "\2\313\1\337\6\313\1\340\53\313\2\314\1\341\7\314"+
-    "\1\340\52\314\1\307\1\310\1\311\3\307\3\310\2\0"+
-    "\1\310\1\307\1\0\2\307\1\310\1\342\1\310\1\0"+
-    "\2\307\5\310\1\316\12\307\7\310\1\307\5\310\2\307"+
-    "\3\0\1\317\1\0\1\317\16\0\1\265\41\0\1\343"+
-    "\1\264\1\263\1\0\1\263\1\343\2\263\2\0\1\263"+
-    "\4\0\3\263\1\0\1\265\1\0\5\263\13\0\1\343"+
-    "\1\263\3\343\1\263\1\343\1\0\5\263\3\0\1\53"+
-    "\1\54\3\0\3\53\2\0\1\53\4\0\3\53\3\0"+
-    "\5\53\13\0\6\53\1\344\1\0\5\53\3\0\1\53"+
-    "\1\54\1\345\1\0\1\345\3\53\1\346\1\347\1\53"+
-    "\4\0\3\53\3\0\5\53\13\0\7\53\1\0\5\53"+
-    "\55\0\1\350\12\0\1\70\1\71\1\70\1\0\4\70"+
-    "\2\0\1\70\4\0\3\70\1\0\1\31\1\0\5\70"+
-    "\1\32\12\0\7\70\1\0\5\70\2\0\2\274\1\326"+
-    "\6\274\1\351\53\274\3\0\1\327\1\0\1\327\7\0"+
-    "\1\276\47\0\2\275\1\330\7\275\1\352\52\275\1\0"+
-    "\1\353\4\0\1\353\37\0\1\353\1\0\3\353\1\0"+
-    "\1\353\10\0\2\307\1\332\30\307\1\316\32\307\1\354"+
-    "\1\311\1\310\1\307\1\310\1\354\2\310\2\0\1\310"+
-    "\1\307\1\0\2\307\3\310\1\0\2\307\5\310\1\316"+
-    "\12\307\1\354\1\310\3\354\1\310\1\354\1\307\5\310"+
-    "\3\307\1\310\1\311\3\307\3\310\2\307\1\310\4\307"+
-    "\3\310\3\307\5\310\1\316\12\307\7\310\1\307\5\310"+
-    "\4\307\1\332\6\307\2\0\2\307\1\0\3\307\1\355"+
-    "\1\307\1\0\7\307\1\316\31\307\2\313\1\337\6\313"+
-    "\1\356\53\313\1\0\1\357\1\360\1\361\1\0\1\361"+
-    "\2\357\10\0\3\357\3\0\5\357\1\362\12\0\7\357"+
-    "\1\0\5\357\2\0\2\314\1\341\7\314\1\363\52\314"+
-    "\1\307\1\310\1\311\3\307\3\310\2\0\1\310\1\307"+
-    "\1\0\2\307\2\310\1\364\1\0\2\307\5\310\1\316"+
-    "\12\307\7\310\1\307\5\310\2\307\1\0\1\365\1\264"+
-    "\1\263\1\0\1\263\1\365\2\263\2\0\1\263\4\0"+
-    "\3\263\1\0\1\265\1\0\5\263\13\0\1\365\1\263"+
-    "\3\365\1\263\1\365\1\0\5\263\3\0\1\53\1\54"+
-    "\3\0\3\53\2\0\1\53\4\0\3\53\3\0\5\53"+
-    "\13\0\2\53\1\366\4\53\1\0\5\53\5\0\1\345"+
-    "\1\0\1\345\3\0\1\346\1\347\52\0\2\346\1\367"+
-    "\6\346\1\370\53\346\2\347\1\371\7\347\1\370\52\347"+
-    "\32\0\1\372\32\0\2\274\1\326\1\351\1\274\1\351"+
-    "\3\274\1\327\3\274\1\373\47\274\2\275\1\330\1\352"+
-    "\1\275\1\352\4\275\1\327\2\275\1\374\47\275\1\307"+
-    "\1\375\1\311\1\310\1\307\1\310\1\375\2\310\2\0"+
-    "\1\310\1\307\1\0\2\307\3\310\1\0\2\307\5\310"+
-    "\1\316\12\307\1\375\1\310\3\375\1\310\1\375\1\307"+
-    "\5\310\4\307\1\332\6\307\2\0\2\307\1\0\4\307"+
-    "\1\376\1\0\7\307\1\316\31\307\1\313\1\377\1\u0100"+
-    "\1\u0101\1\313\1\u0101\2\377\1\313\1\340\6\313\3\377"+
-    "\3\313\5\377\1\u0102\12\313\7\377\1\313\5\377\2\313"+
-    "\1\0\1\357\1\360\1\u0103\1\0\1\u0103\3\357\2\0"+
-    "\1\357\4\0\3\357\1\0\1\361\1\0\5\357\1\362"+
-    "\12\0\7\357\1\0\5\357\3\0\1\u0104\1\357\1\0"+
-    "\2\357\1\u0104\37\357\1\u0104\1\357\3\u0104\1\357\1\u0104"+
-    "\10\357\1\0\1\357\1\360\1\361\1\0\1\361\2\357"+
-    "\10\0\3\357\3\0\5\357\13\0\7\357\1\0\5\357"+
-    "\2\0\1\314\1\u0105\1\u0106\1\u0107\1\314\1\u0107\2\u0105"+
-    "\2\314\1\340\5\314\3\u0105\3\314\5\u0105\1\u0108\12\314"+
-    "\7\u0105\1\314\5\u0105\2\314\1\307\1\310\1\311\3\307"+
-    "\3\310\2\0\1\310\1\307\1\0\2\307\3\310\1\u0109"+
-    "\2\307\5\310\1\316\12\307\7\310\1\307\5\310\2\307"+
-    "\1\0\1\u010a\1\264\1\263\1\0\1\263\1\u010a\2\263"+
-    "\2\0\1\263\4\0\3\263\1\0\1\265\1\0\5\263"+
-    "\13\0\1\u010a\1\263\3\u010a\1\263\1\u010a\1\0\5\263"+
-    "\2\0\2\346\1\367\6\346\1\u010b\53\346\3\0\1\370"+
-    "\1\0\1\370\25\0\1\u010c\31\0\2\347\1\371\7\347"+
-    "\1\u010d\52\347\1\307\1\u010e\1\311\1\310\1\307\1\310"+
-    "\1\u010e\2\310\2\0\1\310\1\307\1\0\2\307\3\310"+
-    "\1\0\2\307\5\310\1\316\12\307\1\u010e\1\310\3\u010e"+
-    "\1\310\1\u010e\1\307\5\310\4\307\1\332\6\307\2\0"+
-    "\2\307\1\0\5\307\1\u0109\7\307\1\316\31\307\1\313"+
-    "\1\377\1\u0100\1\u010f\1\313\1\u010f\3\377\1\340\1\313"+
-    "\1\377\4\313\3\377\1\313\1\u0101\1\313\5\377\1\u0102"+
-    "\12\313\7\377\1\313\5\377\3\313\1\u0110\1\u0111\1\313"+
-    "\2\377\1\u0110\2\377\1\u0112\34\377\1\u0110\1\377\3\u0110"+
-    "\1\377\1\u0110\10\377\1\313\1\377\1\u0100\1\u0101\1\313"+
-    "\1\u0101\2\377\1\313\1\340\6\313\3\377\3\313\5\377"+
-    "\13\313\7\377\1\313\5\377\2\313\3\0\1\u0103\1\0"+
-    "\1\u0103\16\0\1\361\6\0\1\362\32\0\1\u0113\1\360"+
-    "\1\357\1\0\1\357\1\u0113\2\357\2\0\1\357\4\0"+
-    "\3\357\1\0\1\361\1\0\5\357\1\362\12\0\1\u0113"+
-    "\1\357\3\u0113\1\357\1\u0113\1\0\5\357\2\0\1\314"+
-    "\1\u0105\1\u0106\1\u0114\1\314\1\u0114\3\u0105\1\314\1\340"+
-    "\1\u0105\4\314\3\u0105\1\314\1\u0107\1\314\5\u0105\1\u0108"+
-    "\12\314\7\u0105\1\314\5\u0105\3\314\1\u0115\1\u0116\1\314"+
-    "\2\u0105\1\u0115\3\u0105\1\u0117\33\u0105\1\u0115\1\u0105\3\u0115"+
-    "\1\u0105\1\u0115\10\u0105\1\314\1\u0105\1\u0106\1\u0107\1\314"+
-    "\1\u0107\2\u0105\2\314\1\340\5\314\3\u0105\3\314\5\u0105"+
-    "\13\314\7\u0105\1\314\5\u0105\2\314\2\u0118\1\u0119\1\u0109"+
-    "\1\u0118\1\u0109\3\u0118\1\u011a\1\u011b\2\u0118\1\340\5\u0118"+
-    "\1\0\41\u0118\1\0\1\u011c\1\264\1\263\1\0\1\263"+
-    "\1\u011c\2\263\2\0\1\263\4\0\3\263\1\0\1\265"+
-    "\1\0\5\263\13\0\1\u011c\1\263\3\u011c\1\263\1\u011c"+
-    "\1\0\5\263\2\0\2\346\1\367\1\u010b\1\346\1\u010b"+
-    "\3\346\1\370\21\346\1\u011d\31\346\2\347\1\371\1\u010d"+
-    "\1\347\1\u010d\4\347\1\370\20\347\1\u011e\31\347\1\307"+
-    "\1\u011f\1\311\1\310\1\307\1\310\1\u011f\2\310\2\0"+
-    "\1\310\1\307\1\0\2\307\3\310\1\0\2\307\5\310"+
-    "\1\316\12\307\1\u011f\1\310\3\u011f\1\310\1\u011f\1\307"+
-    "\5\310\2\307\2\313\1\337\1\u010f\1\313\1\u010f\3\313"+
-    "\1\340\12\313\1\u0101\6\313\1\u0102\32\313\1\u0120\1\u0100"+
-    "\1\377\1\313\1\377\1\u0120\2\377\1\340\1\313\1\377"+
-    "\4\313\3\377\1\313\1\u0101\1\313\5\377\1\u0102\12\313"+
-    "\1\u0120\1\377\3\u0120\1\377\1\u0120\1\313\5\377\3\313"+
-    "\1\377\1\u0100\1\u010f\1\313\1\u010f\3\377\1\356\1\313"+
-    "\1\377\4\313\3\377\1\313\1\u0101\1\313\5\377\1\u0102"+
-    "\12\313\7\377\1\313\5\377\3\313\1\377\1\u0100\1\u0121"+
-    "\1\313\1\u0121\3\377\1\340\1\313\1\377\4\313\3\377"+
-    "\1\313\1\u0101\1\313\5\377\1\u0102\12\313\7\377\1\313"+
-    "\5\377\2\313\1\0\1\u0122\1\360\1\357\1\0\1\357"+
-    "\1\u0122\2\357\2\0\1\357\4\0\3\357\1\0\1\361"+
-    "\1\0\5\357\1\362\12\0\1\u0122\1\357\3\u0122\1\357"+
-    "\1\u0122\1\0\5\357\2\0\2\314\1\341\1\u0114\1\314"+
-    "\1\u0114\4\314\1\340\11\314\1\u0107\6\314\1\u0108\32\314"+
-    "\1\u0123\1\u0106\1\u0105\1\314\1\u0105\1\u0123\2\u0105\1\314"+
-    "\1\340\1\u0105\4\314\3\u0105\1\314\1\u0107\1\314\5\u0105"+
-    "\1\u0108\12\314\1\u0123\1\u0105\3\u0123\1\u0105\1\u0123\1\314"+
-    "\5\u0105\3\314\1\u0105\1\u0106\1\u0114\1\314\1\u0114\3\u0105"+
-    "\1\314\1\363\1\u0105\4\314\3\u0105\1\314\1\u0107\1\314"+
-    "\5\u0105\1\u0108\12\314\7\u0105\1\314\5\u0105\3\314\1\u0105"+
-    "\1\u0106\1\u0124\1\314\1\u0124\3\u0105\1\314\1\340\1\u0105"+
-    "\4\314\3\u0105\1\314\1\u0107\1\314\5\u0105\1\u0108\12\314"+
-    "\7\u0105\1\314\5\u0105\2\314\2\u0118\1\u0119\6\u0118\2\0"+
-    "\2\u0118\1\340\5\u0118\1\0\43\u0118\1\u0119\12\u0118\1\u0125"+
-    "\47\u0118\2\u011a\1\u0126\6\u011a\1\u0127\53\u011a\2\u011b\1\u0128"+
-    "\7\u011b\1\u0127\52\u011b\1\0\1\u0129\1\264\1\263\1\0"+
-    "\1\263\1\u0129\2\263\2\0\1\263\4\0\3\263\1\0"+
-    "\1\265\1\0\5\263\13\0\1\u0129\1\263\3\u0129\1\263"+
-    "\1\u0129\1\0\5\263\2\0\1\307\1\u012a\1\311\1\310"+
-    "\1\307\1\310\1\u012a\2\310\2\0\1\310\1\307\1\0"+
-    "\2\307\3\310\1\0\2\307\5\310\1\316\12\307\1\u012a"+
-    "\1\310\3\u012a\1\310\1\u012a\1\307\5\310\2\307\1\313"+
-    "\1\u012b\1\u0100\1\377\1\313\1\377\1\u012b\2\377\1\340"+
-    "\1\313\1\377\4\313\3\377\1\313\1\u0101\1\313\5\377"+
-    "\1\u0102\12\313\1\u012b\1\377\3\u012b\1\377\1\u012b\1\313"+
-    "\5\377\3\313\1\377\1\u0100\1\u0121\1\313\1\u0121\2\377"+
-    "\1\313\1\340\6\313\3\377\1\313\1\u0101\1\313\5\377"+
-    "\1\u0102\12\313\7\377\1\313\5\377\2\313\1\0\1\u012c"+
-    "\1\360\1\357\1\0\1\357\1\u012c\2\357\2\0\1\357"+
-    "\4\0\3\357\1\0\1\361\1\0\5\357\1\362\12\0"+
-    "\1\u012c\1\357\3\u012c\1\357\1\u012c\1\0\5\357\2\0"+
-    "\1\314\1\u012d\1\u0106\1\u0105\1\314\1\u0105\1\u012d\2\u0105"+
-    "\1\314\1\340\1\u0105\4\314\3\u0105\1\314\1\u0107\1\314"+
-    "\5\u0105\1\u0108\12\314\1\u012d\1\u0105\3\u012d\1\u0105\1\u012d"+
-    "\1\314\5\u0105\3\314\1\u0105\1\u0106\1\u0124\1\314\1\u0124"+
-    "\2\u0105\2\314\1\340\5\314\3\u0105\1\314\1\u0107\1\314"+
-    "\5\u0105\1\u0108\12\314\7\u0105\1\314\5\u0105\2\314\1\u0118"+
-    "\1\u012e\1\u012f\1\u0130\1\u0118\1\u0130\2\u012e\1\u0118\2\0"+
-    "\2\u0118\1\340\2\u0118\3\u012e\1\0\2\u0118\5\u012e\1\u0131"+
-    "\12\u0118\7\u012e\1\u0118\5\u012e\2\u0118\2\u011a\1\u0126\6\u011a"+
-    "\1\u0132\53\u011a\3\0\1\u0127\1\0\1\u0127\7\0\1\340"+
-    "\47\0\2\u011b\1\u0128\7\u011b\1\u0133\52\u011b\1\0\1\263"+
-    "\1\264\1\263\1\0\4\263\2\0\1\263\4\0\3\263"+
-    "\1\0\1\265\1\0\5\263\13\0\7\263\1\0\5\263"+
-    "\2\0\1\307\1\310\1\311\1\310\1\307\4\310\2\0"+
-    "\1\310\1\307\1\0\2\307\3\310\1\0\2\307\5\310"+
-    "\1\316\12\307\7\310\1\307\5\310\2\307\1\313\1\u0134"+
-    "\1\u0100\1\377\1\313\1\377\1\u0134\2\377\1\340\1\313"+
-    "\1\377\4\313\3\377\1\313\1\u0101\1\313\5\377\1\u0102"+
-    "\12\313\1\u0134\1\377\3\u0134\1\377\1\u0134\1\313\5\377"+
-    "\2\313\1\0\1\u0135\1\360\1\357\1\0\1\357\1\u0135"+
-    "\2\357\2\0\1\357\4\0\3\357\1\0\1\361\1\0"+
-    "\5\357\1\362\12\0\1\u0135\1\357\3\u0135\1\357\1\u0135"+
-    "\1\0\5\357\2\0\1\314\1\u0136\1\u0106\1\u0105\1\314"+
-    "\1\u0105\1\u0136\2\u0105\1\314\1\340\1\u0105\4\314\3\u0105"+
-    "\1\314\1\u0107\1\314\5\u0105\1\u0108\12\314\1\u0136\1\u0105"+
-    "\3\u0136\1\u0105\1\u0136\1\314\5\u0105\2\314\1\u0118\1\u012e"+
-    "\1\u012f\1\u0137\1\u0118\1\u0137\3\u012e\2\0\1\u012e\1\u0118"+
-    "\1\340\2\u0118\3\u012e\1\0\1\u0130\1\u0118\5\u012e\1\u0131"+
-    "\12\u0118\7\u012e\1\u0118\5\u012e\3\u0118\1\u0138\1\u0139\1\u0118"+
-    "\2\u012e\1\u0138\6\u012e\1\u013a\30\u012e\1\u0138\1\u012e\3\u0138"+
-    "\1\u012e\1\u0138\10\u012e\1\u0118\1\u012e\1\u012f\1\u0130\1\u0118"+
-    "\1\u0130\2\u012e\1\u0118\2\0\2\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\2\u0118\5\u012e\13\u0118\7\u012e\1\u0118\5\u012e\2\u0118"+
-    "\2\u011a\1\u0126\1\u0132\1\u011a\1\u0132\3\u011a\1\u0127\3\u011a"+
-    "\1\u013b\47\u011a\2\u011b\1\u0128\1\u0133\1\u011b\1\u0133\4\u011b"+
-    "\1\u0127\2\u011b\1\u013c\47\u011b\1\313\1\u013d\1\u0100\1\377"+
-    "\1\313\1\377\1\u013d\2\377\1\340\1\313\1\377\4\313"+
-    "\3\377\1\313\1\u0101\1\313\5\377\1\u0102\12\313\1\u013d"+
-    "\1\377\3\u013d\1\377\1\u013d\1\313\5\377\2\313\1\0"+
-    "\1\u013e\1\360\1\357\1\0\1\357\1\u013e\2\357\2\0"+
-    "\1\357\4\0\3\357\1\0\1\361\1\0\5\357\1\362"+
-    "\12\0\1\u013e\1\357\3\u013e\1\357\1\u013e\1\0\5\357"+
-    "\2\0\1\314\1\u013f\1\u0106\1\u0105\1\314\1\u0105\1\u013f"+
-    "\2\u0105\1\314\1\340\1\u0105\4\314\3\u0105\1\314\1\u0107"+
-    "\1\314\5\u0105\1\u0108\12\314\1\u013f\1\u0105\3\u013f\1\u0105"+
-    "\1\u013f\1\314\5\u0105\2\314\2\u0118\1\u0119\1\u0137\1\u0118"+
-    "\1\u0137\3\u0118\2\0\2\u0118\1\340\5\u0118\1\0\1\u0130"+
-    "\6\u0118\1\u0131\32\u0118\1\u0140\1\u012f\1\u012e\1\u0118\1\u012e"+
-    "\1\u0140\2\u012e\2\0\1\u012e\1\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118\1\u0140\1\u012e"+
-    "\3\u0140\1\u012e\1\u0140\1\u0118\5\u012e\3\u0118\1\u012e\1\u012f"+
-    "\1\u0137\1\u0118\1\u0137\3\u012e\2\u0118\1\u012e\1\u0118\1\u0125"+
-    "\2\u0118\3\u012e\1\u0118\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118"+
-    "\7\u012e\1\u0118\5\u012e\3\u0118\1\u012e\1\u012f\1\u0141\1\u0118"+
-    "\1\u0141\3\u012e\2\0\1\u012e\1\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118\7\u012e\1\u0118"+
-    "\5\u012e\2\u0118\1\u011a\1\u0142\1\u0143\1\u0144\1\u011a\1\u0144"+
-    "\2\u0142\1\u011a\1\u0127\6\u011a\3\u0142\3\u011a\5\u0142\1\u0145"+
-    "\12\u011a\7\u0142\1\u011a\5\u0142\2\u011a\1\u011b\1\u0146\1\u0147"+
-    "\1\u0148\1\u011b\1\u0148\2\u0146\2\u011b\1\u0127\5\u011b\3\u0146"+
-    "\3\u011b\5\u0146\1\u0149\12\u011b\7\u0146\1\u011b\5\u0146\2\u011b"+
-    "\1\313\1\u014a\1\u0100\1\377\1\313\1\377\1\u014a\2\377"+
-    "\1\340\1\313\1\377\4\313\3\377\1\313\1\u0101\1\313"+
-    "\5\377\1\u0102\12\313\1\u014a\1\377\3\u014a\1\377\1\u014a"+
-    "\1\313\5\377\2\313\1\0\1\357\1\360\1\357\1\0"+
-    "\4\357\2\0\1\357\4\0\3\357\1\0\1\361\1\0"+
-    "\5\357\1\362\12\0\7\357\1\0\5\357\2\0\1\314"+
-    "\1\u014b\1\u0106\1\u0105\1\314\1\u0105\1\u014b\2\u0105\1\314"+
-    "\1\340\1\u0105\4\314\3\u0105\1\314\1\u0107\1\314\5\u0105"+
-    "\1\u0108\12\314\1\u014b\1\u0105\3\u014b\1\u0105\1\u014b\1\314"+
-    "\5\u0105\2\314\1\u0118\1\u014c\1\u012f\1\u012e\1\u0118\1\u012e"+
-    "\1\u014c\2\u012e\2\0\1\u012e\1\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118\1\u014c\1\u012e"+
-    "\3\u014c\1\u012e\1\u014c\1\u0118\5\u012e\3\u0118\1\u012e\1\u012f"+
-    "\1\u0141\1\u0118\1\u0141\2\u012e\1\u0118\2\0\2\u0118\1\340"+
-    "\2\u0118\3\u012e\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118"+
-    "\7\u012e\1\u0118\5\u012e\2\u0118\1\u011a\1\u0142\1\u0143\1\u014d"+
-    "\1\u011a\1\u014d\3\u0142\1\u0127\1\u011a\1\u0142\4\u011a\3\u0142"+
-    "\1\u011a\1\u0144\1\u011a\5\u0142\1\u0145\12\u011a\7\u0142\1\u011a"+
-    "\5\u0142\3\u011a\1\u014e\1\u014f\1\u011a\2\u0142\1\u014e\2\u0142"+
-    "\1\u0150\34\u0142\1\u014e\1\u0142\3\u014e\1\u0142\1\u014e\10\u0142"+
-    "\1\u011a\1\u0142\1\u0143\1\u0144\1\u011a\1\u0144\2\u0142\1\u011a"+
-    "\1\u0127\6\u011a\3\u0142\3\u011a\5\u0142\13\u011a\7\u0142\1\u011a"+
-    "\5\u0142\2\u011a\1\u011b\1\u0146\1\u0147\1\u0151\1\u011b\1\u0151"+
-    "\3\u0146\1\u011b\1\u0127\1\u0146\4\u011b\3\u0146\1\u011b\1\u0148"+
-    "\1\u011b\5\u0146\1\u0149\12\u011b\7\u0146\1\u011b\5\u0146\3\u011b"+
-    "\1\u0152\1\u0153\1\u011b\2\u0146\1\u0152\3\u0146\1\u0154\33\u0146"+
-    "\1\u0152\1\u0146\3\u0152\1\u0146\1\u0152\10\u0146\1\u011b\1\u0146"+
-    "\1\u0147\1\u0148\1\u011b\1\u0148\2\u0146\2\u011b\1\u0127\5\u011b"+
-    "\3\u0146\3\u011b\5\u0146\13\u011b\7\u0146\1\u011b\5\u0146\2\u011b"+
-    "\1\313\1\377\1\u0100\1\377\1\313\4\377\1\340\1\313"+
-    "\1\377\4\313\3\377\1\313\1\u0101\1\313\5\377\1\u0102"+
-    "\12\313\7\377\1\313\5\377\2\313\1\314\1\u0105\1\u0106"+
-    "\1\u0105\1\314\4\u0105\1\314\1\340\1\u0105\4\314\3\u0105"+
-    "\1\314\1\u0107\1\314\5\u0105\1\u0108\12\314\7\u0105\1\314"+
-    "\5\u0105\2\314\1\u0118\1\u0155\1\u012f\1\u012e\1\u0118\1\u012e"+
-    "\1\u0155\2\u012e\2\0\1\u012e\1\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118\1\u0155\1\u012e"+
-    "\3\u0155\1\u012e\1\u0155\1\u0118\5\u012e\2\u0118\2\u011a\1\u0126"+
-    "\1\u014d\1\u011a\1\u014d\3\u011a\1\u0127\12\u011a\1\u0144\6\u011a"+
-    "\1\u0145\32\u011a\1\u0156\1\u0143\1\u0142\1\u011a\1\u0142\1\u0156"+
-    "\2\u0142\1\u0127\1\u011a\1\u0142\4\u011a\3\u0142\1\u011a\1\u0144"+
-    "\1\u011a\5\u0142\1\u0145\12\u011a\1\u0156\1\u0142\3\u0156\1\u0142"+
-    "\1\u0156\1\u011a\5\u0142\3\u011a\1\u0142\1\u0143\1\u014d\1\u011a"+
-    "\1\u014d\3\u0142\1\u0132\1\u011a\1\u0142\4\u011a\3\u0142\1\u011a"+
-    "\1\u0144\1\u011a\5\u0142\1\u0145\12\u011a\7\u0142\1\u011a\5\u0142"+
-    "\3\u011a\1\u0142\1\u0143\1\u0157\1\u011a\1\u0157\3\u0142\1\u0127"+
-    "\1\u011a\1\u0142\1\u011a\1\u013b\2\u011a\3\u0142\1\u011a\1\u0144"+
-    "\1\u011a\5\u0142\1\u0145\12\u011a\7\u0142\1\u011a\5\u0142\2\u011a"+
-    "\2\u011b\1\u0128\1\u0151\1\u011b\1\u0151\4\u011b\1\u0127\11\u011b"+
-    "\1\u0148\6\u011b\1\u0149\32\u011b\1\u0158\1\u0147\1\u0146\1\u011b"+
-    "\1\u0146\1\u0158\2\u0146\1\u011b\1\u0127\1\u0146\4\u011b\3\u0146"+
-    "\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149\12\u011b\1\u0158\1\u0146"+
-    "\3\u0158\1\u0146\1\u0158\1\u011b\5\u0146\3\u011b\1\u0146\1\u0147"+
-    "\1\u0151\1\u011b\1\u0151\3\u0146\1\u011b\1\u0133\1\u0146\4\u011b"+
-    "\3\u0146\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149\12\u011b\7\u0146"+
-    "\1\u011b\5\u0146\3\u011b\1\u0146\1\u0147\1\u0159\1\u011b\1\u0159"+
-    "\3\u0146\1\u011b\1\u0127\1\u0146\1\u011b\1\u013c\2\u011b\3\u0146"+
-    "\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149\12\u011b\7\u0146\1\u011b"+
-    "\5\u0146\2\u011b\1\u0118\1\u015a\1\u012f\1\u012e\1\u0118\1\u012e"+
-    "\1\u015a\2\u012e\2\0\1\u012e\1\u0118\1\340\2\u0118\3\u012e"+
-    "\1\0\1\u0130\1\u0118\5\u012e\1\u0131\12\u0118\1\u015a\1\u012e"+
-    "\3\u015a\1\u012e\1\u015a\1\u0118\5\u012e\2\u0118\1\u011a\1\u015b"+
-    "\1\u0143\1\u0142\1\u011a\1\u0142\1\u015b\2\u0142\1\u0127\1\u011a"+
-    "\1\u0142\4\u011a\3\u0142\1\u011a\1\u0144\1\u011a\5\u0142\1\u0145"+
-    "\12\u011a\1\u015b\1\u0142\3\u015b\1\u0142\1\u015b\1\u011a\5\u0142"+
-    "\4\u011a\1\u0126\1\u0157\1\u011a\1\u0157\3\u011a\1\u0127\3\u011a"+
-    "\1\u013b\6\u011a\1\u0144\6\u011a\1\u0145\31\u011a\1\u011b\1\u015c"+
-    "\1\u0147\1\u0146\1\u011b\1\u0146\1\u015c\2\u0146\1\u011b\1\u0127"+
-    "\1\u0146\4\u011b\3\u0146\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149"+
-    "\12\u011b\1\u015c\1\u0146\3\u015c\1\u0146\1\u015c\1\u011b\5\u0146"+
-    "\4\u011b\1\u0128\1\u0159\1\u011b\1\u0159\4\u011b\1\u0127\2\u011b"+
-    "\1\u013c\6\u011b\1\u0148\6\u011b\1\u0149\31\u011b\1\u0118\1\u015d"+
-    "\1\u012f\1\u012e\1\u0118\1\u012e\1\u015d\2\u012e\2\0\1\u012e"+
-    "\1\u0118\1\340\2\u0118\3\u012e\1\0\1\u0130\1\u0118\5\u012e"+
-    "\1\u0131\12\u0118\1\u015d\1\u012e\3\u015d\1\u012e\1\u015d\1\u0118"+
-    "\5\u012e\2\u0118\1\u011a\1\u015e\1\u0143\1\u0142\1\u011a\1\u0142"+
-    "\1\u015e\2\u0142\1\u0127\1\u011a\1\u0142\4\u011a\3\u0142\1\u011a"+
-    "\1\u0144\1\u011a\5\u0142\1\u0145\12\u011a\1\u015e\1\u0142\3\u015e"+
-    "\1\u0142\1\u015e\1\u011a\5\u0142\2\u011a\1\u011b\1\u015f\1\u0147"+
-    "\1\u0146\1\u011b\1\u0146\1\u015f\2\u0146\1\u011b\1\u0127\1\u0146"+
-    "\4\u011b\3\u0146\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149\12\u011b"+
-    "\1\u015f\1\u0146\3\u015f\1\u0146\1\u015f\1\u011b\5\u0146\2\u011b"+
-    "\1\u0118\1\u012e\1\u012f\1\u012e\1\u0118\4\u012e\2\0\1\u012e"+
-    "\1\u0118\1\340\2\u0118\3\u012e\1\0\1\u0130\1\u0118\5\u012e"+
-    "\1\u0131\12\u0118\7\u012e\1\u0118\5\u012e\2\u0118\1\u011a\1\u0160"+
-    "\1\u0143\1\u0142\1\u011a\1\u0142\1\u0160\2\u0142\1\u0127\1\u011a"+
-    "\1\u0142\4\u011a\3\u0142\1\u011a\1\u0144\1\u011a\5\u0142\1\u0145"+
-    "\12\u011a\1\u0160\1\u0142\3\u0160\1\u0142\1\u0160\1\u011a\5\u0142"+
-    "\2\u011a\1\u011b\1\u0161\1\u0147\1\u0146\1\u011b\1\u0146\1\u0161"+
-    "\2\u0146\1\u011b\1\u0127\1\u0146\4\u011b\3\u0146\1\u011b\1\u0148"+
-    "\1\u011b\5\u0146\1\u0149\12\u011b\1\u0161\1\u0146\3\u0161\1\u0146"+
-    "\1\u0161\1\u011b\5\u0146\2\u011b\1\u011a\1\u0162\1\u0143\1\u0142"+
-    "\1\u011a\1\u0142\1\u0162\2\u0142\1\u0127\1\u011a\1\u0142\4\u011a"+
-    "\3\u0142\1\u011a\1\u0144\1\u011a\5\u0142\1\u0145\12\u011a\1\u0162"+
-    "\1\u0142\3\u0162\1\u0142\1\u0162\1\u011a\5\u0142\2\u011a\1\u011b"+
-    "\1\u0163\1\u0147\1\u0146\1\u011b\1\u0146\1\u0163\2\u0146\1\u011b"+
-    "\1\u0127\1\u0146\4\u011b\3\u0146\1\u011b\1\u0148\1\u011b\5\u0146"+
-    "\1\u0149\12\u011b\1\u0163\1\u0146\3\u0163\1\u0146\1\u0163\1\u011b"+
-    "\5\u0146\2\u011b\1\u011a\1\u0142\1\u0143\1\u0142\1\u011a\4\u0142"+
-    "\1\u0127\1\u011a\1\u0142\4\u011a\3\u0142\1\u011a\1\u0144\1\u011a"+
-    "\5\u0142\1\u0145\12\u011a\7\u0142\1\u011a\5\u0142\2\u011a\1\u011b"+
-    "\1\u0146\1\u0147\1\u0146\1\u011b\4\u0146\1\u011b\1\u0127\1\u0146"+
-    "\4\u011b\3\u0146\1\u011b\1\u0148\1\u011b\5\u0146\1\u0149\12\u011b"+
-    "\7\u0146\1\u011b\5\u0146\2\u011b";
-
-  private static int [] zzUnpackTrans() {
-    int [] result = new int[16430];
-    int offset = 0;
-    offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackTrans(String packed, int offset, int [] result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      value--;
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-
-  /* error codes */
-  private static final int ZZ_UNKNOWN_ERROR = 0;
-  private static final int ZZ_NO_MATCH = 1;
-  private static final int ZZ_PUSHBACK_2BIG = 2;
-
-  /* error messages for the codes above */
-  private static final String ZZ_ERROR_MSG[] = {
-    "Unkown internal scanner error",
-    "Error: could not match input",
-    "Error: pushback value was too large"
-  };
-
-  /**
-   * ZZ_ATTRIBUTE[aState] contains the attributes of state <code>aState</code>
-   */
-  private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
-
-  private static final String ZZ_ATTRIBUTE_PACKED_0 =
-    "\1\0\1\11\6\1\2\11\3\1\1\11\7\1\2\0"+
-    "\1\11\1\0\1\11\1\1\2\0\1\11\2\0\1\1"+
-    "\1\0\1\1\2\0\1\1\1\0\2\1\1\0\1\1"+
-    "\1\0\5\1\4\0\2\11\2\0\3\1\1\0\13\1"+
-    "\1\11\1\0\1\1\1\11\14\1\4\0\3\1\1\0"+
-    "\1\1\12\0\4\1\1\0\7\1\2\11\2\0\1\1"+
-    "\1\0\1\1\2\0\2\1\5\0\1\11\11\1\2\0"+
-    "\1\1\1\0\4\1\3\0\10\1\2\0\1\1\1\0"+
-    "\3\1\2\0\6\1\2\0\2\1\6\0\1\11\5\1"+
-    "\1\11\2\1\1\0\1\1\4\0\6\1\2\0\1\1"+
-    "\3\0\1\1\1\0\3\1\4\0\3\1\6\0\1\11"+
-    "\1\1\5\0\1\11\1\0\3\1\3\0\1\11\3\1"+
-    "\4\0\1\1\5\0\1\1\1\0\1\1\1\0\1\11"+
-    "\1\0\1\1\15\0\4\1\11\0\2\1\6\0\1\1"+
-    "\23\0\1\1\3\0\1\1\32\0";
-
-  private static int [] zzUnpackAttribute() {
-    int [] result = new int[355];
-    int offset = 0;
-    offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
-    return result;
-  }
-
-  private static int zzUnpackAttribute(String packed, int offset, int [] 
result) {
-    int i = 0;       /* index in packed string  */
-    int j = offset;  /* index in unpacked array */
-    int l = packed.length();
-    while (i < l) {
-      int count = packed.charAt(i++);
-      int value = packed.charAt(i++);
-      do result[j++] = value; while (--count > 0);
-    }
-    return j;
-  }
-
-  /** the input device */
-  private java.io.Reader zzReader;
-
-  /** the current state of the DFA */
-  private int zzState;
-
-  /** the current lexical state */
-  private int zzLexicalState = YYINITIAL;
-
-  /** this buffer contains the current text to be matched and is
-      the source of the yytext() string */
-  private char zzBuffer[] = new char[ZZ_BUFFERSIZE];
-
-  /** the textposition at the last accepting state */
-  private int zzMarkedPos;
-
-  /** the textposition at the last state to be included in yytext */
-  private int zzPushbackPos;
-
-  /** the current text position in the buffer */
-  private int zzCurrentPos;
-
-  /** startRead marks the beginning of the yytext() string in the buffer */
-  private int zzStartRead;
-
-  /** endRead marks the last character in the buffer, that has been read
-      from input */
-  private int zzEndRead;
-  
-  /** zzAtEOF == true <=> the scanner is at the EOF */
-  private boolean zzAtEOF;
-
-  /* user code: */
-       // Put stuff to include in the class here
-       String detectedCharset;
-
-       // External flag
-       boolean paranoidStringCheck = false;
-       boolean deleteErrors = true;
-       boolean debug = true;
-       
-       // Internal flags
-       boolean postBadImportFlag = false; // both URLs and @import's
-       boolean importFlag = false;
-       boolean urlFlag = false;
-
-       // Writer
-       Writer w = null; // Will NPE if not initialized properly
-
-       public void parse () throws IOException {
-               while (yylex() != null);
-       }
-       
-       CSSTokenizerFilter(Reader r, Writer w, boolean paranoidStringCheck) {
-               this(r);
-               this.w = w;
-               this.paranoidStringCheck = paranoidStringCheck;
-       }
-
-       void throwError(String s) throws IOException {
-               throw new IllegalStateException("You MUST override 
throwError!");
-       }
-
-       String processImportURL(String s) throws CommentException {
-               throw new IllegalStateException("You MUST override 
processImportURL!");
-       }
-
-       String processURL(String s) throws CommentException {
-               throw new IllegalStateException("You MUST override 
processURL!");
-       }
-       
-       void log(String s) {
-               System.err.println("CSSTokenizerFilter: "+s);
-       }
-
-       void logError(String s) {
-               System.err.println("CSSTokenizerFilter ERROR: "+s);
-       }
-       
-       static String unquote(String s, char c) {
-               if(s.length() > 1) {
-                       if(s.charAt(s.length()-1) == c) {
-                               s = s.substring(1, s.length()-1);
-                               return s;
-                       } else return "";
-               } else return "";
-       }
-       
-       // This is not very efficient. The parser below knows the quoting rules 
too.
-       
-       static boolean isHexDigit(char c) {
-               return ('a' <= c && c <= 'f' ||
-                       'A' <= c && c <= 'F' ||
-                       '0' <= c && c <= '9');
-       }
-       
-       static String l10n(String key) {
-               return L10n.getString("CSSTokenizerFilter."+key);
-       }
-       
-       class DecodedStringThingy {
-               char quote; // " " means not quoted
-               boolean url; // in a url() ?
-               String data;
-               public String suffix; // includes any whitespace
-               public DecodedStringThingy(String s) {
-                       if(s.startsWith("url(")) {
-                               s = s.substring("url(".length());
-                               url = true;
-                       }
-                       char q = s.charAt(0);
-                       if(q == '\'' || q == '\"') {
-                               quote = q;
-                               s = s.substring(1);
-                       } else quote = ' ';
-                       StringBuffer buffer = new StringBuffer();
-                       int x = 0;
-                       boolean justEscaping = false;
-                       boolean stillEscaping = false;
-                       StringBuffer hexEscape = new StringBuffer();
-                       while(x < s.length()) {
-                               char c = s.charAt(x);
-                               x++;
-                               if(justEscaping) {
-                                       if(c == '\n') {
-                                               buffer.append(c);
-                                               justEscaping = false;
-                                       } else if(isHexDigit(c)) {
-                                               hexEscape.append(c);
-                                               justEscaping = false;
-                                               stillEscaping = true;
-                                       } else {
-                                               buffer.append(c);
-                                               // Will need to be reencoded if 
quote or \n
-                                               justEscaping = false;
-                                       }
-                               } else if(stillEscaping) {
-                                       if(isHexDigit(c) && hexEscape.length() 
< 6) {
-                                               hexEscape.append(c);
-                                       } else if(Character.isWhitespace(c)) {
-                                               // Ignore one whitespace char 
after an escape
-                                               int d = 
Integer.parseInt(hexEscape.toString(),
-                                                                        16);
-                                               // FIXME once we can use 1.5, 
use Characters.toChars(int).
-                                               if(d > 0xFFFF) {
-                                                       String error = 
-                                                               
l10n("supplementalCharsNotSupported");
-                                                       logError(error);
-                                                       try {
-                                                               w.write("/* 
"+error+"*/");
-                                                       } catch (IOException e) 
{};
-                                               } else {
-                                                       c = (char)d;
-                                                       buffer.append(c);
-                                               }
-                                               stillEscaping = false;
-                                               hexEscape = new StringBuffer();
-                                       } else {
-                                               int d = 
Integer.parseInt(hexEscape.toString(),
-                                                                        16);
-                                               // FIXME once we can use 1.5, 
use Characters.toChars(int).
-                                               if(d > 0xFFFF) {
-                                                       String error = 
-                                                               
l10n("supplementalCharsNotSupported");
-                                                       logError(error);
-                                                       try {
-                                                               w.write("/* 
"+error+"*/");
-                                                       } catch (IOException e) 
{};
-                                               } else {
-                                                       char o = (char)d;
-                                                       buffer.append(o);
-                                               }
-                                               buffer.append(c);
-                                               stillEscaping = false;
-                                               hexEscape = new StringBuffer();
-                                       }
-                               } else {
-                                       if(quote != ' ' && c == quote) {
-                                               break;
-                                       } else if (quote == ' ' && c == ')') {
-                                               break;
-                                       } else if (c == '\\') {
-                                               justEscaping = true;
-                                       } else {
-                                               buffer.append(c);
-                                       }
-                               }
-                       }
-                       data = buffer.toString();
-                       if(url && s.length() > x && s.charAt(x) == ')')
-                               x++;
-                       if(x < (s.length()))
-                               suffix = s.substring(x);
-                       else
-                               suffix = "";
-               }
-               
-               public String toString() {
-                       StringBuffer out = new StringBuffer();
-                       if(url) out.append("url(");
-                       if(quote != ' ') out.append(quote);
-                       out.append(unescapeData());
-                       if(quote != ' ') out.append(quote);
-                       if(url) out.append(")");
-                       out.append(suffix);
-                       return out.toString();
-               }
-               
-               public String unescapeData() {
-                       StringBuffer sb = new StringBuffer();
-                       for(int i=0;i<data.length();i++) {
-                               char c = data.charAt(i);
-                               if(c == quote || c == '\n') {
-                                       sb.append('\\');
-                               }
-                               sb.append(c);
-                       }
-                       return sb.toString();
-               }
-       }
-       
-       String commentEncode(String s) {
-               StringBuffer sb = new StringBuffer(s.length());
-               for(int i=0;i<s.length();i++) {
-                       char c = s.charAt(i);
-                       if(c == '/')
-                               sb.append("\\/");
-                       else
-                               sb.append(c);
-               }
-               return sb.toString();
-       }
-
-
-  /**
-   * Creates a new scanner
-   * There is also a java.io.InputStream version of this constructor.
-   *
-   * @param   in  the java.io.Reader to read input from.
-   */
-  CSSTokenizerFilter(java.io.Reader in) {
-    this.zzReader = in;
-  }
-
-  /**
-   * Creates a new scanner.
-   * There is also java.io.Reader version of this constructor.
-   *
-   * @param   in  the java.io.Inputstream to read input from.
-   */
-  CSSTokenizerFilter(java.io.InputStream in) {
-    this(new java.io.InputStreamReader(in));
-  }
-
-  /** 
-   * Unpacks the compressed character translation table.
-   *
-   * @param packed   the packed character translation table
-   * @return         the unpacked character translation table
-   */
-  private static char [] zzUnpackCMap(String packed) {
-    char [] map = new char[0x10000];
-    int i = 0;  /* index in packed string  */
-    int j = 0;  /* index in unpacked array */
-    while (i < 182) {
-      int  count = packed.charAt(i++);
-      char value = packed.charAt(i++);
-      do map[j++] = value; while (--count > 0);
-    }
-    return map;
-  }
-
-
-  /**
-   * Refills the input buffer.
-   *
-   * @return      <code>false</code>, iff there was new input.
-   * 
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  private boolean zzRefill() throws java.io.IOException {
-
-    /* first: make room (if you can) */
-    if (zzStartRead > 0) {
-      System.arraycopy(zzBuffer, zzStartRead,
-                       zzBuffer, 0,
-                       zzEndRead-zzStartRead);
-
-      /* translate stored positions */
-      zzEndRead-= zzStartRead;
-      zzCurrentPos-= zzStartRead;
-      zzMarkedPos-= zzStartRead;
-      zzPushbackPos-= zzStartRead;
-      zzStartRead = 0;
-    }
-
-    /* is the buffer big enough? */
-    if (zzCurrentPos >= zzBuffer.length) {
-      /* if not: blow it up */
-      char newBuffer[] = new char[zzCurrentPos*2];
-      System.arraycopy(zzBuffer, 0, newBuffer, 0, zzBuffer.length);
-      zzBuffer = newBuffer;
-    }
-
-    /* finally: fill the buffer with new input */
-    int numRead = zzReader.read(zzBuffer, zzEndRead,
-                                            zzBuffer.length-zzEndRead);
-
-    if (numRead < 0) {
-      return true;
-    }
-    else {
-      zzEndRead+= numRead;
-      return false;
-    }
-  }
-
-    
-  /**
-   * Closes the input stream.
-   */
-  public final void yyclose() throws java.io.IOException {
-    zzAtEOF = true;            /* indicate end of file */
-    zzEndRead = zzStartRead;  /* invalidate buffer    */
-
-    if (zzReader != null)
-      zzReader.close();
-  }
-
-
-  /**
-   * Resets the scanner to read from a new input stream.
-   * Does not close the old reader.
-   *
-   * All internal variables are reset, the old input stream 
-   * <b>cannot</b> be reused (internal buffer is discarded and lost).
-   * Lexical state is set to <tt>ZZ_INITIAL</tt>.
-   *
-   * @param reader   the new input stream 
-   */
-  public final void yyreset(java.io.Reader reader) {
-    zzReader = reader;
-    zzAtEOF  = false;
-    zzEndRead = zzStartRead = 0;
-    zzCurrentPos = zzMarkedPos = zzPushbackPos = 0;
-    zzLexicalState = YYINITIAL;
-  }
-
-
-  /**
-   * Returns the current lexical state.
-   */
-  public final int yystate() {
-    return zzLexicalState;
-  }
-
-
-  /**
-   * Enters a new lexical state
-   *
-   * @param newState the new lexical state
-   */
-  public final void yybegin(int newState) {
-    zzLexicalState = newState;
-  }
-
-
-  /**
-   * Returns the text matched by the current regular expression.
-   */
-  public final String yytext() {
-    return new String( zzBuffer, zzStartRead, zzMarkedPos-zzStartRead );
-  }
-
-
-  /**
-   * Returns the character at position <tt>pos</tt> from the 
-   * matched text. 
-   * 
-   * It is equivalent to yytext().charAt(pos), but faster
-   *
-   * @param pos the position of the character to fetch. 
-   *            A value from 0 to yylength()-1.
-   *
-   * @return the character at position pos
-   */
-  public final char yycharat(int pos) {
-    return zzBuffer[zzStartRead+pos];
-  }
-
-
-  /**
-   * Returns the length of the matched text region.
-   */
-  public final int yylength() {
-    return zzMarkedPos-zzStartRead;
-  }
-
-
-  /**
-   * Reports an error that occured while scanning.
-   *
-   * In a wellformed scanner (no or only correct usage of 
-   * yypushback(int) and a match-all fallback rule) this method 
-   * will only be called with things that "Can't Possibly Happen".
-   * If this method is called, something is seriously wrong
-   * (e.g. a JFlex bug producing a faulty scanner etc.).
-   *
-   * Usual syntax/scanner level error handling should be done
-   * in error fallback rules.
-   *
-   * @param   errorCode  the code of the errormessage to display
-   */
-  private void zzScanError(int errorCode) {
-    String message;
-    try {
-      message = ZZ_ERROR_MSG[errorCode];
-    }
-    catch (ArrayIndexOutOfBoundsException e) {
-      message = ZZ_ERROR_MSG[ZZ_UNKNOWN_ERROR];
-    }
-
-    throw new Error(message);
-  } 
-
-
-  /**
-   * Pushes the specified amount of characters back into the input stream.
-   *
-   * They will be read again by then next call of the scanning method
-   *
-   * @param number  the number of characters to be read again.
-   *                This number must not be greater than yylength()!
-   */
-  public void yypushback(int number)  {
-    if ( number > yylength() )
-      zzScanError(ZZ_PUSHBACK_2BIG);
-
-    zzMarkedPos -= number;
-  }
-
-
-  /**
-   * Resumes scanning until the next regular expression is matched,
-   * the end of input is encountered or an I/O-Error occurs.
-   *
-   * @return      the next token
-   * @exception   java.io.IOException  if any I/O-Error occurs
-   */
-  public Yytoken yylex() throws java.io.IOException {
-    int zzInput;
-    int zzAction;
-
-    // cached fields:
-    int zzCurrentPosL;
-    int zzMarkedPosL;
-    int zzEndReadL = zzEndRead;
-    char [] zzBufferL = zzBuffer;
-    char [] zzCMapL = ZZ_CMAP;
-
-    int [] zzTransL = ZZ_TRANS;
-    int [] zzRowMapL = ZZ_ROWMAP;
-    int [] zzAttrL = ZZ_ATTRIBUTE;
-
-    while (true) {
-      zzMarkedPosL = zzMarkedPos;
-
-      zzAction = -1;
-
-      zzCurrentPosL = zzCurrentPos = zzStartRead = zzMarkedPosL;
-  
-      zzState = zzLexicalState;
-
-
-      zzForAction: {
-        while (true) {
-    
-          if (zzCurrentPosL < zzEndReadL)
-            zzInput = zzBufferL[zzCurrentPosL++];
-          else if (zzAtEOF) {
-            zzInput = YYEOF;
-            break zzForAction;
-          }
-          else {
-            // store back cached positions
-            zzCurrentPos  = zzCurrentPosL;
-            zzMarkedPos   = zzMarkedPosL;
-            boolean eof = zzRefill();
-            // get translated positions and possibly new buffer
-            zzCurrentPosL  = zzCurrentPos;
-            zzMarkedPosL   = zzMarkedPos;
-            zzBufferL      = zzBuffer;
-            zzEndReadL     = zzEndRead;
-            if (eof) {
-              zzInput = YYEOF;
-              break zzForAction;
-            }
-            else {
-              zzInput = zzBufferL[zzCurrentPosL++];
-            }
-          }
-          int zzNext = zzTransL[ zzRowMapL[zzState] + zzCMapL[zzInput] ];
-          if (zzNext == -1) break zzForAction;
-          zzState = zzNext;
-
-          int zzAttributes = zzAttrL[zzState];
-          if ( (zzAttributes & 1) == 1 ) {
-            zzAction = zzState;
-            zzMarkedPosL = zzCurrentPosL;
-            if ( (zzAttributes & 8) == 8 ) break zzForAction;
-          }
-
-        }
-      }
-
-      // store back cached position
-      zzMarkedPos = zzMarkedPosL;
-
-      switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
-        case 13: 
-          { if(debug) log("Deleted unofficial ident: "+yytext());
-       w.write("/* " + l10n("deletedUnofficialIdent") + " */");
-          }
-        case 33: break;
-        case 20: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched unicode: "+s);
-          }
-        case 34: break;
-        case 2: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched ident: "+s);
-          }
-        case 35: break;
-        case 27: 
-          { String s = yytext();
-       s = s.substring("@media".length()).trim();
-       w.write("@media "+s+" ");
-       if(debug) log("Matched @media: "+s);
-          }
-        case 36: break;
-        case 11: 
-          { String s = yytext();
-       if(debug) log("Matched string: "+s);
-       if(paranoidStringCheck && s.indexOf(':') != -1) {
-               w.write("/* "+l10n("deletedDisallowedString")+" */");
-               log("Deleted disallowed string: "+s);
-       } else {
-               w.write(s);
-       }
-          }
-        case 37: break;
-        case 21: 
-          { String s = yytext();
-       if(debug) log("Got hexcolor: "+s);
-       w.write(s);
-          }
-        case 38: break;
-        case 7: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched open braces: "+s);
-          }
-        case 39: break;
-        case 6: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched semicolon: "+s);
-          }
-        case 40: break;
-        case 12: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched number: "+s);
-          }
-        case 41: break;
-        case 26: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched @page: "+s);
-          }
-        case 42: break;
-        case 16: 
-          { String s = yytext();
-       w.write(s); 
-       if(debug) log("Matched ~=: "+s);
-          }
-        case 43: break;
-        case 23: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched HTML comment: "+s);
-          }
-        case 44: break;
-        case 28: 
-          { if(debug) log("Deleted unofficial ident with url: "+yytext());
-       w.write("/* " + l10n("deletedUnofficialIdentWithURL") + " */");
-          }
-        case 45: break;
-        case 8: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched close braces: "+s);
-          }
-        case 46: break;
-        case 25: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched unicode range: "+s);
-          }
-        case 47: break;
-        case 24: 
-          { // This is horrible. However it seems that there is no other way 
to do it with either jflex or CUP, as {URL} cannot be an unambiguous token :(
-       String s = yytext();
-       if(debug) log("Recognized URL: "+s);
-       
-       DecodedStringThingy dst = new DecodedStringThingy(s);
-       
-       if(!dst.url) {
-               throw new IllegalStateException("parsing url().. isn't a 
url()");
-       }
-       if(dst.suffix.length() > 0) {
-               yypushback(dst.suffix.length());
-               dst.suffix = "";
-       }
-       
-       s = dst.data;
-       if(debug) log("URL now: "+s);
-       try {
-               s = processURL(s);
-               dst.data = s;
-               if(s == null || s.equals("")) {
-                       if(debug) log("URL invalid");
-                       w.write("url()");
-               } else {
-                       s = dst.toString();
-                       if(debug) log("Writing: "+s);
-                       w.write(s);
-               }
-       } catch (CommentException e) {
-               w.write("/* "+commentEncode(e.getMessage())+" */");
-       }
-          }
-        case 48: break;
-        case 30: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched @font-face: "+s);
-          }
-        case 49: break;
-        case 5: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched function end: "+s);
-          }
-        case 50: break;
-        case 29: 
-          { String s = yytext();
-       if(debug) log("Found @import: "+s);
-       s = s.substring("@import".length());
-       s = s.trim();
-       DecodedStringThingy dst = new DecodedStringThingy(s);
-       s = dst.data;
-       if(debug) log("URL: "+s);
-       try {
-               s = processImportURL(s);
-               dst.data = s;
-               if(debug) log("Processed URL: "+s);
-               if(dst.quote == ' ') dst.quote = '\"';
-               if (!(s == null || s.equals(""))) {
-                       if(debug) log("URL now: "+s);
-                       s = "@import "+dst.toString();
-                       if(debug) log("Writing: "+s);
-                       w.write(s);
-               } else
-                       if(debug) log("Dropped @import");
-       } catch (CommentException e) {
-               w.write("/* " + commentEncode(e.getMessage()) + " */");
-       }
-          }
-        case 51: break;
-        case 4: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched single char: "+s);
-          }
-        case 52: break;
-        case 14: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched #name: "+s);
-          }
-        case 53: break;
-        case 10: 
-          { if(postBadImportFlag) {
-               // Ignore
-               postBadImportFlag = false;
-               if(debug) log("Ignoring mediums list because after bad import: 
"+
-                       yytext());
-       } else {
-               String s = yytext();
-               w.write(s);
-               if(debug) log("Matched and passing on mediums list: "+s);
-       }
-          }
-        case 54: break;
-        case 17: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched |=: "+s);
-          }
-        case 55: break;
-        case 22: 
-          { String s = yytext();
-       StringBuffer sb = new StringBuffer(s.length());
-       sb.append("/* ");
-       boolean inPrefix = true;
-       for(int i=2;i<s.length()-2;i++) {
-               char c = s.charAt(i);
-               if(inPrefix && Character.isWhitespace(c)) {
-                       continue;
-               }
-               inPrefix = false;
-               if(Character.isDigit(c) || Character.isWhitespace(c) ||
-                       Character.isLetter(c) || c == '.' || c == '_' || c == 
'-') {
-                       // No @, no !, etc; IE has been known to do things with 
comments
-                       // in CSS, and other browsers may too
-                       sb.append(c);
-               }
-       }
-       while(Character.isWhitespace(sb.charAt(sb.length()-1)))
-               sb.deleteCharAt(sb.length()-1);
-       sb.append(" */");
-       w.write(sb.toString());
-       if(debug) log("Matched comment: "+s+" -> "+sb.toString());
-          }
-        case 56: break;
-        case 15: 
-          { if(!deleteErrors) {
-               throwError(l10n("unknownAtIdentifierLabel")+" "+yytext());
-       } else {
-               String s = yytext();
-               if(debug) log("Discarded identifier: "+s);
-               // Ignore
-       }
-          }
-        case 57: break;
-        case 31: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched important: "+s);
-          }
-        case 58: break;
-        case 18: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched measurement: "+s);
-          }
-        case 59: break;
-        case 32: 
-          { String s = yytext();
-       detectedCharset = s;
-       if(debug) log("Matched and ignoring charset: "+s);
-       // Ignore
-          }
-        case 60: break;
-        case 9: 
-          { String s = yytext();
-       if(s.startsWith("url")) throwError(l10n("invalidURLContents"));
-       w.write(s);
-       if(debug) log("Matched function start: "+s);
-          }
-        case 61: break;
-        case 1: 
-          { String s = yytext();
-       char c = s.charAt(0);
-       log("Matched anything: "+yytext()+" - ignoring");
-       w.write("/* "+l10n("deletedUnmatchedChar")+" "+c+" */"); // single char 
cannot break out of comment
-          }
-        case 62: break;
-        case 3: 
-          { String s = yytext();
-       w.write(s);
-       if(debug) log("Matched whitespace: "+s);
-          }
-        case 63: break;
-        case 19: 
-          { String s = yytext();
-       w.write(s); 
-       if(debug) log("Matched HTML comment: "+s);
-          }
-        case 64: break;
-        default: 
-          if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
-            zzAtEOF = true;
-            return null;
-          } 
-          else {
-            zzScanError(ZZ_NO_MATCH);
-          }
-      }
-    }
-  }
-
-
-}

Modified: trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.jflex
===================================================================
--- trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.jflex      
2007-08-13 21:06:08 UTC (rev 14666)
+++ trunk/freenet/src/freenet/clients/http/filter/CSSTokenizerFilter.jflex      
2007-08-13 21:20:49 UTC (rev 14667)
@@ -239,7 +239,7 @@
 IDENT={NMSTART}{NMCHAR}*
 UNOFFICIAL_IDENT="-"{IDENT}
 NAME={NMCHAR}+
-NUM=[-]([0-9]+|[0-9]*"."[0-9]+)
+NUM=(-){0,1}([0-9]+|[0-9]*"."[0-9]+)
 STRING={STRING1}|{STRING2}

 // Not used any more. Was used in url(). Keep for now. Matches up to the end 
of a bracket.


Reply via email to