All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.fife.ui.rsyntaxtextarea.modes.HTMLTokenMaker Maven / Gradle / Ivy

/* The following code was generated by JFlex 1.4.1 on 2/7/12 10:39 PM */

/*
 * 01/24/2005
 *
 * HTMLTokenMaker.java - Generates tokens for HTML syntax highlighting.
 * 
 * This library is distributed under a modified BSD license.  See the included
 * RSyntaxTextArea.License.txt file for details.
 */
package org.fife.ui.rsyntaxtextarea.modes;

import java.io.*;
import javax.swing.text.Segment;

import org.fife.ui.rsyntaxtextarea.*;


/**
 * Scanner for HTML 5 files.
 *
 * This implementation was created using
 * JFlex 1.4.1; however, the generated file
 * was modified for performance.  Memory allocation needs to be almost
 * completely removed to be competitive with the handwritten lexers (subclasses
 * of AbstractTokenMaker, so this class has been modified so that
 * Strings are never allocated (via yytext()), and the scanner never has to
 * worry about refilling its buffer (needlessly copying chars around).
 * We can achieve this because RText always scans exactly 1 line of tokens at a
 * time, and hands the scanner this line as an array of characters (a Segment
 * really).  Since tokens contain pointers to char arrays instead of Strings
 * holding their contents, there is no need for allocating new memory for
 * Strings.

* * The actual algorithm generated for scanning has, of course, not been * modified.

* * If you wish to regenerate this file yourself, keep in mind the following: *

    *
  • The generated HTMLTokenMaker.java file will contain two * definitions of both zzRefill and yyreset. * You should hand-delete the second of each definition (the ones * generated by the lexer), as these generated methods modify the input * buffer, which we'll never have to do.
  • *
  • You should also change the declaration/definition of zzBuffer to NOT * be initialized. This is a needless memory allocation for us since we * will be pointing the array somewhere else anyway.
  • *
  • You should NOT call yylex() on the generated scanner * directly; rather, you should use getTokenList as you would * with any other TokenMaker instance.
  • *
* * @author Robert Futrell * @version 0.8 * */ public class HTMLTokenMaker extends AbstractMarkupTokenMaker { /** This character denotes the end of file */ public static final int YYEOF = -1; /** lexical states */ public static final int JS_STRING = 12; public static final int INTAG_CHECK_TAG_NAME = 5; public static final int JS_MLC = 14; public static final int INTAG_SCRIPT = 8; public static final int JS_CHAR = 13; public static final int JS_EOL_COMMENT = 15; public static final int INATTR_DOUBLE_SCRIPT = 9; public static final int INATTR_SINGLE_SCRIPT = 10; public static final int DTD = 3; public static final int INATTR_SINGLE = 7; public static final int INATTR_DOUBLE = 6; public static final int YYINITIAL = 0; public static final int INTAG = 4; public static final int COMMENT = 1; public static final int JAVASCRIPT = 11; public static final int PI = 2; /** * Translates characters to character classes */ private static final String ZZ_CMAP_PACKED = "\11\0\1\4\1\2\1\0\1\1\1\26\22\0\1\4\1\50\1\7"+ "\1\27\1\32\1\47\1\5\1\57\2\56\1\33\1\44\1\43\1\40"+ "\1\41\1\10\1\22\6\105\1\24\2\21\1\52\1\6\1\3\1\45"+ "\1\17\1\51\1\27\1\70\1\23\1\12\1\76\1\37\1\36\1\100"+ "\1\104\1\14\1\106\1\101\1\35\1\74\1\72\1\71\1\15\1\102"+ "\1\13\1\11\1\16\1\77\1\103\1\20\1\34\1\73\1\20\1\56"+ "\1\30\1\56\1\46\1\31\1\0\1\111\1\107\1\113\1\116\1\66"+ "\1\64\1\55\1\60\1\54\1\106\1\112\1\65\1\75\1\115\1\114"+ "\1\62\1\102\1\110\1\63\1\61\1\25\1\120\1\67\1\121\1\117"+ "\1\122\1\42\1\46\1\42\1\53\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 = "\6\0\2\1\1\0\2\1\5\0\2\2\1\3\1\4"+ "\1\5\1\6\1\1\1\7\5\1\1\10\2\1\1\11"+ "\1\12\2\13\1\14\1\15\1\16\1\17\1\20\1\21"+ "\1\22\1\23\2\21\2\23\1\21\2\23\4\21\1\23"+ "\5\21\1\23\1\21\1\1\1\24\1\1\1\25\1\15"+ "\1\26\1\27\1\30\1\31\1\32\2\17\1\2\1\33"+ "\1\17\2\2\1\17\2\34\1\2\1\31\2\17\1\2"+ "\1\35\1\17\2\2\1\36\17\2\1\1\1\37\1\40"+ "\1\41\1\1\1\42\1\43\1\44\1\1\1\45\6\1"+ "\1\46\1\1\1\4\2\47\1\50\1\51\1\6\5\0"+ "\1\52\31\21\1\23\7\21\1\23\5\21\1\23\33\21"+ "\1\53\3\0\1\54\1\0\1\55\1\17\1\31\1\2"+ "\1\17\1\56\1\34\1\57\1\56\1\57\1\56\1\60"+ "\1\56\2\2\1\61\1\2\1\61\47\2\1\61\1\2"+ "\1\62\1\63\1\64\1\0\1\65\5\0\1\66\1\47"+ "\1\0\1\67\4\0\14\21\1\23\63\21\1\0\1\70"+ "\1\0\1\31\1\2\1\57\1\0\2\60\4\2\1\6"+ "\57\2\10\0\1\47\1\71\2\0\1\72\20\21\1\23"+ "\5\21\1\23\14\21\1\0\1\73\1\31\10\2\1\74"+ "\13\2\1\6\1\2\1\75\15\2\1\0\1\1\3\0"+ "\1\76\1\0\1\47\2\0\10\21\1\23\13\21\1\0"+ "\1\31\5\2\1\61\10\2\1\61\10\2\4\0\1\47"+ "\12\21\1\0\1\31\17\2\2\0\1\77\3\21\1\0"+ "\7\2\2\0\1\21\1\0\3\2\2\0\1\21\1\100"+ "\1\2\1\101\1\102"; private static int [] zzUnpackAction() { int [] result = new int[615]; 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\123\0\246\0\371\0\u014c\0\u019f\0\u01f2\0\u0245"+ "\0\u0298\0\u02eb\0\u033e\0\u0391\0\u03e4\0\u0437\0\u048a\0\u04dd"+ "\0\u0530\0\u0583\0\u05d6\0\u0629\0\u067c\0\u06cf\0\u0722\0\u05d6"+ "\0\u0775\0\u07c8\0\u081b\0\u086e\0\u08c1\0\u05d6\0\u0914\0\u0967"+ "\0\u05d6\0\u05d6\0\u09ba\0\u0a0d\0\u05d6\0\u0a60\0\u05d6\0\u05d6"+ "\0\u05d6\0\u0ab3\0\u05d6\0\u0b06\0\u0b59\0\u0bac\0\u0bff\0\u0c52"+ "\0\u0ca5\0\u0cf8\0\u0d4b\0\u0d9e\0\u0df1\0\u0e44\0\u0e97\0\u0eea"+ "\0\u0f3d\0\u0f90\0\u0fe3\0\u1036\0\u1089\0\u0ab3\0\u10dc\0\u112f"+ "\0\u05d6\0\u1182\0\u05d6\0\u11d5\0\u05d6\0\u05d6\0\u05d6\0\u1228"+ "\0\u05d6\0\u127b\0\u12ce\0\u05d6\0\u05d6\0\u1321\0\u1374\0\u13c7"+ "\0\u141a\0\u146d\0\u14c0\0\u1513\0\u05d6\0\u1566\0\u15b9\0\u160c"+ "\0\u05d6\0\u165f\0\u16b2\0\u1705\0\u05d6\0\u1758\0\u17ab\0\u17fe"+ "\0\u1851\0\u18a4\0\u18f7\0\u194a\0\u199d\0\u19f0\0\u1a43\0\u1a96"+ "\0\u1ae9\0\u1b3c\0\u1b8f\0\u1be2\0\u1c35\0\u05d6\0\u05d6\0\u1c88"+ "\0\u1cdb\0\u05d6\0\u1c88\0\u05d6\0\u1d2e\0\u05d6\0\u1d81\0\u1dd4"+ "\0\u1e27\0\u1e7a\0\u1ecd\0\u1f20\0\u05d6\0\u1f73\0\u1fc6\0\u2019"+ "\0\u206c\0\u20bf\0\u05d6\0\u05d6\0\u2112\0\u2165\0\u21b8\0\u220b"+ "\0\u225e\0\u05d6\0\u22b1\0\u2304\0\u2357\0\u23aa\0\u23fd\0\u2450"+ "\0\u24a3\0\u24f6\0\u2549\0\u259c\0\u25ef\0\u2642\0\u2695\0\u26e8"+ "\0\u273b\0\u278e\0\u27e1\0\u2834\0\u2887\0\u28da\0\u292d\0\u2980"+ "\0\u29d3\0\u2a26\0\u2a79\0\u2acc\0\u2b1f\0\u2b72\0\u2bc5\0\u2c18"+ "\0\u2c6b\0\u2cbe\0\u2d11\0\u2d64\0\u2db7\0\u2e0a\0\u2e5d\0\u2eb0"+ "\0\u2f03\0\u2f56\0\u2fa9\0\u2ffc\0\u304f\0\u30a2\0\u30f5\0\u3148"+ "\0\u319b\0\u31ee\0\u3241\0\u3294\0\u32e7\0\u333a\0\u338d\0\u33e0"+ "\0\u3433\0\u3486\0\u34d9\0\u352c\0\u357f\0\u35d2\0\u3625\0\u3678"+ "\0\u36cb\0\u371e\0\u3771\0\u37c4\0\u3817\0\u05d6\0\u1566\0\u386a"+ "\0\u38bd\0\u05d6\0\u3910\0\u3963\0\u38bd\0\u39b6\0\u3a09\0\u3a5c"+ "\0\u3aaf\0\u3aaf\0\u3aaf\0\u3b02\0\u3b55\0\u3ba8\0\u3bfb\0\u3c4e"+ "\0\u3ca1\0\u3cf4\0\u1374\0\u3d47\0\u3d9a\0\u3ded\0\u3e40\0\u3e93"+ "\0\u3ee6\0\u3f39\0\u3f8c\0\u3fdf\0\u4032\0\u4085\0\u40d8\0\u412b"+ "\0\u417e\0\u41d1\0\u4224\0\u4277\0\u42ca\0\u431d\0\u4370\0\u43c3"+ "\0\u4416\0\u4469\0\u44bc\0\u450f\0\u4562\0\u45b5\0\u4608\0\u465b"+ "\0\u46ae\0\u4701\0\u4754\0\u47a7\0\u47fa\0\u484d\0\u48a0\0\u48f3"+ "\0\u4946\0\u4999\0\u49ec\0\u4a3f\0\u4a92\0\u4ae5\0\u05d6\0\u4b38"+ "\0\u4b8b\0\u4bde\0\u05d6\0\u4c31\0\u4c84\0\u4cd7\0\u4d2a\0\u4d7d"+ "\0\u1fc6\0\u4dd0\0\u4e23\0\u05d6\0\u4e76\0\u4ec9\0\u4f1c\0\u4f6f"+ "\0\u4fc2\0\u5015\0\u5068\0\u50bb\0\u510e\0\u5161\0\u51b4\0\u5207"+ "\0\u525a\0\u52ad\0\u5300\0\u5353\0\u53a6\0\u53f9\0\u544c\0\u549f"+ "\0\u54f2\0\u5545\0\u5598\0\u55eb\0\u563e\0\u5691\0\u56e4\0\u5737"+ "\0\u578a\0\u2d64\0\u57dd\0\u5830\0\u5883\0\u58d6\0\u5929\0\u597c"+ "\0\u59cf\0\u5a22\0\u5a75\0\u5ac8\0\u5b1b\0\u5b6e\0\u5bc1\0\u5c14"+ "\0\u5c67\0\u0d4b\0\u5cba\0\u5d0d\0\u5d60\0\u5db3\0\u5e06\0\u5e59"+ "\0\u5eac\0\u5eff\0\u5f52\0\u5fa5\0\u5ff8\0\u604b\0\u609e\0\u60f1"+ "\0\u6144\0\u6197\0\u61ea\0\u623d\0\u6290\0\u62e3\0\u6336\0\u6389"+ "\0\u63dc\0\u642f\0\u6482\0\u64d5\0\u6528\0\u657b\0\u65ce\0\u3aaf"+ "\0\u6621\0\u6674\0\u66c7\0\u671a\0\u676d\0\u67c0\0\u6813\0\u6866"+ "\0\u68b9\0\u690c\0\u695f\0\u69b2\0\u6a05\0\u6a58\0\u6aab\0\u6afe"+ "\0\u6b51\0\u6ba4\0\u6bf7\0\u6c4a\0\u6c9d\0\u6cf0\0\u6d43\0\u6d96"+ "\0\u6de9\0\u6e3c\0\u6e8f\0\u6ee2\0\u6f35\0\u6f88\0\u6fdb\0\u702e"+ "\0\u7081\0\u70d4\0\u7127\0\u717a\0\u71cd\0\u7220\0\u7273\0\u72c6"+ "\0\u7319\0\u736c\0\u73bf\0\u7412\0\u7465\0\u74b8\0\u750b\0\u755e"+ "\0\u75b1\0\u7604\0\u7657\0\u76aa\0\u76fd\0\u7750\0\u77a3\0\u77f6"+ "\0\u7849\0\u789c\0\u78ef\0\u7942\0\u7995\0\u79e8\0\u05d6\0\u7a3b"+ "\0\u7a8e\0\u7ae1\0\u7b34\0\u7b87\0\u7bda\0\u7c2d\0\u7c80\0\u7cd3"+ "\0\u7d26\0\u7d79\0\u7dcc\0\u7e1f\0\u7e72\0\u7ec5\0\u7f18\0\u7f6b"+ "\0\u7fbe\0\u8011\0\u8064\0\u80b7\0\u810a\0\u815d\0\u81b0\0\u8203"+ "\0\u5a22\0\u8256\0\u82a9\0\u82fc\0\u834f\0\u83a2\0\u2f56\0\u83f5"+ "\0\u8448\0\u849b\0\u84ee\0\u8541\0\u8594\0\u85e7\0\u05d6\0\u863a"+ "\0\u868d\0\u86e0\0\u8733\0\u8786\0\u87d9\0\u882c\0\u887f\0\u88d2"+ "\0\u1374\0\u8925\0\u8978\0\u89cb\0\u8a1e\0\u8a71\0\u8ac4\0\u8b17"+ "\0\u8b6a\0\u8bbd\0\u8c10\0\u8c63\0\u1374\0\u8cb6\0\u1374\0\u8d09"+ "\0\u8d5c\0\u8daf\0\u8e02\0\u8e55\0\u8ea8\0\u8efb\0\u8f4e\0\u8fa1"+ "\0\u8ff4\0\u9047\0\u909a\0\u90ed\0\u4b8b\0\u05d6\0\u9140\0\u9193"+ "\0\u91e6\0\u9239\0\u928c\0\u92df\0\u9332\0\u7ae1\0\u9385\0\u93d8"+ "\0\u942b\0\u947e\0\u94d1\0\u9524\0\u9577\0\u95ca\0\u961d\0\u961d"+ "\0\u9670\0\u96c3\0\u9716\0\u9769\0\u97bc\0\u980f\0\u9862\0\u98b5"+ "\0\u9908\0\u995b\0\u99ae\0\u9a01\0\u9a54\0\u9aa7\0\u9afa\0\u9b4d"+ "\0\u9ba0\0\u68b9\0\u9bf3\0\u9c46\0\u9c99\0\u9cec\0\u9d3f\0\u9d92"+ "\0\u9de5\0\u9e38\0\u9e8b\0\u9ede\0\u9f31\0\u9f84\0\u9fd7\0\ua02a"+ "\0\ua07d\0\ua0d0\0\ua123\0\ua176\0\ua1c9\0\u9239\0\ua21c\0\ua26f"+ "\0\ua2c2\0\ua315\0\ua368\0\ua3bb\0\ua40e\0\ua461\0\ua4b4\0\ua507"+ "\0\ua55a\0\ua5ad\0\ua600\0\ua653\0\ua6a6\0\ua6f9\0\ua74c\0\ua79f"+ "\0\ua7f2\0\ua845\0\ua898\0\ua8eb\0\ua93e\0\ua991\0\ua9e4\0\uaa37"+ "\0\uaa8a\0\uaadd\0\uab30\0\uab83\0\uabd6\0\u206c\0\uac29\0\uac7c"+ "\0\uaccf\0\uad22\0\uad75\0\uadc8\0\uae1b\0\uae6e\0\uaec1\0\uaf14"+ "\0\uaf67\0\uafba\0\ub00d\0\ub060\0\ub0b3\0\ub106\0\ub159\0\ub1ac"+ "\0\ub1ff\0\ub252\0\ub2a5\0\u05d6\0\ub2f8\0\u05d6\0\u05d6"; private static int [] zzUnpackRowMap() { int [] result = new int[615]; 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\21\1\22\1\23\1\24\1\25\1\26\115\21\2\27"+ "\1\30\35\27\1\31\17\27\1\32\3\27\1\33\2\27"+ "\1\34\33\27\2\35\1\36\46\35\1\37\51\35\2\40"+ "\1\41\14\40\1\42\103\40\1\43\1\44\1\0\1\43"+ "\1\25\2\43\1\45\1\46\6\43\1\47\25\43\1\50"+ "\11\43\1\51\43\43\2\52\1\0\1\52\1\53\2\52"+ "\2\53\1\54\1\55\1\56\1\57\1\60\1\61\1\53"+ "\3\52\1\62\1\52\1\63\7\52\1\64\1\65\1\66"+ "\5\52\1\53\6\52\1\57\2\52\1\53\1\67\1\61"+ "\1\60\1\54\1\65\1\64\1\66\1\52\1\70\1\71"+ "\1\72\1\52\2\73\1\74\1\63\1\52\1\75\1\76"+ "\1\77\1\67\2\52\1\62\1\56\1\70\1\75\1\55"+ "\1\71\1\72\1\74\1\52\1\77\2\52\7\100\1\101"+ "\113\100\57\102\1\101\43\102\1\43\1\44\1\0\1\43"+ "\1\25\2\43\1\103\1\104\6\43\1\105\25\43\1\50"+ "\11\43\1\106\43\43\7\100\1\107\113\100\57\102\1\107"+ "\43\102\1\110\1\25\1\111\1\112\1\25\1\113\1\114"+ "\1\115\1\116\3\117\1\120\2\117\1\121\1\117\1\122"+ "\1\123\1\117\1\122\1\124\1\125\2\110\2\117\1\126"+ "\4\117\1\127\1\130\1\131\1\114\1\132\4\126\3\50"+ "\1\133\1\134\1\131\1\135\1\117\1\136\1\137\1\140"+ "\1\141\1\142\1\143\1\144\2\117\1\145\12\117\1\122"+ "\1\117\1\146\1\147\1\150\1\117\1\151\1\117\1\152"+ "\1\153\1\117\1\154\2\117\2\155\1\156\4\155\1\157"+ "\20\155\1\160\72\155\2\161\1\162\25\161\1\163\26\161"+ "\1\164\43\161\2\165\1\166\1\167\27\165\1\170\24\165"+ "\1\171\3\165\1\172\2\165\1\173\33\165\2\174\1\175"+ "\1\176\54\174\1\171\3\174\1\172\2\174\1\173\33\174"+ "\2\21\4\0\116\21\1\22\2\0\1\25\1\0\115\21"+ "\133\0\1\177\1\200\5\201\1\0\6\201\6\0\4\201"+ "\10\0\1\202\1\203\2\0\2\201\2\0\3\201\1\200"+ "\37\201\1\0\1\25\2\0\1\25\116\0\4\26\1\0"+ "\1\26\1\204\114\26\2\27\1\0\35\27\1\0\17\27"+ "\1\0\3\27\1\0\2\27\1\0\33\27\40\0\1\205"+ "\143\0\1\206\115\0\1\207\4\0\1\210\130\0\1\211"+ "\33\0\2\35\1\0\46\35\1\0\51\35\17\0\1\212"+ "\103\0\2\40\1\0\14\40\1\0\103\40\2\43\1\0"+ "\1\43\1\0\2\43\2\0\6\43\1\0\25\43\1\0"+ "\11\43\1\0\44\43\1\44\1\0\1\43\1\25\2\43"+ "\2\0\6\43\1\0\25\43\1\0\11\43\1\0\43\43"+ "\17\0\1\47\103\0\2\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\45\52"+ "\1\0\1\52\1\0\2\52\2\0\1\52\1\213\2\52"+ "\1\214\1\215\1\0\5\52\1\216\11\52\1\217\5\52"+ "\1\0\11\52\1\0\1\52\1\215\1\214\3\52\1\217"+ "\1\52\1\220\1\221\2\52\2\222\1\52\1\216\11\52"+ "\1\220\1\52\1\213\1\221\10\52\1\0\1\52\1\0"+ "\2\52\2\0\3\52\1\223\2\52\1\0\17\52\1\224"+ "\5\52\1\0\6\52\1\223\2\52\1\0\6\52\1\224"+ "\1\52\1\225\1\226\17\52\1\225\2\52\1\226\10\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+ "\1\227\17\52\1\0\11\52\1\0\17\52\1\227\25\52"+ "\1\0\1\52\1\0\2\52\2\0\1\230\5\52\1\0"+ "\15\52\1\231\1\232\6\52\1\0\11\52\1\0\3\52"+ "\1\230\1\232\1\231\4\52\1\233\1\52\2\234\17\52"+ "\1\233\7\52\1\0\1\52\1\0\2\52\2\0\2\52"+ "\1\235\3\52\1\0\15\52\1\236\7\52\1\0\11\52"+ "\1\0\5\52\1\236\2\52\1\237\17\52\1\235\1\237"+ "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+ "\1\240\1\52\1\76\1\0\3\52\1\241\12\52\1\242"+ "\1\243\5\52\1\0\6\52\1\240\2\52\1\0\1\244"+ "\1\76\2\52\1\242\1\52\1\243\1\52\1\245\5\52"+ "\1\76\5\52\1\244\2\52\1\241\1\76\1\245\4\52"+ "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\2\52"+ "\1\76\1\234\2\52\1\0\5\52\1\246\7\52\1\247"+ "\7\52\1\0\6\52\1\234\1\250\1\52\1\0\5\52"+ "\1\247\2\52\1\251\1\252\4\52\1\253\1\246\1\250"+ "\7\52\1\76\1\251\2\52\1\252\1\52\1\253\6\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+ "\1\76\7\52\1\0\11\52\1\0\5\52\1\76\37\52"+ "\1\0\1\52\1\0\2\52\2\0\3\52\1\254\2\52"+ "\1\0\17\52\1\255\5\52\1\0\6\52\1\254\2\52"+ "\1\0\6\52\1\255\1\52\1\256\20\52\1\256\13\52"+ "\1\0\1\52\1\0\2\52\2\0\2\52\1\257\1\260"+ "\2\52\1\0\25\52\1\0\6\52\1\260\2\52\1\0"+ "\11\52\1\261\16\52\1\257\3\52\1\261\10\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\14\52\2\262\5\52\1\263\14\52\1\263"+ "\4\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+ "\2\52\1\264\1\0\17\52\1\265\5\52\1\0\11\52"+ "\1\0\1\52\1\264\4\52\1\265\16\52\1\76\2\52"+ "\1\76\14\52\1\0\1\52\1\0\2\52\2\0\1\266"+ "\1\267\1\270\1\52\1\271\1\52\1\0\3\52\1\272"+ "\1\52\1\273\17\52\1\0\11\52\1\0\2\52\1\271"+ "\1\266\12\52\1\274\1\273\7\52\1\272\1\270\2\52"+ "\1\267\2\52\1\274\6\52\1\0\1\52\1\0\2\52"+ "\2\0\4\52\1\275\1\52\1\0\3\52\1\276\1\52"+ "\1\277\7\52\1\76\7\52\1\0\11\52\1\0\2\52"+ "\1\275\2\52\1\76\11\52\1\277\7\52\1\276\15\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\17\52"+ "\1\300\5\52\1\0\11\52\1\0\6\52\1\300\1\52"+ "\1\301\1\302\17\52\1\301\2\52\1\302\10\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\303"+ "\11\52\1\304\5\52\1\0\11\52\1\0\6\52\1\304"+ "\1\52\1\305\6\52\1\303\11\52\1\305\13\52\1\0"+ "\1\52\1\0\2\52\2\0\3\52\1\306\1\52\1\76"+ "\1\0\15\52\1\76\1\307\1\310\5\52\1\0\6\52"+ "\1\306\2\52\1\0\1\52\1\76\2\52\1\307\1\76"+ "\1\310\1\52\1\311\5\52\1\76\12\52\1\311\4\52"+ "\1\76\6\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\3\52\1\312\13\52\1\313\5\52\1\0\11\52"+ "\1\0\6\52\1\313\20\52\1\312\15\52\1\0\1\52"+ "\1\0\2\52\2\0\3\52\1\314\2\52\1\0\25\52"+ "\1\0\6\52\1\314\2\52\1\0\10\52\1\315\20\52"+ "\1\315\11\52\7\100\1\0\113\100\57\102\1\0\43\102"+ "\17\0\1\316\103\0\1\110\10\0\6\110\1\0\6\110"+ "\1\0\4\110\1\0\4\110\14\0\2\110\2\0\43\110"+ "\3\0\1\317\4\0\1\320\34\0\1\50\62\0\1\50"+ "\37\0\1\50\55\0\10\321\1\322\17\321\1\323\2\321"+ "\1\324\11\321\1\325\55\321\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\327\5\117\17\0\1\330\25\0\1\50"+ "\55\0\1\331\10\0\6\331\1\0\1\331\2\122\1\331"+ "\1\122\1\331\1\0\4\331\1\0\1\331\1\332\1\333"+ "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+ "\1\332\1\334\7\331\1\333\6\331\1\122\10\331\1\333"+ "\5\331\10\0\6\331\1\0\1\331\1\336\1\337\1\331"+ "\1\337\1\331\1\0\4\331\1\0\1\340\1\332\1\333"+ "\1\334\1\0\1\335\12\0\2\331\2\0\4\331\1\333"+ "\1\332\1\334\7\331\1\333\6\331\1\337\10\331\1\333"+ "\2\331\1\340\1\331\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\341\5\117\45\0\1\50\115\0\1\50"+ "\4\0\1\50\76\0\2\335\1\0\1\335\60\0\1\335"+ "\61\0\2\50\55\0\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\3\117\1\342\1\343\10\117\1\344\17\117\1\345"+ "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+ "\1\346\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\347\27\117\1\350\6\117\1\351\3\117\1\110\10\0"+ "\6\117\1\0\5\117\1\352\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\30\117\1\353\1\354"+ "\11\117\1\110\10\0\6\117\1\0\5\117\1\355\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\356\1\357\5\117\1\360\27\117\1\361\3\117\1\110"+ "\10\0\6\117\1\0\5\117\1\362\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\1\363\1\117\2\0\5\117"+ "\1\364\23\117\1\365\2\117\1\366\6\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\34\117\1\367\6\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\3\117\1\370\1\117"+ "\1\371\27\117\1\372\2\117\1\373\1\374\1\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\1\375\1\117\2\0\1\376\42\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\377"+ "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+ "\1\u0100\3\117\1\u0101\2\117\1\u0102\3\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\6\117\1\u0103\34\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\27\117\1\u0104\13\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0105\4\117"+ "\1\u0106\23\117\1\u0107\2\117\1\u0108\6\117\1\110\10\0"+ "\6\117\1\0\5\117\1\u0109\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\6\117\1\u010a\22\117"+ "\1\u010b\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\6\117\1\u010c\25\117\1\u010d\6\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\31\117\1\366\2\117\1\u010e\6\117"+ "\2\155\1\0\4\155\1\0\20\155\1\0\72\155\2\u010f"+ "\1\0\22\u010f\1\u0110\73\u010f\1\u0111\1\u010f\2\161\1\0"+ "\25\161\1\0\26\161\1\0\43\161\2\165\2\0\27\165"+ "\1\0\24\165\1\0\3\165\1\0\2\165\1\0\33\165"+ "\10\0\1\u0112\122\0\1\u0113\173\0\1\u0114\115\0\1\u0115"+ "\4\0\1\u0116\130\0\1\u0117\33\0\2\174\2\0\54\174"+ "\1\0\3\174\1\0\2\174\1\0\33\174\10\0\1\u0118"+ "\123\0\6\u0119\1\0\6\u0119\6\0\4\u0119\14\0\2\u0119"+ "\2\0\43\u0119\11\0\1\201\1\u011a\4\201\1\0\6\201"+ "\6\0\4\201\14\0\2\201\2\0\33\201\1\u011a\7\201"+ "\11\0\6\201\1\0\6\201\6\0\4\201\14\0\2\201"+ "\2\0\43\201\40\0\1\u011b\101\0\1\u011c\164\0\1\u011d"+ "\126\0\1\u011e\117\0\1\u011f\127\0\1\u0120\33\0\2\52"+ "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0121\3\52"+ "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0121\14\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+ "\1\0\11\52\1\0\10\52\1\u0122\20\52\1\u0122\13\52"+ "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0123\3\52"+ "\1\0\25\52\1\0\11\52\1\0\13\52\1\227\14\52"+ "\1\u0123\6\52\1\227\5\52\1\0\1\52\1\0\2\52"+ "\2\0\4\52\1\76\1\52\1\0\3\52\1\76\21\52"+ "\1\0\11\52\1\0\2\52\1\76\24\52\1\76\15\52"+ "\1\0\1\52\1\0\2\52\2\0\1\52\1\u0124\1\u0125"+ "\3\52\1\0\15\52\1\u0126\7\52\1\0\11\52\1\0"+ "\5\52\1\u0126\22\52\1\u0125\2\52\1\u0124\11\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\14\52\2\u0127\27\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\5\52\1\u0128\17\52\1\0"+ "\11\52\1\0\17\52\1\u0128\25\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\10\52\1\u0129\20\52\1\u0129\13\52\1\0\1\52\1\0"+ "\2\52\2\0\5\52\1\u012a\1\0\25\52\1\0\11\52"+ "\1\0\1\52\1\u012a\43\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+ "\1\u012b\22\52\1\u012b\7\52\1\0\1\52\1\0\2\52"+ "\2\0\4\52\1\u0124\1\52\1\0\25\52\1\0\11\52"+ "\1\0\2\52\1\u0124\7\52\1\u012c\22\52\1\u012c\7\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\15\52"+ "\1\u012d\7\52\1\0\11\52\1\0\5\52\1\u012d\6\52"+ "\2\u012e\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\15\52\1\u012a\7\52\1\0"+ "\11\52\1\0\5\52\1\u012a\37\52\1\0\1\52\1\0"+ "\2\52\2\0\3\52\1\u012f\2\52\1\0\25\52\1\0"+ "\6\52\1\u012f\2\52\1\0\45\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\10\52\1\u0130\20\52\1\u0130\13\52\1\0\1\52\1\0"+ "\2\52\2\0\2\52\1\u0131\3\52\1\0\25\52\1\0"+ "\11\52\1\0\30\52\1\u0131\14\52\1\0\1\52\1\0"+ "\2\52\2\0\1\76\3\52\1\u0132\1\52\1\0\25\52"+ "\1\0\11\52\1\0\2\52\1\u0132\1\76\41\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\7\52\1\76\1\52\1\0\20\52\1\76\24\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\17\52\1\76"+ "\5\52\1\0\11\52\1\0\6\52\1\76\2\52\1\u0133"+ "\22\52\1\u0133\10\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0134"+ "\20\52\1\u0134\13\52\1\0\1\52\1\0\2\52\2\0"+ "\2\52\1\u0135\3\52\1\0\25\52\1\0\11\52\1\0"+ "\30\52\1\u0135\14\52\1\0\1\52\1\0\2\52\2\0"+ "\5\52\1\227\1\0\25\52\1\0\11\52\1\0\1\52"+ "\1\227\12\52\2\u012a\27\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+ "\1\252\22\52\1\252\10\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+ "\1\u0136\22\52\1\u0136\10\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\14\52\1\u0137\10\52\1\0\11\52"+ "\1\0\41\52\1\u0137\3\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\17\52\1\u0138\5\52\1\0\11\52"+ "\1\0\6\52\1\u0138\36\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\3\52\1\227\21\52\1\0\11\52"+ "\1\0\27\52\1\227\15\52\1\0\1\52\1\0\2\52"+ "\2\0\5\52\1\u0139\1\0\25\52\1\0\11\52\1\0"+ "\1\52\1\u0139\43\52\1\0\1\52\1\0\2\52\2\0"+ "\3\52\1\u013a\2\52\1\0\25\52\1\0\6\52\1\u013a"+ "\2\52\1\0\11\52\1\u013b\22\52\1\u013b\10\52\1\0"+ "\1\52\1\0\2\52\2\0\1\u013c\5\52\1\0\25\52"+ "\1\0\11\52\1\0\3\52\1\u013c\41\52\1\0\1\52"+ "\1\0\2\52\2\0\1\u013d\5\52\1\0\25\52\1\0"+ "\11\52\1\0\3\52\1\u013d\41\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\16\52\1\u013e\17\52\1\u013e\6\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\11\52\1\76\22\52\1\76\10\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\12\52\1\u013f\22\52\1\u013f\7\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u0140"+ "\1\52\1\0\20\52\1\u0140\24\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\3\52\1\u0141\21\52\1\0"+ "\11\52\1\0\13\52\1\u0142\13\52\1\u0141\7\52\1\u0142"+ "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\10\52\1\u0143\20\52\1\u0143"+ "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u0144\5\52\1\0\7\52\1\u0145\1\52\1\0"+ "\6\52\1\u0144\11\52\1\u0145\24\52\1\0\1\52\1\0"+ "\2\52\2\0\2\52\1\u0146\3\52\1\0\25\52\1\0"+ "\11\52\1\0\11\52\1\u012b\1\u0147\15\52\1\u0146\3\52"+ "\1\u012b\1\u0147\7\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\3\52\1\u0148\21\52\1\0\11\52\1\0"+ "\27\52\1\u0148\15\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\17\52\1\u0149\5\52\1\0\11\52\1\0"+ "\6\52\1\u0149\36\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u014a"+ "\27\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\10\52\1\u014b\20\52\1\u014b"+ "\13\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u014c"+ "\2\52\1\0\25\52\1\0\6\52\1\u014c\2\52\1\0"+ "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u014d"+ "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u014d"+ "\14\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u014e"+ "\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0\1\52"+ "\1\u014e\4\52\1\u014f\36\52\1\0\1\52\1\0\2\52"+ "\2\0\4\52\1\u0150\1\52\1\0\25\52\1\0\11\52"+ "\1\0\2\52\1\u0150\42\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\3\52\1\315\21\52\1\0\11\52"+ "\1\0\27\52\1\315\15\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+ "\1\u0151\17\52\1\u0151\6\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+ "\1\u0152\17\52\1\u0152\6\52\1\0\1\52\1\0\2\52"+ "\2\0\5\52\1\u0153\1\0\25\52\1\0\11\52\1\0"+ "\1\52\1\u0153\43\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\26\52\1\u0126"+ "\16\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0154"+ "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0154\43\52"+ "\1\0\1\52\1\0\2\52\2\0\1\u0147\5\52\1\0"+ "\25\52\1\0\11\52\1\0\3\52\1\u0147\41\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\23\52\1\76\14\52\1\76\4\52\1\0"+ "\1\52\1\0\2\52\2\0\1\u0155\5\52\1\0\3\52"+ "\1\315\11\52\1\231\1\u0156\1\u0157\5\52\1\0\11\52"+ "\1\0\3\52\1\u0155\1\u0156\1\231\1\u0157\20\52\1\315"+ "\15\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\15\52\1\u0158\7\52\1\0\11\52\1\0\5\52\1\u0158"+ "\37\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0159"+ "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0159\10\52"+ "\1\u015a\22\52\1\u015a\7\52\1\0\1\52\1\0\2\52"+ "\2\0\2\52\1\u015b\1\52\1\76\1\52\1\0\25\52"+ "\1\0\11\52\1\0\2\52\1\76\25\52\1\u015b\14\52"+ "\1\0\1\52\1\0\2\52\2\0\2\52\1\76\3\52"+ "\1\0\25\52\1\0\11\52\1\0\10\52\1\u015c\12\52"+ "\1\76\4\52\1\76\1\u015c\6\52\1\76\4\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\12\52\1\76\22\52\1\76\7\52\1\0"+ "\1\52\1\0\2\52\2\0\5\52\1\u015d\1\0\15\52"+ "\1\76\7\52\1\0\11\52\1\0\1\52\1\u015d\3\52"+ "\1\76\37\52\1\0\1\52\1\0\2\52\2\0\5\52"+ "\1\u015e\1\0\25\52\1\0\11\52\1\0\1\52\1\u015e"+ "\43\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\16\52\1\76\17\52\1\76"+ "\6\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\13\52\1\u015f\23\52\1\u015f"+ "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\16\52\1\u0160\17\52\1\u0160"+ "\6\52\1\0\1\52\1\0\2\52\2\0\2\52\1\76"+ "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\76"+ "\12\52\11\0\1\u0161\51\0\1\u0161\37\0\10\321\1\u0162"+ "\17\321\1\323\74\321\1\0\120\321\33\0\1\u0163\67\0"+ "\1\110\10\0\6\110\1\0\5\110\1\u0164\1\0\4\110"+ "\1\0\4\110\14\0\2\110\2\0\44\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\4\117\1\u0165\36\117\17\0\1\126"+ "\25\0\1\50\55\0\1\331\10\0\6\331\1\0\6\331"+ "\1\0\4\331\1\0\4\331\14\0\2\331\2\0\44\331"+ "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+ "\1\0\4\331\1\0\4\331\1\u0167\3\0\1\u0167\7\0"+ "\2\331\2\0\25\331\1\u0166\16\331\10\0\6\331\1\0"+ "\1\331\2\335\1\331\1\335\1\331\1\0\4\331\1\0"+ "\2\331\1\333\1\334\14\0\2\331\2\0\4\331\1\333"+ "\1\331\1\334\7\331\1\333\6\331\1\335\10\331\1\333"+ "\5\331\10\0\6\331\1\0\1\331\2\336\1\331\1\336"+ "\1\331\1\0\4\331\1\0\2\331\1\333\1\334\1\0"+ "\1\335\12\0\2\331\2\0\4\331\1\333\1\331\1\334"+ "\7\331\1\333\6\331\1\336\10\331\1\333\5\331\10\0"+ "\6\331\1\0\1\331\1\336\1\337\1\331\1\337\1\331"+ "\1\0\4\331\1\0\1\331\1\u0168\1\333\1\334\1\0"+ "\1\335\12\0\2\331\2\0\4\331\1\333\1\u0168\1\334"+ "\7\331\1\333\6\331\1\337\10\331\1\333\5\331\10\0"+ "\1\331\1\u0169\4\331\1\0\1\331\4\u0169\1\331\1\0"+ "\4\331\1\0\2\331\2\u0169\14\0\2\331\2\0\4\331"+ "\1\u0169\1\331\1\u0169\1\331\1\u0169\5\331\1\u0169\6\331"+ "\1\u0169\1\331\1\u0169\1\331\1\u0169\1\331\1\u0169\2\331"+ "\1\u0169\4\331\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\6\117\1\u016a\34\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\2\117\1\u016b\1\117"+ "\14\0\2\117\2\0\12\117\1\u016c\30\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\2\117\1\u016d\40\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\117\1\u016e\1\117"+ "\1\u016f\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u0170\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0171"+ "\1\117\2\0\30\117\1\u0172\12\117\1\110\10\0\6\117"+ "\1\0\5\117\1\u0173\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\31\117\1\u0174\5\117\1\343"+ "\3\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\2\117"+ "\1\u0175\40\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\27\117\1\u0176\13\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0177"+ "\1\117\2\0\34\117\1\u0178\6\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\30\117\1\u0179\2\117\1\u017a\7\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\2\117\1\u017b"+ "\40\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\34\117"+ "\1\u017c\6\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\31\117\1\u017d\11\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u017e"+ "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\u017f\5\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\35\117\1\u0180\5\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\35\117\1\u0181\5\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\34\117\1\u0182\6\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0183\35\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\30\117\1\343"+ "\12\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+ "\1\u0184\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\33\117\1\u0185\7\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\3\117\1\u0186\37\117\1\110\10\0\6\117\1\0"+ "\5\117\1\u0187\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\43\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\31\117\1\u0188\11\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\1\117\1\u0189\1\u018a\40\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\117\1\u018b\41\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\1\u018c\1\117\2\0\43\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\12\117\1\343"+ "\30\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+ "\1\u018d\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\34\117\1\u018e\6\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\1\117\1\u018f\41\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\1\117\1\u0190\41\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\3\117\1\u0191\37\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\31\117\1\u0192\11\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0193\11\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0194"+ "\1\117\1\u0186\37\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\u0195\5\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\5\117\1\u0196\35\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\7\117\1\343\33\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\1\117\1\u0197\41\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\4\117\1\u0198\1\u0199"+ "\21\117\1\u019a\13\117\1\110\10\0\6\117\1\0\5\117"+ "\1\u019b\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u019c"+ "\1\117\2\0\5\117\1\u019d\35\117\12\0\1\u019e\6\0"+ "\4\u019e\11\0\2\u019e\24\0\1\u019e\1\0\1\u019e\1\0"+ "\1\u019e\5\0\1\u019e\6\0\1\u019e\1\0\1\u019e\1\0"+ "\1\u019e\1\0\1\u019e\2\0\1\u019e\16\0\1\u019f\6\0"+ "\4\u019f\11\0\2\u019f\24\0\1\u019f\1\0\1\u019f\1\0"+ "\1\u019f\5\0\1\u019f\6\0\1\u019f\1\0\1\u019f\1\0"+ "\1\u019f\1\0\1\u019f\2\0\1\u019f\15\0\1\u01a0\51\0"+ "\1\u01a0\120\0\1\u01a1\126\0\1\u01a2\117\0\1\u01a3\127\0"+ "\1\u01a4\44\0\1\u01a5\51\0\1\u01a5\50\0\2\201\1\u01a6"+ "\3\201\1\0\6\201\6\0\4\201\14\0\2\201\2\0"+ "\30\201\1\u01a6\12\201\40\0\1\u01a7\144\0\1\u01a8\126\0"+ "\1\u011f\106\0\1\u01a9\111\0\1\u01aa\61\0\2\52\1\0"+ "\1\52\1\0\2\52\2\0\3\52\1\u01ab\2\52\1\0"+ "\25\52\1\0\6\52\1\u01ab\2\52\1\0\45\52\1\0"+ "\1\52\1\0\2\52\2\0\1\52\1\u0142\4\52\1\0"+ "\25\52\1\0\11\52\1\0\12\52\1\76\20\52\1\u0142"+ "\1\52\1\76\7\52\1\0\1\52\1\0\2\52\2\0"+ "\3\52\1\u01ac\2\52\1\0\25\52\1\0\6\52\1\u01ac"+ "\2\52\1\0\11\52\1\u01ad\22\52\1\u01ad\10\52\1\0"+ "\1\52\1\0\2\52\2\0\5\52\1\u01ae\1\0\25\52"+ "\1\0\11\52\1\0\1\52\1\u01ae\43\52\1\0\1\52"+ "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+ "\1\0\23\52\1\u0142\14\52\1\u0142\4\52\1\0\1\52"+ "\1\0\2\52\2\0\6\52\1\0\17\52\1\u01af\5\52"+ "\1\0\11\52\1\0\6\52\1\u01af\36\52\1\0\1\52"+ "\1\0\2\52\2\0\4\52\1\76\1\52\1\0\25\52"+ "\1\0\11\52\1\0\2\52\1\76\42\52\1\0\1\52"+ "\1\0\2\52\2\0\2\52\1\u01b0\3\52\1\0\25\52"+ "\1\0\11\52\1\0\30\52\1\u01b0\14\52\1\0\1\52"+ "\1\0\2\52\2\0\6\52\1\0\15\52\1\u014a\7\52"+ "\1\0\11\52\1\0\5\52\1\u014a\37\52\1\0\1\52"+ "\1\0\2\52\2\0\6\52\1\0\17\52\1\76\5\52"+ "\1\0\11\52\1\0\6\52\1\76\36\52\1\0\1\52"+ "\1\0\2\52\2\0\5\52\1\u0142\1\0\25\52\1\0"+ "\11\52\1\0\1\52\1\u0142\43\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\23\52\1\u01b1\14\52\1\u01b1\4\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\7\52\1\u01b2"+ "\1\52\1\0\20\52\1\u01b2\24\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\14\52\2\u01b3\27\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u01b4"+ "\22\52\1\u01b4\7\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\13\52\1\u0142"+ "\23\52\1\u0142\5\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u01b5"+ "\20\52\1\u01b5\13\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\5\52\1\u0147\17\52\1\0\11\52\1\0"+ "\17\52\1\u0147\25\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\7\52\1\u0152\1\52\1\0"+ "\20\52\1\u0152\24\52\1\0\1\52\1\0\2\52\2\0"+ "\3\52\1\u01b6\2\52\1\0\25\52\1\0\6\52\1\u01b6"+ "\2\52\1\0\45\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0146"+ "\20\52\1\u0146\13\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u0147"+ "\22\52\1\u0147\10\52\1\0\1\52\1\0\2\52\2\0"+ "\5\52\1\u01b7\1\0\25\52\1\0\11\52\1\0\1\52"+ "\1\u01b7\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\25\52\1\0\11\52\1\0\10\52\1\312\20\52"+ "\1\312\13\52\1\0\1\52\1\0\2\52\2\0\5\52"+ "\1\u01b8\1\0\25\52\1\0\11\52\1\0\1\52\1\u01b8"+ "\43\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u01b9"+ "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u01b9"+ "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\11\52\1\u01ba\22\52\1\u01ba"+ "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u01bb\5\52\1\0\11\52\1\0\6\52\1\u01bb"+ "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\13\52\1\76\23\52\1\76"+ "\5\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\21\52\1\76\10\52\1\76"+ "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u01bc\5\52\1\0\11\52\1\0\6\52\1\u01bc"+ "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u014a\5\52\1\0\11\52\1\0\6\52\1\u014a"+ "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\315\5\52\1\0\11\52\1\0\6\52\1\315"+ "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\14\52\2\u01bd\27\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u01be"+ "\7\52\1\0\11\52\1\0\5\52\1\u01be\37\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\5\52\1\u01bf"+ "\17\52\1\0\11\52\1\0\17\52\1\u01bf\25\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\14\52\2\76\27\52\1\0\1\52\1\0"+ "\2\52\2\0\5\52\1\76\1\0\25\52\1\0\11\52"+ "\1\0\1\52\1\76\43\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\17\52\1\312\5\52\1\0\11\52"+ "\1\0\6\52\1\312\36\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\12\52"+ "\1\u01c0\22\52\1\u01c0\7\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+ "\1\u01c1\17\52\1\u01c1\6\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\16\52"+ "\1\u012a\17\52\1\u012a\6\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\11\52"+ "\1\u01c2\22\52\1\u01c2\10\52\1\0\1\52\1\0\2\52"+ "\2\0\3\52\1\u01c3\2\52\1\0\25\52\1\0\6\52"+ "\1\u01c3\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\10\52"+ "\1\76\20\52\1\76\13\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\15\52\1\u01c4\7\52\1\0\11\52"+ "\1\0\5\52\1\u01c4\37\52\1\0\1\52\1\0\2\52"+ "\2\0\3\52\1\253\2\52\1\0\25\52\1\0\6\52"+ "\1\253\2\52\1\0\45\52\1\0\1\52\1\0\2\52"+ "\2\0\2\52\1\u01c5\3\52\1\0\25\52\1\0\11\52"+ "\1\0\30\52\1\u01c5\14\52\1\0\1\52\1\0\2\52"+ "\2\0\3\52\1\u01b8\2\52\1\0\25\52\1\0\6\52"+ "\1\u01b8\1\u01b2\1\52\1\0\20\52\1\u01b2\24\52\1\0"+ "\1\52\1\0\2\52\2\0\4\52\1\u0132\1\52\1\0"+ "\25\52\1\0\11\52\1\0\2\52\1\u0132\42\52\1\0"+ "\1\52\1\0\2\52\2\0\1\52\1\213\4\52\1\0"+ "\25\52\1\0\11\52\1\0\33\52\1\213\11\52\1\0"+ "\1\52\1\0\2\52\2\0\2\52\1\u01c6\3\52\1\0"+ "\25\52\1\0\11\52\1\0\30\52\1\u01c6\14\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\25\52\1\0"+ "\11\52\1\0\14\52\2\u01c7\27\52\1\0\1\52\1\0"+ "\2\52\2\0\5\52\1\u01c8\1\0\25\52\1\0\11\52"+ "\1\0\1\52\1\u01c8\43\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\17\52\1\315\5\52\1\0\11\52"+ "\1\0\6\52\1\315\1\52\1\76\20\52\1\76\13\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\5\52"+ "\1\76\17\52\1\0\11\52\1\0\17\52\1\76\25\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+ "\1\0\11\52\1\0\21\52\1\76\1\u01c9\7\52\1\76"+ "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\15\52\1\u01ca\7\52\1\0\11\52\1\0\5\52\1\u01ca"+ "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\10\52\1\u01cb\20\52\1\u01cb"+ "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\10\52\1\u01cc\20\52\1\u01cc"+ "\13\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\7\52\1\u01cd\1\52\1\0\20\52\1\u01cd"+ "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\253\5\52\1\0\11\52\1\0\6\52\1\253"+ "\34\52\12\0\1\u01ce\100\0\1\u01ce\63\0\2\u0162\17\0"+ "\1\u0162\35\0\1\u01cf\112\0\1\110\10\0\1\110\1\u01d0"+ "\4\110\1\0\1\110\4\u01d0\1\110\1\0\4\110\1\0"+ "\2\110\2\u01d0\14\0\2\110\2\0\4\110\1\u01d0\1\110"+ "\1\u01d0\1\110\1\u01d0\5\110\1\u01d0\6\110\1\u01d0\1\110"+ "\1\u01d0\1\110\1\u01d0\1\110\1\u01d0\2\110\1\u01d0\5\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\1\u01d1\1\117\2\0\43\117\1\331"+ "\10\0\6\331\1\0\1\331\2\u0166\1\331\1\u0166\1\331"+ "\1\0\4\331\1\0\2\331\1\333\1\331\14\0\2\331"+ "\2\0\4\331\1\333\11\331\1\333\6\331\1\u0166\10\331"+ "\1\333\4\331\21\0\2\u0166\1\0\1\u0166\60\0\1\u0166"+ "\15\0\1\331\10\0\1\331\1\u0169\4\331\1\0\1\331"+ "\4\u0169\1\331\1\0\4\331\1\0\1\331\1\u0168\2\u0169"+ "\14\0\2\331\2\0\4\331\1\u0169\1\u0168\1\u0169\1\331"+ "\1\u0169\5\331\1\u0169\6\331\1\u0169\1\331\1\u0169\1\331"+ "\1\u0169\1\331\1\u0169\2\331\1\u0169\4\331\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\3\117\1\370\37\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\1\u01d2\1\117\2\0\43\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01d3\11\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\5\117\1\u01d4"+ "\26\117\1\u01d5\6\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\6\117\1\u01d6\34\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\1\117\1\u01d7\41\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\34\117\1\343\6\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\3\117\1\343\37\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\34\117\1\u01d8\6\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\u01d9"+ "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+ "\1\u01da\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\6\117\1\u01db\34\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\5\117\1\u01dc\35\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\40\117\1\u01dd\2\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\1\117\1\u01de\41\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\3\117\1\u01df\37\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\32\117\1\u01e0\10\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\6\117\1\366"+ "\34\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\30\117"+ "\1\u01e1\12\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u01dc\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\1\117\1\u0194\41\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\33\117\1\u01e2\7\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\33\117\1\u01e3\7\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\31\117\1\u01e4\11\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e1\11\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\3\117\1\u0173"+ "\37\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\1\117\1\u01e5\2\0"+ "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\31\117"+ "\1\u01e6\11\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\6\117\1\343\34\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\15\117\1\343\25\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\5\117\1\u01e7\35\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\6\117\1\u01e8\34\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\34\117\1\u01d5\6\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\343\42\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\5\117\1\u0186\35\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u01e9"+ "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+ "\1\u01ea\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\6\117\1\u01e5\34\117\1\110\10\0\6\117\1\0\5\117"+ "\1\u01eb\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\1\117\1\u01ec\41\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\30\117\1\u01e5\12\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\3\117\1\u0171\37\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\33\117\1\u018b\7\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01ed\1\117"+ "\1\u01ee\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\5\117\1\343\35\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u01ef"+ "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\31\117\1\u01f0\11\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\6\117\1\u01f1\34\117\1\110\10\0\6\117"+ "\1\0\5\117\1\u01f2\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\43\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\27\117\1\u01f3\13\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\36\117\1\343\4\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\31\117\1\u01f4\11\117"+ "\12\0\1\u01f5\6\0\4\u01f5\11\0\2\u01f5\24\0\1\u01f5"+ "\1\0\1\u01f5\1\0\1\u01f5\5\0\1\u01f5\6\0\1\u01f5"+ "\1\0\1\u01f5\1\0\1\u01f5\1\0\1\u01f5\2\0\1\u01f5"+ "\16\0\1\u01f6\6\0\4\u01f6\11\0\2\u01f6\24\0\1\u01f6"+ "\1\0\1\u01f6\1\0\1\u01f6\5\0\1\u01f6\6\0\1\u01f6"+ "\1\0\1\u01f6\1\0\1\u01f6\1\0\1\u01f6\2\0\1\u01f6"+ "\16\0\1\u01f7\100\0\1\u01f7\71\0\1\u01f8\126\0\1\u01a3"+ "\106\0\1\u01f9\111\0\1\u01fa\73\0\1\u01fb\100\0\1\u01fb"+ "\20\0\3\201\1\u01fc\2\201\1\0\6\201\6\0\4\201"+ "\14\0\1\u01fc\1\201\2\0\43\201\52\0\1\u01a9\10\0"+ "\1\u011f\47\0\1\u01fd\117\0\2\u01fe\1\0\7\u01aa\1\0"+ "\6\u01aa\1\0\1\u01fe\1\0\1\u01fe\1\u01aa\1\u01fe\4\u01aa"+ "\2\u01fe\1\0\3\u01fe\1\0\5\u01fe\2\u01aa\2\u01fe\43\u01aa"+ "\2\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u0147"+ "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u0147"+ "\42\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\21\52\1\u012a\10\52\1\u012a"+ "\12\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\12\52\1\234\22\52\1\234"+ "\7\52\1\0\1\52\1\0\2\52\2\0\3\52\1\u01b8"+ "\2\52\1\0\25\52\1\0\6\52\1\u01b8\2\52\1\0"+ "\45\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0147"+ "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0147"+ "\11\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u012a"+ "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u012a"+ "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\10\52\1\u01ff\20\52\1\u01ff"+ "\13\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u0200"+ "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u0200"+ "\14\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u0201\5\52\1\0\11\52\1\0\6\52\1\u0201"+ "\1\52\1\u01bc\20\52\1\u01bc\13\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\16\52\1\u0202\17\52\1\u0202\6\52\1\0\1\52\1\0"+ "\2\52\2\0\6\52\1\0\25\52\1\0\11\52\1\0"+ "\14\52\2\u012a\27\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\u0203"+ "\22\52\1\u0203\7\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\10\52\1\u0204"+ "\20\52\1\u0204\13\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\307"+ "\22\52\1\307\10\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\21\52\1\u0205"+ "\10\52\1\u0205\12\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\5\52\1\u01bc\17\52\1\0\11\52\1\0"+ "\17\52\1\u01bc\25\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\16\52\1\u0206\6\52\1\0\11\52\1\0"+ "\4\52\1\u0206\40\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\12\52\1\312"+ "\22\52\1\312\7\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\17\52\1\u0207\5\52\1\0\11\52\1\0"+ "\6\52\1\u0207\36\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\16\52\1\u0208"+ "\17\52\1\u0208\6\52\1\0\1\52\1\0\2\52\2\0"+ "\2\52\1\u012a\3\52\1\0\25\52\1\0\11\52\1\0"+ "\30\52\1\u012a\14\52\1\0\1\52\1\0\2\52\2\0"+ "\5\52\1\u0209\1\0\25\52\1\0\11\52\1\0\1\52"+ "\1\u0209\43\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\25\52\1\0\11\52\1\0\12\52\1\u020a\22\52"+ "\1\u020a\7\52\1\0\1\52\1\0\2\52\2\0\1\52"+ "\1\227\4\52\1\0\25\52\1\0\11\52\1\0\33\52"+ "\1\227\11\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\17\52\1\u0147\5\52\1\0\11\52\1\0\6\52"+ "\1\u0147\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\17\52\1\u020b\5\52\1\0\11\52\1\0\6\52"+ "\1\u020b\36\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\25\52\1\0\11\52\1\0\10\52\1\u020c\20\52"+ "\1\u020c\13\52\1\0\1\52\1\0\2\52\2\0\3\52"+ "\1\u020d\2\52\1\0\25\52\1\0\6\52\1\u020d\2\52"+ "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\5\52\1\u020e\17\52\1\0\11\52\1\0\17\52"+ "\1\u020e\25\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\25\52\1\0\11\52\1\0\11\52\1\234\22\52"+ "\1\234\10\52\1\0\1\52\1\0\2\52\2\0\3\52"+ "\1\u020f\2\52\1\0\25\52\1\0\6\52\1\u020f\2\52"+ "\1\0\45\52\1\0\1\52\1\0\2\52\2\0\5\52"+ "\1\u0210\1\0\15\52\1\u0211\7\52\1\0\7\52\1\u0212"+ "\1\52\1\0\1\52\1\u0210\3\52\1\u0211\12\52\1\u0212"+ "\24\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\307\5\52\1\0\11\52\1\0\6\52\1\307"+ "\34\52\13\0\1\u0213\74\0\1\u0213\12\0\1\110\10\0"+ "\1\110\1\u0214\4\110\1\0\1\110\4\u0214\1\110\1\0"+ "\4\110\1\0\2\110\2\u0214\14\0\2\110\2\0\4\110"+ "\1\u0214\1\110\1\u0214\1\110\1\u0214\5\110\1\u0214\6\110"+ "\1\u0214\1\110\1\u0214\1\110\1\u0214\1\110\1\u0214\2\110"+ "\1\u0214\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+ "\1\u0215\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\35\117\1\u0216\5\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\12\117\1\u01e7\30\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\6\117\1\u0217\34\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\30\117\1\u01ee\12\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\30\117\1\u0218\12\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\31\117\1\u0219\11\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\7\117\1\u021a"+ "\33\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\3\117"+ "\1\u021b\37\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\34\117\1\u021c\6\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u021d"+ "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\31\117\1\u01f1\11\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\6\117\1\u021e\34\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\6\117\1\u021f\34\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\31\117\1\u0220\11\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\117\1\u01e5\41\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\1\u0221\42\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\u0222"+ "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+ "\1\u0223\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\2\117\1\u0224\40\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\u0225\5\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\32\117\1\343\10\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\6\117\1\u0226\34\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\30\117\1\u0227\12\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\30\117\1\u0228\12\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\1\u0229\1\117\2\0\43\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\1\117\1\343"+ "\41\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\40\117"+ "\1\u0186\2\117\1\110\10\0\6\117\1\0\5\117\1\u022a"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u0186\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+ "\1\u022b\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\5\117\1\u018f\35\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\1\117\1\376\41\117\13\0\1\u022c\74\0"+ "\1\u022c\64\0\1\u01f9\10\0\1\u01a3\47\0\1\u022d\117\0"+ "\2\u022e\1\0\7\u01fa\1\0\6\u01fa\1\0\1\u022e\1\0"+ "\1\u022e\1\u01fa\1\u022e\4\u01fa\2\u022e\1\0\3\u022e\1\0"+ "\5\u022e\2\u01fa\2\u022e\43\u01fa\13\0\1\u022f\74\0\1\u022f"+ "\23\0\4\201\1\u0230\1\201\1\0\6\201\6\0\4\201"+ "\14\0\2\201\2\0\2\201\1\u0230\40\201\10\0\1\u01aa"+ "\112\0\2\52\1\0\1\52\1\0\2\52\2\0\1\76"+ "\5\52\1\0\25\52\1\0\11\52\1\0\3\52\1\76"+ "\41\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\11\52\1\u0231\22\52\1\u0231"+ "\10\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\12\52\1\u0147\22\52\1\u0147"+ "\7\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u0232\5\52\1\0\11\52\1\0\6\52\1\u0232"+ "\36\52\1\0\1\52\1\0\2\52\2\0\5\52\1\u0233"+ "\1\0\25\52\1\0\11\52\1\0\1\52\1\u0233\43\52"+ "\1\0\1\52\1\0\2\52\2\0\2\52\1\u0234\3\52"+ "\1\0\25\52\1\0\11\52\1\0\30\52\1\u0234\14\52"+ "\1\0\1\52\1\0\2\52\2\0\6\52\1\0\25\52"+ "\1\0\11\52\1\0\22\52\1\u0235\22\52\1\0\1\52"+ "\1\0\2\52\2\0\6\52\1\0\25\52\1\0\11\52"+ "\1\0\11\52\1\u0201\22\52\1\u0201\10\52\1\0\1\52"+ "\1\0\2\52\2\0\1\u01c4\5\52\1\0\25\52\1\0"+ "\11\52\1\0\3\52\1\u01c4\41\52\1\0\1\52\1\0"+ "\2\52\2\0\1\u0236\5\52\1\0\25\52\1\0\11\52"+ "\1\0\3\52\1\u0236\41\52\1\0\1\52\1\0\2\52"+ "\2\0\6\52\1\0\25\52\1\0\11\52\1\0\13\52"+ "\1\u0146\23\52\1\u0146\5\52\1\0\1\52\1\0\2\52"+ "\2\0\1\u01ff\5\52\1\0\25\52\1\0\11\52\1\0"+ "\3\52\1\u01ff\41\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0237"+ "\27\52\1\0\1\52\1\0\2\52\2\0\1\52\1\u0238"+ "\4\52\1\0\25\52\1\0\11\52\1\0\33\52\1\u0238"+ "\11\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u012a\5\52\1\0\11\52\1\0\6\52\1\u012a"+ "\36\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\15\52\1\u01ff\7\52\1\0\11\52\1\0\5\52\1\u01ff"+ "\37\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\17\52\1\u0239\5\52\1\0\11\52\1\0\6\52\1\u0239"+ "\36\52\1\0\1\52\1\0\2\52\2\0\3\52\1\300"+ "\2\52\1\0\25\52\1\0\6\52\1\300\2\52\1\0"+ "\45\52\1\0\1\52\1\0\2\52\2\0\2\52\1\u023a"+ "\3\52\1\0\25\52\1\0\11\52\1\0\30\52\1\u023a"+ "\12\52\14\0\1\u023b\37\0\1\u023b\46\0\1\110\10\0"+ "\1\110\1\u023c\4\110\1\0\1\110\4\u023c\1\110\1\0"+ "\4\110\1\0\2\110\2\u023c\14\0\2\110\2\0\4\110"+ "\1\u023c\1\110\1\u023c\1\110\1\u023c\5\110\1\u023c\6\110"+ "\1\u023c\1\110\1\u023c\1\110\1\u023c\1\110\1\u023c\2\110"+ "\1\u023c\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\1\u023d\1\117\2\0"+ "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\1\u023e\1\117\2\0"+ "\43\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\15\117"+ "\1\u023f\25\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\4\117\1\u0240\36\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\35\117\1\u0241\5\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\1\u0242\1\117\2\0\43\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\4\117\1\343\36\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\33\117\1\343\7\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\33\117\1\u0243\7\117\1\110"+ "\10\0\3\117\1\u0244\2\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\2\117\1\u0245\1\117\14\0\2\117"+ "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\1\117\1\u0186"+ "\2\0\43\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\30\117\1\u0246\12\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\u0247"+ "\1\117\2\0\43\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\5\117\1\u0248\35\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\6\117\1\u01e7\34\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\36\117\1\u0171\4\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\31\117\1\u0249\11\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\35\117\1\343\5\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\31\117\1\u024a"+ "\11\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\35\117"+ "\1\u024b\5\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\5\117\1\u01ee\35\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\1\117"+ "\1\u017b\2\0\43\117\14\0\1\u024c\37\0\1\u024c\56\0"+ "\1\u01fa\126\0\1\u024d\37\0\1\u024d\57\0\5\201\1\u024e"+ "\1\0\6\201\6\0\4\201\14\0\2\201\2\0\1\201"+ "\1\u024e\41\201\2\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\5\52\1\u0127\17\52\1\0\11\52\1\0"+ "\17\52\1\u0127\25\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\14\52\1\76\10\52\1\0\11\52\1\0"+ "\41\52\1\76\3\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\17\52\1\u024f\5\52\1\0\11\52\1\0"+ "\6\52\1\u024f\36\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\17\52\1\u014f\5\52\1\0\11\52\1\0"+ "\6\52\1\u014f\36\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\5\52\1\u0250\17\52\1\0\11\52\1\0"+ "\17\52\1\u0250\25\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\221"+ "\22\52\1\221\10\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\17\52\1\u01ff\5\52\1\0\11\52\1\0"+ "\6\52\1\u01ff\36\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\11\52\1\u014a"+ "\22\52\1\u014a\10\52\1\0\1\52\1\0\2\52\2\0"+ "\6\52\1\0\25\52\1\0\11\52\1\0\14\52\2\u0251"+ "\27\52\1\0\1\52\1\0\2\52\2\0\3\52\1\312"+ "\2\52\1\0\25\52\1\0\6\52\1\312\2\52\1\0"+ "\43\52\15\0\1\u0252\44\0\1\u0252\40\0\1\110\10\0"+ "\1\110\1\117\4\110\1\0\1\110\4\117\1\110\1\0"+ "\4\110\1\0\2\110\2\117\14\0\2\110\2\0\4\110"+ "\1\117\1\110\1\117\1\110\1\117\5\110\1\117\6\110"+ "\1\117\1\110\1\117\1\110\1\117\1\110\1\117\2\110"+ "\1\117\5\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\1\117"+ "\1\u0248\41\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u0224\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\6\117\1\u0253\34\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\31\117\1\u0254\11\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\33\117\1\u0175\7\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\6\117\1\u0255\34\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\1\117\1\u0256\41\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u0257"+ "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\5\117"+ "\1\u0258\35\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\34\117\1\u0259\6\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\34\117\1\u0227\6\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\37\117\1\343\3\117\1\110\10\0\6\117"+ "\1\0\6\117\1\0\1\110\1\326\2\117\1\0\4\117"+ "\14\0\2\117\2\0\35\117\1\u01e5\5\117\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\33\117\1\u01ee\7\117\1\110"+ "\10\0\6\117\1\0\5\117\1\u0186\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\43\117\15\0"+ "\1\u025a\44\0\1\u025a\55\0\1\u025b\44\0\1\u025b\40\0"+ "\2\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\14\52\1\u0147\10\52\1\0\11\52\1\0\41\52\1\u0147"+ "\3\52\1\0\1\52\1\0\2\52\2\0\6\52\1\0"+ "\25\52\1\0\11\52\1\0\11\52\1\223\22\52\1\223"+ "\10\52\1\0\1\52\1\0\2\52\2\0\4\52\1\u025c"+ "\1\52\1\0\25\52\1\0\11\52\1\0\2\52\1\u025c"+ "\40\52\16\0\1\u025d\42\0\1\u025d\41\0\1\110\10\0"+ "\6\117\1\0\6\117\1\0\1\110\1\326\2\117\1\0"+ "\4\117\14\0\2\117\2\0\35\117\1\u025e\5\117\1\110"+ "\10\0\6\117\1\0\6\117\1\0\1\110\1\326\2\117"+ "\1\0\4\117\14\0\2\117\2\0\33\117\1\u0186\7\117"+ "\1\110\10\0\6\117\1\0\6\117\1\0\1\110\1\326"+ "\2\117\1\0\4\117\14\0\2\117\2\0\35\117\1\u01ee"+ "\5\117\1\110\10\0\6\117\1\0\6\117\1\0\1\110"+ "\1\326\2\117\1\0\4\117\14\0\2\117\2\0\6\117"+ "\1\u019c\34\117\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u01e7\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\34\117\1\u025f\6\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\2\117\2\0\35\117\1\u0260\5\117\16\0\1\u0261\42\0"+ "\1\u0261\57\0\1\u0262\42\0\1\u0262\41\0\2\52\1\0"+ "\1\52\1\0\2\52\2\0\6\52\1\0\15\52\1\u0263"+ "\7\52\1\0\11\52\1\0\5\52\1\u0263\35\52\17\0"+ "\1\u0264\103\0\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\1\117\1\u0171\41\117\1\110\10\0\6\117\1\0\6\117"+ "\1\0\1\110\1\326\2\117\1\0\4\117\14\0\2\117"+ "\2\0\31\117\1\u0257\11\117\1\110\10\0\6\117\1\0"+ "\6\117\1\0\1\110\1\326\2\117\1\0\4\117\14\0"+ "\1\u0265\1\117\2\0\43\117\17\0\1\u0266\122\0\1\u0267"+ "\103\0\2\52\1\0\1\52\1\0\2\52\2\0\6\52"+ "\1\0\25\52\1\0\11\52\1\0\10\52\1\223\20\52"+ "\1\223\11\52\1\110\10\0\6\117\1\0\6\117\1\0"+ "\1\110\1\326\2\117\1\0\4\117\14\0\2\117\2\0"+ "\42\117\1\u0256"; private static int [] zzUnpackTrans() { int [] result = new int[45899]; 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 aState */ private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute(); private static final String ZZ_ATTRIBUTE_PACKED_0 = "\6\0\2\1\1\0\2\1\5\0\2\1\1\11\4\1"+ "\1\11\5\1\1\11\2\1\2\11\2\1\1\11\1\1"+ "\3\11\1\1\1\11\25\1\1\11\1\1\1\11\1\1"+ "\3\11\1\1\1\11\2\1\2\11\7\1\1\11\3\1"+ "\1\11\3\1\1\11\20\1\2\11\2\1\1\11\1\1"+ "\1\11\1\1\1\11\6\1\1\11\5\1\2\11\5\0"+ "\1\11\103\1\1\11\3\0\1\11\1\0\73\1\1\11"+ "\2\1\1\0\1\11\5\0\2\1\1\0\1\11\4\0"+ "\100\1\1\0\1\1\1\0\3\1\1\0\66\1\10\0"+ "\1\1\1\11\2\0\44\1\1\0\1\11\45\1\1\0"+ "\1\11\3\0\1\1\1\0\1\1\2\0\24\1\1\0"+ "\30\1\4\0\13\1\1\0\20\1\2\0\4\1\1\0"+ "\7\1\2\0\1\1\1\0\3\1\2\0\1\1\1\11"+ "\1\1\2\11"; private static int [] zzUnpackAttribute() { int [] result = new int[615]; 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[]; /** the textposition at the last accepting state */ private int zzMarkedPos; /** 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: */ /** * Type specific to XMLTokenMaker denoting a line ending with an unclosed * double-quote attribute. */ public static final int INTERNAL_ATTR_DOUBLE = -1; /** * Type specific to XMLTokenMaker denoting a line ending with an unclosed * single-quote attribute. */ public static final int INTERNAL_ATTR_SINGLE = -2; /** * Token type specific to HTMLTokenMaker; this signals that the user has * ended a line with an unclosed HTML tag; thus a new line is beginning * still inside of the tag. */ public static final int INTERNAL_INTAG = -3; /** * Token type specific to HTMLTokenMaker; this signals that the user has * ended a line with an unclosed <script> tag. */ public static final int INTERNAL_INTAG_SCRIPT = -4; /** * Token type specifying we're in a double-qouted attribute in a * script tag. */ public static final int INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT = -5; /** * Token type specifying we're in a single-qouted attribute in a * script tag. */ public static final int INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT = -6; /** * Token type specifying we're in JavaScript. */ public static final int INTERNAL_IN_JS = -7; /** * Token type specifying we're in a JavaScript multiline comment. */ public static final int INTERNAL_IN_JS_MLC = -8; /** * Token type specifying we're in an invalid multi-line JS string. */ public static final int INTERNAL_IN_JS_STRING_INVALID = -9; /** * Token type specifying we're in a valid multi-line JS string. */ public static final int INTERNAL_IN_JS_STRING_VALID = -10; /** * Token type specifying we're in an invalid multi-line JS single-quoted string. */ public static final int INTERNAL_IN_JS_CHAR_INVALID = -11; /** * Token type specifying we're in a valid multi-line JS single-quoted string. */ public static final int INTERNAL_IN_JS_CHAR_VALID = -12; /** * Whether closing markup tags are automatically completed for HTML. */ private static boolean completeCloseTags; /** * When in the JS_STRING state, whether the current string is valid. */ private boolean validJSString; /** * Constructor. This must be here because JFlex does not generate a * no-parameter constructor. */ public HTMLTokenMaker() { super(); } /** * Adds the token specified to the current linked list of tokens as an * "end token;" that is, at zzMarkedPos. * * @param tokenType The token's type. */ private void addEndToken(int tokenType) { addToken(zzMarkedPos,zzMarkedPos, tokenType); } /** * Adds the token specified to the current linked list of tokens. * * @param tokenType The token's type. * @see #addToken(int, int, int) */ private void addHyperlinkToken(int start, int end, int tokenType) { int so = start + offsetShift; addToken(zzBuffer, start,end, tokenType, so, true); } /** * Adds the token specified to the current linked list of tokens. * * @param tokenType The token's type. */ private void addToken(int tokenType) { addToken(zzStartRead, zzMarkedPos-1, tokenType); } /** * Adds the token specified to the current linked list of tokens. * * @param tokenType The token's type. */ private void addToken(int start, int end, int tokenType) { int so = start + offsetShift; addToken(zzBuffer, start,end, tokenType, so); } /** * Adds the token specified to the current linked list of tokens. * * @param array The character array. * @param start The starting offset in the array. * @param end The ending offset in the array. * @param tokenType The token's type. * @param startOffset The offset in the document at which this token * occurs. */ public void addToken(char[] array, int start, int end, int tokenType, int startOffset) { super.addToken(array, start,end, tokenType, startOffset); zzStartRead = zzMarkedPos; } /** * Sets whether markup close tags should be completed. You might not want * this to be the case, since some tags in standard HTML aren't usually * closed. * * @return Whether closing markup tags are completed. * @see #setCompleteCloseTags(boolean) */ public boolean getCompleteCloseTags() { return completeCloseTags; } /** * Returns the first token in the linked list of tokens generated * from text. This method must be implemented by * subclasses so they can correctly implement syntax highlighting. * * @param text The text from which to get tokens. * @param initialTokenType The token type we should start with. * @param startOffset The offset into the document at which * text starts. * @return The first Token in a linked list representing * the syntax highlighted text. */ public Token getTokenList(Segment text, int initialTokenType, int startOffset) { resetTokenList(); this.offsetShift = -text.offset + startOffset; // Start off in the proper state. int state = Token.NULL; switch (initialTokenType) { case Token.COMMENT_MULTILINE: state = COMMENT; start = text.offset; break; case Token.PREPROCESSOR: state = PI; start = text.offset; break; case Token.VARIABLE: state = DTD; start = text.offset; break; case INTERNAL_INTAG: state = INTAG; start = text.offset; break; case INTERNAL_INTAG_SCRIPT: state = INTAG_SCRIPT; start = text.offset; break; case INTERNAL_ATTR_DOUBLE: state = INATTR_DOUBLE; start = text.offset; break; case INTERNAL_ATTR_SINGLE: state = INATTR_SINGLE; start = text.offset; break; case INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT: state = INATTR_DOUBLE_SCRIPT; start = text.offset; break; case INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT: state = INATTR_SINGLE_SCRIPT; start = text.offset; break; case INTERNAL_IN_JS: state = JAVASCRIPT; start = text.offset; break; case INTERNAL_IN_JS_MLC: state = JS_MLC; start = text.offset; break; case INTERNAL_IN_JS_STRING_INVALID: state = JS_STRING; validJSString = false; start = text.offset; break; case INTERNAL_IN_JS_STRING_VALID: state = JS_STRING; validJSString = true; start = text.offset; break; case INTERNAL_IN_JS_CHAR_INVALID: state = JS_CHAR; validJSString = false; start = text.offset; break; case INTERNAL_IN_JS_CHAR_VALID: state = JS_CHAR; validJSString = true; start = text.offset; break; default: state = Token.NULL; } s = text; try { yyreset(zzReader); yybegin(state); return yylex(); } catch (IOException ioe) { ioe.printStackTrace(); return new DefaultToken(); } } /** * Sets whether markup close tags should be completed. You might not want * this to be the case, since some tags in standard HTML aren't usually * closed. * * @param complete Whether closing markup tags are completed. * @see #getCompleteCloseTags() */ public static void setCompleteCloseTags(boolean complete) { completeCloseTags = complete; } /** * Refills the input buffer. * * @return true if EOF was reached, otherwise * false. */ private boolean zzRefill() { return zzCurrentPos>=s.offset+s.count; } /** * 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 * cannot be reused (internal buffer is discarded and lost). * Lexical state is set to YY_INITIAL. * * @param reader the new input stream */ public final void yyreset(java.io.Reader reader) { // 's' has been updated. zzBuffer = s.array; /* * We replaced the line below with the two below it because zzRefill * no longer "refills" the buffer (since the way we do it, it's always * "full" the first time through, since it points to the segment's * array). So, we assign zzEndRead here. */ //zzStartRead = zzEndRead = s.offset; zzStartRead = s.offset; zzEndRead = zzStartRead + s.count - 1; zzCurrentPos = zzMarkedPos = s.offset; zzLexicalState = YYINITIAL; zzReader = reader; zzAtEOF = false; } /** * 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. */ public HTMLTokenMaker(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. */ public HTMLTokenMaker(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 < 192) { int count = packed.charAt(i++); char value = packed.charAt(i++); do map[j++] = value; while (--count > 0); } return map; } /** * 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(); } /** * 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 pos 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 org.fife.ui.rsyntaxtextarea.Token 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 2: { addToken(Token.IDENTIFIER); } case 67: break; case 60: { addToken(Token.LITERAL_BOOLEAN); } case 68: break; case 50: { /* Skip all escaped chars. */ } case 69: break; case 52: { /* Invalid latin-1 character \xXX */ validJSString = false; } case 70: break; case 46: { addToken(Token.ERROR_NUMBER_FORMAT); } case 71: break; case 38: { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } case 72: break; case 66: { yybegin(YYINITIAL); int temp = zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); } case 73: break; case 39: { int count = yylength(); addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); zzMarkedPos -= (count-1); //yypushback(count-1); yybegin(INTAG_CHECK_TAG_NAME); } case 74: break; case 23: { start = zzMarkedPos-1; yybegin(INATTR_SINGLE_SCRIPT); } case 75: break; case 14: { yybegin(YYINITIAL); addToken(Token.MARKUP_TAG_DELIMITER); } case 76: break; case 9: { addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken; } case 77: break; case 37: { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } case 78: break; case 61: { addToken(Token.FUNCTION); } case 79: break; case 40: { start = zzMarkedPos-2; yybegin(DTD); } case 80: break; case 26: { addEndToken(INTERNAL_IN_JS); return firstToken; } case 81: break; case 64: { yybegin(YYINITIAL); addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); } case 82: break; case 24: { yybegin(INTAG_SCRIPT); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } case 83: break; case 34: { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } case 84: break; case 18: { /* Shouldn't happen */ yypushback(1); yybegin(INTAG); } case 85: break; case 25: { addToken(Token.ERROR_IDENTIFIER); } case 86: break; case 32: { int type = validJSString ? Token.LITERAL_STRING_DOUBLE_QUOTE : Token.ERROR_STRING_DOUBLE; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } case 87: break; case 45: { start = zzMarkedPos-2; yybegin(JS_MLC); } case 88: break; case 56: { boolean highlightedAsRegex = false; if (firstToken==null) { addToken(Token.REGEX); highlightedAsRegex = true; } else { // If this is *likely* to be a regex, based on // the previous token, highlight it as such. Token t = firstToken.getLastNonCommentNonWhitespaceToken(); if (RSyntaxUtilities.regexCanFollowInJavaScript(t)) { addToken(Token.REGEX); highlightedAsRegex = true; } } // If it doesn't *appear* to be a regex, highlight it as // individual tokens. if (!highlightedAsRegex) { int temp = zzStartRead + 1; addToken(zzStartRead, zzStartRead, Token.OPERATOR); zzStartRead = zzCurrentPos = zzMarkedPos = temp; } } case 89: break; case 4: { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(INTAG); } case 90: break; case 31: { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } case 91: break; case 10: { yybegin(YYINITIAL); addToken(start,zzStartRead, Token.VARIABLE); } case 92: break; case 53: { yybegin(JAVASCRIPT); addToken(start,zzStartRead+1, Token.COMMENT_MULTILINE); } case 93: break; case 36: { int type = validJSString ? Token.LITERAL_CHAR : Token.ERROR_CHAR; addToken(start,zzStartRead, type); yybegin(JAVASCRIPT); } case 94: break; case 42: { yybegin(YYINITIAL); addToken(start,zzStartRead+1, Token.PREPROCESSOR); } case 95: break; case 20: { yybegin(INTAG); addToken(start,zzStartRead, Token.MARKUP_TAG_ATTRIBUTE_VALUE); } case 96: break; case 44: { start = zzMarkedPos-2; yybegin(JS_EOL_COMMENT); } case 97: break; case 41: { start = zzMarkedPos-2; yybegin(PI); } case 98: break; case 12: { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE); } case 99: break; case 48: { addToken(Token.LITERAL_NUMBER_HEXADECIMAL); } case 100: break; case 17: { /* A non-recognized HTML tag name */ yypushback(yylength()); yybegin(INTAG); } case 101: break; case 21: { start = zzMarkedPos-1; yybegin(INATTR_DOUBLE_SCRIPT); } case 102: break; case 33: { /* Line ending in '\' => continue to next line. */ if (validJSString) { addToken(start,zzStartRead, Token.LITERAL_STRING_DOUBLE_QUOTE); addEndToken(INTERNAL_IN_JS_STRING_VALID); } else { addToken(start,zzStartRead, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS_STRING_INVALID); } return firstToken; } case 103: break; case 5: { addToken(Token.WHITESPACE); } case 104: break; case 6: { addToken(Token.DATA_TYPE); } case 105: break; case 19: { addToken(Token.MARKUP_TAG_NAME); } case 106: break; case 35: { /* Line ending in '\' => continue to next line. */ if (validJSString) { addToken(start,zzStartRead, Token.LITERAL_CHAR); addEndToken(INTERNAL_IN_JS_CHAR_VALID); } else { addToken(start,zzStartRead, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS_CHAR_INVALID); } return firstToken; } case 107: break; case 63: { addToken(zzStartRead,zzStartRead, Token.MARKUP_TAG_DELIMITER); addToken(zzMarkedPos-6,zzMarkedPos-1, Token.MARKUP_TAG_NAME); start = zzMarkedPos; yybegin(INTAG_SCRIPT); } case 108: break; case 28: { addToken(Token.LITERAL_NUMBER_DECIMAL_INT); } case 109: break; case 16: { start = zzMarkedPos-1; yybegin(INATTR_SINGLE); } case 110: break; case 11: { addToken(Token.MARKUP_TAG_ATTRIBUTE); } case 111: break; case 27: { start = zzMarkedPos-1; validJSString = true; yybegin(JS_STRING); } case 112: break; case 51: { /* Invalid Unicode character \\uXXXX */ validJSString = false; } case 113: break; case 57: { start = zzMarkedPos-4; yybegin(COMMENT); } case 114: break; case 30: { start = zzMarkedPos-1; validJSString = true; yybegin(JS_CHAR); } case 115: break; case 49: { addToken(Token.RESERVED_WORD); } case 116: break; case 58: { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_MULTILINE); start = zzMarkedPos; } case 117: break; case 55: { yybegin(YYINITIAL); addToken(start,zzStartRead+2, Token.COMMENT_MULTILINE); } case 118: break; case 54: { int count = yylength(); addToken(zzStartRead,zzStartRead+1, Token.MARKUP_TAG_DELIMITER); zzMarkedPos -= (count-2); //yypushback(count-2); yybegin(INTAG_CHECK_TAG_NAME); } case 119: break; case 29: { addToken(Token.SEPARATOR); } case 120: break; case 3: { addNullToken(); return firstToken; } case 121: break; case 22: { yybegin(JAVASCRIPT); addToken(Token.MARKUP_TAG_DELIMITER); } case 122: break; case 43: { addToken(Token.MARKUP_TAG_DELIMITER); yybegin(YYINITIAL); } case 123: break; case 7: { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } case 124: break; case 15: { addToken(Token.OPERATOR); } case 125: break; case 47: { addToken(Token.LITERAL_NUMBER_FLOAT); } case 126: break; case 13: { addToken(Token.MARKUP_TAG_DELIMITER); } case 127: break; case 62: { int temp=zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_EOL); addHyperlinkToken(temp,zzMarkedPos-1, Token.COMMENT_EOL); start = zzMarkedPos; } case 128: break; case 59: { addToken(Token.COMMENT_MULTILINE); } case 129: break; case 8: { addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken; } case 130: break; case 65: { yybegin(YYINITIAL); int temp = zzStartRead; addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addToken(temp,temp+1, Token.MARKUP_TAG_DELIMITER); addToken(zzMarkedPos-7,zzMarkedPos-2, Token.MARKUP_TAG_NAME); addToken(zzMarkedPos-1,zzMarkedPos-1, Token.MARKUP_TAG_DELIMITER); } case 131: break; case 1: { } case 132: break; default: if (zzInput == YYEOF && zzStartRead == zzCurrentPos) { zzAtEOF = true; switch (zzLexicalState) { case JS_STRING: { addToken(start,zzStartRead-1, Token.ERROR_STRING_DOUBLE); addEndToken(INTERNAL_IN_JS); return firstToken; } case 616: break; case INTAG_CHECK_TAG_NAME: { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } case 617: break; case JS_MLC: { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); addEndToken(INTERNAL_IN_JS_MLC); return firstToken; } case 618: break; case INTAG_SCRIPT: { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG_SCRIPT); return firstToken; } case 619: break; case JS_CHAR: { addToken(start,zzStartRead-1, Token.ERROR_CHAR); addEndToken(INTERNAL_IN_JS); return firstToken; } case 620: break; case JS_EOL_COMMENT: { addToken(start,zzStartRead-1, Token.COMMENT_EOL); addEndToken(INTERNAL_IN_JS); return firstToken; } case 621: break; case INATTR_DOUBLE_SCRIPT: { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE_QUOTE_SCRIPT); return firstToken; } case 622: break; case INATTR_SINGLE_SCRIPT: { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE_QUOTE_SCRIPT); return firstToken; } case 623: break; case DTD: { addToken(start,zzStartRead-1, Token.VARIABLE); return firstToken; } case 624: break; case INATTR_SINGLE: { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_SINGLE); return firstToken; } case 625: break; case INATTR_DOUBLE: { addToken(start,zzStartRead-1, Token.MARKUP_TAG_ATTRIBUTE_VALUE); addEndToken(INTERNAL_ATTR_DOUBLE); return firstToken; } case 626: break; case YYINITIAL: { addNullToken(); return firstToken; } case 627: break; case INTAG: { addToken(zzMarkedPos,zzMarkedPos, INTERNAL_INTAG); return firstToken; } case 628: break; case COMMENT: { addToken(start,zzStartRead-1, Token.COMMENT_MULTILINE); return firstToken; } case 629: break; case JAVASCRIPT: { addEndToken(INTERNAL_IN_JS); return firstToken; } case 630: break; case PI: { addToken(start,zzStartRead-1, Token.PREPROCESSOR); return firstToken; } case 631: break; default: return null; } } else { zzScanError(ZZ_NO_MATCH); } } } } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy