//---------------------------------------------------- // The following code was generated by jh-javacup-1.2 20210807 // Sun Oct 27 17:47:44 CET 2024 //---------------------------------------------------- package de.uni_freiburg.informatik.ultimate.acsl.parser; import com.github.jhoenicke.javacup.runtime.*; import com.github.jhoenicke.javacup.runtime.ComplexSymbolFactory.ComplexSymbol; import java.util.List; import java.util.ArrayList; import java.util.LinkedList; import java.util.Arrays; import de.uni_freiburg.informatik.ultimate.model.acsl.ast.*; import de.uni_freiburg.informatik.ultimate.model.acsl.ACSLNode; import de.uni_freiburg.informatik.ultimate.model.acsl.ACSLNode.ACSLSourceLocation; import de.uni_freiburg.informatik.ultimate.core.model.services.ILogger; /** jh-javacup-1.2 20210807 generated parser. * @version Sun Oct 27 17:47:44 CET 2024 */ public class Parser extends com.github.jhoenicke.javacup.runtime.LRParser { /** Default constructor. */ public Parser() {super();} /** Constructor which sets the default scanner. */ public Parser(com.github.jhoenicke.javacup.runtime.Scanner s) {super(s);} /** Constructor which sets the default scanner. */ public Parser(com.github.jhoenicke.javacup.runtime.Scanner s, com.github.jhoenicke.javacup.runtime.SymbolFactory sf) {super(s,sf);} /** The static parse table */ static com.github.jhoenicke.javacup.runtime.ParseTable CUP$parse_table = new com.github.jhoenicke.javacup.runtime.ParseTable(new String[] { "\u023e\000\002\162\002\162\002\102\000\031\001" + "\031\003\103\000\007\003\007\003\007\003\007" + "\003\007\003\007\003\007\003\007\003\007\003" + "\007\003\007\005\007\003\007\001\015\002\015" + "\002\015\002\015\002\015\003\015\003\015\003" + "\015\003\015\003\015\003\015\003\015\004\015" + "\003\011\001\011\002\105\006\105\004\012\001" + "\012\001\012\002\104\002\104\003\025\001\025" + "\001\025\001\025\001\025\001\025\001\010\001" + "\010\002\010\001\010\001\010\004\010\004\010" + "\004\010\006\010\010\010\004\010\001\010\001" + "\010\003\010\003\010\003\010\003\010\003\010" + "\003\010\003\010\004\010\004\010\002\010\002" + "\010\002\010\002\010\002\010\004\010\004\010" + "\004\010\006\010\004\010\004\010\001\010\004" + "\010\004\010\007\010\004\010\001\010\003\010" + "\003\010\003\010\003\010\004\010\003\010\003" + "\010\005\010\001\010\004\010\003\010\005\010" + "\007\002\001\002\002\110\003\114\002\115\003" + "\111\003\116\003\117\003\112\003\113\003\120" + "\003\120\006\121\002\123\003\124\002\061\001" + "\061\002\013\001\013\001\014\001\014\000\055" + "\001\055\004\055\003\055\004\056\001\056\003" + "\070\001\070\003\065\002\065\002\060\002\100" + "\001\100\002\100\002\101\002\101\003\067\001" + "\067\001\125\000\126\002\126\003\130\003\130" + "\004\057\001\057\002\127\003\127\004\006\001" + "\006\001\006\001\006\001\006\001\006\002\006" + "\002\006\002\006\002\006\001\006\001\006\002" + "\006\002\006\001\006\002\006\002\006\003\006" + "\002\006\003\006\002\006\003\006\003\006\003" + "\006\004\006\004\006\001\006\001\006\002\006" + "\002\006\001\006\004\131\003\053\006\035\001" + "\035\000\036\004\037\000\037\001\040\003\041" + "\000\041\001\042\003\042\005\043\000\043\001" + "\044\004\044\004\047\000\047\001\050\005\045" + "\003\045\003\045\004\046\000\046\004\051\000" + "\051\001\052\005\052\005\034\001\032\001\032" + "\001\033\001\133\004\133\002\021\001\017\002" + "\017\002\017\004\017\002\020\000\020\001\030" + "\004\026\004\027\004\027\006\016\006\016\006" + "\016\003\016\003\016\005\016\004\016\006\136" + "\002\132\006\132\006\132\001\132\001\132\001" + "\132\004\132\006\054\011\066\005\066\005\062" + "\001\062\004\073\001\073\004\073\007\072\000" + "\072\001\071\003\075\007\075\006\075\006\075" + "\005\075\005\077\000\077\002\076\001\076\005" + "\142\000\142\002\144\000\144\003\143\002\143" + "\003\145\004\146\003\074\000\074\006\063\001" + "\063\003\064\001\064\003\005\001\023\000\023" + "\001\022\001\022\003\024\001\003\001\004\001" + "\004\001\001\001\001\001\001\001\001\001\001" + "\001\001\001\u0297\u06f5\u02a3\u04d7\u02a7\u3be3\u0817\u3b25" + "\u3a67\u0521\u495d\u30bb\u0297\u0297\u034f\u034d\u02d5\u0299\u0297" + "\u08b5\u08b3\u4bed\u1161\u1109\u0801\u10a3\u4e09\u4bbb\u08af\u0297" + "\u0297\u0297\u0297\u4443\u0297\u06e3\u06d5\u084b\u0297\u0297\u0297" + "\u0297\u0297\u47cd\u03bb\u4ddd\u4db1\u3d5f\u06b1\u0297\u0297\u0297" + "\u0297\u0297\u0297\u0697\u068b\u0297\u066d\u063b\u060f\u05d3\u05b1" + "\u05ad\u471b\u4669\u45b7\u0297\u0297\u0297\u08ad\u0599\u0589\u4505" + "\u0573\u4d85\u0d53\u0505\u04b3\u04a3\u0299\u02bd\u0847\u0297\u2615" + "\u48a5\u0297\u0297\u0297\u0297\u0297\u0297\u0847\u0889\u2557\u2499" + "\u39a9\u38eb\u0d21\u08b5\u0857\u0297\u0297\u0981\u06eb\u0297\u029d" + "\u0297\u104b\u0fe5\u0f8d\u0297\u0297\u0297\u0297\u0297\u0297\u0297" + "\u02af\u0297\u07e7\u0297\u0297\u0297\u0297\u382d\u02a7\u0297\u07e1" + "\u07d1\u0297\u0297\u02b9\u0297\u0f27\u0319\u0297\u0583\u048d\u08eb" + "\u083f\u02ab\u08d9\u08d5\u07c1\u4391\u0297\u376f\u36b1\u4453\u0bb1" + "\u062f\u4d59\u090f\u09e1\u02a3\u07fb\u084b\u07f7\u308d\u08f7\u0533" + "\u08f5\u051f\u0af3\u0297\u35f3\u3535\u3477\u33b9\u32fb\u323d\u317f" + "\u30c1\u3003\u0977\u0857\u07bd\u07b7\u0c63\u1503\u092f\u092d\u089f" + "\u0403\u089b\u03d3\u0ba5\u0ae7\u07a7\u060b\u08e5\u04f7\u0895\u2f45" + "\u4d2d\u2e87\u2dc9\u0ecf\u0297\u2d0b\u2c4d\u2b8f\u2ad1\u2a13\u2955" + "\u2897\u0297\u27d9\u271b\u265d\u259f\u24e1\u43a1\u0795\u0297\u0297" + "\u0297\u0297\u0297\u0297\u0781\u0297\u42ef\u423d\u418b\u40d9\u0a29" + "\u4027\u072f\u3f75\u3ec3\u3ca1\u0297\u02d3\u0727\u0297\u02bb\u23db" + "\u167f\u0297\u42b5\u0297\u0297\u0297\u08e3\u2423\u4d01\u0297\u0297" + "\u0651\u0297\u0297\u0297\u0315\u0297\u0297\u030f\u0297\u0297\u0297" + "\u0297\u0297\u04ed\u083d\u231d\u2365\u05fb\u0297\u081d\u0815\u0297" + "\u0569\u03f7\u02b5\u0297\u0485\u02cd\u0e69\u06e9\u4b2b\u0297\u0891" + "\u08cd\u11b7\u22a7\u0491\u4af7\u4ac5\u0479\u1445\u1387\u0297\u0297" + "\u0297\u0297\u0357\u0297\u0909\u02f9\u3e11\u0297\u306b\u0297\u0447" + "\u2fcf\u0297\u21e9\u49cf\u212b\u07ed\u12c9\u4201\u120b\u114d\u108f" + "\u409f\u3feb\u0fd1\u0297\u48cb\u08b1\u0297\u04e7\u0507\u0297\u0297" + "\u206d\u084b\u1faf\u087d\u07d3\u07cb\u0f13\u07b9\u1ef1\u1e33\u0e55" + "\u0309\u0d97\u07a5\u0887\u092b\u2d81\u2e5d\u2d9f\u0427\u0865\u3dd5" + "\u0297\u03bd\u030d\u087b\u0c39\u0365\u0695\u0297\u0297\u0a35\u0573" + "\u067b\u0613\u48bb\u089f\u060d\u04e9\u0297\u0917\u0739\u4837\u0297" + "\u1d75\u1cb7\u0297\u0297\u0297\u0297\u0297\u06b1\u0297\u1bf9\u0297" + "\u225f\u065b\u0865\u02d7\u0297\u02cb\u0297\u0297\u1b3b\u0297\u03bb" + "\u0297\u15c1\u1a7d\u096b\u02cb\u0297\u19bf\u091d\u029d\u075b\u03e7" + "\u0297\u089d\u0297\u0297\u0439\u4cd5\u0297\u088f\u085d\u0297\u0885" + "\u0927\u2fad\u2f11\u087d\u0757\u1901\u0611\u0e11\u0297\u069d\u0921" + "\u21a1\u1843\u0297\u0919\u0917\u4a35\u0297\u0297\u2cc3\u0297\u0297" + "\u03bb\u0753\u4ca9\u02d5\u0415\u2c05\u0297\u0297\u2b47\u0297\u0297" + "\u05ed\u0297\u0297\u0297\u1785\u16c7\u0297\u0297\u0297\u04f3\u03cb" + "\u08f7\u041b\u03d1\u088d\u2a89\u0297\u0871\u29cb\u0297\u086f\u0297" + "\u0297\u0297\u0297\u290d\u20e3\u0297\u0737\u0297\u0297\u0dab\u043b" + "\u1609\u0297\u0297\u0297\u2025\u1f67\u08d9\u0297\u0297\u0297\u4c7d" + "\u0297\u0297\u1ea9\u054d\u0297\u1deb\u08d5\u049b\u02bf\u0297\u1d2d" + "\u0863\u07cf\u07a5\u0677\u066f\u036f\u14c5\u0297\u0877\u0297\u0589" + "\u0297\u154b\u0297\u02f1\u0849\u0297\u0297\u4a01\u0297\u1c6f\u0ced" + "\u08f5\u0813\u0297\u0297\u0297\u1bb1\u0297\u0297\u072f\u0297\u02af" + "\u087d\u06fb\u0c1b\u3e89\u148d\u0297\u0297\u13cf\u0483\u0297\u044b" + "\u1311\u0297\u0297\u1253\u284f\u0297\u0297\u0297\u086b\u0297\u0297" + "\u08d1\u0591\u04c7\u080f\u0921\u091f\u0297\u0297\u0297\u3133\u0297" + "\u0297\u0297\u0297\u1195\u0663\u057d\u042b\u041f\u0413\u02fd\u02ef" + "\u0297\u0297\u0297\u4c21\u1af3\u0297\u0c95\u0297\u0297\u07f7\u0297" + "\u10d7\u0297\u088b\u0297\u0297\u0297\u0297\u1019\u1a35\u07ed\u2791" + "\u0297\u0869\u26d3\u06f1\u0297\u0297\u0297\u02c5\u02d7\u02b9\u0297" + "\u0b5d\u0b1d\u0a97\u0699\u05df\u0297\u0297\u0297\u0297\u0297\u085b" + "\u0f5b\u1977\u0e9d\u0a9f\u0297\u02b7\u0297\u0ddf\u029f\u02b7\u0297" + "\u08cf\u08ab\u0297\u0297\u18b9\u0297\u17fb\u0297\u08ef\u03a7\u173d" + "\u0297\u046b\u092b\u02a3\u029f\u0565\u0297\u0297\u02bd\u0297\u03e9" + "\u0297\u0297\u0297\u0297\u0297\u0297\u0297\u4f53\000\u016c\u016c" + "\000\000\000\000\000\000\000\004\u01aa\004\000" + "\000\000\u0170\u016a\000\000\000\000\000\000\000" + "\000\000\000\006\u01d4\u01d6\u01d8\006\002\000\000" + "\u0234\u0232\310\352\354\352\000\000\000\000\000" + "\000\u023a\u0238\u023c\u023e\146\150\000\000\242\000" + "\000\000\000\000\000\000\000\000\u0236\166\276" + "\000\000\000\000\000\000\000\000\000\000\254" + "\142\000\u022e\000\114\050\104\170\116\u0230\u022c" + "\000\u0228\000\000\000\000\000\000\u0162\u012e\u0130" + "\000\u013a\u013c\u0142\u015c\000\000\000\u0128\u0128\u0128" + "\u012a\u012c\u015a\u012c\000\u01a8\000\u01b6\u01ac\u01b2\u01ae" + "\000\u0176\u0172\000\000\u0234\u0112\u0116\u0114\000\u01e4" + "\u01e8\000\000\000\000\000\000\000\000\u01ce\u01ce" + "\000\000\000\222\u0162\000\u0108\000\000\000\000" + "\000\000\000\000\000\000\144\120\000\000\000" + "\000\000\000\000\000\000\214\216\224\000\000" + "\000\000\000\000\000\000\000\000\000\220\000" + "\000\000\000\000\000\000\000\000\312\000\000" + "\000\000\000\000\000\u01c6\000\000\000\000\000" + "\000\000\126\130\132\134\136\140\000\136\000" + "\000\000\000\000\000\000\000\000\000\106\u016c" + "\000\u01c4\u016c\000\000\u01a2\012\u01a4\u019e\u01a0\000" + "\000\000\u0132\u013e\u0144\u0138\u0134\u0140\u0146\u0136\u0136" + "\u014e\u015e\u014a\u0138\u0160\u0136\000\000\000\000\u017e" + "\u0178\000\000\u0120\000\000\u0106\u0106\u0106\000\000" + "\000\000\u01f0\000\000\000\000\000\000\000\000" + "\000\000\u010a\u010c\262\016\u010e\u010e\u010e\u010e\000" + "\264\000\362\346\000\344\000\000\000\000\000" + "\000\000\000\000\000\000\000\316\000\000\302" + "\000\000\264\264\000\000\000\000\000\000\000" + "\000\000\000\000\000\000\000\u021a\000\046\022" + "\020\026\024\000\032\042\040\036\030\034\176" + "\206\204\174\172\200\202\000\000\270\270\272" + "\256\260\114\122\000\000\u01b0\u01a6\u022a\u016e\u01ba" + "\000\u01bc\000\u01b8\000\000\000\u0150\u0148\u0152\u014c" + "\u0154\000\u01ca\000\u0174\000\000\000\u0186\u0180\000" + "\000\000\000\000\356\000\u0122\u0118\u0118\000\u0118" + "\000\000\u0222\u021e\000\000\000\376\000\000\000" + "\000\u0202\000\000\000\000\u01da\000\000\000\154" + "\156\314\314\u0110\266\000\000\000\350\112\342" + "\342\112\244\232\000\240\236\152\000\000\164" + "\324\324\000\000\000\000\000\000\320\322\322" + "\326\330\330\300\300\226\230\112\000\164\000" + "\164\246\000\252\000\212\210\124\000\000\000" + "\014\u01c8\u0164\000\u0156\u0158\000\000\u017a\000\000" + "\000\000\u0188\000\000\000\000\000\000\000\000" + "\u011c\u0124\u011a\000\372\000\u01e6\000\u01ea\u0104\u0102" + "\000\u01f2\000\000\000\000\u0200\u01fc\u01fa\000\u01e2" + "\u01e0\000\366\000\000\000\000\000\000\304\304" + "\000\340\340\000\000\274\u021c\000\044\u01c2\u01c0" + "\u01be\u0166\u0166\u01cc\000\u017e\u017e\000\000\000\u0168" + "\u0198\u01d0\000\060\052\054\056\000\000\000\000" + "\000\000\000\000\u01d2\u0126\u011e\000\000\u0220\000" + "\u0100\u01f6\000\u01f8\000\u01dc\000\370\364\234\160" + "\000\000\000\334\332\332\110\000\u017c\u0182\u0184" + "\u0192\000\000\102\000\072\070\076\074\062\064" + "\066\374\u01f4\000\000\000\000\000\306\000\250" + "\000\u0186\u016c\u0226\000\000\100\u01ec\000\u0204\000" + "\162\000\000\000\u018a\u017e\u016a\000\000\000\u01de" + "\336\u0192\u018c\u0180\u018e\u019a\u019c\u0218\u0194\u0190\u0190" + "\u0126\000\020\000\u0126\105\u0126\107\u0277\000\u0289" + "\u0196\001\000\u0288\u0196\175\000\003\103\u0126\111" + "\u0126\113\u0126\115\u0126\117\u0126\121\u0126\123\u0278" + "\000\203\000\354\000\u028d\000\214\u023b\u01f3\u0196" + "\165\u020d\u0260\000\151\u0201\151\u0203\u018c\000\u0262" + "\263\u0262\113\151\u0205\351\000\120\u018d\017\u01b4" + "\u0126\125\u0126\127\117\u0189\u0190\u032b\u0190\u021f\u0190" + "\u03fb\232\u021d\232\u021f\232\u0116\u0261\263\u0261\113" + "\u01b7\117\u01b7\121\u01b7\123\u0216\u04a3\u0111\u032b\u0111" + "\u021f\203\u021d\203\u021f\u0182\u03d9\u0126\131\u0126\133" + "\u0204\263\u0204\113\u0274\u0163\u0180\u03d7\u0126\135\u0126" + "\137\u0114\u022f\u0216\u048d\u0126\141\u0126\143\u0126\145" + "\u0126\147\u0126\151\u0126\153\u0126\155\u0126\157\u0126" + "\161\u0126\163\u0126\165\u0126\167\u0126\171\u0126\173" + "\u0126\175\u0242\u03ed\u0114\u01ee\u0126\177\u0126\201\u0126" + "\203\u012a\u0331\375\u0305\u0241\u03ed\u0100\u0309\u0126\205" + "\u0190\u0221\375\u0307\u0151\u03b7\232\u0221\016\u01b4\015" + "\u01b4\001\011\u0126\207\u0126\211\001\013\175\u0213" + "\001\015\u0111\u0221\u0274\u0165\203\u0221\u0242\u03ef\001" + "\017\u0242\u03f1\u0242\u03f3\001\021\u0242\u03f5\206\u022b" + "\u0241\u03ef\u0262\u0224\u0241\u03f1\u0241\u03f3\u0278\017\u0241" + "\u03f5\354\017\u01b7\360\351\u02e5\u0126\213\117\u018b" + "\351\357\017\357\351\u02e7\u0126\215\u0126\217\u0261" + "\u0224\001\023\351\017\u0127\u032b\u0127\u021f\351\021" + "\017\021\u0277\u03e5\u012a\u0221\020\371\u0289\u0463\u0289" + "\u0465\u0288\u0463\u0288\u0465\u0126\221\u015e\u019b\u01fb\u0477" + "\u0126\223\u0126\225\u0126\227\u0126\231\u0126\233\053" + "\105\053\107\u028d\u04ed\u0126\235\u01f3\u0463\u01f3\u0465" + "\u0260\u04ed\u018c\u03e5\053\111\053\u012d\053\115\053" + "\117\053\121\053\123\053\311\053\313\053\315" + "\053\317\053\321\053\323\053\325\053\327\053" + "\331\053\333\053\335\053\337\053\341\053\343" + "\053\345\053\347\053\351\053\125\053\127\u0127" + "\u0221\016\357\015\357\206\u022d\u0161\u019b\u0283\u0443" + "\u01b4\u01ab\053\016\u0110\117\u0110\121\u0110\123\016" + "\021\015\021\u0242\u03f7\u015e\u01a1\u015e\u01a3\u01b4\u01b9" + "\u012a\u0367\053\131\053\133\u0241\u03f7\u0192\u0331\u0192" + "\u03fb\u01c9\u0267\053\135\053\137\u01cc\u0443\271\u0293" + "\053\141\053\143\053\145\053\147\053\151\053" + "\153\053\155\053\157\053\161\053\163\053\165" + "\053\167\053\171\053\173\053\175\u0240\u03ed\u01b8" + "\u036d\053\177\053\201\053\203\u015d\u019b\u023f\u03ed" + "\u01b4\u01c5\267\u028f\053\205\u0286\000\u01cb\u0163\u023e" + "\u03ed\u0187\357\u0161\u019f\u0161\u01a1\u0161\u01a3\053\207" + "\053\211\u0197\u0331\u01df\u044b\u0127\u0367\u01cb\u043d\u0187" + "\021\u01c9\u0437\u0240\u03ef\u012f\u036d\u0240\u03f1\u0240\u03f3" + "\u0192\u0221\u0240\u03f5\u023f\u03ef\u0283\u0519\u023f\u03f1\u023f" + "\u03f3\u0221\u0163\u023f\u03f5\u023e\u03ef\u0110\360\u023e\u03f1" + "\u023e\u03f3\053\213\u023e\u03f5\u028f\u052b\u01f2\263\u01f2" + "\113\053\215\053\217\u01b4\u01c7\u01b4\u01c9\u01c9\u0439" + "\u0120\u035d\u01b8\u036f\u01cc\u043b\271\u028b\u01cb\u0165\u022f" + "\000\u0113\u0331\u0159\u019b\u015d\u01a1\u015d\u01a3\211\u022f" + "\053\221\u021f\u0163\002\000\053\223\053\225\053" + "\227\053\231\053\233\u0197\u0221\053\u012f\116\u0187" + "\053\235\u0142\105\u0142\107\u028f\u052d\u012f\u036f\267" + "\u0289\u0221\u0165\115\u0185\u011d\u0355\u0142\111\u0142\u012d" + "\u0142\115\u0142\117\u0142\121\u0142\123\u0142\311\u0142" + "\313\u0142\315\u0142\317\u0142\321\u0142\323\u0142\325" + "\u0142\327\u0142\331\u0142\333\u0142\335\u0142\337\u0142" + "\341\u0142\343\u0142\345\u0142\347\u0142\351\u0142\125" + "\u0142\127\u021f\u0165\u0113\u0221\u0286\u0315\u0286\u0317\u0159" + "\u019f\u0159\u01a1\u0159\u01a3\u016c\u01ab\u0159\u01a7\u0240\u03f7" + "\u0286\u0315\u0286\u0315\u0286\u0315\u0286\u0315\114\u0183\u023f" + "\u03f7\u011d\u0357\u016c\u01b9\u0142\131\u0142\133\u0106\u030b" + "\u023e\u03f7\u0143\u0163\277\u0267\u0142\135\u0142\137\u01ee" + "\263\u01ee\113\u0142\141\u0142\143\u0142\145\u0142\147" + "\u0142\151\u0142\153\u0142\155\u0142\157\u0142\161\u0142" + "\163\u0142\165\u0142\167\u0142\171\u0142\173\u0142\175" + "\242\u0267\002\045\u0142\177\u0142\201\u0142\203\u022f" + "\u0315\u022f\u0317\u022e\000\u016c\u01c5\u0142\205\240\u0267" + "\002\047\002\017\u022f\u0315\u022f\u0315\u022f\u0315\u022f" + "\u0315\u0142\207\u0142\211\u0106\u030d\u010f\u021d\u010f\u021f" + "\u01c8\u0437\u0143\u0165\277\u029d\u0166\u01a9\111\u017b\002" + "\051\002\053\002\055\002\057\u023d\u03ed\002\061" + "\u0166\u01ab\210\u022f\002\063\002\065\107\u0177\u0200" + "\u048b\010\277\010\301\u0142\213\002\067\u0166\u01b9" + "\242\u0269\106\u0175\u0142\215\u0142\217\u01c8\u0439\u016c" + "\u01c7\u016c\u01c9\010\303\210\u01ee\u0200\u048d\240\u0265" + "\076\u015b\u023d\u03ef\075\u0159\u023d\u03f1\u023d\u03f3\u010a" + "\000\u023d\u03f5\u0142\221\u01bf\263\u01bf\113\u0142\223" + "\u0142\225\u0142\227\u0142\231\u0142\233\275\105\275" + "\107\u010f\u0221\u0142\235\074\u0157\u0166\u01c1\u0166\u01c3" + "\u0166\u01c5\275\111\275\u012d\275\115\275\117\275" + "\121\275\123\275\311\275\313\275\315\275\317" + "\275\321\275\323\275\325\275\327\275\331\275" + "\333\275\335\275\337\275\341\275\343\275\345" + "\275\347\275\351\275\125\275\127\u0268\u047d\073" + "\u0155\u028a\u0216\u022e\u0315\u022e\u0317\u028a\u0417\u0268\u0481" + "\u016b\u01ab\u0268\u0483\u0268\u0485\u0168\u01ab\u022e\u0315\u022e" + "\u0315\u022e\u0315\u022e\u0315\u0166\u01c7\u0166\u01c9\u016b\u01b9" + "\275\131\275\133\u0168\u01b9\371\u0301\226\u0232\072" + "\u0153\275\135\275\137\371\u0303\226\u01ed\275\141" + "\275\143\275\145\275\147\275\151\275\153\275" + "\155\275\157\275\161\275\163\275\165\275\167" + "\275\171\275\173\275\175\u023c\u03ed\u023d\u03f7\275" + "\177\275\201\275\203\071\u0151\u01fa\u03ed\u017e\u03d3" + "\u016b\u01c5\275\205\u01f9\u03ed\u0168\u01c5\u017e\u03d5\u010a" + "\u0315\u010a\u0317\u0179\263\u0179\113\275\207\275\211" + "\u0167\u01ab\067\u014f\u010a\u0315\u010a\u0315\u010a\u0315\u010a" + "\u0315\u023c\u03ef\066\u014d\u023c\u03f1\u023c\u03f3\u0167\u01b9" + "\u023c\u03f5\u01fa\u03ef\u0162\u01ab\u01fa\u03f1\u01fa\u03f3\u01f9" + "\u03ef\u01fa\u03f5\u01f9\u03f1\u01f9\u03f3\057\u014b\u01f9\u03f5" + "\275\213\u0162\u01b9\u0116\263\u0116\113\u01a4\u0216\275" + "\215\275\217\u01a4\u0417\u016b\u01c7\u016b\u01c9\147\u01f7" + "\u0168\u01c7\u0168\u01c9\147\u01f9\147\u01fb\u0267\u0481\043" + "\u0127\u0267\u0483\u0267\u0485\147\u01fd\147\u01ff\275\221" + "\u0167\u01c5\042\u0125\275\223\275\225\275\227\275" + "\231\275\233\344\105\344\107\u025c\u04eb\275\235" + "\352\263\352\113\u0162\u01c5\u0218\u04a7\344\u0103\344" + "\307\344\115\344\117\344\121\344\123\344\311" + "\344\313\344\315\344\317\344\321\344\323\344" + "\325\344\327\344\331\344\333\344\335\344\337" + "\344\341\344\343\344\345\344\347\344\351\344" + "\125\344\127\u0214\u04a1\u0167\u01c7\u0167\u01c9\u016f\u01a9" + "\u01db\u0447\u01a7\051\u01a7\053\u01a7\055\u01a7\057\u01a7" + "\u034b\u01a7\061\u016f\u01ab\u01a7\u01fe\u023c\u03f7\u0162\u01c7" + "\u0162\u01c9\334\263\334\113\u01b5\u042b\u01fa\u03f7\u01a2" + "\u0413\u016f\u01b9\u0191\u03fb\u01f9\u03f7\344\u0129\344\137" + "\325\263\325\113\344\141\344\143\344\145\344" + "\147\344\151\344\153\344\155\344\157\344\161" + "\344\163\344\165\344\167\344\171\344\173\344" + "\175\261\263\261\113\344\177\344\201\344\203" + "\217\263\217\113\u016f\u01bd\u016f\u01bf\344\205\u016f" + "\u01c1\u016f\u01c3\u016f\u01c5\200\263\200\113\u01f8\u03ed" + "\u0153\u03bb\344\207\344\211\u0257\105\u0257\107\177" + "\263\177\113\274\u01ab\167\263\167\113\u014d\u03af" + "\u0257\111\u0257\113\u0257\115\u0257\117\u0257\121\u0257" + "\123\274\u01b9\260\u01ab\u014b\u03ab\u01f7\u03ed\027\263" + "\027\113\u014a\u03a9\u01f8\u03ef\344\213\u01f8\u03f1\u01f8" + "\u03f3\260\u01b9\u01f8\u03f5\344\215\344\217\005\263" + "\005\113\u0257\125\u0257\127\u0135\u037b\u016f\u01c7\u016f" + "\u01c9\000\003\000\005\235\u0259\u0257\u0163\233\u0257" + "\u024c\u04df\u01f7\u03ef\344\221\u01f7\u03f1\u01f7\u03f3\344" + "\223\u01f7\u03f5\274\u01c5\344\231\344\233\u0257\131" + "\u0257\133\u0230\u04c1\344\235\u020d\u049d\u010d\u031f\u0257" + "\135\u0257\137\260\u01c5\u010c\u031d\u0257\141\u0257\143" + "\u0257\145\u0257\147\u0257\151\u0257\153\u0257\155\u0257" + "\157\u0257\161\u0257\163\u0257\165\u0257\167\u0257\171" + "\u0257\173\u0257\175\u0107\u030f\213\u0239\u0257\177\u0257" + "\201\u0257\203\133\u01d3\121\u018f\u0257\u0165\044\u0230" + "\u0257\205\u0147\u0163\234\u024d\u0205\u0493\274\u01c7\274" + "\u01c9\u01f6\u03ed\257\u01ab\u0257\207\u0257\211\143\u01ed" + "\105\105\105\107\u026e\u04fb\u019b\u0407\260\u01c7\260" + "\u01c9\257\u01b9\u017f\u03d3\105\111\105\113\105\115" + "\105\117\105\121\105\123\u025a\u0443\u022a\u03d5\u01f8" + "\u03f7\u01d3\u0293\u01d0\u028f\u015a\u0195\u01f6\u03ef\u0257\213" + "\u01f6\u03f1\u01f6\u03f3\u01a1\u0411\u01f6\u03f5\u0257\215\u0257" + "\217\u019d\u0409\u0154\u03bd\134\u01d5\105\125\105\127" + "\u0250\u04e3\u01cd\u043d\u019a\u0405\u0119\u0347\u01f7\u03f7\300" + "\u029f\105\u0163\257\u01c5\270\u0291\u0257\221\266\u028d" + "\u015a\u019b\u0257\223\u0257\225\u0257\227\u0257\231\u0257" + "\233\u0257\u04e9\105\131\105\133\u0257\235\142\u01eb" + "\u015f\u019b\u01fe\u0221\105\135\105\137\u0149\u0165\u0217" + "\u04a5\105\141\105\143\105\145\105\147\105\151" + "\105\153\105\155\105\157\105\161\105\163\105" + "\165\105\167\105\171\105\173\105\175\u0194\u03fd" + "\u016a\u03c5\105\177\105\201\105\203\257\u01c7\257" + "\u01c9\105\u0165\u016e\u01a9\105\205\u0140\u038f\033\u011f" + "\u018f\u03ed\023\u0101\022\377\u027b\u0513\u016e\u01ab\105" + "\207\105\211\u018b\105\u018b\107\u015a\u019f\u015a\u01a1" + "\u015a\u01a3\u015a\u01a5\u015a\u01a7\u016e\u01b9\u018b\111\u018b" + "\113\u018b\115\u018b\117\u018b\121\u018b\123\u027a\u0511" + "\u022d\u04bb\u01f6\u03f7\u01f1\u045f\u018f\u03ef\u01e6\u0453\u018f" + "\u03f1\u018f\u03f3\105\213\u018f\u03f5\364\u02f9\276\u029d" + "\146\u01ef\105\215\105\217\146\u01f1\146\u01f3\u018b" + "\125\u018b\127\241\u0269\237\u0265\146\u01f5\u016e\u01bd" + "\u016e\u01bf\u011a\u0349\u016e\u01c1\u016e\u01c3\u016e\u01c5\216" + "\u023f\105\221\215\u023d\256\u01ab\105\223\105\225" + "\105\227\105\231\105\233\u018b\131\u018b\133\212" + "\u0237\105\235\256\u01b9\u0282\u0519\u018b\135\u018b\137" + "\u020c\u049b\u01ca\u043b\u018b\141\u018b\143\u018b\145\u018b" + "\147\u018b\151\u018b\153\u018b\155\u018b\157\u018b\161" + "\u018b\163\u018b\165\u018b\167\u018b\171\u018b\173\u018b" + "\175\u01ad\u0427\u01ac\u0425\u018b\177\u018b\201\u018b\203" + "\u01a8\u041f\u016e\u01c7\u016e\u01c9\u019e\u040b\u018b\205\u0155" + "\u03bf\265\u028b\264\u0289\256\u01c5\u0232\u04c5\u0231\u04c3" + "\231\u024b\u018b\207\u018b\211\342\105\342\107\u0287" + "\u0521\u0129\u0367\231\u024d\u018b\u01df\230\u0249\u0297\001" + "\342\111\342\113\342\115\342\117\342\121\342" + "\123\u018f\u03f7\u0297\001\u0297\001\231\u0191\231\u0193" + "\231\u0195\231\u0197\u0297\001\u018b\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\u018b\215\u018b\217\u0297\001" + "\u0297\001\342\125\342\127\u0297\001\u0297\001\256" + "\u01c7\256\u01c9\u0165\u01a9\u0297\001\u0297\001\342\016" + "\231\u0199\u0297\001\u018b\221\231\u019b\u0165\u01ab\u018b" + "\223\u018b\225\u018b\227\u018b\231\u018b\233\342\131" + "\342\133\u0297\001\u018b\235\u0165\u01b9\u0297\001\342" + "\135\342\137\u0297\001\u0297\001\342\141\342\143" + "\342\145\342\147\342\151\342\153\342\155\342" + "\157\342\161\342\163\342\165\342\167\342\171" + "\342\173\342\175\u0297\001\u0297\001\342\177\342" + "\201\342\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\342\205\u0297\001\u0165\u01c1\u0165\u01c3\u0165\u01c5\u0297" + "\001\u0297\001\u0272\u0503\342\207\342\211\273\105" + "\273\107\231\u019f\231\u01a1\231\u01a3\231\u01a5\231" + "\u01a7\u0297\001\273\111\273\113\273\115\273\117" + "\273\121\273\123\u0266\u047b\u0266\u047d\u0266\u047f\u0272" + "\u0191\u0272\u0193\u0272\u0195\u0272\u0197\u0266\u0481\342\213" + "\u0266\u0483\u0266\u0485\u0297\001\u0297\001\342\215\342" + "\217\u0297\001\u0297\001\273\125\273\127\273\010" + "\u0297\001\u0165\u01c7\u0165\u01c9\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0272\u0199\u0297\001\342\221\u0272\u019b" + "\243\u01ab\342\223\342\225\342\227\342\231\342" + "\233\273\131\273\133\u0297\001\342\235\243\u01b9" + "\u0297\001\273\135\273\137\u0297\001\u0297\001\273" + "\141\273\143\273\145\273\147\273\151\273\153" + "\273\155\273\157\273\161\273\163\273\165\273" + "\167\273\171\273\173\273\175\u0297\001\u0297\001" + "\273\177\273\201\273\203\u0265\u047b\u0265\u047d\u0265" + "\u047f\u0297\001\273\205\u0297\001\u0297\001\u0265\u0481" + "\243\u01c5\u0265\u0483\u0265\u0485\u0264\u04f9\273\207\273" + "\211\272\105\272\107\u0272\u019f\u0272\u01a1\u0272\u01a3" + "\u0272\u01a5\u0272\u01a7\u0297\001\272\111\272\113\272" + "\115\272\117\272\121\272\123\u0297\001\u0297\001" + "\u0297\001\u0264\u0191\u0264\u0193\u0264\u0195\u0264\u0197\u0297" + "\001\273\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\273\215\273\217\u0297\001\u0297\001\272\125\272" + "\127\272\010\u0297\001\243\u01c7\243\u01c9\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0264\u0199\u0297\001\273" + "\221\u0264\u019b\225\u01ab\273\223\273\225\273\227" + "\273\231\273\233\272\131\272\133\u0297\001\273" + "\235\225\u01b9\u0297\001\272\135\272\137\u0297\001" + "\u0297\001\272\141\272\143\272\145\272\147\272" + "\151\272\153\272\155\272\157\272\161\272\163" + "\272\165\272\167\272\171\272\173\272\175\u0297" + "\001\u0297\001\272\177\272\201\272\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\272\205\u0297\001\u0297" + "\001\u0297\001\225\u01c5\u0297\001\u0297\001\u0219\u04a9" + "\272\207\272\211\262\105\262\107\u0264\u019f\u0264" + "\u01a1\u0264\u01a3\u0264\u01a5\u0264\u01a7\u0297\001\262\111" + "\262\113\262\115\262\117\262\121\262\123\u0297" + "\001\u0297\001\u0297\001\u0219\u0191\u0219\u0193\u0219\u0195" + "\u0219\u0197\u0297\001\272\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\272\215\272\217\u0297\001\u0297\001" + "\262\125\262\127\u0249\u0103\u0160\u0195\225\u01c7\225" + "\u01c9\u0297\001\u0297\001\u0297\001\262\016\u0219\u0199" + "\u0297\001\272\221\u0219\u019b\u0297\001\272\223\272" + "\225\272\227\272\231\272\233\262\131\262\133" + "\u0297\001\272\235\u0297\001\u0297\001\262\135\262" + "\137\u0160\u019b\u0297\001\262\141\262\143\262\145" + "\262\147\262\151\262\153\262\155\262\157\262" + "\161\262\163\262\165\262\167\262\171\262\173" + "\262\175\u0297\001\u020b\u0103\262\177\262\201\262" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\262\205" + "\u0249\141\u0249\143\u0249\145\u0249\147\u0297\001\u0297" + "\001\u0297\001\262\207\262\211\141\105\141\107" + "\u0219\u019f\u0219\u01a1\u0219\u01a3\u0219\u01a5\u0219\u01a7\u0297" + "\001\141\111\141\113\141\115\141\117\141\121" + "\141\123\u0297\001\u0249\205\u0297\001\u0160\u019f\u0160" + "\u01a1\u0160\u01a3\u0297\001\u0160\u01a7\262\213\u0297\001" + "\u0297\001\u0297\001\u0297\001\262\215\262\217\u0297" + "\001\u0297\001\141\125\141\127\113\u0103\113\u0181" + "\u020b\141\u020b\143\u020b\145\u020b\147\u0297\001\u0297" + "\001\u0297\001\u0297\001\262\221\u0297\001\u0297\001" + "\262\223\262\225\262\227\262\231\262\233\141" + "\131\141\133\u0297\001\262\235\u0297\001\u0297\001" + "\141\135\141\137\u020b\205\u0297\001\141\141\141" + "\143\141\145\141\147\141\151\141\153\141\155" + "\141\157\141\161\141\163\141\165\141\167\141" + "\171\141\173\141\175\u0297\001\u01de\u0103\141\177" + "\141\201\141\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\141\205\113\141\113\143\113\145\113\147" + "\u0297\001\u0297\001\u0152\u03b9\141\207\141\211\u0276" + "\105\u0276\107\u0297\001\u0297\001\u0297\001\141\u01df" + "\u0297\001\u0297\001\u0276\111\u0276\113\u0276\115\u0276" + "\117\u0276\121\u0276\123\u0297\001\113\205\u0297\001" + "\u0152\u0191\u0152\u0193\u0152\u0195\u0152\u0197\u0297\001\141" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\141\215" + "\141\217\u0297\001\u0297\001\u0276\125\u0276\127\u01a5" + "\u0103\u0297\001\u01de\141\u01de\143\u01de\145\u01de\147" + "\u0297\001\u0297\001\u0152\u0199\u0297\001\141\221\u0152" + "\u019b\u0297\001\141\223\141\225\141\227\141\231" + "\141\233\u0276\131\u0276\133\u0297\001\141\235\u0297" + "\001\u0297\001\u0276\135\u0276\137\u01de\205\u0297\001" + "\u0276\141\u0276\143\u0276\145\u0276\147\u0276\151\u0276" + "\153\u0276\155\u0276\157\u0276\161\u0276\163\u0276\165" + "\u0276\167\u0276\171\u0276\173\u0276\175\u0297\001\u0115" + "\u0103\u0276\177\u0276\201\u0276\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0276\205\u01a5\141\u01a5\143\u01a5" + "\145\u01a5\147\u0297\001\u0297\001\u0150\u03b5\u0276\207" + "\u0276\211\u0271\105\u0271\107\u0152\u019f\u0152\u01a1\u0152" + "\u01a3\u0152\u01a5\u0152\u01a7\u0297\001\u0271\111\u0271\113" + "\u0271\115\u0271\117\u0271\121\u0271\123\u0297\001\u01a5" + "\205\u0297\001\u0150\u0191\u0150\u0193\u0150\u0195\u0150\u0197" + "\u0297\001\u0276\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0276\215\u0276\217\u0297\001\u0297\001\u0271\125" + "\u0271\127\305\u0103\u0297\001\u0115\141\u0115\143\u0115" + "\145\u0115\147\u0297\001\u0297\001\u0150\u0199\u0297\001" + "\u0276\221\u0150\u019b\u0297\001\u0276\223\u0276\225\u0276" + "\227\u0276\231\u0276\233\u0271\131\u0271\133\u0297\001" + "\u0276\235\u0297\001\u0297\001\u0271\135\u0271\137\u0115" + "\205\u0297\001\u0271\141\u0271\143\u0271\145\u0271\147" + "\u0271\151\u0271\153\u0271\155\u0271\157\u0271\161\u0271" + "\163\u0271\165\u0271\167\u0271\171\u0271\173\u0271\175" + "\u0297\001\205\u0103\u0271\177\u0271\201\u0271\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0271\205\305\141" + "\305\143\305\145\305\147\u0297\001\u0297\001\u014c" + "\u03ad\u0271\207\u0271\211\u026f\105\u026f\107\u0150\u019f" + "\u0150\u01a1\u0150\u01a3\u0150\u01a5\u0150\u01a7\u0297\001\u026f" + "\111\u026f\113\u026f\115\u026f\117\u026f\121\u026f\123" + "\u0297\001\305\205\u0297\001\u014c\u0191\u014c\u0193\u014c" + "\u0195\u014c\u0197\u0297\001\u0271\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0271\215\u0271\217\u0297\001\u0297" + "\001\u026f\125\u026f\127\155\u0103\u0297\001\205\141" + "\205\143\205\145\205\147\u0297\001\u0297\001\u014c" + "\u0199\u0297\001\u0271\221\u014c\u019b\u0297\001\u0271\223" + "\u0271\225\u0271\227\u0271\231\u0271\233\u026f\131\u026f" + "\133\u0297\001\u0271\235\u0297\001\u0297\001\u026f\135" + "\u026f\137\205\205\u0297\001\u026f\141\u026f\143\u026f" + "\145\u026f\147\u026f\151\u026f\153\u026f\155\u026f\157" + "\u026f\161\u026f\163\u026f\165\u026f\167\u026f\171\u026f" + "\173\u026f\175\u0297\001\154\u0103\u026f\177\u026f\201" + "\u026f\203\u0297\001\u0297\001\u0297\001\u0297\001\u026f" + "\205\155\141\155\143\155\145\155\147\u0297\001" + "\u0297\001\u013d\u038b\u026f\207\u026f\211\u0255\105\u0255" + "\107\u014c\u019f\u014c\u01a1\u014c\u01a3\u014c\u01a5\u014c\u01a7" + "\u0297\001\u0255\111\u0255\113\u0255\115\u0255\117\u0255" + "\121\u0255\123\u0297\001\155\205\u0297\001\u013d\u0191" + "\u013d\u0193\u013d\u0195\u013d\u0197\u0297\001\u026f\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\u026f\215\u026f\217" + "\u0297\001\u0297\001\u0255\125\u0255\127\153\u0103\u0297" + "\001\154\141\154\143\154\145\154\147\u0297\001" + "\u0297\001\u013d\u0199\u0297\001\u026f\221\u013d\u019b\u0297" + "\001\u026f\223\u026f\225\u026f\227\u026f\231\u026f\233" + "\u0255\131\u0255\133\u0297\001\u026f\235\u0297\001\u0297" + "\001\u0255\135\u0255\137\154\205\u0297\001\u0255\141" + "\u0255\143\u0255\145\u0255\147\u0255\151\u0255\153\u0255" + "\155\u0255\157\u0255\161\u0255\163\u0255\165\u0255\167" + "\u0255\171\u0255\173\u0255\175\u0297\001\030\u0103\u0255" + "\177\u0255\201\u0255\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0255\205\153\141\153\143\153\145\153" + "\147\u0297\001\u0297\001\u013a\u0385\u0255\207\u0255\211" + "\u024e\105\u024e\107\u013d\u019f\u013d\u01a1\u013d\u01a3\u013d" + "\u01a5\u013d\u01a7\u0297\001\u024e\111\u024e\113\u024e\115" + "\u024e\117\u024e\121\u024e\123\u0297\001\153\205\u0297" + "\001\u013a\u0191\u013a\u0193\u013a\u0195\u013a\u0197\u0297\001" + "\u0255\213\u0297\001\u0297\001\u0297\001\u0297\001\u0255" + "\215\u0255\217\u0297\001\u0297\001\u024e\125\u024e\127" + "\026\u0103\u0297\001\030\141\030\143\030\145\030" + "\147\u0297\001\u0297\001\u013a\u0199\u0297\001\u0255\221" + "\u013a\u019b\u0297\001\u0255\223\u0255\225\u0255\227\u0255" + "\231\u0255\233\u024e\131\u024e\133\u0297\001\u0255\235" + "\u0297\001\u0297\001\u024e\135\u024e\137\030\205\u0297" + "\001\u024e\141\u024e\143\u024e\145\u024e\147\u024e\151" + "\u024e\153\u024e\155\u024e\157\u024e\161\u024e\163\u024e" + "\165\u024e\167\u024e\171\u024e\173\u024e\175\u0297\001" + "\025\u0103\u024e\177\u024e\201\u024e\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\u024e\205\026\141\026\143" + "\026\145\026\147\u0297\001\u0297\001\u0139\u0383\u024e" + "\207\u024e\211\u023b\105\u023b\107\u013a\u019f\u013a\u01a1" + "\u013a\u01a3\u013a\u01a5\u013a\u01a7\u0297\001\u023b\111\u023b" + "\113\u023b\115\u023b\117\u023b\121\u023b\123\u0297\001" + "\026\205\u0297\001\u0139\u0191\u0139\u0193\u0139\u0195\u0139" + "\u0197\u0297\001\u024e\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\u024e\215\u024e\217\u0297\001\u0297\001\u023b" + "\125\u023b\127\u0297\001\u0297\001\025\141\025\143" + "\025\145\025\147\u0297\001\u0297\001\u0139\u0199\u0297" + "\001\u024e\221\u0139\u019b\u0297\001\u024e\223\u024e\225" + "\u024e\227\u024e\231\u024e\233\u023b\131\u023b\133\u0297" + "\001\u024e\235\u0297\001\u0297\001\u023b\135\u023b\137" + "\025\205\u0297\001\u023b\141\u023b\143\u023b\145\u023b" + "\147\u023b\151\u023b\153\u023b\155\u023b\157\u023b\161" + "\u023b\163\u023b\165\u023b\167\u023b\171\u023b\173\u023b" + "\175\u0297\001\u0297\001\u023b\177\u023b\201\u023b\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\u023b\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0138\u0381\u023b\207\u023b\211\u0225\105\u0225\107\u0139" + "\u019f\u0139\u01a1\u0139\u01a3\u0139\u01a5\u0139\u01a7\u0297\001" + "\u0225\111\u0225\113\u0225\115\u0225\117\u0225\121\u0225" + "\123\u0297\001\u0297\001\u0297\001\u0138\u0191\u0138\u0193" + "\u0138\u0195\u0138\u0197\u0297\001\u023b\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\u023b\215\u023b\217\u0297\001" + "\u0297\001\u0225\125\u0225\127\u011b\051\u011b\053\u011b" + "\055\u011b\057\u011b\u034b\u011b\061\u0297\001\u011b\u01fe" + "\u0138\u0199\u0297\001\u023b\221\u0138\u019b\u0297\001\u023b" + "\223\u023b\225\u023b\227\u023b\231\u023b\233\u0225\131" + "\u0225\133\u0297\001\u023b\235\u0297\001\u0297\001\u0225" + "\135\u0225\137\u0297\001\u0297\001\u0225\141\u0225\143" + "\u0225\145\u0225\147\u0225\151\u0225\153\u0225\155\u0225" + "\157\u0225\161\u0225\163\u0225\165\u0225\167\u0225\171" + "\u0225\173\u0225\175\u0297\001\u0297\001\u0225\177\u0225" + "\201\u0225\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0225\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0136\u037d\u0225\207\u0225\211\u0222\105" + "\u0222\107\u0138\u019f\u0138\u01a1\u0138\u01a3\u0138\u01a5\u0138" + "\u01a7\u0297\001\u0222\111\u0222\113\u0222\115\u0222\117" + "\u0222\121\u0222\123\u0297\001\u0297\001\u0297\001\u0136" + "\u0191\u0136\u0193\u0136\u0195\u0136\u0197\u0297\001\u0225\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0225\215\u0225" + "\217\u0297\001\u0297\001\u0222\125\u0222\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0136\u0199\u0297\001\u0225\221\u0136\u019b" + "\u0297\001\u0225\223\u0225\225\u0225\227\u0225\231\u0225" + "\233\u0222\131\u0222\133\u0297\001\u0225\235\u0297\001" + "\u0297\001\u0222\135\u0222\137\u0297\001\u0297\001\u0222" + "\141\u0222\143\u0222\145\u0222\147\u0222\151\u0222\153" + "\u0222\155\u0222\157\u0222\161\u0222\163\u0222\165\u0222" + "\167\u0222\171\u0222\173\u0222\175\u0297\001\u0297\001" + "\u0222\177\u0222\201\u0222\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0222\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0122\u0361\u0222\207\u0222" + "\211\u021e\105\u021e\107\u0136\u019f\u0136\u01a1\u0136\u01a3" + "\u0136\u01a5\u0136\u01a7\u0297\001\u021e\111\u021e\113\u021e" + "\115\u021e\117\u021e\121\u021e\123\u0297\001\u0297\001" + "\u0297\001\u0122\u0191\u0122\u0193\u0122\u0195\u0122\u0197\u0297" + "\001\u0222\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0222\215\u0222\217\u0297\001\u0297\001\u021e\125\u021e" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0122\u0199\u0297\001\u0222" + "\221\u0122\u019b\u0297\001\u0222\223\u0222\225\u0222\227" + "\u0222\231\u0222\233\u021e\131\u021e\133\u0297\001\u0222" + "\235\u0297\001\u0297\001\u021e\135\u021e\137\u0297\001" + "\u0297\001\u021e\141\u021e\143\u021e\145\u021e\147\u021e" + "\151\u021e\153\u021e\155\u021e\157\u021e\161\u021e\163" + "\u021e\165\u021e\167\u021e\171\u021e\173\u021e\175\u0297" + "\001\u0297\001\u021e\177\u021e\201\u021e\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\u021e\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0121\u035f" + "\u021e\207\u021e\211\u021b\105\u021b\107\u0122\u019f\u0122" + "\u01a1\u0122\u01a3\u0122\u01a5\u0122\u01a7\u0297\001\u021b\111" + "\u021b\113\u021b\115\u021b\117\u021b\121\u021b\123\u0297" + "\001\u0297\001\u0297\001\u0121\u0191\u0121\u0193\u0121\u0195" + "\u0121\u0197\u0297\001\u021e\u04af\u0297\001\u0297\001\u0297" + "\001\u0297\001\u021e\215\u021e\217\u0297\001\u0297\001" + "\u021b\125\u021b\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0121\u0199" + "\u0297\001\u021e\221\u0121\u019b\u0297\001\u021e\223\u021e" + "\225\u021e\227\u021e\231\u021e\233\u021b\131\u021b\133" + "\u0297\001\u021e\235\u0297\001\u0297\001\u021b\135\u021b" + "\137\u0297\001\u0297\001\u021b\141\u021b\143\u021b\145" + "\u021b\147\u021b\151\u021b\153\u021b\155\u021b\157\u021b" + "\161\u021b\163\u021b\165\u021b\167\u021b\171\u021b\173" + "\u021b\175\u0297\001\u0297\001\u021b\177\u021b\201\u021b" + "\203\u01fc\u0479\u01fc\u047b\u01fc\u047d\u01fc\u047f\u021b\205" + "\u0297\001\u0297\001\u0297\001\u01fc\u0481\u0297\001\u01fc" + "\u0483\u01fc\u0485\u021b\207\u021b\211\u0202\105\u0202\107" + "\u0121\u019f\u0121\u01a1\u0121\u01a3\u0121\u01a5\u0121\u01a7\u0297" + "\001\u0202\111\u0202\113\u0202\115\u0202\117\u0202\121" + "\u0202\123\u0297\001\u0297\001\u0297\001\263\u0191\263" + "\u0193\263\u0195\263\u0197\u0297\001\u021b\213\u0297\001" + "\u0297\001\u01fc\u0487\u0297\001\u021b\215\u021b\217\u0297" + "\001\u0297\001\u0202\125\u0202\127\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\263\u0199\u0297\001\u021b\221\263\u019b\u0297\001" + "\u021b\223\u021b\225\u021b\227\u021b\231\u021b\233\u0202" + "\131\u0202\133\u0297\001\u021b\235\u0297\001\u0297\001" + "\u0202\135\u0202\137\u0297\001\u0297\001\u0202\141\u0202" + "\143\u0202\145\u0202\147\u0202\151\u0202\153\u0202\155" + "\u0202\157\u0202\161\u0202\163\u0202\165\u0202\167\u0202" + "\171\u0202\173\u0202\175\u0297\001\u0297\001\u0202\177" + "\u0202\201\u0202\203\u0297\001\263\u0283\u0297\001\u0297" + "\001\u0202\205\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0202\207\u0202\211\u01e0" + "\105\u01e0\107\263\u019f\263\u01a1\263\u01a3\263\u01a5" + "\263\u0285\u0297\001\u01e0\111\u01e0\113\u01e0\115\u01e0" + "\117\u01e0\121\u01e0\123\u0297\001\263\u0287\u0297\001" + "\u0189\u0191\u0189\u0193\u0189\u0195\u0189\u0197\u0297\001\u0202" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\u0202\215" + "\u0202\217\u0297\001\u0297\001\u01e0\125\u01e0\127\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0189\u0199\u0297\001\u0202\221\u0189" + "\u019b\u0297\001\u0202\223\u0202\225\u0202\227\u0202\231" + "\u0202\233\u01e0\131\u01e0\133\u0189\u03dd\u0202\235\u0297" + "\001\u0189\u03df\u01e0\135\u01e0\137\u0297\001\u0297\001" + "\u01e0\141\u01e0\143\u01e0\145\u01e0\147\u01e0\151\u01e0" + "\153\u01e0\155\u01e0\157\u01e0\161\u01e0\163\u01e0\165" + "\u01e0\167\u01e0\171\u01e0\173\u01e0\175\u0297\001\u0297" + "\001\u01e0\177\u01e0\201\u01e0\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\u01e0\205\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u01e0\207" + "\u01e0\211\u01c4\105\u01c4\107\u0189\u019f\u0189\u01a1\u0189" + "\u01a3\u0189\u01a5\u0189\u01a7\u0297\001\u01c4\111\u01c4\113" + "\u01c4\115\u01c4\117\u01c4\121\u01c4\123\u0297\001\u0297" + "\001\u0297\001\356\u0191\356\u0193\356\u0195\356\u0197" + "\u0297\001\u01e0\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\u01e0\215\u01e0\217\u0297\001\u0297\001\u01c4\125" + "\u01c4\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\356\u0199\u0297\001" + "\u01e0\221\356\u019b\u0297\001\u01e0\223\u01e0\225\u01e0" + "\227\u01e0\231\u01e0\233\u01c4\131\u01c4\133\356\u02f3" + "\u01e0\235\u0297\001\356\u02f5\u01c4\135\u01c4\137\u0297" + "\001\u0297\001\u01c4\141\u01c4\143\u01c4\145\u01c4\147" + "\u01c4\151\u01c4\153\u01c4\155\u01c4\157\u01c4\161\u01c4" + "\163\u01c4\165\u01c4\167\u01c4\171\u01c4\173\u01c4\175" + "\u0297\001\u0297\001\u01c4\177\u01c4\201\u01c4\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\u01c4\205\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u01c4\207\u01c4\211\u01c3\105\u01c3\107\356\u019f" + "\356\u01a1\356\u01a3\356\u01a5\356\u01a7\u0297\001\u01c3" + "\111\u01c3\113\u01c3\115\u01c3\117\u01c3\121\u01c3\123" + "\u0297\001\u0297\001\u0297\001\u0284\u0191\u0284\u0193\u0284" + "\u0195\u0284\u0197\u0297\001\u01c4\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\u01c4\215\u01c4\217\u0297\001\u0297" + "\001\u01c3\125\u01c3\127\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0284" + "\u0199\u0297\001\u01c4\221\u0284\u019b\u0297\001\u01c4\223" + "\u01c4\225\u01c4\227\u01c4\231\u01c4\233\u01c3\131\u01c3" + "\133\u0297\001\u01c4\235\u0297\001\u0284\u051b\u01c3\135" + "\u01c3\137\u0297\001\u0297\001\u01c3\141\u01c3\143\u01c3" + "\145\u01c3\147\u01c3\151\u01c3\153\u01c3\155\u01c3\157" + "\u01c3\161\u01c3\163\u01c3\165\u01c3\167\u01c3\171\u01c3" + "\173\u01c3\175\u0297\001\u0297\001\u01c3\177\u01c3\201" + "\u01c3\203\u0297\001\u0297\001\u0297\001\u0297\001\u01c3" + "\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u01c3\207\u01c3\211\u01aa\105\u01aa" + "\107\u0284\u019f\u0284\u01a1\u0284\u01a3\u0284\u01a5\u0284\u01a7" + "\u0297\001\u01aa\111\u01aa\113\u01aa\115\u01aa\117\u01aa" + "\121\u01aa\123\u0297\001\u0297\001\u0297\001\u0280\u0191" + "\u0280\u0193\u0280\u0195\u0280\u0197\u0297\001\u01c3\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\u01c3\215\u01c3\217" + "\u0297\001\u0297\001\u01aa\125\u01aa\127\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0280\u0199\u0297\001\u01c3\221\u0280\u019b\u0297" + "\001\u01c3\223\u01c3\225\u01c3\227\u01c3\231\u01c3\233" + "\u01aa\131\u01aa\133\u0297\001\u01c3\235\u0297\001\u0280" + "\u0517\u01aa\135\u01aa\137\u0297\001\u0297\001\u01aa\141" + "\u01aa\143\u01aa\145\u01aa\147\u01aa\151\u01aa\153\u01aa" + "\155\u01aa\157\u01aa\161\u01aa\163\u01aa\165\u01aa\167" + "\u01aa\171\u01aa\173\u01aa\175\u0297\001\u0297\001\u01aa" + "\177\u01aa\201\u01aa\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\u01aa\205\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u01aa\207\u01aa\211" + "\u01a3\105\u01a3\107\u0280\u019f\u0280\u01a1\u0280\u01a3\u0280" + "\u01a5\u0280\u01a7\u0297\001\u01a3\111\u01a3\113\u01a3\115" + "\u01a3\117\u01a3\121\u01a3\123\u0297\001\u0297\001\u0297" + "\001\u027e\u0191\u027e\u0193\u027e\u0195\u027e\u0197\u0297\001" + "\u01aa\213\u0297\001\u0297\001\u0297\001\u0297\001\u01aa" + "\215\u01aa\217\u0297\001\u0297\001\u01a3\125\u01a3\127" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u027e\u0199\u0297\001\u01aa\221" + "\u027e\u019b\u0297\001\u01aa\223\u01aa\225\u01aa\227\u01aa" + "\231\u01aa\233\u01a3\131\u01a3\133\u0297\001\u01aa\235" + "\u0297\001\u027e\u0515\u01a3\135\u01a3\137\u0297\001\u0297" + "\001\u01a3\141\u01a3\143\u01a3\145\u01a3\147\u01a3\151" + "\u01a3\153\u01a3\155\u01a3\157\u01a3\161\u01a3\163\u01a3" + "\165\u01a3\167\u01a3\171\u01a3\173\u01a3\175\u0297\001" + "\u0297\001\u01a3\177\u01a3\201\u01a3\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\u01a3\205\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u01a3" + "\207\u01a3\211\u018e\105\u018e\107\u027e\u019f\u027e\u01a1" + "\u027e\u01a3\u027e\u01a5\u027e\u01a7\u0297\001\u018e\111\u018e" + "\113\u018e\115\u018e\117\u018e\121\u018e\123\u0297\001" + "\u0297\001\u0297\001\u0270\u0191\u0270\u0193\u0270\u0195\u0270" + "\u0197\u0297\001\u01a3\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\u01a3\215\u01a3\217\u0297\001\u0297\001\u018e" + "\125\u018e\127\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0270\u0199\u0297" + "\001\u01a3\221\u0270\u019b\u0297\001\u01a3\223\u01a3\225" + "\u01a3\227\u01a3\231\u01a3\233\u018e\131\u018e\133\u0297" + "\001\u01a3\235\u0297\001\u0270\u04ff\u018e\135\u018e\137" + "\u0297\001\u0297\001\u018e\141\u018e\143\u018e\145\u018e" + "\147\u018e\151\u018e\153\u018e\155\u018e\157\u018e\161" + "\u018e\163\u018e\165\u018e\167\u018e\171\u018e\173\u018e" + "\175\u0297\001\u0297\001\u018e\177\u018e\201\u018e\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\u018e\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u018e\207\u018e\211\u018a\105\u018a\107\u0270" + "\u019f\u0270\u01a1\u0270\u01a3\u0270\u01a5\u0270\u01a7\u0297\001" + "\u018a\111\u018a\113\u018a\115\u018a\117\u018a\121\u018a" + "\123\u0297\001\u0297\001\u0297\001\u0256\u0191\u0256\u0193" + "\u0256\u0195\u0256\u0197\u0297\001\u018e\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\u018e\215\u018e\217\u0297\001" + "\u0297\001\u018a\125\u018a\127\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0256\u0199\u0297\001\u018e\221\u0256\u019b\u0297\001\u018e" + "\223\u018e\225\u018e\227\u018e\231\u018e\233\u018a\131" + "\u018a\133\u0297\001\u018e\235\u0297\001\u0297\001\u018a" + "\135\u018a\137\u0297\001\u0297\001\u018a\141\u018a\143" + "\u018a\145\u018a\147\u018a\151\u018a\153\u018a\155\u018a" + "\157\u018a\161\u018a\163\u018a\165\u018a\167\u018a\171" + "\u018a\173\u018a\175\u0297\001\u0297\001\u018a\177\u018a" + "\201\u018a\203\u0297\001\u0256\u04e7\u0297\001\u0297\001" + "\u018a\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u018a\207\u018a\211\u0185\105" + "\u0185\107\u0256\u019f\u0256\u01a1\u0256\u01a3\u0256\u01a5\u0256" + "\u01a7\u0297\001\u0185\111\u0185\113\u0185\115\u0185\117" + "\u0185\121\u0185\123\u0297\001\u0297\001\u0297\001\u0247" + "\u0191\u0247\u0193\u0247\u0195\u0247\u0197\u0297\001\u018a\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\u018a\215\u018a" + "\217\u0297\001\u0297\001\u0185\125\u0185\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0247\u0199\u0297\001\u018a\221\u0247\u019b" + "\u0297\001\u018a\223\u018a\225\u018a\227\u018a\231\u018a" + "\233\u0185\131\u0185\133\u0297\001\u018a\235\u0297\001" + "\u0247\u04db\u0185\135\u0185\137\u0297\001\u0297\001\u0185" + "\141\u0185\143\u0185\145\u0185\147\u0185\151\u0185\153" + "\u0185\155\u0185\157\u0185\161\u0185\163\u0185\165\u0185" + "\167\u0185\171\u0185\173\u0185\175\u0297\001\u0297\001" + "\u0185\177\u0185\201\u0185\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0185\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0185\207\u0185" + "\211\u017b\105\u017b\107\u0247\u019f\u0247\u01a1\u0247\u01a3" + "\u0247\u01a5\u0247\u01a7\u0297\001\u017b\111\u017b\113\u017b" + "\115\u017b\117\u017b\121\u017b\123\u0297\001\u0297\001" + "\u0297\001\u0211\u0191\u0211\u0193\u0211\u0195\u0211\u0197\u0297" + "\001\u0185\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0185\215\u0185\217\u0297\001\u0297\001\u017b\125\u017b" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0211\u0199\u0297\001\u0185" + "\221\u0211\u019b\u0297\001\u0185\223\u0185\225\u0185\227" + "\u0185\231\u0185\233\u017b\131\u017b\133\u0297\001\u0185" + "\235\u0297\001\u0211\u049f\u017b\135\u017b\137\u0297\001" + "\u0297\001\u017b\141\u017b\143\u017b\145\u017b\147\u017b" + "\151\u017b\153\u017b\155\u017b\157\u017b\161\u017b\163" + "\u017b\165\u017b\167\u017b\171\u017b\173\u017b\175\u0297" + "\001\u0297\001\u017b\177\u017b\201\u017b\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\u017b\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u017b\207\u017b\211\u0173\105\u0173\107\u0211\u019f\u0211" + "\u01a1\u0211\u01a3\u0211\u01a5\u0211\u01a7\u0297\001\u0173\111" + "\u0173\113\u0173\115\u0173\117\u0173\121\u0173\123\u0297" + "\001\u0297\001\u0297\001\u020a\u0191\u020a\u0193\u020a\u0195" + "\u020a\u0197\u0297\001\u017b\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\u017b\215\u017b\217\u0297\001\u0297\001" + "\u0173\125\u0173\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u020a\u0199" + "\u0297\001\u017b\221\u020a\u019b\u0297\001\u017b\223\u017b" + "\225\u017b\227\u017b\231\u017b\233\u0173\131\u0173\133" + "\u0297\001\u017b\235\u0297\001\u020a\u0497\u0173\135\u0173" + "\137\u0297\001\u0297\001\u0173\141\u0173\143\u0173\145" + "\u0173\147\u0173\151\u0173\153\u0173\155\u0173\157\u0173" + "\161\u0173\163\u0173\165\u0173\167\u0173\171\u0173\173" + "\u0173\175\u0297\001\u0297\001\u0173\177\u0173\201\u0173" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\u0173\205" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0173\207\u0173\211\u0172\105\u0172\107" + "\u020a\u019f\u020a\u01a1\u020a\u01a3\u020a\u01a5\u020a\u01a7\u0297" + "\001\u0172\111\u0172\113\u0172\115\u0172\117\u0172\121" + "\u0172\123\u0297\001\u0297\001\u0297\001\u01f5\u0191\u01f5" + "\u0193\u01f5\u0195\u01f5\u0197\u0297\001\u0173\213\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0173\215\u0173\217\u0297" + "\001\u0297\001\u0172\125\u0172\127\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u01f5\u0199\u0297\001\u0173\221\u01f5\u019b\u0297\001" + "\u0173\223\u0173\225\u0173\227\u0173\231\u0173\233\u0172" + "\131\u0172\133\u0297\001\u0173\235\u0297\001\u01f5\u046b" + "\u0172\135\u0172\137\u0297\001\u0297\001\u0172\141\u0172" + "\143\u0172\145\u0172\147\u0172\151\u0172\153\u0172\155" + "\u0172\157\u0172\161\u0172\163\u0172\165\u0172\167\u0172" + "\171\u0172\173\u0172\175\u0297\001\u0297\001\u0172\177" + "\u0172\201\u0172\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0172\205\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0172\207\u0172\211\u014f" + "\105\u014f\107\u01f5\u019f\u01f5\u01a1\u01f5\u01a3\u01f5\u01a5" + "\u01f5\u01a7\u0297\001\u014f\111\u014f\113\u014f\115\u014f" + "\117\u014f\121\u014f\123\u0297\001\u0297\001\u0297\001" + "\u01f0\u0191\u01f0\u0193\u01f0\u0195\u01f0\u0197\u0297\001\u0172" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\u0172\215" + "\u0172\217\u0297\001\u0297\001\u014f\125\u014f\127\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u01f0\u0199\u0297\001\u0172\221\u01f0" + "\u019b\u0297\001\u0172\223\u0172\225\u0172\227\u0172\231" + "\u0172\233\u014f\131\u014f\133\u0297\001\u0172\235\u0297" + "\001\u01f0\u045d\u014f\135\u014f\137\u0297\001\u0297\001" + "\u014f\141\u014f\143\u014f\145\u014f\147\u014f\151\u014f" + "\153\u014f\155\u014f\157\u014f\161\u014f\163\u014f\165" + "\u014f\167\u014f\171\u014f\173\u014f\175\u0297\001\u0297" + "\001\u014f\177\u014f\201\u014f\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\u014f\205\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u014f\207" + "\u014f\211\u014e\105\u014e\107\u01f0\u019f\u01f0\u01a1\u01f0" + "\u01a3\u01f0\u01a5\u01f0\u01a7\u0297\001\u014e\111\u014e\113" + "\u014e\115\u014e\117\u014e\121\u014e\123\u0297\001\u0297" + "\001\u0297\001\u01ed\u0191\u01ed\u0193\u01ed\u0195\u01ed\u0197" + "\u0297\001\u014f\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\u014f\215\u014f\217\u0297\001\u0297\001\u014e\125" + "\u014e\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u01ed\u0199\u0297\001" + "\u014f\221\u01ed\u019b\u0297\001\u014f\223\u014f\225\u014f" + "\227\u014f\231\u014f\233\u014e\131\u014e\133\u0297\001" + "\u014f\235\u0297\001\u01ed\u0459\u014e\135\u014e\137\u0297" + "\001\u0297\001\u014e\141\u014e\143\u014e\145\u014e\147" + "\u014e\151\u014e\153\u014e\155\u014e\157\u014e\161\u014e" + "\163\u014e\165\u014e\167\u014e\171\u014e\173\u014e\175" + "\u0297\001\u0297\001\u014e\177\u014e\201\u014e\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\u014e\205\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u014e\207\u014e\211\u0148\105\u0148\107\u01ed\u019f" + "\u01ed\u01a1\u01ed\u01a3\u01ed\u01a5\u01ed\u01a7\u0297\001\u0148" + "\111\u0148\113\u0148\115\u0148\117\u0148\121\u0148\123" + "\u0297\001\u0297\001\u0297\001\u01e5\u0191\u01e5\u0193\u01e5" + "\u0195\u01e5\u0197\u0297\001\u014e\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\u014e\215\u014e\217\u0297\001\u0297" + "\001\u0148\125\u0148\127\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u01e5" + "\u0199\u0297\001\u014e\221\u01e5\u019b\u0297\001\u014e\223" + "\u014e\225\u014e\227\u014e\231\u014e\233\u0148\131\u0148" + "\133\u0297\001\u014e\235\u0297\001\u01e5\u0451\u0148\135" + "\u0148\137\u0297\001\u0297\001\u0148\141\u0148\143\u0148" + "\145\u0148\147\u0148\151\u0148\153\u0148\155\u0148\157" + "\u0148\161\u0148\163\u0148\165\u0148\167\u0148\171\u0148" + "\173\u0148\175\u0297\001\u0297\001\u0148\177\u0148\201" + "\u0148\203\u0297\001\u0297\001\u0297\001\u0297\001\u0148" + "\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0148\207\u0148\211\u0146\105\u0146" + "\107\u01e5\u019f\u01e5\u01a1\u01e5\u01a3\u01e5\u01a5\u01e5\u01a7" + "\u0297\001\u0146\111\u0146\113\u0146\115\u0146\117\u0146" + "\121\u0146\123\u0297\001\u0297\001\u0297\001\u01e4\u0191" + "\u01e4\u0193\u01e4\u0195\u01e4\u0197\u0297\001\u0148\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0148\215\u0148\217" + "\u0297\001\u0297\001\u0146\125\u0146\127\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u01e4\u0199\u0297\001\u0148\221\u01e4\u019b\u0297" + "\001\u0148\223\u0148\225\u0148\227\u0148\231\u0148\233" + "\u0146\131\u0146\133\u0297\001\u0148\235\u0297\001\u01e4" + "\u044f\u0146\135\u0146\137\u0297\001\u0297\001\u0146\141" + "\u0146\143\u0146\145\u0146\147\u0146\151\u0146\153\u0146" + "\155\u0146\157\u0146\161\u0146\163\u0146\165\u0146\167" + "\u0146\171\u0146\173\u0146\175\u0297\001\u0297\001\u0146" + "\177\u0146\201\u0146\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0146\205\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0146\207\u0146\211" + "\u0134\105\u0134\107\u01e4\u019f\u01e4\u01a1\u01e4\u01a3\u01e4" + "\u01a5\u01e4\u01a7\u0297\001\u0134\111\u0134\113\u0134\115" + "\u0134\117\u0134\121\u0134\123\u0297\001\u0297\001\u0297" + "\001\u01d9\u0191\u01d9\u0193\u01d9\u0195\u01d9\u0197\u0297\001" + "\u0146\213\u0297\001\u0297\001\u0297\001\u0297\001\u0146" + "\215\u0146\217\u0297\001\u0297\001\u0134\125\u0134\127" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u01d9\u0199\u0297\001\u0146\221" + "\u01d9\u019b\u0297\001\u0146\223\u0146\225\u0146\227\u0146" + "\231\u0146\233\u0134\131\u0134\133\u0297\001\u0146\235" + "\u0297\001\u01d9\u0445\u0134\135\u0134\137\u0297\001\u0297" + "\001\u0134\141\u0134\143\u0134\145\u0134\147\u0134\151" + "\u0134\153\u0134\155\u0134\157\u0134\161\u0134\163\u0134" + "\165\u0134\167\u0134\171\u0134\173\u0134\175\u0297\001" + "\u0297\001\u0134\177\u0134\201\u0134\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0134\205\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0134" + "\207\u0134\211\u0132\105\u0132\107\u01d9\u019f\u01d9\u01a1" + "\u01d9\u01a3\u01d9\u01a5\u01d9\u01a7\u0297\001\u0132\111\u0132" + "\113\u0132\115\u0132\117\u0132\121\u0132\123\u0297\001" + "\u0297\001\u0297\001\u01a9\u0191\u01a9\u0193\u01a9\u0195\u01a9" + "\u0197\u0297\001\u0134\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0134\215\u0134\217\u0297\001\u0297\001\u0132" + "\125\u0132\127\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u01a9\u0199\u0297" + "\001\u0134\221\u01a9\u019b\u0297\001\u0134\223\u0134\225" + "\u0134\227\u0134\231\u0134\233\u0132\131\u0132\133\u0297" + "\001\u0134\235\u0297\001\u01a9\u0421\u0132\135\u0132\137" + "\u0297\001\u0297\001\u0132\141\u0132\143\u0132\145\u0132" + "\147\u0132\151\u0132\153\u0132\155\u0132\157\u0132\161" + "\u0132\163\u0132\165\u0132\167\u0132\171\u0132\173\u0132" + "\175\u0297\001\u0297\001\u0132\177\u0132\201\u0132\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0132\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0132\207\u0132\211\u011c\105\u011c\107\u01a9" + "\u019f\u01a9\u01a1\u01a9\u01a3\u01a9\u01a5\u01a9\u01a7\u0297\001" + "\u011c\111\u011c\113\u011c\115\u011c\117\u011c\121\u011c" + "\123\u0297\001\u0297\001\u0297\001\u017d\u0191\u017d\u0193" + "\u017d\u0195\u017d\u0197\u0297\001\u0132\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0132\215\u0132\217\u0297\001" + "\u0297\001\u011c\125\u011c\127\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u017d\u0199\u0297\001\u0132\221\u017d\u019b\u0297\001\u0132" + "\223\u0132\225\u0132\227\u0132\231\u0132\233\u011c\131" + "\u011c\133\u0297\001\u0132\235\u0297\001\u017d\u03d1\u011c" + "\135\u011c\137\u0297\001\u0297\001\u011c\141\u011c\143" + "\u011c\145\u011c\147\u011c\151\u011c\153\u011c\155\u011c" + "\157\u011c\161\u011c\163\u011c\165\u011c\167\u011c\171" + "\u011c\173\u011c\175\u0297\001\u0297\001\u011c\177\u011c" + "\201\u011c\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\u011c\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u011c\207\u011c\211\u0109\105" + "\u0109\107\u017d\u019f\u017d\u01a1\u017d\u01a3\u017d\u01a5\u017d" + "\u01a7\u0297\001\u0109\111\u0109\113\u0109\115\u0109\117" + "\u0109\121\u0109\123\u0297\001\u0297\001\u0297\001\u0108" + "\u0191\u0108\u0193\u0108\u0195\u0108\u0197\u0297\001\u011c\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\u011c\215\u011c" + "\217\u0297\001\u0297\001\u0109\125\u0109\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0108\u0199\u0297\001\u011c\221\u0108\u019b" + "\u0297\001\u011c\223\u011c\225\u011c\227\u011c\231\u011c" + "\233\u0109\131\u0109\133\u0297\001\u011c\235\u0297\001" + "\u0108\u0311\u0109\135\u0109\137\u0297\001\u0297\001\u0109" + "\141\u0109\143\u0109\145\u0109\147\u0109\151\u0109\153" + "\u0109\155\u0109\157\u0109\161\u0109\163\u0109\165\u0109" + "\167\u0109\171\u0109\173\u0109\175\u0297\001\u0297\001" + "\u0109\177\u0109\201\u0109\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0109\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0109\207\u0109" + "\211\365\105\365\107\u0108\u019f\u0108\u01a1\u0108\u01a3" + "\u0108\u01a5\u0108\u01a7\u0297\001\365\111\365\113\365" + "\115\365\117\365\121\365\123\u0297\001\u0297\001" + "\u0297\001\355\u0191\355\u0193\355\u0195\355\u0197\u0297" + "\001\u0109\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0109\215\u0109\217\u0297\001\u0297\001\365\125\365" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\355\u0199\u0297\001\u0109" + "\221\355\u019b\u0297\001\u0109\223\u0109\225\u0109\227" + "\u0109\231\u0109\233\365\131\365\133\u0297\001\u0109" + "\235\u0297\001\355\u02f1\365\135\365\137\u0297\001" + "\u0297\001\365\141\365\143\365\145\365\147\365" + "\151\365\153\365\155\365\157\365\161\365\163" + "\365\165\365\167\365\171\365\173\365\175\u0297" + "\001\u0297\001\365\177\365\201\365\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\365\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\365\207\365\211\323\105\323\107\355\u019f\355" + "\u01a1\355\u01a3\355\u01a5\355\u01a7\u0297\001\323\111" + "\323\113\323\115\323\117\323\121\323\123\u0297" + "\001\u0297\001\u0297\001\136\u0191\136\u0193\136\u0195" + "\136\u0197\u0297\001\365\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\365\215\365\217\u0297\001\u0297\001" + "\323\125\323\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\136\u0199" + "\u0297\001\365\221\136\u019b\u0297\001\365\223\365" + "\225\365\227\365\231\365\233\323\131\323\133" + "\u0297\001\365\235\u0297\001\136\u01d9\323\135\323" + "\137\u0297\001\u0297\001\323\141\323\143\323\145" + "\323\147\323\151\323\153\323\155\323\157\323" + "\161\323\163\323\165\323\167\323\171\323\173" + "\323\175\u0297\001\u0297\001\323\177\323\201\323" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\323\205" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\323\207\323\211\322\105\322\107" + "\136\u019f\136\u01a1\136\u01a3\136\u01a5\136\u01a7\u0297" + "\001\322\111\322\113\322\115\322\117\322\121" + "\322\123\u0297\001\u0297\001\u0297\001\135\u0191\135" + "\u0193\135\u0195\135\u0197\u0297\001\323\213\u0297\001" + "\u0297\001\u0297\001\u0297\001\323\215\323\217\u0297" + "\001\u0297\001\322\125\322\127\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\135\u0199\u0297\001\323\221\135\u019b\u0297\001" + "\323\223\323\225\323\227\323\231\323\233\322" + "\131\322\133\u0297\001\323\235\u0297\001\135\u01d7" + "\322\135\322\137\u0297\001\u0297\001\322\141\322" + "\143\322\145\322\147\322\151\322\153\322\155" + "\322\157\322\161\322\163\322\165\322\167\322" + "\171\322\173\322\175\u0297\001\u0297\001\322\177" + "\322\201\322\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\322\205\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\322\207\322\211\321" + "\105\321\107\135\u019f\135\u01a1\135\u01a3\135\u01a5" + "\135\u01a7\u0297\001\321\111\321\113\321\115\321" + "\117\321\121\321\123\u0297\001\u0297\001\u0297\001" + "\123\u0191\123\u0193\123\u0195\123\u0197\u0297\001\322" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\322\215" + "\322\217\u0297\001\u0297\001\321\125\321\127\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\123\u0199\u0297\001\322\221\123" + "\u019b\u0297\001\322\223\322\225\322\227\322\231" + "\322\233\321\131\321\133\u0297\001\322\235\u0297" + "\001\123\u019d\321\135\321\137\u0297\001\u0297\001" + "\321\141\321\143\321\145\321\147\321\151\321" + "\153\321\155\321\157\321\161\321\163\321\165" + "\321\167\321\171\321\173\321\175\u0297\001\u0297" + "\001\321\177\321\201\321\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\321\205\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\321\207" + "\321\211\320\105\320\107\123\u019f\123\u01a1\123" + "\u01a3\123\u01a5\123\u01a7\u0297\001\320\111\320\113" + "\320\115\320\117\320\121\320\123\u0297\001\u0297" + "\001\u0297\001\u025b\u0191\u025b\u0193\u025b\u0195\u025b\u0197" + "\u0297\001\321\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\321\215\321\217\u0297\001\u0297\001\320\125" + "\320\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u025b\u0199\u0297\001" + "\321\221\u025b\u019b\u0297\001\321\223\321\225\321" + "\227\321\231\321\233\320\131\320\133\u0297\001" + "\321\235\u0297\001\u0297\001\320\135\320\137\u0297" + "\001\u0297\001\320\141\320\143\320\145\320\147" + "\320\151\320\153\320\155\320\157\320\161\320" + "\163\320\165\320\167\320\171\320\173\320\175" + "\u0297\001\u0297\001\320\177\320\201\320\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\320\205\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\320\207\320\211\317\105\317\107\u025b\u019f" + "\u025b\u01a1\u025b\u01a3\u025b\u01a5\u025b\u01a7\u0297\001\317" + "\111\317\113\317\115\317\117\317\121\317\123" + "\u0297\001\u0297\001\u0297\001\u0258\u0191\u0258\u0193\u0258" + "\u0195\u0258\u0197\u0297\001\320\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\320\215\320\217\u0297\001\u0297" + "\001\317\125\317\127\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0258" + "\u0199\u0297\001\320\221\u0258\u019b\u0297\001\320\223" + "\320\225\320\227\320\231\320\233\317\131\317" + "\133\u0297\001\320\235\u0297\001\u0297\001\317\135" + "\317\137\u0297\001\u0297\001\317\141\317\143\317" + "\145\317\147\317\151\317\153\317\155\317\157" + "\317\161\317\163\317\165\317\167\317\171\317" + "\173\317\175\u0297\001\u0297\001\317\177\317\201" + "\317\203\u0297\001\u0297\001\u0297\001\u0297\001\317" + "\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\317\207\317\211\315\105\315" + "\107\u0258\u019f\u0258\u01a1\u0258\u01a3\u0258\u01a5\u0258\u01a7" + "\u0297\001\315\111\315\113\315\115\315\117\315" + "\121\315\123\u0297\001\u0297\001\u0297\001\u0226\u0191" + "\u0226\u0193\u0226\u0195\u0226\u0197\u0297\001\317\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\317\215\317\217" + "\u0297\001\u0297\001\315\125\315\127\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0226\u0199\u0297\001\317\221\u0226\u019b\u0297" + "\001\317\223\317\225\317\227\317\231\317\233" + "\315\131\315\133\u0297\001\317\235\u0297\001\u0297" + "\001\315\135\315\137\u0297\001\u0297\001\315\141" + "\315\143\315\145\315\147\315\151\315\153\315" + "\155\315\157\315\161\315\163\315\165\315\167" + "\315\171\315\173\315\175\u0297\001\u0297\001\315" + "\177\315\201\315\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\315\205\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\315\207\315\211" + "\314\105\314\107\u0226\u019f\u0226\u01a1\u0226\u01a3\u0226" + "\u01a5\u0226\u01a7\u0297\001\314\111\314\113\314\115" + "\314\117\314\121\314\123\u0297\001\u0297\001\u0297" + "\001\u01d8\u0191\u01d8\u0193\u01d8\u0195\u01d8\u0197\u0297\001" + "\315\213\u0297\001\u0297\001\u0297\001\u0297\001\315" + "\215\315\217\u0297\001\u0297\001\314\125\314\127" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u01d8\u0199\u0297\001\315\221" + "\u01d8\u019b\u0297\001\315\223\315\225\315\227\315" + "\231\315\233\314\131\314\133\u0297\001\315\235" + "\u0297\001\u0297\001\314\135\314\137\u0297\001\u0297" + "\001\314\141\314\143\314\145\314\147\314\151" + "\314\153\314\155\314\157\314\161\314\163\314" + "\165\314\167\314\171\314\173\314\175\u0297\001" + "\u0297\001\314\177\314\201\314\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\314\205\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\314" + "\207\314\211\313\105\313\107\u01d8\u019f\u01d8\u01a1" + "\u01d8\u01a3\u01d8\u01a5\u01d8\u01a7\u0297\001\313\111\313" + "\113\313\115\313\117\313\121\313\123\u0297\001" + "\u0297\001\u0297\001\u01d1\u0191\u01d1\u0193\u01d1\u0195\u01d1" + "\u0197\u0297\001\314\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\314\215\314\217\u0297\001\u0297\001\313" + "\125\313\127\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u01d1\u0199\u0297" + "\001\314\221\u01d1\u019b\u0297\001\314\223\314\225" + "\314\227\314\231\314\233\313\131\313\133\u0297" + "\001\314\235\u0297\001\u0297\001\313\135\313\137" + "\u0297\001\u0297\001\313\141\313\143\313\145\313" + "\147\313\151\313\153\313\155\313\157\313\161" + "\313\163\313\165\313\167\313\171\313\173\313" + "\175\u0297\001\u0297\001\313\177\313\201\313\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\313\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\313\207\313\211\312\105\312\107\u01d1" + "\u019f\u01d1\u01a1\u01d1\u01a3\u01d1\u01a5\u01d1\u01a7\u0297\001" + "\312\111\312\113\312\115\312\117\312\121\312" + "\123\u0297\001\u0297\001\u0297\001\u01ce\u0191\u01ce\u0193" + "\u01ce\u0195\u01ce\u0197\u0297\001\313\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\313\215\313\217\u0297\001" + "\u0297\001\312\125\312\127\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u01ce\u0199\u0297\001\313\221\u01ce\u019b\u0297\001\313" + "\223\313\225\313\227\313\231\313\233\312\131" + "\312\133\u0297\001\313\235\u0297\001\u0297\001\312" + "\135\312\137\u0297\001\u0297\001\312\141\312\143" + "\312\145\312\147\312\151\312\153\312\155\312" + "\157\312\161\312\163\312\165\312\167\312\171" + "\312\173\312\175\u0297\001\u0297\001\312\177\312" + "\201\312\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\312\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\312\207\312\211\311\105" + "\311\107\u01ce\u019f\u01ce\u01a1\u01ce\u01a3\u01ce\u01a5\u01ce" + "\u01a7\u0297\001\311\111\311\113\311\115\311\117" + "\311\121\311\123\u0297\001\u0297\001\u0297\001\u01bc" + "\u0191\u01bc\u0193\u01bc\u0195\u01bc\u0197\u0297\001\312\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\312\215\312" + "\217\u0297\001\u0297\001\311\125\311\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u01bc\u0199\u0297\001\312\221\u01bc\u019b" + "\u0297\001\312\223\312\225\312\227\312\231\312" + "\233\311\131\311\133\u0297\001\312\235\u0297\001" + "\u0297\001\311\135\311\137\u0297\001\u0297\001\311" + "\141\311\143\311\145\311\147\311\151\311\153" + "\311\155\311\157\311\161\311\163\311\165\311" + "\167\311\171\311\173\311\175\u0297\001\u0297\001" + "\311\177\311\201\311\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\311\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\311\207\311" + "\211\310\105\310\107\u01bc\u019f\u01bc\u01a1\u01bc\u01a3" + "\u01bc\u01a5\u01bc\u01a7\u0297\001\310\111\310\113\310" + "\115\310\117\310\121\310\123\u0297\001\u0297\001" + "\u0297\001\u01b9\u0191\u01b9\u0193\u01b9\u0195\u01b9\u0197\u0297" + "\001\311\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\311\215\311\217\u0297\001\u0297\001\310\125\310" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u01b9\u0199\u0297\001\311" + "\221\u01b9\u019b\u0297\001\311\223\311\225\311\227" + "\311\231\311\233\310\131\310\133\u0297\001\311" + "\235\u0297\001\u0297\001\310\135\310\137\u0297\001" + "\u0297\001\310\141\310\143\310\145\310\147\310" + "\151\310\153\310\155\310\157\310\161\310\163" + "\310\165\310\167\310\171\310\173\310\175\u0297" + "\001\u0297\001\310\177\310\201\310\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\310\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\310\207\310\211\307\105\307\107\u01b9\u019f\u01b9" + "\u01a1\u01b9\u01a3\u01b9\u01a5\u01b9\u01a7\u0297\001\307\111" + "\307\113\307\115\307\117\307\121\307\123\u0297" + "\001\u0297\001\u0297\001\u01b1\u0191\u01b1\u0193\u01b1\u0195" + "\u01b1\u0197\u0297\001\310\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\310\215\310\217\u0297\001\u0297\001" + "\307\125\307\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u01b1\u0199" + "\u0297\001\310\221\u01b1\u019b\u0297\001\310\223\310" + "\225\310\227\310\231\310\233\307\131\307\133" + "\u0297\001\310\235\u0297\001\u0297\001\307\135\307" + "\137\u0297\001\u0297\001\307\141\307\143\307\145" + "\307\147\307\151\307\153\307\155\307\157\307" + "\161\307\163\307\165\307\167\307\171\307\173" + "\307\175\u0297\001\u0297\001\307\177\307\201\307" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\307\205" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\307\207\307\211\304\105\304\107" + "\u01b1\u019f\u01b1\u01a1\u01b1\u01a3\u01b1\u01a5\u01b1\u01a7\u0297" + "\001\304\111\304\113\304\115\304\117\304\121" + "\304\123\u0297\001\u0297\001\u0297\001\u0156\u0191\u0156" + "\u0193\u0156\u0195\u0156\u0197\u0297\001\307\213\u0297\001" + "\u0297\001\u0297\001\u0297\001\307\215\307\217\u0297" + "\001\u0297\001\304\125\304\127\u0158\u0193\u0158\u0195" + "\u0158\u0197\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0156\u0199\u0297\001\307\221\u0156\u019b\u0297\001" + "\307\223\307\225\307\227\307\231\307\233\304" + "\131\304\133\u0297\001\307\235\u0297\001\u0297\001" + "\304\135\304\137\u0158\u019b\u0297\001\304\141\304" + "\143\304\145\304\147\304\151\304\153\304\155" + "\304\157\304\161\304\163\304\165\304\167\304" + "\171\304\173\304\175\u0297\001\u0297\001\304\177" + "\304\201\304\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\304\205\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\304\207\304\211\303" + "\105\303\107\u0156\u019f\u0156\u01a1\u0156\u01a3\u0156\u01a5" + "\u0156\u01a7\u0297\001\303\111\303\113\303\115\303" + "\117\303\121\303\123\u0297\001\u0297\001\u0297\001" + "\u0158\u019f\u0158\u01a1\u0158\u01a3\u0158\u01a5\u0158\u01a7\304" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\304\215" + "\304\217\u0297\001\u0297\001\303\125\303\127\u0157" + "\u0193\u0157\u0195\u0157\u0197\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\304\221\u0297" + "\001\u0297\001\304\223\304\225\304\227\304\231" + "\304\233\303\131\303\133\u0297\001\304\235\u0297" + "\001\u0297\001\303\135\303\137\u0157\u019b\u0297\001" + "\303\141\303\143\303\145\303\147\303\151\303" + "\153\303\155\303\157\303\161\303\163\303\165" + "\303\167\303\171\303\173\303\175\u0297\001\u01a0" + "\u0103\303\177\303\201\303\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\303\205\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\303\207" + "\303\211\301\105\301\107\u0297\001\u0297\001\u0297" + "\001\u01a0\u021d\u01a0\u025b\u0297\001\301\111\301\113" + "\301\115\301\117\301\121\301\123\u0297\001\u0297" + "\001\u0297\001\u0157\u019f\u0157\u01a1\u0157\u01a3\u0157\u01a5" + "\u0157\u01a7\303\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\303\215\303\217\u0297\001\u0297\001\301\125" + "\301\127\u0297\001\u0297\001\u01a0\141\u01a0\143\u01a0" + "\145\u01a0\147\u0297\001\u0297\001\u0297\001\u0297\001" + "\303\221\u0297\001\u0297\001\303\223\303\225\303" + "\227\303\231\303\233\301\131\301\133\u0297\001" + "\303\235\u0297\001\u0297\001\301\135\301\137\u01a0" + "\205\u019f\u0103\301\141\301\143\301\145\301\147" + "\301\151\301\153\301\155\301\157\301\161\301" + "\163\301\165\301\167\301\171\301\173\301\175" + "\u0297\001\u0130\u0103\301\177\301\201\301\203\u0297" + "\001\u0297\001\u019f\u021d\u019f\u025b\301\205\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\301\207\301\211\255\105\255\107\u0297\001" + "\u0297\001\u0297\001\u0130\u032b\u0130\u025b\u0297\001\255" + "\111\255\113\255\115\255\117\255\121\255\123" + "\u0297\001\u0297\001\u0297\001\u0297\001\u019f\141\u019f" + "\143\u019f\145\u019f\147\301\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\301\215\301\217\u0297\001\u0297" + "\001\255\125\255\127\u0297\001\u0297\001\u0130\141" + "\u0130\143\u0130\145\u0130\147\u0297\001\u0297\001\u0297" + "\001\u019f\205\301\221\u0297\001\u0297\001\301\223" + "\301\225\301\227\301\231\301\233\255\131\255" + "\133\u0297\001\301\235\u0297\001\u0297\001\255\135" + "\255\137\u0130\205\u012d\u0103\255\141\255\143\255" + "\145\255\147\255\151\255\153\255\155\255\157" + "\255\161\255\163\255\165\255\167\255\171\255" + "\173\255\175\u0297\001\236\u0103\255\177\255\201" + "\255\203\u0297\001\u0297\001\u012d\u021d\u012d\u025b\255" + "\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\255\207\255\211\254\105\254" + "\107\u0297\001\u0297\001\u0297\001\236\u021d\236\u025b" + "\u0297\001\254\111\254\113\254\115\254\117\254" + "\121\254\123\u0297\001\u0297\001\u0297\001\u0297\001" + "\u012d\141\u012d\143\u012d\145\u012d\147\255\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\255\215\255\217" + "\u0297\001\u0297\001\254\125\254\127\u0297\001\u0297" + "\001\236\141\236\143\236\145\236\147\u0297\001" + "\u0297\001\u0297\001\u012d\205\255\221\u0297\001\u0297" + "\001\255\223\255\225\255\227\255\231\255\233" + "\254\131\254\133\u0297\001\255\235\u0297\001\u0297" + "\001\254\135\254\137\236\205\u0297\001\254\141" + "\254\143\254\145\254\147\254\151\254\153\254" + "\155\254\157\254\161\254\163\254\165\254\167" + "\254\171\254\173\254\175\u0297\001\u0297\001\254" + "\177\254\201\254\203\u0297\001\u0297\001\012\355" + "\u0297\001\254\205\012\355\u0297\001\012\355\u0297" + "\001\u0236\u04c7\u0297\001\u0297\001\254\207\254\211" + "\253\105\253\107\u0297\001\012\355\012\355\u0297" + "\001\u0297\001\u0297\001\253\111\253\113\253\115" + "\253\117\253\121\253\123\u0297\001\u0236\u0479\u0236" + "\u047b\u0236\u047d\u0236\u047f\u0297\001\u0297\001\012\355" + "\254\213\u0236\u0481\u0297\001\u0236\u0483\u0236\u0485\254" + "\215\254\217\u0297\001\u0297\001\253\125\253\127" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\254\221" + "\u0297\001\u0297\001\254\223\254\225\254\227\254" + "\231\254\233\253\131\253\133\u0297\001\254\235" + "\u0297\001\u0297\001\253\135\253\137\u0297\001\u0297" + "\001\253\141\253\143\253\145\253\147\253\151" + "\253\153\253\155\253\157\253\161\253\163\253" + "\165\253\167\253\171\253\173\253\175\u0297\001" + "\u0297\001\253\177\253\201\253\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\253\205\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\253" + "\207\253\211\252\105\252\107\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\252\111\252" + "\113\252\115\252\117\252\121\252\123\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\253\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\253\215\253\217\u0297\001\u0297\001\252" + "\125\252\127\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\253\221\u0297\001\u0297\001\253\223\253\225" + "\253\227\253\231\253\233\252\131\252\133\u0297" + "\001\253\235\u0297\001\u0297\001\252\135\252\137" + "\u0297\001\u0297\001\252\141\252\143\252\145\252" + "\147\252\151\252\153\252\155\252\157\252\161" + "\252\163\252\165\252\167\252\171\252\173\252" + "\175\u0297\001\u0297\001\252\177\252\201\252\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\252\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\252\207\252\211\251\105\251\107\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\251\111\251\113\251\115\251\117\251\121\251" + "\123\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\252\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\252\215\252\217\u0297\001" + "\u0297\001\251\125\251\127\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\252\221\u0297\001\u0297\001\252" + "\223\252\225\252\227\252\231\252\233\251\131" + "\251\133\u0297\001\252\235\u0297\001\u0297\001\251" + "\135\251\137\u0297\001\u0297\001\251\141\251\143" + "\251\145\251\147\251\151\251\153\251\155\251" + "\157\251\161\251\163\251\165\251\167\251\171" + "\251\173\251\175\u0297\001\u0297\001\251\177\251" + "\201\251\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\251\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\251\207\251\211\250\105" + "\250\107\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\250\111\250\113\250\115\250\117" + "\250\121\250\123\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\251\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\251\215\251" + "\217\u0297\001\u0297\001\250\125\250\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\251\221\u0297\001" + "\u0297\001\251\223\251\225\251\227\251\231\251" + "\233\250\131\250\133\u0297\001\251\235\u0297\001" + "\u0297\001\250\135\250\137\u0297\001\u0297\001\250" + "\141\250\143\250\145\250\147\250\151\250\153" + "\250\155\250\157\250\161\250\163\250\165\250" + "\167\250\171\250\173\250\175\u0297\001\u0297\001" + "\250\177\250\201\250\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\250\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\250\207\250" + "\211\247\105\247\107\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\247\111\247\113\247" + "\115\247\117\247\121\247\123\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\250\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\250\215\250\217\u0297\001\u0297\001\247\125\247" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\250" + "\221\u0297\001\u0297\001\250\223\250\225\250\227" + "\250\231\250\233\247\131\247\133\u0297\001\250" + "\235\u0297\001\u0297\001\247\135\247\137\u0297\001" + "\u0297\001\247\141\247\143\247\145\247\147\247" + "\151\247\153\247\155\247\157\247\161\247\163" + "\247\165\247\167\247\171\247\173\247\175\u0297" + "\001\u0297\001\247\177\247\201\247\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\247\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\247\207\247\211\246\105\246\107\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\246\111" + "\246\113\246\115\246\117\246\121\246\123\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\247\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\247\215\247\217\u0297\001\u0297\001" + "\246\125\246\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\247\221\u0297\001\u0297\001\247\223\247" + "\225\247\227\247\231\247\233\246\131\246\133" + "\u0297\001\247\235\u0297\001\u0297\001\246\135\246" + "\137\u0297\001\u0297\001\246\141\246\143\246\145" + "\246\147\246\151\246\153\246\155\246\157\246" + "\161\246\163\246\165\246\167\246\171\246\173" + "\246\175\u0297\001\u0297\001\246\177\246\201\246" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\246\205" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\246\207\246\211\245\105\245\107" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\245\111\245\113\245\115\245\117\245\121" + "\245\123\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\246\213\u0297\001" + "\u0297\001\u0297\001\u0297\001\246\215\246\217\u0297" + "\001\u0297\001\245\125\245\127\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\246\221\u0297\001\u0297\001" + "\246\223\246\225\246\227\246\231\246\233\245" + "\131\245\133\u0297\001\246\235\u0297\001\u0297\001" + "\245\135\245\137\u0297\001\u0297\001\245\141\245" + "\143\245\145\245\147\245\151\245\153\245\155" + "\245\157\245\161\245\163\245\165\245\167\245" + "\171\245\173\245\175\u0297\001\u0297\001\245\177" + "\245\201\245\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\245\205\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\245\207\245\211\223" + "\105\223\107\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\223\111\223\113\223\115\223" + "\117\223\121\223\123\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\245" + "\213\u0297\001\u0297\001\u0297\001\u0297\001\245\215" + "\245\217\u0297\001\u0297\001\223\125\223\127\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\245\221\u0297" + "\001\u0297\001\245\223\245\225\245\227\245\231" + "\245\233\223\131\223\133\u0297\001\245\235\u0297" + "\001\u0297\001\223\135\223\137\u0297\001\u0297\001" + "\223\141\223\143\223\145\223\147\223\151\223" + "\153\223\155\223\157\223\161\223\163\223\165" + "\223\167\223\171\223\173\223\175\u0297\001\u0297" + "\001\223\177\223\201\223\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\223\205\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\223\207" + "\223\211\222\105\222\107\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\222\111\222\113" + "\222\115\222\117\222\121\222\123\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\223\213\u0297\001\u0297\001\u0297\001\u0297" + "\001\223\215\223\217\u0297\001\u0297\001\222\125" + "\222\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\223\221\u0297\001\u0297\001\223\223\223\225\223" + "\227\223\231\223\233\222\131\222\133\u0297\001" + "\223\235\u0297\001\u0297\001\222\135\222\137\u0297" + "\001\u0297\001\222\141\222\143\222\145\222\147" + "\222\151\222\153\222\155\222\157\222\161\222" + "\163\222\165\222\167\222\171\222\173\222\175" + "\u0297\001\u0297\001\222\177\222\201\222\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\222\205\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\222\207\222\211\174\105\174\107\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\174" + "\111\174\113\174\115\174\117\174\121\174\123" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\222\213\u0297\001\u0297\001" + "\u0297\001\u0297\001\222\215\222\217\u0297\001\u0297" + "\001\174\125\174\127\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\222\221\u0297\001\u0297\001\222\223" + "\222\225\222\227\222\231\222\233\174\131\174" + "\133\u0297\001\222\235\u0297\001\u0297\001\174\135" + "\174\137\u0297\001\u0297\001\174\141\174\143\174" + "\145\174\147\174\151\174\153\174\155\174\157" + "\174\161\174\163\174\165\174\167\174\171\174" + "\173\174\175\u0297\001\u0297\001\174\177\174\201" + "\174\203\u0297\001\u0297\001\u0297\001\u0297\001\174" + "\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\174\207\174\211\140\105\140" + "\107\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\140\111\140\113\140\115\140\117\140" + "\121\140\123\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\174\213\u0297" + "\001\u0297\001\u0297\001\u0297\001\174\215\174\217" + "\u0297\001\u0297\001\140\125\140\127\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\174\221\u0297\001\u0297" + "\001\174\223\174\225\174\227\174\231\174\233" + "\140\131\140\133\u0297\001\174\235\u0297\001\u0297" + "\001\140\135\140\137\u0297\001\u0297\001\140\141" + "\140\143\140\145\140\147\140\151\140\153\140" + "\155\140\157\140\161\140\163\140\165\140\167" + "\140\171\140\173\140\175\u0297\001\u0297\001\140" + "\177\140\201\140\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\140\205\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\140\207\140\211" + "\137\105\137\107\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\137\111\137\113\137\115" + "\137\117\137\121\137\123\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\140\213\u0297\001\u0297\001\u0297\001\u0297\001\140" + "\215\140\217\u0297\001\u0297\001\137\125\137\127" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\140\221" + "\u0297\001\u0297\001\140\223\140\225\140\227\140" + "\231\140\233\137\131\137\133\u0297\001\140\235" + "\u0297\001\u0297\001\137\135\137\137\u0297\001\u0297" + "\001\137\141\137\143\137\145\137\147\137\151" + "\137\153\137\155\137\157\137\161\137\163\137" + "\165\137\167\137\171\137\173\137\175\u0297\001" + "\u0297\001\137\177\137\201\137\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\137\205\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\137" + "\207\137\211\007\105\007\107\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\007\111\007" + "\113\007\115\007\117\007\121\007\123\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\137\213\u0297\001\u0297\001\u0297\001" + "\u0297\001\137\215\137\217\u0297\001\u0297\001\007" + "\125\007\127\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\137\221\u0297\001\u0297\001\137\223\137\225" + "\137\227\137\231\137\233\007\131\007\133\u0297" + "\001\137\235\u0297\001\u0297\001\007\135\007\137" + "\u0297\001\u0297\001\007\141\007\143\007\145\007" + "\147\007\151\007\153\007\155\007\157\007\161" + "\007\163\007\165\007\167\007\171\007\173\007" + "\175\u0297\001\u0297\001\007\177\007\201\007\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\007\205\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\007\207\007\211\006\105\006\107\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\006\111\006\113\006\115\006\117\006\121\006" + "\123\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\007\213\u0297\001\u0297" + "\001\u0297\001\u0297\001\007\215\007\217\u0297\001" + "\u0297\001\006\125\006\127\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\007\221\u0297\001\u0297\001\007" + "\223\007\225\007\227\007\231\007\233\006\131" + "\006\133\u0297\001\007\235\u0297\001\u0297\001\006" + "\135\006\137\u0297\001\u0297\001\006\141\006\143" + "\006\145\006\147\006\151\006\153\006\155\006" + "\157\006\161\006\163\006\165\006\167\006\171" + "\006\173\006\175\u0297\001\u0297\001\006\177\006" + "\201\006\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\006\205\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\006\207\006\211\004\105" + "\004\107\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\004\111\004\113\004\115\004\117" + "\004\121\004\123\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\006\213" + "\u0297\001\u0297\001\u0297\001\u0297\001\006\215\006" + "\217\u0297\001\u0297\001\004\125\004\127\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\006\221\u0297\001" + "\u0297\001\006\223\006\225\006\227\006\231\006" + "\233\004\131\004\133\u0297\001\006\235\u0297\001" + "\u0297\001\004\135\004\137\u0297\001\u0297\001\004" + "\141\004\143\004\145\004\147\004\151\004\153" + "\004\155\004\157\004\161\004\163\004\165\004" + "\167\004\171\004\173\004\175\u0297\001\u0297\001" + "\004\177\004\201\004\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\004\205\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\004\207\004" + "\211\347\105\347\107\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\347\u0103\u0297\001\347" + "\115\347\117\347\121\347\123\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\004\213\u0297\001\u0297\001\u0297\001\u0297\001" + "\004\215\004\217\u0297\001\u0297\001\347\125\347" + "\127\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\004" + "\221\u0297\001\u0297\001\004\223\004\225\004\227" + "\004\231\004\233\347\131\347\133\u0297\001\004" + "\235\u0297\001\u0297\001\347\135\347\137\u0297\001" + "\u0297\001\347\141\347\143\347\145\347\147\347" + "\151\347\153\347\155\347\157\347\161\347\163" + "\347\165\347\167\347\171\347\173\347\175\u0297" + "\001\u0297\001\347\177\347\201\347\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\347\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\347\207\347\211\056\105\056\107\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\056\u0103" + "\u0297\001\056\115\056\117\056\121\056\123\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\347\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\347\215\347\217\u0297\001\u0297\001" + "\056\125\056\127\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\347\221\u0297\001\u0297\001\347\223\347" + "\225\347\227\347\231\347\233\056\131\056\133" + "\u0297\001\347\235\u0297\001\u0297\001\056\u0129\056" + "\137\u0297\001\u0297\001\056\141\056\143\056\145" + "\056\147\056\151\056\153\056\155\056\157\056" + "\161\056\163\056\165\056\167\056\171\056\173" + "\056\175\u0297\001\u0297\001\056\177\056\201\056" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\056\205" + "\u0297\001\u0297\001\u0297\001\u012b\105\u012b\107\u0297" + "\001\u0297\001\056\207\056\211\u015b\u03c1\u0297\001" + "\u012b\u0103\u0297\001\u012b\115\u012b\117\u012b\121\u012b" + "\123\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u015b\u0191\u015b" + "\u0193\u015b\u0195\u015b\u0197\u0297\001\056\213\u0297\001" + "\u0297\001\u012b\125\u012b\127\056\215\056\217\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u015b\u0199\u0297\001\056\221\u015b\u019b\u0297\001" + "\056\223\056\225\056\227\056\231\056\233\u012b" + "\u0129\u012b\137\u0297\001\056\235\u012b\141\u012b\143" + "\u012b\145\u012b\147\u012b\151\u012b\153\u012b\155\u012b" + "\157\u012b\161\u012b\163\u012b\165\u012b\167\u012b\171" + "\u012b\173\u012b\175\u0297\001\u0297\001\u012b\177\u012b" + "\201\u012b\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\u012b\205\u0297\001\u0297\001\u0297\001\346\105\346" + "\107\u0297\001\u0297\001\u012b\207\u012b\211\u0297\001" + "\u0297\001\346\u0103\u0297\001\346\115\346\117\346" + "\121\346\123\u015b\u019f\u015b\u01a1\u015b\u01a3\u015b\u01a5" + "\u015b\u01a7\u021a\u04ab\u0297\001\u0297\001\u0297\001\u0297" + "\001\u021a\u0191\u021a\u0193\u021a\u0195\u021a\u0197\u012b\213" + "\u0297\001\u0297\001\346\125\346\127\u012b\215\u012b" + "\217\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u021a\u0199\u012b\221\u0297\001" + "\u021a\u019b\u012b\223\u0297\001\u0297\001\u012b\231\u012b" + "\233\346\u0129\346\137\u0297\001\u012b\235\346\141" + "\346\143\346\145\346\147\346\151\346\153\346" + "\155\346\157\346\161\346\163\346\165\346\167" + "\346\171\346\173\346\175\u0297\001\u0297\001\346" + "\177\346\201\346\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\346\205\u0297\001\u0297\001\u0297\001\345" + "\105\345\107\u0297\001\u0297\001\346\207\346\211" + "\u0297\001\u0297\001\345\u0103\u0297\001\345\115\345" + "\117\345\121\345\123\u0297\001\u021a\u019f\u021a\u01a1" + "\u021a\u01a3\u021a\u01a5\u021a\u01a7\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\346\213\u0297\001\u0297\001\345\125\345\127\346" + "\215\346\217\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\346\221" + "\u0297\001\u0297\001\346\223\u0297\001\u0297\001\346" + "\231\346\233\345\u0129\345\137\u0297\001\346\235" + "\345\141\345\143\345\145\345\147\345\151\345" + "\153\345\155\345\157\345\161\345\163\345\165" + "\345\167\345\171\345\173\345\175\u0297\001\u0297" + "\001\345\177\345\201\345\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\345\205\u0297\001\u0297\001\u0297" + "\001\343\105\343\107\u0297\001\u0297\001\345\207" + "\345\211\u0297\001\u0297\001\343\u0103\u0297\001\343" + "\115\343\117\343\121\343\123\u0297\001\u0297\001" + "\u0297\001\u0297\001\u013c\u0389\u0297\001\u0297\001\u0297" + "\001\u0297\001\u013c\u0191\u013c\u0193\u013c\u0195\u013c\u0197" + "\u0297\001\345\213\u0297\001\u0297\001\343\125\343" + "\127\345\215\345\217\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u013c\u0199\u0297\001" + "\345\221\u013c\u019b\u0297\001\345\223\u0297\001\u0297" + "\001\345\231\345\233\343\u0129\343\137\u0297\001" + "\345\235\343\141\343\143\343\145\343\147\343" + "\151\343\153\343\155\343\157\343\161\343\163" + "\343\165\343\167\343\171\343\173\343\175\u0297" + "\001\u0297\001\343\177\343\201\343\203\u0297\001" + "\u0297\001\u0297\001\u0297\001\343\205\u0297\001\u0297" + "\001\u0297\001\341\105\341\107\u0297\001\u0297\001" + "\343\207\343\211\u0297\001\u0297\001\341\u0103\u0297" + "\001\341\115\341\117\341\121\341\123\u013c\u019f" + "\u013c\u01a1\u013c\u01a3\u013c\u01a5\u013c\u01a7\u013b\u0387\u0297" + "\001\u0297\001\u0297\001\u0297\001\u013b\u0191\u013b\u0193" + "\u013b\u0195\u013b\u0197\343\213\u0297\001\u0297\001\341" + "\125\341\127\343\215\343\217\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u013b\u0199\343\221\u0297\001\u013b\u019b\343\223\u0297" + "\001\u0297\001\343\231\343\233\341\u0129\341\137" + "\u0297\001\343\235\341\141\341\143\341\145\341" + "\147\341\151\341\153\341\155\341\157\341\161" + "\341\163\341\165\341\167\341\171\341\173\341" + "\175\u0297\001\u0297\001\341\177\341\201\341\203" + "\u0297\001\u0297\001\u0297\001\u0297\001\341\205\u0297" + "\001\u0297\001\u0297\001\340\105\340\107\u0297\001" + "\u0297\001\341\207\341\211\u0297\001\u0297\001\340" + "\u0103\u0297\001\340\115\340\117\340\121\340\123" + "\u0297\001\u013b\u019f\u013b\u01a1\u013b\u01a3\u013b\u01a5\u013b" + "\u01a7\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\341\213\u0297\001\u0297" + "\001\340\125\340\127\341\215\341\217\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\341\221\u0297\001\u0297\001\341" + "\223\u0297\001\u0297\001\341\231\341\233\340\u0129" + "\340\137\u0297\001\341\235\340\141\340\143\340" + "\145\340\147\340\151\340\153\340\155\340\157" + "\340\161\340\163\340\165\340\167\340\171\340" + "\173\340\175\u0297\001\u0297\001\340\177\340\201" + "\340\203\u0297\001\u0297\001\u0297\001\u0297\001\340" + "\205\u0297\001\u0297\001\u0297\001\337\105\337\107" + "\u0297\001\u0297\001\340\207\340\211\u0297\001\u0297" + "\001\337\u0103\u0297\001\337\115\337\117\337\121" + "\337\123\u0297\001\u0297\001\u0297\001\u0297\001\u0137" + "\u037f\u0297\001\u0297\001\u0297\001\u0297\001\u0137\u0191" + "\u0137\u0193\u0137\u0195\u0137\u0197\u0297\001\340\213\u0297" + "\001\u0297\001\337\125\337\127\340\215\340\217" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0137\u0199\u0297\001\340\221\u0137\u019b\u0297" + "\001\340\223\u0297\001\u0297\001\340\231\340\233" + "\337\u0129\337\137\u0297\001\340\235\337\141\337" + "\143\337\145\337\147\337\151\337\153\337\155" + "\337\157\337\161\337\163\337\165\337\167\337" + "\171\337\173\337\175\u0297\001\u0297\001\337\177" + "\337\201\337\203\u0297\001\u0297\001\u0297\001\u0297" + "\001\337\205\u0297\001\u0297\001\u0297\001\336\105" + "\336\107\u0297\001\u0297\001\337\207\337\211\u0297" + "\001\u0297\001\336\u0103\u0297\001\336\115\336\117" + "\336\121\336\123\u0137\u019f\u0137\u01a1\u0137\u01a3\u0137" + "\u01a5\u0137\u01a7\360\u02f7\u0297\001\u0297\001\u0297\001" + "\u0297\001\360\u0191\360\u0193\360\u0195\360\u0197\337" + "\213\u0297\001\u0297\001\336\125\336\127\337\215" + "\337\217\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\360\u0199\337\221\u0297" + "\001\360\u019b\337\223\u0297\001\u0297\001\337\231" + "\337\233\336\u0129\336\137\u0297\001\337\235\336" + "\141\336\143\336\145\336\147\336\151\336\153" + "\336\155\336\157\336\161\336\163\336\165\336" + "\167\336\171\336\173\336\175\u0297\001\u0297\001" + "\336\177\336\201\336\203\u0297\001\u0297\001\u0297" + "\001\u0297\001\336\205\u0297\001\u0297\001\u0297\001" + "\324\105\324\107\u0297\001\u0297\001\336\207\336" + "\211\u0297\001\u0297\001\324\u0103\u0297\001\324\115" + "\324\117\324\121\324\123\u0297\001\360\u019f\360" + "\u01a1\360\u01a3\360\u01a5\360\u01a7\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\336\213\u0297\001\u0297\001\324\125\324\127" + "\336\215\336\217\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\336" + "\221\u0297\001\u0297\001\336\223\u0297\001\u0297\001" + "\336\231\336\233\324\u0129\324\137\u0297\001\336" + "\235\324\141\324\143\324\145\324\147\324\151" + "\324\153\324\155\324\157\324\161\324\163\324" + "\165\324\167\324\171\324\173\324\175\u0297\001" + "\220\045\324\177\324\201\324\203\u0297\001\u0297" + "\001\u0297\001\u0297\001\324\205\u0297\001\220\047" + "\u0297\001\224\105\224\107\u0297\001\u0297\001\324" + "\207\324\211\u0297\001\u0297\001\224\u0103\u0297\001" + "\224\115\224\117\224\121\224\123\220\051\220" + "\053\220\055\220\057\u0297\001\220\061\u0297\001" + "\u0297\001\220\063\220\065\u0297\001\u0297\001\u0297" + "\001\u0297\001\324\213\220\067\u0297\001\224\125" + "\224\127\324\215\324\217\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\324\221\u0297\001\u0297\001\324\223\u0297\001" + "\u0297\001\324\231\324\233\224\u0129\224\137\u0297" + "\001\324\235\224\141\224\143\224\145\224\147" + "\224\151\224\153\224\155\224\157\224\161\224" + "\163\224\165\224\167\224\171\224\173\224\175" + "\u0297\001\040\045\224\177\224\201\224\203\u0297" + "\001\u0297\001\u0297\001\u0297\001\224\205\u0297\001" + "\040\047\u0297\001\110\105\110\107\u0297\001\u0297" + "\001\224\207\224\211\u0297\001\u0297\001\110\u0103" + "\u0297\001\110\115\110\117\110\121\110\123\040" + "\051\040\053\040\055\040\057\u0297\001\040\061" + "\u0297\001\u0297\001\040\063\040\065\u0297\001\u0297" + "\001\u0297\001\u0297\001\224\213\040\067\u0297\001" + "\110\125\110\127\224\215\224\217\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\224\221\u0297\001\u0297\001\224\223" + "\u0297\001\u0297\001\224\231\224\233\110\u0129\110" + "\137\u0297\001\224\235\110\141\110\143\110\145" + "\110\147\110\151\110\153\110\155\110\157\110" + "\161\110\163\110\165\110\167\110\171\110\173" + "\110\175\u0297\001\u0297\001\110\177\110\201\110" + "\203\u0297\001\u0297\001\u0297\001\u0297\001\110\205" + "\u0297\001\u0297\001\u0297\001\101\105\101\107\u0297" + "\001\u0297\001\110\207\110\211\u0297\001\u0297\001" + "\101\u0103\u0297\001\101\115\101\117\101\121\101" + "\123\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\110\213\u0297\001" + "\u0297\001\101\125\101\127\110\215\110\217\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\110\221\u0297\001\u0297\001" + "\110\223\u0297\001\u0297\001\110\231\110\233\101" + "\u0129\101\137\u0297\001\110\235\101\141\101\143" + "\101\145\101\147\101\151\101\153\101\155\101" + "\157\101\161\101\163\101\165\101\167\101\171" + "\101\173\101\175\u0297\001\u0297\001\101\177\101" + "\201\101\203\u0297\001\u0297\001\u0297\001\u0297\001" + "\101\205\u0297\001\u0297\001\u0297\001\100\105\100" + "\107\u0297\001\u0297\001\101\207\101\211\u0297\001" + "\u0297\001\100\u0103\u0297\001\100\115\100\117\100" + "\121\100\123\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\101\213" + "\u0297\001\u0297\001\100\125\100\127\101\215\101" + "\217\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\101\221\u0297\001" + "\u0297\001\101\223\u0297\001\u0297\001\101\231\101" + "\233\100\u0129\100\137\u0297\001\101\235\100\141" + "\100\143\100\145\100\147\100\151\100\153\100" + "\155\100\157\100\161\100\163\100\165\100\167" + "\100\171\100\173\100\175\u0297\001\u0297\001\100" + "\177\100\201\100\203\u0297\001\u0297\001\u0297\001" + "\u0297\001\100\205\u0297\001\u0297\001\u0297\001\077" + "\105\077\107\u0297\001\u0297\001\100\207\100\211" + "\u0297\001\u0297\001\077\u0103\u0297\001\077\115\077" + "\117\077\121\077\123\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\100\213\u0297\001\u0297\001\077\125\077\127\100" + "\215\100\217\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\100\221" + "\u0297\001\u0297\001\100\223\u0297\001\u0297\001\100" + "\231\100\233\077\u0129\077\137\u0297\001\100\235" + "\077\141\077\143\077\145\077\147\077\151\077" + "\153\077\155\077\157\077\161\077\163\077\165" + "\077\167\077\171\077\173\077\175\u0297\001\u0297" + "\001\077\177\077\201\077\203\u0297\001\u0297\001" + "\u0297\001\u0297\001\077\205\u0297\001\u0297\001\u0297" + "\001\052\105\052\107\u0297\001\u0297\001\077\207" + "\077\211\u0297\001\u0297\001\052\u0103\u0297\001\052" + "\115\052\117\052\121\052\123\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\077\213\u0297\001\u0297\001\052\125\052" + "\127\077\215\077\217\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\077\221\u0297\001\u0297\001\077\223\u0297\001\u0297" + "\001\077\231\077\233\052\u0129\052\137\u0297\001" + "\077\235\052\141\052\143\052\145\052\147\052" + "\151\052\153\052\155\052\157\052\161\052\163" + "\052\165\052\167\052\171\052\173\052\175\u0297" + "\001\u0297\001\052\177\052\201\052\203\u0297\001" + "\u0297\001\u0297\001\u0170\u01a9\052\205\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0170\u01ab" + "\052\207\052\211\u0170\u01ad\u0170\u01af\u0170\u01b1\u0170" + "\u01b3\u0170\u01b5\u0170\u01b7\u0297\001\u0170\u01b9\u0170\u01bb" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\052\213\u0297\001\u0297\001\u0297" + "\001\u0297\001\052\215\052\217\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0170" + "\u01bd\u0170\u01bf\u0297\001\u0170\u01c1\u0170\u01c3\u0170\u01c5" + "\u0297\001\052\221\124\u01a9\u0297\001\052\223\u0297" + "\001\u0297\001\052\231\052\233\u0297\001\124\u01ab" + "\u0297\001\052\235\124\u01ad\124\u01af\124\u01b1\124" + "\u01b3\124\u01b5\124\u01b7\u0297\001\124\u01b9\124\u01bb" + "\u0169\u024d\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u013f\u024d\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0169\u0191\u0169\u0193\u0169\u0195\u0169" + "\u0197\u0297\001\u0170\u01c7\u0170\u01c9\u0297\001\u013f\u0191" + "\u013f\u0193\u013f\u0195\u013f\u0197\u0297\001\u0297\001\124" + "\u01bd\124\u01bf\u0297\001\124\u01c1\124\u01c3\124\u01c5" + "\u0170\u01cb\u0170\u01cd\u0297\001\u0297\001\u0169\u0199\u0297" + "\001\u0297\001\u0169\u019b\u0297\001\u0297\001\u0297\001" + "\u0169\u03c3\u013f\u0199\u0297\001\u0297\001\u013f\u019b\011" + "\305\011\307\u0297\001\u013f\u038d\u0297\001\u0297\001" + "\011\311\011\313\011\315\011\317\011\321\011" + "\323\011\325\011\327\011\331\011\333\011\335" + "\011\337\011\341\011\343\011\345\011\347\011" + "\351\u0297\001\124\u01c7\124\u01c9\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\124\u01cb\124\u01cd\u0297\001\u0297\001\u0297\001\u0169" + "\u019f\u0169\u01a1\u0169\u01a3\u0169\u01a5\u0169\u01a7\u0297\001" + "\u0297\001\u0297\001\u013f\u019f\u013f\u01a1\u013f\u01a3\u013f" + "\u01a5\u013f\u01a7\u0133\u0103\u0133\307\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0133\311\u0133\313\u0133\315\u0133" + "\317\u0133\321\u0133\323\u0133\325\u0133\327\u0133\331" + "\u0133\333\u0133\335\u0133\337\u0133\341\u0133\343\u0133" + "\345\u0133\347\u0133\351\u0133\u021d\u0133\u025b\u0208\u0103" + "\u0208\307\u0297\001\u0297\001\u0297\001\u0297\001\u0208" + "\311\u0208\313\u0208\315\u0208\317\u0208\321\u0208\323" + "\u0208\325\u0208\327\u0208\331\u0208\333\u0208\335\u0208" + "\337\u0208\341\u0208\343\u0208\345\u0208\347\u0208\351" + "\u0297\001\u0297\001\u0297\001\u01ae\u0103\u01ae\307\u0133" + "\141\u0133\143\u0133\145\u0133\147\u01ae\311\u01ae\313" + "\u01ae\315\u01ae\317\u01ae\321\u01ae\323\u01ae\325\u01ae" + "\327\u01ae\331\u01ae\333\u01ae\335\u01ae\337\u01ae\341" + "\u01ae\343\u01ae\345\u01ae\347\u01ae\351\u0297\001\u0297" + "\001\u0297\001\u0133\205\u0208\141\u0208\143\u0208\145" + "\u0208\147\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0208\205" + "\u0297\001\u01ae\141\u01ae\143\u01ae\145\u01ae\147\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u011f\u0103\u011f\307" + "\u0297\001\u0297\001\u0297\001\u01ae\205\u011f\311\u011f" + "\313\u011f\315\u011f\317\u011f\321\u011f\323\u011f\325" + "\u011f\327\u011f\331\u011f\333\u011f\335\u011f\337\u011f" + "\341\u011f\343\u011f\345\u011f\347\u011f\351\u0297\001" + "\u0297\001\u011e\u0103\u011e\307\u0297\001\u0297\001\u0297" + "\001\u0297\001\u011e\311\u011e\313\u011e\315\u011e\317" + "\u011e\321\u011e\323\u011e\325\u011e\327\u011e\331\u011e" + "\333\u011e\335\u011e\337\u011e\341\u011e\343\u011e\345" + "\u011e\347\u011e\351\u0297\001\u0297\001\u0297\001\u0117" + "\u0103\u0117\307\u011f\141\u011f\143\u011f\145\u011f\147" + "\u0117\311\u0117\313\u0117\315\u0117\317\u0117\321\u0117" + "\323\u0117\325\u0117\327\u0117\331\u0117\333\u0117\335" + "\u0117\337\u0117\341\u0117\343\u0117\345\u0117\347\u0117" + "\351\u0297\001\u0297\001\u0297\001\u011f\205\u011e\141" + "\u011e\143\u011e\145\u011e\147\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u011e\205\u0297\001\u0117\141\u0117\143\u0117" + "\145\u0117\147\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\032\u0103\032\307\u0297\001\u0297\001\u0297\001\u0117" + "\205\032\311\032\313\032\315\032\317\032\321" + "\032\323\032\325\032\327\032\331\032\333\032" + "\335\032\337\032\341\032\343\032\345\032\347" + "\032\351\u0297\001\u0297\001\024\u0103\024\307\u0297" + "\001\u0297\001\u0297\001\u0297\001\024\311\024\313" + "\024\315\024\317\024\321\024\323\024\325\024" + "\327\024\331\024\333\024\335\024\337\024\341" + "\024\343\024\345\024\347\024\351\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0246\307\032\141\032\143" + "\032\145\032\147\u0246\311\u0246\313\u0246\315\u0246" + "\317\u0246\321\u0246\323\u0246\325\u0246\327\u0246\331" + "\u0246\333\u0246\335\u0246\337\u0246\341\u0246\343\u0246" + "\345\u0246\347\u0246\351\u0297\001\u0297\001\u0297\001" + "\032\205\024\141\024\143\024\145\024\147\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u01ea\307" + "\u0297\001\u0297\001\u0297\001\024\205\u01ea\311\u01ea" + "\313\u01ea\315\u01ea\317\u01ea\321\u01ea\323\u01ea\325" + "\u01ea\327\u01ea\331\u01ea\333\u01ea\335\u01ea\337\u01ea" + "\341\u01ea\343\u01ea\345\u01ea\347\u01ea\351\u01b6\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\u01b6\311\u01b6" + "\313\u01b6\315\u01b6\317\u01b6\321\u01b6\323\u01b6\325" + "\u01b6\327\u01b6\331\u01b6\333\u01b6\335\u01b6\337\u01b6" + "\341\u01b6\343\u01b6\345\u01b6\347\u01b6\351\u0198\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0198\311\u0198" + "\313\u0198\315\u0198\317\u0198\321\u0198\323\u0198\325" + "\u0198\327\u0198\331\u0198\333\u0198\335\u0198\337\u0198" + "\341\u0198\343\u0198\345\u0198\347\u0198\351\366\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\366\311\366" + "\313\366\315\366\317\366\321\366\323\366\325" + "\366\327\366\331\366\333\366\335\366\337\366" + "\341\366\343\366\345\366\347\366\351\302\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\302\311\302" + "\313\302\315\302\317\302\321\302\323\302\325" + "\302\327\302\331\302\333\302\335\302\337\302" + "\341\302\343\302\345\302\347\302\351\227\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\227\311\227" + "\313\227\315\227\317\227\321\227\323\227\325" + "\227\327\227\331\227\333\227\335\227\337\227" + "\341\227\343\227\345\227\347\227\351\112\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\112\311\112" + "\313\112\315\112\317\112\321\112\323\112\325" + "\112\327\112\331\112\333\112\335\112\337\112" + "\341\112\343\112\345\112\347\112\351\055\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\055\311\055" + "\313\055\315\055\317\055\321\055\323\055\325" + "\055\327\055\331\055\333\055\335\055\337\055" + "\341\055\343\055\345\055\347\055\351\054\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\054\311\054" + "\313\054\315\054\317\054\321\054\323\054\325" + "\054\327\054\331\054\333\054\335\054\337\054" + "\341\054\343\054\345\054\347\054\351\031\307" + "\u0297\001\u0297\001\u0297\001\u0297\001\031\311\031" + "\313\031\315\031\317\031\321\031\323\031\325" + "\031\327\031\331\031\333\031\335\031\337\031" + "\341\031\343\031\345\031\347\031\351\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001" + "\u0297\001\u0297\001\u0297\001\u0297\001\u0297\001\u0297" + "\001\u0297\001\u0297\001\u0297\001\u0297\001\u067a\366" + "\046\076\u012e\u05f3\u0233\u05e8\u05db\236\217\370\236" + "\u012e\u0642\u063e\u0334\u01fd\203\300\u0105\327\361\347" + "\u0141\234\213\155\u0154\203\u0154\117\120\u0188\u019f" + "\u022d\122\236\u0170\u01a0\u0171\127\206\u0648\u0262\063" + "\036\354\u012f\u0104\u0130\u0103\u01ba\012\013\u0154\014" + "\u01b8\236\u0164\u022a\015\016\017\u063d\u063b\u0639\u019f" + "\020\021\u01c5\u017e\u01a0\u062e\347\005\021\276\u026e" + "\u0163\u0224\u013e\014\u028e\u028f\111\u0214\u01bb\300\277" + "\277\207\020\021\u0151\347\u05cf\u05c2\u0294\130\u024c" + "\u022b\241\u025f\u018d\u019b\034\035\061\057\022\215" + "\u017f\u019f\242\242\216\036\u01a0\u01a1\u01f1\u01e3\u024a" + "\237\037\u05b4\u0202\u0154\u0125\u0108\014\206\u01d1\206" + "\203\240\240\u02a1\350\203\u018a\u018a\350\u0123\274" + "\u0103\214\u05a9\u059c\u0629\165\014\210\040\u026b\u0145" + "\u026a\034\206\u018c\u018a\u018a\u025e\u018d\u0269\u01ad\u031a" + "\u0590\u0583\u0575\u056a\u055d\u0551\u0544\u0536\u0268\034\u0155" + "\114\u01d2\207\u026c\207\u018c\u018d\u01e6\122\u02c8\u02bd" + "\u020d\u02b0\u0114\u0120\122\u052b\127\u051e\u030d\175\u0267" + "\u0512\u0505\u04f7\u04ec\u04df\u04d3\u04c6\207\u04b8\u04ad\u04a0" + "\u0494\u0487\u0621\112\u0266\213\202\u0265\u018a\u018a\066" + "\203\u061d\u0610\u060b\u0603\u0151\u02eb\u02fb\u02cc\u027c\035" + "\206\u05f2\u01ed\u023a\u01fb\117\120\u018a\u018a\u0239\206" + "\u0238\243\u0479\026\127\117\120\121\122\u0237\236" + "\u0161\124\125\126\127\u019f\u019c\122\u019d\204\u01a0" + "\u046e\223\u010d\122\u019f\205\u018d\u0196\u02b4\u01a0\371" + "\u0289\065\u0172\u0102\u0236\207\u01fc\u021b\u0461\u0294\u010c" + "\157\u01d2\u011a\211\207\270\u01d3\u0249\u02ad\u010c\122" + "\366\u0205\210\u0155\u0293\035\013\244\u0455\002\u0448" + "\u0248\203\u01a1\u020c\036\u01a2\u0244\130\u01ff\u01c8\u0199" + "\037\u01ac\367\u0620\212\122\u043a\u0116\u042f\326\u01c9" + "\u01c9\u012e\u0199\u0422\u0416\u0199\u012e\117\120\121\122" + "\u012e\166\u0169\124\125\126\127\220\u0216\u01cf\u0201" + "\221\266\u01d0\117\120\121\122\003\203\263\124" + "\125\126\127\001\064\001\u0409\u03fb\u0127\u019c\122" + "\u019d\u012f\265\u0130\u02e7\u0207\u012f\001\u0130\001\u0206" + "\u012f\001\u0130\u03f0\u01b5\u0247\u0193\u0217\u03e3\u0278\u024b" + "\u012e\u03d7\u010d\u02a3\u0200\350\u0201\234\001\130\346" + "\u0163\u016a\u0128\u0129\u0129\u012a\001\u0150\u014b\u0193\u0194" + "\u03ca\374\201\u019e\u01fb\130\001\u03bc\001\264\265" + "\040\266\267\270\271\001\035\001\u0130\u017d\001" + "\u012f\001\u0130\u0190\u0131\036\u01e4\132\122\001\u03b1" + "\u03a4\037\117\120\121\122\001\u0627\263\124\125" + "\126\127\u0230\001\117\120\121\122\u0286\u0287\u013f" + "\124\125\126\127\034\001\u0398\001\220\u0191\u0191" + "\u0192\221\u019c\122\u0218\013\001\132\122\037\001" + "\132\122\u01bd\u0277\132\122\u010b\357\346\344\336" + "\u0279\u027b\134\344\u0176\u0111\134\u038b\u0107\u0101\134" + "\117\120\101\001\130\050\001\u01b4\264\265\127" + "\266\267\270\271\234\001\130\u0177\021\u0140\u037d" + "\175\176\u0372\u025a\001\u0618\u0365\u010a\u010b\u02db\u0112" + "\u0112\u0112\u0113\117\120\121\122\176\103\u0284\124" + "\125\126\127\001\132\122\u01a6\u01a7\u020e\u0359\314" + "\311\271\241\226\216\214\u0277\u0278\133\204\134" + "\001\032\117\120\121\122\u034c\001\u01b1\124\125" + "\126\127\u033e\u0174\u0163\u01a6\u01a7\u01a8\u0285\u01f4\015" + "\016\017\u021e\u02f5\u01e9\117\120\121\122\001\230" + "\231\124\125\126\127\130\u0333\001\u0326\u01f3\u01f4" + "\u0610\001\u0229\u0234\u01ba\117\120\121\122\117\120" + "\360\124\125\126\127\u016f\001\057\127\u0270\u0266" + "\362\001\u01b2\367\130\u0292\u0234\361\362\363\u01f1" + "\117\120\121\122\u0291\u0234\360\124\125\126\127" + "\u0233\u0234\232\233\001\234\u021f\130\u021f\001\235" + "\u0220\u021f\361\362\363\364\117\120\121\122\001" + "\203\u014c\124\125\126\127\001\130\117\120\121" + "\122\u0118\u019a\360\124\125\126\127\117\120\121" + "\122\117\120\360\124\125\126\127\u016e\001\u014b" + "\127\001\130\u0118\u0119\117\120\121\122\u014d\u014a" + "\360\124\125\126\127\001\117\120\121\122\117" + "\120\360\124\125\126\127\u016b\u025c\130\127\001" + "\132\122\u0196\u0197\117\120\001\u014b\u01e7\203\130" + "\u016c\u0196\u0197\127\u0279\u027a\134\u014a\u0196\u0197\130" + "\117\120\121\122\001\001\360\124\125\126\127" + "\001\001\117\120\121\122\001\130\360\124\125" + "\126\127\u0153\117\120\121\122\u016d\130\u0280\124" + "\125\126\127\001\u0135\117\120\121\122\001\001" + "\u027e\124\125\126\127\117\120\121\122\170\173" + "\u0272\124\125\126\127\015\016\017\117\120\121" + "\122\001\130\u0270\124\125\126\127\001\001\117" + "\120\121\122\001\130\u0264\124\125\126\127\001" + "\117\120\121\122\001\130\u025b\124\125\126\127" + "\001\001\117\120\121\122\001\130\u0258\124\125" + "\126\127\117\120\121\122\001\130\u0256\124\125" + "\126\127\001\001\001\117\120\121\122\001\130" + "\u0247\124\125\126\127\001\001\117\120\121\122" + "\001\130\u0226\124\125\126\127\001\117\120\121" + "\122\001\130\u021a\124\125\126\127\001\001\117" + "\120\121\122\001\130\u0219\124\125\126\127\117" + "\120\121\122\001\130\u0211\124\125\126\127\001" + "\001\001\117\120\121\122\001\130\u020a\124\125" + "\126\127\001\001\117\120\121\122\001\130\u01f5" + "\124\125\126\127\001\117\120\121\122\001\130" + "\u01f0\124\125\126\127\001\001\117\120\121\122" + "\001\130\u01ed\124\125\126\127\117\120\121\122" + "\001\130\u01e5\124\125\126\127\001\001\001\117" + "\120\121\122\001\130\u01e4\124\125\126\127\001" + "\001\117\120\121\122\001\130\u01d9\124\125\126" + "\127\001\117\120\121\122\001\130\u01d8\124\125" + "\126\127\001\001\117\120\121\122\001\130\u01d1" + "\124\125\126\127\117\120\121\122\001\130\u01ce" + "\124\125\126\127\001\001\001\117\120\121\122" + "\001\130\u01bc\124\125\126\127\001\001\117\120" + "\121\122\001\130\u01b9\124\125\126\127\001\117" + "\120\121\122\001\130\u01a9\124\125\126\127\001" + "\001\117\120\121\122\001\130\u0189\124\125\126" + "\127\117\120\121\122\001\130\u017d\124\125\126" + "\127\001\001\001\117\120\121\122\001\130\u0161" + "\124\125\126\127\001\001\117\120\121\122\001" + "\130\u0160\124\125\126\127\001\117\120\121\122" + "\001\130\u015f\124\125\126\127\001\001\117\120" + "\121\122\001\130\u015e\124\125\126\127\117\120" + "\121\122\001\130\u015d\124\125\126\127\001\001" + "\001\117\120\121\122\001\130\u015c\124\125\126" + "\127\001\001\117\120\121\122\001\130\u015b\124" + "\125\126\127\001\117\120\121\122\001\130\u015a" + "\124\125\126\127\001\001\117\120\121\122\001" + "\130\u0159\124\125\126\127\117\120\121\122\001" + "\130\u0158\124\125\126\127\001\001\001\117\120" + "\121\122\001\130\u0157\124\125\126\127\001\001" + "\117\120\121\122\001\130\u0156\124\125\126\127" + "\001\117\120\121\122\001\130\u0152\124\125\126" + "\127\001\001\117\120\121\122\001\130\u0150\124" + "\125\126\127\117\120\121\122\001\130\u013d\124" + "\125\126\127\001\001\001\117\120\121\122\001" + "\130\u013c\124\125\126\127\001\001\117\120\121" + "\122\001\130\u013b\124\125\126\127\001\117\120" + "\121\122\001\130\u013a\124\125\126\127\001\001" + "\117\120\121\122\001\130\u0139\124\125\126\127" + "\117\120\121\122\001\130\u0138\124\125\126\127" + "\001\001\001\117\120\121\122\001\130\u0137\124" + "\125\126\127\001\001\117\120\121\122\001\130" + "\u0136\124\125\126\127\001\117\120\121\122\001" + "\130\u0122\124\125\126\127\001\001\117\120\121" + "\122\001\130\u0121\124\125\126\127\117\120\121" + "\122\001\130\u0108\124\125\126\127\001\001\001" + "\117\120\121\122\001\130\356\124\125\126\127" + "\001\001\117\120\121\122\001\130\355\124\125" + "\126\127\001\117\120\121\122\001\130\136\124" + "\125\126\127\001\001\117\120\121\122\001\130" + "\135\124\125\126\127\117\120\121\122\001\130" + "\123\124\125\126\127\001\001\u0174\001\001\117" + "\120\001\130\015\016\017\u0168\117\120\127\020" + "\021\117\120\u0167\130\001\127\001\u0166\001\001" + "\127\001\u0175\117\120\130\001\117\120\001\u0165" + "\001\001\127\u0162\117\120\127\130\001\117\120" + "\243\001\001\127\001\274\001\130\127\117\120" + "\117\120\117\120\001\260\001\257\127\256\127" + "\001\127\117\120\001\001\170\172\001\225\170" + "\171\127\015\016\017\001\015\016\017\u0282\u01cb" + "\001\u01cb\001\u0283\u01cd\u01cb\u0259\u01cb\001\u01cb\001" + "\u025a\u01cd\u01cb\u01ca\u01cb\001\u01cb\001\u01cc\u01cd\u01cb" + "\u021f\001\u021f\001\001\u0220\u021f" }); /** Return parse table */ protected com.github.jhoenicke.javacup.runtime.ParseTable parse_table() { return CUP$parse_table; } /** Instance of action encapsulation class. */ protected Action$ action_obj; /** Action encapsulation object initializer. */ protected void init_actions() { action_obj = new Action$(this); } /** Invoke a user supplied parse action. */ public com.github.jhoenicke.javacup.runtime.Symbol do_action( int act_num, java.util.ArrayList stack) throws java.lang.Exception { /* call code in generated class */ return action_obj.CUP$do_action(act_num, stack); } /** Scan to get the next Symbol. */ public com.github.jhoenicke.javacup.runtime.Symbol scan() throws java.lang.Exception { return getScanner().next_token(); } /** The ILogger instance. */ protected ILogger mILogger; /** Holds an ACSL node. */ private ACSLNode acslNode; /** Offset to be added to the line numbers. */ private int lineNumberOffset; /** Offset to be added to the column numbers on the first line (to account the removed comment delimiter). */ private int columnNumberOffset; /** List of expressions. */ public LinkedList expressionList = new LinkedList(); /** Binary expressions operator list. */ public LinkedList opList = new LinkedList(); /** Temporary loop annotation. */ public LoopAnnot tempLoopAnnot; /** * Constructor. * * @param s the Scanner object. * @param sf the SymbolFactory object. * @param ILogger the ILogger object to be used. */ public Parser(com.github.jhoenicke.javacup.runtime.Scanner s, com.github.jhoenicke.javacup.runtime.SymbolFactory sf, ILogger ILogger) { this(s, sf); mILogger = ILogger; } /** * Getter for ACSL node. * * @return the ACSL node. */ public ACSLNode getAcslNode() { return this.acslNode; } /** * Setter for the ACSL node. * * @param value the ACSL node to set. */ public void setAcslNode(ACSLNode value) { this.acslNode = value; } /** * Getter for the current line number offset. * * @return the current line number offset. */ public int getLineNumberOffset() { return this.lineNumberOffset; } /** * Setter for the line number offset. * * @param value the line number offset to set. */ public void setLineNumberOffset(int value) { this.lineNumberOffset = value; } /** * Getter for the column number offset. * * @return the current column number offset. */ public int getColumnNumberOffset() { return this.columnNumberOffset; } /** * Setter for the column number offset. * * @param value the column number offset to set. */ public void setColumnNumberOffset(int value) { this.columnNumberOffset = value; } /** * Parse a specific comment. * * @param input the input string to be parsed * @param lineOffset the line number offset. * @param columnOffset the column number offset. * @return the parsed comment in an ACSLNode * @throws Exception Well yeah - care for it ... */ public static ACSLNode parseComment(String input, int lineOffset, int columnOffset) throws Exception { java.io.InputStream instream = new java.io.ByteArrayInputStream(input.getBytes()); ComplexSymbolFactory sf = new ComplexSymbolFactory(); Scanner scanner = new Scanner(instream, sf); Parser parser = new Parser(scanner, sf); parser.setLineNumberOffset(lineOffset); parser.setColumnNumberOffset(columnOffset); parser.parse(); return parser.getAcslNode(); } /** * Parse a specific comment. * * @param input the input string to be parsed * @param lineOffset the line number offset. * @param columnOffset the column number offset. * @param ILogger the ILogger object to be used. * @return the parsed comment in an ACSLNode * @throws Exception Well yeah - care for it ... */ public static ACSLNode parseComment(String input, int lineOffset, int columnOffset, ILogger ILogger) throws Exception { java.io.InputStream instream = new java.io.ByteArrayInputStream(input.getBytes()); ComplexSymbolFactory sf = new ComplexSymbolFactory(); Scanner scanner = new Scanner(instream, sf); Parser parser = new Parser(scanner, sf, ILogger); parser.setLineNumberOffset(lineOffset); parser.setColumnNumberOffset(columnOffset); parser.parse(); return parser.getAcslNode(); } /** * Main method. * * @param args the program parameters * @throws Exception Well yeah - care for it ... */ public static void main(String args[]) throws Exception { ComplexSymbolFactory sf = new ComplexSymbolFactory(); java.io.FileInputStream fio = new java.io.FileInputStream("test.txt"); Scanner scanner = new Scanner(fio, sf); Parser parser = new Parser(scanner, sf); parser.parse(); } @Override public void unrecovered_syntax_error(Symbol sym) throws Exception { Assertion a = new Assertion(null); if (sym.sym != 1 /*EOF*/) { final ComplexSymbol csym = (ComplexSymbol) sym; a.setLocation(createAdjustedLocation(csym.getLeft().getLine(), csym.getLeft().getColumn(), csym.getRight().getLine(), csym.getRight().getColumn())); } else { a.setLocation(createAdjustedLocation(0, 0, 0, 0)); } report_fatal_error("Syntax Error: " + sym.toString(), a); } @Override public void report_fatal_error(String message, Object info) throws java.lang.Exception { if (info instanceof ACSLNode) { throw new ACSLSyntaxErrorException((ACSLNode)info, message); } else { throw new RuntimeException(message); } } public ACSLSourceLocation createAdjustedLocation(int sline, int scolumn, int eline, int ecolumn) { return new ACSLSourceLocation(sline + getLineNumberOffset(), scolumn + (sline == 0 ? getColumnNumberOffset() : 0), eline + getLineNumberOffset(), ecolumn + (eline == 0 ? getColumnNumberOffset() : 0)); } /** Cup generated class to encapsulate user supplied action code.*/ static class Action$ { public T setNodeLocationFromSymbols(T node, Symbol sBegin, Symbol sEnd) { final ComplexSymbol left = (ComplexSymbol) sBegin; final ComplexSymbol right = (ComplexSymbol) sEnd; node.setLocation(parser.createAdjustedLocation(left.getLeft().getLine(), left.getLeft().getColumn(), right.getRight().getLine(), right.getRight().getColumn())); return node; } public T setNodeLocationFromSymbols(T node, Symbol sym) { return setNodeLocationFromSymbols(node, sym, sym); } public T setNodeLocationFromNodes(T node, ACSLNode nBegin, ACSLNode nEnd) { node.setLocation(new ACSLSourceLocation(nBegin.getLocation().getStartLine(), nBegin.getLocation().getStartColumn(), nEnd.getLocation().getEndLine(), nEnd.getLocation().getEndColumn())); return node; } private final Parser parser; /** Constructor */ Action$(Parser parser) { this.parser = parser; } /** Method with the actual generated action code. */ @SuppressWarnings({ "unused", "unchecked" }) public final com.github.jhoenicke.javacup.runtime.Symbol CUP$do_action( int CUP$act_num, java.util.ArrayList CUP$stack) throws java.lang.Exception { /* Stack size for peeking into the stack */ int CUP$size = CUP$stack.size(); /* select the action based on the action number */ switch (CUP$act_num) { // $START ::= start_grammar EOF case 0: { Object RESULT; RESULT = null; /* ACCEPT */ parser.done_parsing(); return parser.getSymbolFactory().newSymbol("$START", 0, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1), RESULT); } // start_grammar ::= LSTART local case 1: { if(parser.mILogger!=null){ parser.mILogger.debug("Start Parsing Local"); } else { System.out.println("Start Parsing Local"); } return parser.getSymbolFactory().newSymbol("start_grammar", 114, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // start_grammar ::= GSTART global case 2: { if(parser.mILogger!=null){ parser.mILogger.debug("Start Parsing Global"); } else { System.out.println("Start Parsing Global"); } return parser.getSymbolFactory().newSymbol("start_grammar", 114, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // lexpr_list ::= case 3: { com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("lexpr_list", 66, CUP$sym, CUP$sym); } // ne_lexpr_list ::= lexpr case 4: { Expression[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; RESULT = new Expression[] {expr}; return parser.getSymbolFactory().newSymbol("ne_lexpr_list", 25, expr$, expr$, RESULT); } // ne_lexpr_list ::= lexpr COMMA ne_lexpr_list case 5: { Expression[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol exprList$ = CUP$stack.get(CUP$size - 1); Expression[] exprList = (Expression[]) exprList$.value; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 3); Expression expr = (Expression) expr$.value; ArrayList tempList = new ArrayList(); tempList.add(expr); for (Expression ex : exprList) { tempList.add(ex); } RESULT = tempList.toArray(new Expression[1]); return parser.getSymbolFactory().newSymbol("ne_lexpr_list", 25, expr$, exprList$, RESULT); } // lexpr_option ::= case 6: { com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("lexpr_option", 67, CUP$sym, CUP$sym); } // lexpr ::= lexpr IMPLIES lexpr case 7: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICIMPLIES, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr IFF lexpr case 8: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICIFF, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr OR lexpr case 9: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICOR, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr AND lexpr case 10: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICAND, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr HATHAT lexpr case 11: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICXOR, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr AMP lexpr case 12: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITAND, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr PIPE lexpr case 13: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITOR, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr HAT lexpr case 14: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITXOR, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr BIMPLIES lexpr case 15: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITIMPLIES, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr BIFF lexpr case 16: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITIFF, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e2$, RESULT); } // lexpr ::= lexpr QUESTION lexpr COLON lexpr case 17: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e3$ = CUP$stack.get(CUP$size - 1); Expression e3 = (Expression) e3$.value; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 3); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 5); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new IfThenElseExpression(e1, e2, e3), e1$, e3$); return parser.getSymbolFactory().newSymbol("lexpr", 7, e1$, e3$, RESULT); } // lexpr ::= any_identifier COLON2 lexpr case 18: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 3); String id = (String) id$.value; RESULT = setNodeLocationFromSymbols(new SyntacticNamingExpression(id, expr), id$, expr$); return parser.getSymbolFactory().newSymbol("lexpr", 7, id$, expr$, RESULT); } // lexpr ::= lexpr_rel case 19: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; RESULT = expr; return parser.getSymbolFactory().newSymbol("lexpr", 7, expr$, expr$, RESULT); } // ltlexpr ::= GLOBALLY ltlexpr case 20: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LTLGLOBALLY, e), op$, e$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, op$, e$, RESULT); } // ltlexpr ::= FINALLY ltlexpr case 21: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LTLFINALLY, e), op$, e$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, op$, e$, RESULT); } // ltlexpr ::= NEXT ltlexpr case 22: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LTLNEXT, e), op$, e$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, op$, e$, RESULT); } // ltlexpr ::= NOT ltlexpr case 23: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LOGICNEG, e), op$, e$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, op$, e$, RESULT); } // ltlexpr ::= ltlexpr UNTIL ltlexpr case 24: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LTLUNTIL, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr WEAKUNTIL ltlexpr case 25: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LTLWEAKUNTIL, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr RELEASE ltlexpr case 26: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LTLRELEASE, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr IMPLIES ltlexpr case 27: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICIMPLIES, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr IFF ltlexpr case 28: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICIFF, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr OR ltlexpr case 29: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICOR, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= ltlexpr AND ltlexpr case 30: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.LOGICAND, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("ltlexpr", 13, e1$, e2$, RESULT); } // ltlexpr ::= AP LPAR lexpr RPAR case 31: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; RESULT = e; return parser.getSymbolFactory().newSymbol("ltlexpr", 13, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1), RESULT); } // ltlexpr ::= LPAR ltlexpr RPAR case 32: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; RESULT = e; return parser.getSymbolFactory().newSymbol("ltlexpr", 13, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1), RESULT); } // lexpr_rel ::= lexpr_end_rel case 33: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; RESULT = expr; return parser.getSymbolFactory().newSymbol("lexpr_rel", 9, expr$, expr$, RESULT); } // lexpr_rel ::= lexpr_inner rel_list case 34: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol exprRel$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; Expression tempExpr = null; if (parser.expressionList.size() >= 2) { while(!parser.expressionList.isEmpty()) { if (tempExpr==null) { Expression right = parser.expressionList.poll(); Expression left = parser.expressionList.poll(); tempExpr = setNodeLocationFromNodes(new BinaryExpression(parser.opList.poll(), left, right), left, right); } else { Expression right = parser.expressionList.poll(); Expression left = tempExpr; tempExpr = setNodeLocationFromNodes(new BinaryExpression(parser.opList.poll(), left, right), left, right); } } RESULT = setNodeLocationFromNodes(new BinaryExpression(parser.opList.poll(), expr, tempExpr), expr, tempExpr); } else { tempExpr = parser.expressionList.poll(); RESULT = setNodeLocationFromNodes(new BinaryExpression(parser.opList.poll(), expr, tempExpr), expr, tempExpr); } return parser.getSymbolFactory().newSymbol("lexpr_rel", 9, expr$, exprRel$, RESULT); } // lexpr_binder ::= LET bounded_var EQUAL lexpr SEMICOLON lexpr case 35: { return parser.getSymbolFactory().newSymbol("lexpr_binder", 69, CUP$stack.get(CUP$size - 6), CUP$stack.get(CUP$size - 1)); } // lexpr_binder ::= FORALL binders SEMICOLON lexpr // lexpr_binder ::= EXISTS binders SEMICOLON lexpr // lexpr_binder ::= LAMBDA binders SEMICOLON lexpr case 36: { return parser.getSymbolFactory().newSymbol("lexpr_binder", 69, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1)); } // lexpr_end_rel ::= lexpr_inner case 37: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; RESULT = expr; return parser.getSymbolFactory().newSymbol("lexpr_end_rel", 10, expr$, expr$, RESULT); } // lexpr_end_rel ::= lexpr_binder case 38: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e$); return parser.getSymbolFactory().newSymbol("lexpr_end_rel", 10, e$, e$, RESULT); } // lexpr_end_rel ::= NOT lexpr_binder case 39: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_end_rel", 10, op$, e$, RESULT); } // rel_list ::= relation lexpr_end_rel case 40: { com.github.jhoenicke.javacup.runtime.Symbol endRel$ = CUP$stack.get(CUP$size - 1); Expression endRel = (Expression) endRel$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); BinaryExpression.Operator op = (BinaryExpression.Operator) op$.value; parser.expressionList.add(endRel); parser.opList.add(op); return parser.getSymbolFactory().newSymbol("rel_list", 68, op$, endRel$); } // rel_list ::= relation lexpr_inner rel_list case 41: { com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 3); BinaryExpression.Operator op = (BinaryExpression.Operator) op$.value; parser.expressionList.add(expr); parser.opList.add(op); return parser.getSymbolFactory().newSymbol("rel_list", 68, op$, CUP$stack.get(CUP$size - 1)); } // relation ::= LT case 42: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPLT; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // relation ::= GT case 43: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPGT; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // relation ::= LE case 44: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPLEQ; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // relation ::= GE case 45: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPGEQ; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // relation ::= EQ // relation ::= EQUAL case 46: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPEQ; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // relation ::= NE case 47: { BinaryExpression.Operator RESULT; RESULT = BinaryExpression.Operator.COMPNEQ; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("relation", 21, CUP$sym, CUP$sym, RESULT); } // lexpr_inner ::= string case 48: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); String s = (String) s$.value; RESULT = setNodeLocationFromSymbols(new StringLiteral(s), s$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, s$, s$, RESULT); } // lexpr_inner ::= NOT lexpr_inner case 49: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LOGICNEG, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= TRUE case 50: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new BooleanLiteral(true), e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, e$, RESULT); } // lexpr_inner ::= FALSE case 51: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new BooleanLiteral(false), e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, e$, RESULT); } // lexpr_inner ::= VALID LPAR lexpr RPAR case 52: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new ValidExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= FREEABLE LPAR lexpr RPAR case 53: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new FreeableExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= MALLOCABLE LPAR lexpr RPAR case 54: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new MallocableExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= VALID_INDEX LPAR lexpr COMMA lexpr RPAR case 55: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 2); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 4); Expression e1 = (Expression) e1$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= VALID_RANGE LPAR lexpr COMMA lexpr COMMA lexpr RPAR case 56: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 6); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 8); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= INITIALIZED LPAR lexpr RPAR // lexpr_inner ::= FRESH LPAR lexpr RPAR // lexpr_inner ::= TYPEOF LPAR lexpr RPAR case 57: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= NULL case 58: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new NullPointer(), e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, e$, RESULT); } // lexpr_inner ::= constant case 59: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 1); Expression expr = (Expression) expr$.value; RESULT = expr; return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, expr$, expr$, RESULT); } // lexpr_inner ::= lexpr_inner PLUS lexpr_inner case 60: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.ARITHPLUS, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner MINUS lexpr_inner case 61: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.ARITHMINUS, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner STAR lexpr_inner case 62: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.ARITHMUL, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner SLASH lexpr_inner case 63: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.ARITHDIV, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner PERCENT lexpr_inner case 64: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.ARITHMOD, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner ARROW identifier_or_typename case 65: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 3); Expression e = (Expression) e$.value; RESULT = setNodeLocationFromSymbols(new FieldAccessExpression(new UnaryExpression(UnaryExpression.Operator.POINTER, e), i), e$, i$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, i$, RESULT); } // lexpr_inner ::= lexpr_inner DOT identifier_or_typename case 66: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 3); Expression e = (Expression) e$.value; RESULT = setNodeLocationFromSymbols(new FieldAccessExpression(e, i), e$, i$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, i$, RESULT); } // lexpr_inner ::= lexpr_inner LSQUARE range RSQUARE case 67: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); Expression l = (Expression) l$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= lexpr_inner LSQUARE lexpr RSQUARE case 68: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol indices$ = CUP$stack.get(CUP$size - 2); Expression indices = (Expression) indices$.value; com.github.jhoenicke.javacup.runtime.Symbol array$ = CUP$stack.get(CUP$size - 4); Expression array = (Expression) array$.value; RESULT = setNodeLocationFromSymbols(new ArrayAccessExpression(array, new Expression[] {indices}), array$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, array$, r$, RESULT); } // lexpr_inner ::= MINUS lexpr_inner case 69: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.MINUS, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= PLUS lexpr_inner case 70: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.PLUS, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= TILDE lexpr_inner case 71: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.LOGICCOMPLEMENT, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= STAR lexpr_inner case 72: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); String op = (String) op$.value; RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.POINTER, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= AMP lexpr_inner case 73: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol op$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new UnaryExpression(UnaryExpression.Operator.ADDROF, e), op$, e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, op$, e$, RESULT); } // lexpr_inner ::= SIZEOF LPAR lexpr RPAR case 74: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); SizeOfExpression sexpr = setNodeLocationFromSymbols(new SizeOfExpression(), l$, r$); sexpr.setFormula(expr); RESULT = sexpr; return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= SIZEOF LPAR logic_type RPAR case 75: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol lt$ = CUP$stack.get(CUP$size - 2); String lt = (String) lt$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); SizeOfExpression sexpr = setNodeLocationFromSymbols(new SizeOfExpression(), l$, r$); sexpr.setLogicType(new ACSLType(lt)); RESULT = sexpr; return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= OLD LPAR lexpr RPAR case 76: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new OldValueExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= AT LPAR lexpr COMMA label_name RPAR case 77: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol label$ = CUP$stack.get(CUP$size - 2); String label = (String) label$.value; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 4); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new AtLabelExpression(expr, label), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= BASE_ADDR LPAR lexpr RPAR case 78: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new BaseAddrExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= BLOCK_LENGTH LPAR lexpr RPAR case 79: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new BlockLengthExpression(expr), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= RESULT case 80: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new ACSLResultExpression(), e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, e$, RESULT); } // lexpr_inner ::= SEPARATED LPAR ne_lexpr_list RPAR case 81: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression[] e = (Expression[]) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= identifier LPAR ne_lexpr_list RPAR case 82: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 2); Expression[] e2 = (Expression[]) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 4); String e1 = (String) e1$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e1$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, r$, RESULT); } // lexpr_inner ::= identifier LBRACE ne_tvar_list RBRACE LPAR ne_lexpr_list RPAR case 83: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e3$ = CUP$stack.get(CUP$size - 2); Expression[] e3 = (Expression[]) e3$.value; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 5); List e2 = (List) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 7); String e1 = (String) e1$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e1$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, r$, RESULT); } // lexpr_inner ::= identifier LBRACE ne_tvar_list RBRACE case 84: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 2); List e2 = (List) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 4); String e1 = (String) e1$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e1$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, r$, RESULT); } // lexpr_inner ::= identifier case 85: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol ident$ = CUP$stack.get(CUP$size - 1); String ident = (String) ident$.value; RESULT = setNodeLocationFromSymbols(new IdentifierExpression(ident), ident$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, ident$, ident$, RESULT); } // lexpr_inner ::= lexpr_inner GTGT lexpr_inner case 86: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITSHIFTRIGHT, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner LTLT lexpr_inner case 87: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new BinaryExpression(BinaryExpression.Operator.BITSHIFTLEFT, e1, e2), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= LPAR lexpr RPAR case 88: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); RESULT = e; return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= LPAR range RPAR // lexpr_inner ::= LBRACE field_init RBRACE // lexpr_inner ::= LBRACE array_init RBRACE case 89: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= LPAR cast_logic_type RPAR lexpr_inner case 90: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); ACSLType e1 = (ACSLType) e1$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new CastExpression(e1, e2), l$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner LTCOLON lexpr_inner // lexpr_inner ::= lexpr_inner COLONGT lexpr_inner case 91: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); Expression e2 = (Expression) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= lexpr_inner COLONGT logic_type case 92: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 1); String e2 = (String) e2$.value; com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 3); Expression e1 = (Expression) e1$.value; RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e1$, e2$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e1$, e2$, RESULT); } // lexpr_inner ::= BSTYPE LPAR type_spec STAR RPAR case 93: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 3); String e = (String) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= EMPTY case 94: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 1); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), e$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, e$, e$, RESULT); } // lexpr_inner ::= BSUNION LPAR lexpr_list RPAR // lexpr_inner ::= INTER LPAR lexpr_list RPAR case 95: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= LBRACE lexpr RBRACE case 96: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= LBRACE lexpr PIPE binders RBRACE // lexpr_inner ::= LBRACE lexpr WITH update RBRACE case 97: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 4); Expression e1 = (Expression) e1$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // lexpr_inner ::= LBRACE lexpr PIPE binders SEMICOLON lexpr RBRACE case 98: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e3$ = CUP$stack.get(CUP$size - 2); Expression e3 = (Expression) e3$.value; com.github.jhoenicke.javacup.runtime.Symbol e2$ = CUP$stack.get(CUP$size - 4); com.github.jhoenicke.javacup.runtime.Symbol e1$ = CUP$stack.get(CUP$size - 6); Expression e1 = (Expression) e1$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 7); RESULT = setNodeLocationFromSymbols(new NotDefinedExpression(), l$, r$); return parser.getSymbolFactory().newSymbol("lexpr_inner", 8, l$, r$, RESULT); } // string ::= STRING_LITERAL case 99: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); String s = (String) s$.value; RESULT = s; return parser.getSymbolFactory().newSymbol("string", 2, s$, s$, RESULT); } // string ::= string STRING_LITERAL case 100: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol s2$ = CUP$stack.get(CUP$size - 1); String s2 = (String) s2$.value; com.github.jhoenicke.javacup.runtime.Symbol s1$ = CUP$stack.get(CUP$size - 2); String s1 = (String) s1$.value; RESULT = s1 + s2; return parser.getSymbolFactory().newSymbol("string", 2, s1$, s2$, RESULT); } // range ::= lexpr_option DOTDOT lexpr_option case 101: { return parser.getSymbolFactory().newSymbol("range", 72, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // field_path_elt ::= DOT identifier_or_typename case 102: { return parser.getSymbolFactory().newSymbol("field_path_elt", 76, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // field_init_elt ::= field_path_elt EQUAL lexpr case 103: { return parser.getSymbolFactory().newSymbol("field_init_elt", 77, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // field_init ::= field_init_elt COMMA field_init case 104: { return parser.getSymbolFactory().newSymbol("field_init", 73, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // array_path_elt ::= LSQUARE lexpr RSQUARE // array_path_elt ::= LSQUARE range RSQUARE case 105: { return parser.getSymbolFactory().newSymbol("array_path_elt", 78, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // array_init_elt ::= array_path_elt EQUAL lexpr case 106: { return parser.getSymbolFactory().newSymbol("array_init_elt", 79, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // array_init ::= array_init_elt COMMA array_init case 107: { return parser.getSymbolFactory().newSymbol("array_init", 74, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // update ::= update_elt COMMA update case 108: { return parser.getSymbolFactory().newSymbol("update", 75, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // update_elt ::= path EQUAL lexpr case 109: { return parser.getSymbolFactory().newSymbol("update_elt", 80, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // update_elt ::= path EQUAL LBRACE WITH update RBRACE case 110: { return parser.getSymbolFactory().newSymbol("update_elt", 80, CUP$stack.get(CUP$size - 6), CUP$stack.get(CUP$size - 1)); } // path ::= path_elt path case 111: { return parser.getSymbolFactory().newSymbol("path", 81, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // binders_reentrance ::= binders_reentrance COMMA decl_spec // binders_reentrance ::= binders_reentrance COMMA var_spec case 112: { return parser.getSymbolFactory().newSymbol("binders_reentrance", 83, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // decl_spec ::= type_spec var_spec case 113: { return parser.getSymbolFactory().newSymbol("decl_spec", 84, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // var_spec ::= var_spec_bis case 114: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 1); StringBuffer var = (StringBuffer) var$.value; RESULT = var.toString(); return parser.getSymbolFactory().newSymbol("var_spec", 49, var$, var$, RESULT); } // var_spec ::= stars var_spec_bis case 115: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 1); StringBuffer var = (StringBuffer) var$.value; com.github.jhoenicke.javacup.runtime.Symbol st$ = CUP$stack.get(CUP$size - 2); StringBuffer st = (StringBuffer) st$.value; RESULT = st.toString() + var.toString(); return parser.getSymbolFactory().newSymbol("var_spec", 49, st$, var$, RESULT); } // constant ::= CONSTANT // constant ::= CONSTANT10 case 116: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol value$ = CUP$stack.get(CUP$size - 1); String value = (String) value$.value; RESULT = setNodeLocationFromSymbols(new IntegerLiteral(value), value$); return parser.getSymbolFactory().newSymbol("constant", 11, value$, value$, RESULT); } // constant ::= CONSTANT_FLOAT case 117: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol value$ = CUP$stack.get(CUP$size - 1); String value = (String) value$.value; RESULT = setNodeLocationFromSymbols(new RealLiteral(value), value$); return parser.getSymbolFactory().newSymbol("constant", 11, value$, value$, RESULT); } // constant_option ::= constant case 118: { Expression RESULT; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 1); Expression c = (Expression) c$.value; RESULT = c; return parser.getSymbolFactory().newSymbol("constant_option", 12, c$, c$, RESULT); } // constant_option ::= case 119: { Expression RESULT; RESULT = null; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("constant_option", 12, CUP$sym, CUP$sym, RESULT); } // var_spec_bis ::= identifier case 120: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 1); String id = (String) id$.value; StringBuffer sb = new StringBuffer(); sb.append(id); RESULT = sb; return parser.getSymbolFactory().newSymbol("var_spec_bis", 45, id$, id$, RESULT); } // var_spec_bis ::= var_spec_bis LSQUARE constant_option RSQUARE case 121: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol constopt$ = CUP$stack.get(CUP$size - 2); Expression constopt = (Expression) constopt$.value; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 4); StringBuffer var = (StringBuffer) var$.value; StringBuffer sb = new StringBuffer(); sb.append(var); sb.append("["); if (constopt != null) { if (constopt instanceof IntegerLiteral) { sb.append(((IntegerLiteral)constopt).getValue()); } else if (constopt instanceof RealLiteral) { sb.append(((RealLiteral)constopt).getValue()); } } sb.append("]"); RESULT = sb; return parser.getSymbolFactory().newSymbol("var_spec_bis", 45, var$, CUP$stack.get(CUP$size - 1), RESULT); } // var_spec_bis ::= LPAR var_spec RPAR case 122: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 2); String var = (String) var$.value; RESULT = new StringBuffer("(" + var + ")"); return parser.getSymbolFactory().newSymbol("var_spec_bis", 45, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1), RESULT); } // var_spec_bis ::= var_spec_bis LPAR abs_param_list RPAR case 123: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol abs$ = CUP$stack.get(CUP$size - 2); StringBuffer abs = (StringBuffer) abs$.value; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 4); StringBuffer var = (StringBuffer) var$.value; StringBuffer sb = new StringBuffer(); sb.append(var); sb.append("("); sb.append(abs); sb.append(")"); RESULT = sb; return parser.getSymbolFactory().newSymbol("var_spec_bis", 45, var$, CUP$stack.get(CUP$size - 1), RESULT); } // abs_param_list ::= logic_type case 124: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol lt$ = CUP$stack.get(CUP$size - 1); String lt = (String) lt$.value; RESULT = new StringBuffer(lt); return parser.getSymbolFactory().newSymbol("abs_param_list", 46, lt$, lt$, RESULT); } // abs_param_list ::= abs_param_list COMMA logic_type case 125: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol lt$ = CUP$stack.get(CUP$size - 1); String lt = (String) lt$.value; com.github.jhoenicke.javacup.runtime.Symbol abs$ = CUP$stack.get(CUP$size - 3); StringBuffer abs = (StringBuffer) abs$.value; StringBuffer sb = new StringBuffer(); sb.append(abs); sb.append(","); sb.append(lt); RESULT = sb; return parser.getSymbolFactory().newSymbol("abs_param_list", 46, abs$, lt$, RESULT); } // ne_parameters ::= parameter case 126: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 1); Parameter param = (Parameter) param$.value; RESULT = new ArrayList(); RESULT.add(param); return parser.getSymbolFactory().newSymbol("ne_parameters", 56, param$, param$, RESULT); } // ne_parameters ::= parameter COMMA ne_parameters case 127: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 1); List list = (List) list$.value; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 3); Parameter param = (Parameter) param$.value; ArrayList paramList = new ArrayList(); paramList.add(param); paramList.addAll(list); RESULT = paramList; return parser.getSymbolFactory().newSymbol("ne_parameters", 56, param$, list$, RESULT); } // parameter ::= type_spec var_spec case 128: { Parameter RESULT; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 1); String var = (String) var$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 2); String t = (String) t$.value; ACSLType type = new ACSLType(t); RESULT = setNodeLocationFromSymbols(new Parameter(type, var), t$, var$); return parser.getSymbolFactory().newSymbol("parameter", 53, t$, var$, RESULT); } // parameter ::= identifier var_spec case 129: { Parameter RESULT; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 1); String var = (String) var$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 2); String i = (String) i$.value; ACSLType type = new ACSLType(i); RESULT = setNodeLocationFromSymbols(new Parameter(type, var), i$, var$); return parser.getSymbolFactory().newSymbol("parameter", 53, i$, var$, RESULT); } // logic_type ::= type_spec abs_spec_option case 130: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol type$ = CUP$stack.get(CUP$size - 2); String type = (String) type$.value; RESULT = type; return parser.getSymbolFactory().newSymbol("logic_type", 48, type$, CUP$stack.get(CUP$size - 1), RESULT); } // type_spec_cv ::= type_spec case 131: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 1); String t = (String) t$.value; RESULT = setNodeLocationFromSymbols(new ACSLType(t), t$); return parser.getSymbolFactory().newSymbol("type_spec_cv", 64, t$, t$, RESULT); } // type_spec_cv ::= CONST type_spec case 132: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 1); String t = (String) t$.value; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 2); RESULT = setNodeLocationFromSymbols(new ACSLType(t), c$, t$); return parser.getSymbolFactory().newSymbol("type_spec_cv", 64, c$, t$, RESULT); } // type_spec_cv ::= type_spec CONST case 133: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 2); String t = (String) t$.value; RESULT = setNodeLocationFromSymbols(new ACSLType(t), t$, c$); return parser.getSymbolFactory().newSymbol("type_spec_cv", 64, t$, c$, RESULT); } // cast_logic_type ::= type_spec_cv abs_spec_option case 134: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol tcs$ = CUP$stack.get(CUP$size - 2); ACSLType tcs = (ACSLType) tcs$.value; RESULT = tcs; return parser.getSymbolFactory().newSymbol("cast_logic_type", 65, tcs$, CUP$stack.get(CUP$size - 1), RESULT); } // cast_logic_type ::= type_spec_cv abs_spec CONST case 135: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol tcs$ = CUP$stack.get(CUP$size - 3); ACSLType tcs = (ACSLType) tcs$.value; RESULT = tcs; return parser.getSymbolFactory().newSymbol("cast_logic_type", 65, tcs$, CUP$stack.get(CUP$size - 1), RESULT); } // logic_rt_type ::= identifier case 136: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 1); String id = (String) id$.value; RESULT = setNodeLocationFromSymbols(new ACSLType(id), id$); return parser.getSymbolFactory().newSymbol("logic_rt_type", 55, id$, id$, RESULT); } // logic_rt_type ::= logic_type case 137: { ACSLType RESULT; com.github.jhoenicke.javacup.runtime.Symbol type$ = CUP$stack.get(CUP$size - 1); String type = (String) type$.value; RESULT = setNodeLocationFromSymbols(new ACSLType(type), type$); return parser.getSymbolFactory().newSymbol("logic_rt_type", 55, type$, type$, RESULT); } // abs_spec_option ::= case 138: { com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("abs_spec_option", 85, CUP$sym, CUP$sym); } // abs_spec ::= stars tabs // abs_spec ::= stars abs_spec_bis // abs_spec ::= abs_spec_bis tabs case 139: { return parser.getSymbolFactory().newSymbol("abs_spec", 86, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // abs_spec ::= stars abs_spec_bis tabs case 140: { return parser.getSymbolFactory().newSymbol("abs_spec", 86, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // abs_spec_bis ::= LPAR abs_spec RPAR case 141: { return parser.getSymbolFactory().newSymbol("abs_spec_bis", 88, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // abs_spec_bis ::= abs_spec_bis LPAR abs_param_list RPAR case 142: { return parser.getSymbolFactory().newSymbol("abs_spec_bis", 88, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1)); } // stars ::= STAR case 143: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol star$ = CUP$stack.get(CUP$size - 1); String star = (String) star$.value; RESULT = new StringBuffer("*"); return parser.getSymbolFactory().newSymbol("stars", 47, star$, star$, RESULT); } // stars ::= stars STAR case 144: { StringBuffer RESULT; com.github.jhoenicke.javacup.runtime.Symbol star$ = CUP$stack.get(CUP$size - 1); String star = (String) star$.value; com.github.jhoenicke.javacup.runtime.Symbol st$ = CUP$stack.get(CUP$size - 2); StringBuffer st = (StringBuffer) st$.value; StringBuffer sb = new StringBuffer(); sb.append(st); sb.append("*"); RESULT = sb; return parser.getSymbolFactory().newSymbol("stars", 47, st$, star$, RESULT); } // tabs ::= LSQUARE constant_option RSQUARE case 145: { return parser.getSymbolFactory().newSymbol("tabs", 87, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // tabs ::= LSQUARE constant_option RSQUARE tabs case 146: { return parser.getSymbolFactory().newSymbol("tabs", 87, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1)); } // type_spec ::= INTEGER // type_spec ::= INT // type_spec ::= INT128 case 147: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; RESULT = i; return parser.getSymbolFactory().newSymbol("type_spec", 6, i$, i$, RESULT); } // type_spec ::= REAL case 148: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); String r = (String) r$.value; RESULT = r; return parser.getSymbolFactory().newSymbol("type_spec", 6, r$, r$, RESULT); } // type_spec ::= BOOLEAN // type_spec ::= BOOL case 149: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol b$ = CUP$stack.get(CUP$size - 1); String b = (String) b$.value; RESULT = b; return parser.getSymbolFactory().newSymbol("type_spec", 6, b$, b$, RESULT); } // type_spec ::= VOID case 150: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol v$ = CUP$stack.get(CUP$size - 1); String v = (String) v$.value; RESULT = v; return parser.getSymbolFactory().newSymbol("type_spec", 6, v$, v$, RESULT); } // type_spec ::= CHAR case 151: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 1); String c = (String) c$.value; RESULT = c; return parser.getSymbolFactory().newSymbol("type_spec", 6, c$, c$, RESULT); } // type_spec ::= SIGNED CHAR case 152: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 1); String c = (String) c$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); String s = (String) s$.value; RESULT = s + " " + c; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, c$, RESULT); } // type_spec ::= UNSIGNED CHAR case 153: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol c$ = CUP$stack.get(CUP$size - 1); String c = (String) c$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 2); String u = (String) u$.value; RESULT = u + " " + c; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, c$, RESULT); } // type_spec ::= UNSIGNED INT128 // type_spec ::= UNSIGNED INT // type_spec ::= UNION identifier case 154: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 2); String u = (String) u$.value; RESULT = u + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, i$, RESULT); } // type_spec ::= SIGNED INT // type_spec ::= STRUCT identifier case 155: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); String s = (String) s$.value; RESULT = s + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, i$, RESULT); } // type_spec ::= UNSIGNED case 156: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 1); String u = (String) u$.value; RESULT = u; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, u$, RESULT); } // type_spec ::= SHORT case 157: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); String s = (String) s$.value; RESULT = s; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, s$, RESULT); } // type_spec ::= SIGNED SHORT case 158: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol sh$ = CUP$stack.get(CUP$size - 1); String sh = (String) sh$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); String s = (String) s$.value; RESULT = s + " " + sh; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, sh$, RESULT); } // type_spec ::= UNSIGNED SHORT case 159: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); String s = (String) s$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 2); String u = (String) u$.value; RESULT = u + " " + s; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, s$, RESULT); } // type_spec ::= LONG case 160: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 1); String l = (String) l$.value; RESULT = l; return parser.getSymbolFactory().newSymbol("type_spec", 6, l$, l$, RESULT); } // type_spec ::= SIGNED LONG case 161: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 1); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); String s = (String) s$.value; RESULT = s + " " + l; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, l$, RESULT); } // type_spec ::= UNSIGNED LONG case 162: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 1); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 2); String u = (String) u$.value; RESULT = u + " " + l; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, l$, RESULT); } // type_spec ::= SIGNED LONG INT case 163: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 3); String s = (String) s$.value; RESULT = s + " " + l + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, i$, RESULT); } // type_spec ::= LONG INT case 164: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; RESULT = l + " "+ i; return parser.getSymbolFactory().newSymbol("type_spec", 6, l$, i$, RESULT); } // type_spec ::= UNSIGNED LONG INT case 165: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 3); String u = (String) u$.value; RESULT = u + " " + l + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, i$, RESULT); } // type_spec ::= LONG LONG case 166: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol o$ = CUP$stack.get(CUP$size - 1); String o = (String) o$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; RESULT = l + " " + o; return parser.getSymbolFactory().newSymbol("type_spec", 6, l$, o$, RESULT); } // type_spec ::= SIGNED LONG LONG case 167: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 3); String s = (String) s$.value; RESULT = s + " " + l + " " + l; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, CUP$stack.get(CUP$size - 1), RESULT); } // type_spec ::= UNSIGNED LONG LONG case 168: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 3); String u = (String) u$.value; RESULT = u + " " + l + " " + l; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, CUP$stack.get(CUP$size - 1), RESULT); } // type_spec ::= LONG LONG INT case 169: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); String l = (String) l$.value; RESULT = l + " " + l + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, l$, i$, RESULT); } // type_spec ::= SIGNED LONG LONG INT case 170: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 4); String s = (String) s$.value; RESULT = s + " " + l + " " + l + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, s$, i$, RESULT); } // type_spec ::= UNSIGNED LONG LONG INT case 171: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); String l = (String) l$.value; com.github.jhoenicke.javacup.runtime.Symbol u$ = CUP$stack.get(CUP$size - 4); String u = (String) u$.value; RESULT = u + " " + l + " " + l + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, u$, i$, RESULT); } // type_spec ::= FLOAT case 172: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol f$ = CUP$stack.get(CUP$size - 1); String f = (String) f$.value; RESULT = f; return parser.getSymbolFactory().newSymbol("type_spec", 6, f$, f$, RESULT); } // type_spec ::= DOUBLE case 173: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol d$ = CUP$stack.get(CUP$size - 1); String d = (String) d$.value; RESULT = d; return parser.getSymbolFactory().newSymbol("type_spec", 6, d$, d$, RESULT); } // type_spec ::= LONG DOUBLE case 174: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol d$ = CUP$stack.get(CUP$size - 1); String d = (String) d$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 2); String l = (String) l$.value; RESULT = l + " " + d; return parser.getSymbolFactory().newSymbol("type_spec", 6, l$, d$, RESULT); } // type_spec ::= ENUM identifier case 175: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); String e = (String) e$.value; RESULT = e + " " + i; return parser.getSymbolFactory().newSymbol("type_spec", 6, e$, i$, RESULT); } // type_spec ::= TYPENAME case 176: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 1); String t = (String) t$.value; RESULT = t; return parser.getSymbolFactory().newSymbol("type_spec", 6, t$, t$, RESULT); } // type_spec ::= TYPENAME LT ne_logic_type_list GT case 177: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 4); String t = (String) t$.value; RESULT = t; return parser.getSymbolFactory().newSymbol("type_spec", 6, t$, CUP$stack.get(CUP$size - 1), RESULT); } // ne_logic_type_list ::= logic_type COMMA ne_logic_type_list case 178: { return parser.getSymbolFactory().newSymbol("ne_logic_type_list", 89, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // contract ::= requires terminates decreases simple_clauses behaviors complete_or_disjoint case 179: { Contract RESULT; com.github.jhoenicke.javacup.runtime.Symbol com$ = CUP$stack.get(CUP$size - 1); Completeness com = (Completeness) com$.value; com.github.jhoenicke.javacup.runtime.Symbol be$ = CUP$stack.get(CUP$size - 2); List be = (List) be$.value; com.github.jhoenicke.javacup.runtime.Symbol sim$ = CUP$stack.get(CUP$size - 3); List sim = (List) sim$.value; com.github.jhoenicke.javacup.runtime.Symbol de$ = CUP$stack.get(CUP$size - 4); Decreases de = (Decreases) de$.value; com.github.jhoenicke.javacup.runtime.Symbol term$ = CUP$stack.get(CUP$size - 5); Terminates term = (Terminates) term$.value; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 6); List req = (List) req$.value; ArrayList list = new ArrayList(); list.addAll(req); if (term != null) { list.add(term); } if (de != null) { list.add(de); } list.addAll(sim); // use the first symbol that actually matched as left anchor (req$.xleft is null if no requires are specified) Symbol firstSymbol$ = req$; for (Symbol sym : Arrays.asList(req$, term$, de$, sim$, be$, com$)) { firstSymbol$ = sym; if (((ComplexSymbol)sym).getLeft() != null) { break; } } RESULT = setNodeLocationFromSymbols(new Contract(list.toArray(new ContractStatement[0]), be.toArray(new Behavior[0]), com), firstSymbol$, com$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("contract", 43, req$, com$, RESULT); } // requires ::= ne_requires case 180: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 1); List req = (List) req$.value; RESULT = req; return parser.getSymbolFactory().newSymbol("requires", 29, req$, req$, RESULT); } // requires ::= case 181: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("requires", 29, CUP$sym, CUP$sym, RESULT); } // ne_requires ::= REQUIRES lexpr SEMICOLON requires case 182: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 1); List req = (List) req$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 3); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 4); Requires requires = setNodeLocationFromSymbols(new Requires(expr), r$, s$); req.add(requires); RESULT = req; return parser.getSymbolFactory().newSymbol("ne_requires", 30, r$, req$, RESULT); } // terminates ::= case 183: { Terminates RESULT; RESULT = null; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("terminates", 31, CUP$sym, CUP$sym, RESULT); } // terminates ::= ne_terminates case 184: { Terminates RESULT; com.github.jhoenicke.javacup.runtime.Symbol terminates$ = CUP$stack.get(CUP$size - 1); Terminates terminates = (Terminates) terminates$.value; RESULT = terminates; return parser.getSymbolFactory().newSymbol("terminates", 31, terminates$, terminates$, RESULT); } // ne_terminates ::= TERMINATES lexpr SEMICOLON case 185: { Terminates RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new Terminates(expr), l$, r$); return parser.getSymbolFactory().newSymbol("ne_terminates", 32, l$, r$, RESULT); } // decreases ::= case 186: { Decreases RESULT; RESULT = null; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("decreases", 33, CUP$sym, CUP$sym, RESULT); } // decreases ::= ne_decreases case 187: { Decreases RESULT; com.github.jhoenicke.javacup.runtime.Symbol decreases$ = CUP$stack.get(CUP$size - 1); Decreases decreases = (Decreases) decreases$.value; RESULT = decreases; return parser.getSymbolFactory().newSymbol("decreases", 33, decreases$, decreases$, RESULT); } // ne_decreases ::= DECREASES lexpr SEMICOLON case 188: { Decreases RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new Decreases(expr), l$, r$); return parser.getSymbolFactory().newSymbol("ne_decreases", 34, l$, r$, RESULT); } // ne_decreases ::= DECREASES lexpr FOR any_identifier SEMICOLON case 189: { Decreases RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 2); String id = (String) id$.value; com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 4); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new Decreases(expr, id), l$, r$); return parser.getSymbolFactory().newSymbol("ne_decreases", 34, l$, r$, RESULT); } // simple_clauses ::= case 190: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("simple_clauses", 35, CUP$sym, CUP$sym, RESULT); } // simple_clauses ::= ne_simple_clauses case 191: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol simpleClauses$ = CUP$stack.get(CUP$size - 1); List simpleClauses = (List) simpleClauses$.value; RESULT = simpleClauses; return parser.getSymbolFactory().newSymbol("simple_clauses", 35, simpleClauses$, simpleClauses$, RESULT); } // ne_simple_clauses ::= post_cond_kind lexpr SEMICOLON simple_clauses case 192: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol simClauses$ = CUP$stack.get(CUP$size - 1); List simClauses = (List) simClauses$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 3); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol p$ = CUP$stack.get(CUP$size - 4); Ensures ensures = setNodeLocationFromSymbols(new Ensures(expr), p$, s$); simClauses.add(ensures); RESULT = simClauses; return parser.getSymbolFactory().newSymbol("ne_simple_clauses", 36, p$, simClauses$, RESULT); } // ne_simple_clauses ::= ASSIGNS assigns SEMICOLON simple_clauses case 193: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol simClauses$ = CUP$stack.get(CUP$size - 1); List simClauses = (List) simClauses$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol ass$ = CUP$stack.get(CUP$size - 3); Expression[] ass = (Expression[]) ass$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = CUP$stack.get(CUP$size - 4); Assigns assigns = setNodeLocationFromSymbols(new Assigns(ass), a$, s$); simClauses.add(assigns); RESULT = simClauses; return parser.getSymbolFactory().newSymbol("ne_simple_clauses", 36, a$, simClauses$, RESULT); } // behaviors ::= case 194: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("behaviors", 39, CUP$sym, CUP$sym, RESULT); } // behaviors ::= ne_behaviors case 195: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol behaviors$ = CUP$stack.get(CUP$size - 1); List behaviors = (List) behaviors$.value; RESULT = behaviors; return parser.getSymbolFactory().newSymbol("behaviors", 39, behaviors$, behaviors$, RESULT); } // ne_behaviors ::= BEHAVIOR behavior_name COLON behavior_body behaviors case 196: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol behaviorList$ = CUP$stack.get(CUP$size - 1); List behaviorList = (List) behaviorList$.value; com.github.jhoenicke.javacup.runtime.Symbol body$ = CUP$stack.get(CUP$size - 2); List body = (List) body$.value; com.github.jhoenicke.javacup.runtime.Symbol name$ = CUP$stack.get(CUP$size - 4); List name = (List) name$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); Behavior behavior = setNodeLocationFromSymbols(new Behavior(name.toArray(new String[0]), body.toArray(new ContractStatement[0])), l$, body$); behaviorList.add(behavior); RESULT = behaviorList; return parser.getSymbolFactory().newSymbol("ne_behaviors", 40, l$, behaviorList$, RESULT); } // behavior_body ::= assumes requires simple_clauses case 197: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol sim$ = CUP$stack.get(CUP$size - 1); List sim = (List) sim$.value; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 2); List req = (List) req$.value; com.github.jhoenicke.javacup.runtime.Symbol ass$ = CUP$stack.get(CUP$size - 3); List ass = (List) ass$.value; List body = new ArrayList(); body.addAll(ass); body.addAll(req); body.addAll(sim); RESULT = body; return parser.getSymbolFactory().newSymbol("behavior_body", 37, ass$, sim$, RESULT); } // behavior_body ::= assumes ne_requires ASSUMES case 198: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 2); List req = (List) req$.value; com.github.jhoenicke.javacup.runtime.Symbol ass$ = CUP$stack.get(CUP$size - 3); List ass = (List) ass$.value; List body = new ArrayList(); body.addAll(ass); body.addAll(req); RESULT = body; return parser.getSymbolFactory().newSymbol("behavior_body", 37, ass$, CUP$stack.get(CUP$size - 1), RESULT); } // behavior_body ::= assumes requires ne_simple_clauses ASSUMES // behavior_body ::= assumes requires ne_simple_clauses REQUIRES case 199: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol sim$ = CUP$stack.get(CUP$size - 2); List sim = (List) sim$.value; com.github.jhoenicke.javacup.runtime.Symbol req$ = CUP$stack.get(CUP$size - 3); List req = (List) req$.value; com.github.jhoenicke.javacup.runtime.Symbol ass$ = CUP$stack.get(CUP$size - 4); List ass = (List) ass$.value; List body = new ArrayList(); body.addAll(ass); body.addAll(req); body.addAll(sim); RESULT = body; return parser.getSymbolFactory().newSymbol("behavior_body", 37, ass$, CUP$stack.get(CUP$size - 1), RESULT); } // assumes ::= case 200: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("assumes", 38, CUP$sym, CUP$sym, RESULT); } // assumes ::= ASSUMES lexpr SEMICOLON assumes case 201: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol assu$ = CUP$stack.get(CUP$size - 1); List assu = (List) assu$.value; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 3); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = CUP$stack.get(CUP$size - 4); Assumes assume = setNodeLocationFromSymbols(new Assumes(expr), a$, s$); assu.add(assume); RESULT = assu; return parser.getSymbolFactory().newSymbol("assumes", 38, a$, assu$, RESULT); } // complete_or_disjoint ::= case 202: { Completeness RESULT; RESULT = new Completeness(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("complete_or_disjoint", 41, CUP$sym, CUP$sym, RESULT); } // complete_or_disjoint ::= ne_complete_or_disjoint case 203: { Completeness RESULT; com.github.jhoenicke.javacup.runtime.Symbol completeness$ = CUP$stack.get(CUP$size - 1); Completeness completeness = (Completeness) completeness$.value; RESULT = completeness; return parser.getSymbolFactory().newSymbol("complete_or_disjoint", 41, completeness$, completeness$, RESULT); } // ne_complete_or_disjoint ::= COMPLETE BEHAVIORS behavior_name_list SEMICOLON complete_or_disjoint case 204: { Completeness RESULT; com.github.jhoenicke.javacup.runtime.Symbol completeness$ = CUP$stack.get(CUP$size - 1); Completeness completeness = (Completeness) completeness$.value; com.github.jhoenicke.javacup.runtime.Symbol names$ = CUP$stack.get(CUP$size - 3); String[] names = (String[]) names$.value; String[] complete = completeness.getCompleteBehaviors(); ArrayList list = new ArrayList(); for (String name : complete) { list.add(name); } for (String name : names) { list.add(name); } completeness.setCompleteBehaviors(list.toArray(new String[0])); RESULT = completeness; return parser.getSymbolFactory().newSymbol("ne_complete_or_disjoint", 42, CUP$stack.get(CUP$size - 5), completeness$, RESULT); } // ne_complete_or_disjoint ::= DISJOINT BEHAVIORS behavior_name_list SEMICOLON complete_or_disjoint case 205: { Completeness RESULT; com.github.jhoenicke.javacup.runtime.Symbol completeness$ = CUP$stack.get(CUP$size - 1); Completeness completeness = (Completeness) completeness$.value; com.github.jhoenicke.javacup.runtime.Symbol names$ = CUP$stack.get(CUP$size - 3); String[] names = (String[]) names$.value; String[] disjoint = completeness.getDisjointBehaviors(); ArrayList list = new ArrayList(); for (String name : disjoint) { list.add(name); } for (String name : names) { list.add(name); } completeness.setDisjointBehaviors(list.toArray(new String[0])); RESULT = completeness; return parser.getSymbolFactory().newSymbol("ne_complete_or_disjoint", 42, CUP$stack.get(CUP$size - 5), completeness$, RESULT); } // assigns ::= zones case 206: { Expression[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol zones$ = CUP$stack.get(CUP$size - 1); Expression[] zones = (Expression[]) zones$.value; RESULT = zones; return parser.getSymbolFactory().newSymbol("assigns", 28, zones$, zones$, RESULT); } // zones ::= ne_zones case 207: { Expression[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol zones$ = CUP$stack.get(CUP$size - 1); Expression[] zones = (Expression[]) zones$.value; RESULT = zones; return parser.getSymbolFactory().newSymbol("zones", 26, zones$, zones$, RESULT); } // zones ::= NOTHING case 208: { Expression[] RESULT; RESULT = new Expression[0]; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("zones", 26, CUP$sym, CUP$sym, RESULT); } // ne_zones ::= ne_lexpr_list case 209: { Expression[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 1); Expression[] list = (Expression[]) list$.value; RESULT = list; return parser.getSymbolFactory().newSymbol("ne_zones", 27, list$, list$, RESULT); } // annotation ::= FOR ne_behavior_name_list COLON contract case 210: { return parser.getSymbolFactory().newSymbol("annotation", 91, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1)); } // annotation ::= code_annotation beg_code_annotation case 211: { return parser.getSymbolFactory().newSymbol("annotation", 91, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // loop_annotations ::= loop_annot_stack case 212: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loopAnnot$ = CUP$stack.get(CUP$size - 1); LoopAnnot loopAnnot = (LoopAnnot) loopAnnot$.value; RESULT = loopAnnot; parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("loop_annotations", 17, loopAnnot$, loopAnnot$, RESULT); } // loop_annot_stack ::= loop_invariant loop_annot_opt case 213: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loop$ = CUP$stack.get(CUP$size - 1); LoopAnnot loop = (LoopAnnot) loop$.value; com.github.jhoenicke.javacup.runtime.Symbol inv$ = CUP$stack.get(CUP$size - 2); LoopInvariant inv = (LoopInvariant) inv$.value; ArrayList stmts = new ArrayList(); stmts.add(inv); stmts.addAll(Arrays.asList(loop.getLoopStmt())); RESULT = setNodeLocationFromSymbols(new LoopAnnot(loop.getLoopBehavior(), stmts.toArray(new LoopStatement[1])), inv$, loop$); parser.tempLoopAnnot = RESULT; return parser.getSymbolFactory().newSymbol("loop_annot_stack", 15, inv$, loop$, RESULT); } // loop_annot_stack ::= loop_effects loop_annot_opt case 214: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loop$ = CUP$stack.get(CUP$size - 1); LoopAnnot loop = (LoopAnnot) loop$.value; com.github.jhoenicke.javacup.runtime.Symbol ass$ = CUP$stack.get(CUP$size - 2); LoopAssigns ass = (LoopAssigns) ass$.value; ArrayList stmts = new ArrayList(); stmts.add(ass); stmts.addAll(Arrays.asList(loop.getLoopStmt())); RESULT = setNodeLocationFromSymbols(new LoopAnnot(loop.getLoopBehavior(), stmts.toArray(new LoopStatement[1])), ass$, loop$); parser.tempLoopAnnot = RESULT; return parser.getSymbolFactory().newSymbol("loop_annot_stack", 15, ass$, loop$, RESULT); } // loop_annot_stack ::= FOR ne_behavior_name_list COLON loop_annot_stack case 215: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loop$ = CUP$stack.get(CUP$size - 1); LoopAnnot loop = (LoopAnnot) loop$.value; com.github.jhoenicke.javacup.runtime.Symbol names$ = CUP$stack.get(CUP$size - 3); String[] names = (String[]) names$.value; com.github.jhoenicke.javacup.runtime.Symbol f$ = CUP$stack.get(CUP$size - 4); LoopForBehavior forBehavior = new LoopForBehavior(names, loop.getLoopStmt()); // TODO: set location for this ArrayList list = new ArrayList(); list.add(forBehavior); list.addAll(Arrays.asList(parser.tempLoopAnnot.getLoopBehavior())); ArrayList slist = new ArrayList(); slist.addAll(Arrays.asList(parser.tempLoopAnnot.getLoopStmt())); for (LoopStatement ls : loop.getLoopStmt()) { slist.remove(ls); } RESULT = setNodeLocationFromSymbols(new LoopAnnot(list.toArray(new LoopForBehavior[0]), slist.toArray(new LoopStatement[0])), f$, loop$); parser.tempLoopAnnot = RESULT; return parser.getSymbolFactory().newSymbol("loop_annot_stack", 15, f$, loop$, RESULT); } // loop_annot_stack ::= loop_variant loop_annot_opt case 216: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loop$ = CUP$stack.get(CUP$size - 1); LoopAnnot loop = (LoopAnnot) loop$.value; com.github.jhoenicke.javacup.runtime.Symbol var$ = CUP$stack.get(CUP$size - 2); LoopVariant var = (LoopVariant) var$.value; ArrayList stmts = new ArrayList(); stmts.add(var); stmts.addAll(Arrays.asList(loop.getLoopStmt())); RESULT = setNodeLocationFromSymbols(new LoopAnnot(loop.getLoopBehavior(), stmts.toArray(new LoopStatement[1])), var$, loop$); parser.tempLoopAnnot = RESULT; return parser.getSymbolFactory().newSymbol("loop_annot_stack", 15, var$, loop$, RESULT); } // loop_annot_opt ::= case 217: { LoopAnnot RESULT; RESULT = new LoopAnnot(new LoopForBehavior[0], new LoopStatement[0]); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("loop_annot_opt", 16, CUP$sym, CUP$sym, RESULT); } // loop_annot_opt ::= loop_annot_stack case 218: { LoopAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol loop$ = CUP$stack.get(CUP$size - 1); LoopAnnot loop = (LoopAnnot) loop$.value; RESULT = loop; return parser.getSymbolFactory().newSymbol("loop_annot_opt", 16, loop$, loop$, RESULT); } // loop_effects ::= LOOP ASSIGNS assigns SEMICOLON case 219: { LoopAssigns RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol assign$ = CUP$stack.get(CUP$size - 2); Expression[] assign = (Expression[]) assign$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new LoopAssigns(assign), l$, s$); return parser.getSymbolFactory().newSymbol("loop_effects", 24, l$, s$, RESULT); } // loop_invariant ::= LOOP INVARIANT lexpr SEMICOLON case 220: { LoopInvariant RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 3); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new LoopInvariant(expr), l$, s$); return parser.getSymbolFactory().newSymbol("loop_invariant", 22, l$, s$, RESULT); } // loop_variant ::= LOOP VARIANT lexpr SEMICOLON case 221: { LoopVariant RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol v$ = CUP$stack.get(CUP$size - 3); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new LoopVariant(expr), l$, s$); return parser.getSymbolFactory().newSymbol("loop_variant", 23, l$, s$, RESULT); } // loop_variant ::= LOOP VARIANT lexpr FOR any_identifier SEMICOLON case 222: { LoopVariant RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol st$ = CUP$stack.get(CUP$size - 2); String st = (String) st$.value; com.github.jhoenicke.javacup.runtime.Symbol f$ = CUP$stack.get(CUP$size - 3); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 4); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol v$ = CUP$stack.get(CUP$size - 5); com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new LoopVariant(expr, st), l$, s$); return parser.getSymbolFactory().newSymbol("loop_variant", 23, l$, s$, RESULT); } // code_annotation ::= FOR ne_behavior_name_list COLON ASSERT lexpr SEMICOLON case 223: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = CUP$stack.get(CUP$size - 3); com.github.jhoenicke.javacup.runtime.Symbol benames$ = CUP$stack.get(CUP$size - 5); String[] benames = (String[]) benames$.value; com.github.jhoenicke.javacup.runtime.Symbol f$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new CodeAnnotBehavior(setNodeLocationFromSymbols(new CodeForBehavior(benames, setNodeLocationFromSymbols(new Assertion(expr), a$, expr$)), f$, expr$)), f$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, f$, s$, RESULT); } // code_annotation ::= FOR ne_behavior_name_list COLON INVARIANT lexpr SEMICOLON case 224: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 3); com.github.jhoenicke.javacup.runtime.Symbol benames$ = CUP$stack.get(CUP$size - 5); String[] benames = (String[]) benames$.value; com.github.jhoenicke.javacup.runtime.Symbol f$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new CodeAnnotBehavior(setNodeLocationFromSymbols(new CodeForBehavior(benames, setNodeLocationFromSymbols(new CodeInvariant(expr), i$, expr$)), f$, expr$)), f$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, f$, s$, RESULT); } // code_annotation ::= ASSERT lexpr SEMICOLON case 225: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol a$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new Assertion(expr), a$, expr$)), a$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, a$, s$, RESULT); } // code_annotation ::= INVARIANT lexpr SEMICOLON case 226: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 3); RESULT = setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new CodeInvariant(expr), i$, expr$)), i$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, i$, s$, RESULT); } // code_annotation ::= GHOST IDENTIFIER EQUAL lexpr SEMICOLON case 227: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 4); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol g$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new GhostUpdate(i, expr), i$, expr$)), g$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, g$, s$, RESULT); } // code_annotation ::= GHOST type_spec IDENTIFIER SEMICOLON case 228: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 2); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 3); String t = (String) t$.value; com.github.jhoenicke.javacup.runtime.Symbol g$ = CUP$stack.get(CUP$size - 4); RESULT = setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new GhostDeclaration(new ACSLType(t), i, null), t$, i$)), g$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, g$, s$, RESULT); } // code_annotation ::= GHOST type_spec IDENTIFIER EQUAL lexpr SEMICOLON case 229: { CodeAnnot RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 4); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 5); String t = (String) t$.value; com.github.jhoenicke.javacup.runtime.Symbol g$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new GhostDeclaration(new ACSLType(t), i, expr), t$, expr$)), g$, s$); parser.setAcslNode(RESULT); return parser.getSymbolFactory().newSymbol("code_annotation", 14, g$, s$, RESULT); } // decl_list ::= decl decl_list case 230: { return parser.getSymbolFactory().newSymbol("decl_list", 94, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // decl ::= GLOBAL INVARIANT any_identifier COLON lexpr SEMICOLON case 231: { com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 4); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); GlobalInvariant gInv = setNodeLocationFromSymbols(new GlobalInvariant(i, e), l$, s$); parser.setAcslNode(gInv); return parser.getSymbolFactory().newSymbol("decl", 90, l$, s$); } // decl ::= LTL INVARIANT any_identifier COLON ltlexpr SEMICOLON case 232: { com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol e$ = CUP$stack.get(CUP$size - 2); Expression e = (Expression) e$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 4); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); GlobalLTLInvariant ltlInv = setNodeLocationFromSymbols(new GlobalLTLInvariant(i, e), l$, s$); parser.setAcslNode(ltlInv); return parser.getSymbolFactory().newSymbol("decl", 90, l$, s$); } // decl ::= type_annot case 233: { com.github.jhoenicke.javacup.runtime.Symbol tInv$ = CUP$stack.get(CUP$size - 1); TypeInvariant tInv = (TypeInvariant) tInv$.value; parser.setAcslNode(tInv); return parser.getSymbolFactory().newSymbol("decl", 90, tInv$, tInv$); } // decl ::= model_annot case 234: { com.github.jhoenicke.javacup.runtime.Symbol model$ = CUP$stack.get(CUP$size - 1); ModelVariable model = (ModelVariable) model$.value; parser.setAcslNode(model); return parser.getSymbolFactory().newSymbol("decl", 90, model$, model$); } // decl ::= logic_def case 235: { com.github.jhoenicke.javacup.runtime.Symbol ldef$ = CUP$stack.get(CUP$size - 1); LogicStatement ldef = (LogicStatement) ldef$.value; parser.setAcslNode(ldef); return parser.getSymbolFactory().newSymbol("decl", 90, ldef$, ldef$); } // decl ::= GHOST type_spec IDENTIFIER SEMICOLON case 236: { com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 2); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 3); String t = (String) t$.value; com.github.jhoenicke.javacup.runtime.Symbol g$ = CUP$stack.get(CUP$size - 4); parser.setAcslNode(setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new GlobalGhostDeclaration(new ACSLType(t), i, null), t$, i$)), g$, s$)); return parser.getSymbolFactory().newSymbol("decl", 90, g$, s$); } // decl ::= GHOST type_spec IDENTIFIER EQUAL lexpr SEMICOLON case 237: { com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 4); String i = (String) i$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 5); String t = (String) t$.value; com.github.jhoenicke.javacup.runtime.Symbol g$ = CUP$stack.get(CUP$size - 6); parser.setAcslNode(setNodeLocationFromSymbols(new CodeAnnotStmt(setNodeLocationFromSymbols(new GlobalGhostDeclaration(new ACSLType(t), i, expr), t$, expr$)), g$, s$)); return parser.getSymbolFactory().newSymbol("decl", 90, g$, s$); } // type_annot ::= TYPE INVARIANT any_identifier LPAR parameter RPAR EQUAL lexpr SEMICOLON case 238: { TypeInvariant RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 5); Parameter param = (Parameter) param$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 7); String id = (String) id$.value; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 9); RESULT = setNodeLocationFromSymbols(new TypeInvariant(id, expr, param), t$, s$); return parser.getSymbolFactory().newSymbol("type_annot", 44, t$, s$, RESULT); } // model_annot ::= MODEL type_spec LBRACE parameter RBRACE case 239: { ModelVariable RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 2); Parameter param = (Parameter) param$.value; com.github.jhoenicke.javacup.runtime.Symbol type$ = CUP$stack.get(CUP$size - 4); String type = (String) type$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new ModelVariable(new ACSLType(type), param), l$, r$); return parser.getSymbolFactory().newSymbol("model_annot", 54, l$, r$, RESULT); } // model_annot ::= MODEL identifier LBRACE parameter RBRACE case 240: { ModelVariable RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 2); Parameter param = (Parameter) param$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); String id = (String) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new ModelVariable(new ACSLType(id), param), l$, r$); return parser.getSymbolFactory().newSymbol("model_annot", 54, l$, r$, RESULT); } // poly_id_type ::= identifier case 241: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 1); String id = (String) id$.value; RESULT = id; return parser.getSymbolFactory().newSymbol("poly_id_type", 50, id$, id$, RESULT); } // poly_id_type ::= identifier LT ne_tvar_list GT case 242: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 2); List list = (List) list$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); String id = (String) id$.value; RESULT = id + "<" + list.toString() + ">"; return parser.getSymbolFactory().newSymbol("poly_id_type", 50, id$, CUP$stack.get(CUP$size - 1), RESULT); } // poly_id ::= poly_id_type case 243: { PolyIdentifier RESULT; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 1); String id = (String) id$.value; RESULT = setNodeLocationFromSymbols(new PolyIdentifier(id), id$); return parser.getSymbolFactory().newSymbol("poly_id", 59, id$, id$, RESULT); } // poly_id ::= identifier LBRACE ne_label_list RBRACE case 244: { PolyIdentifier RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 2); List list = (List) list$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); String id = (String) id$.value; RESULT = setNodeLocationFromSymbols(new PolyIdentifier(id, list.toArray(new String[0]), new String[0]), id$, r$); return parser.getSymbolFactory().newSymbol("poly_id", 59, id$, r$, RESULT); } // poly_id ::= identifier LBRACE ne_label_list RBRACE LT ne_tvar_list GT case 245: { PolyIdentifier RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol vlist$ = CUP$stack.get(CUP$size - 2); List vlist = (List) vlist$.value; com.github.jhoenicke.javacup.runtime.Symbol llist$ = CUP$stack.get(CUP$size - 5); List llist = (List) llist$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 7); String id = (String) id$.value; RESULT = setNodeLocationFromSymbols(new PolyIdentifier(id, llist.toArray(new String[0]), vlist.toArray(new String[0])), id$, r$); return parser.getSymbolFactory().newSymbol("poly_id", 59, id$, r$, RESULT); } // opt_parameters ::= case 246: { Parameter[] RESULT; RESULT = null; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("opt_parameters", 58, CUP$sym, CUP$sym, RESULT); } // opt_parameters ::= parameters case 247: { Parameter[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol params$ = CUP$stack.get(CUP$size - 1); Parameter[] params = (Parameter[]) params$.value; RESULT = params; return parser.getSymbolFactory().newSymbol("opt_parameters", 58, params$, params$, RESULT); } // parameters ::= LPAR ne_parameters RPAR case 248: { Parameter[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 2); List list = (List) list$.value; RESULT = list.toArray(new Parameter[0]); return parser.getSymbolFactory().newSymbol("parameters", 57, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1), RESULT); } // logic_def ::= LOGIC logic_rt_type poly_id opt_parameters EQUAL lexpr SEMICOLON case 249: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 4); Parameter[] param = (Parameter[]) param$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 5); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol type$ = CUP$stack.get(CUP$size - 6); ACSLType type = (ACSLType) type$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 7); if (param == null) { RESULT = setNodeLocationFromSymbols(new LogicFunction(id, type, expr), l$, r$); } else { RESULT = setNodeLocationFromSymbols(new LogicFunction(id, param, type, expr), l$, r$); } return parser.getSymbolFactory().newSymbol("logic_def", 61, l$, r$, RESULT); } // logic_def ::= PREDICATE poly_id opt_parameters EQUAL lexpr SEMICOLON case 250: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 4); Parameter[] param = (Parameter[]) param$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 5); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); if (param == null) { RESULT = setNodeLocationFromSymbols(new Predicate(id, expr), l$, r$); } else { RESULT = setNodeLocationFromSymbols(new Predicate(id, param, expr), l$, r$); } return parser.getSymbolFactory().newSymbol("logic_def", 61, l$, r$, RESULT); } // logic_def ::= INDUCTIVE poly_id parameters LBRACE indcases RBRACE case 251: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol cases$ = CUP$stack.get(CUP$size - 2); List cases = (List) cases$.value; com.github.jhoenicke.javacup.runtime.Symbol param$ = CUP$stack.get(CUP$size - 4); Parameter[] param = (Parameter[]) param$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 5); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); RESULT = setNodeLocationFromSymbols(new Inductive(id, param, cases.toArray(new Case[0])), l$, r$); return parser.getSymbolFactory().newSymbol("logic_def", 61, l$, r$, RESULT); } // logic_def ::= LEMMA poly_id COLON lexpr SEMICOLON case 252: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new Lemma(id, expr), l$, r$); return parser.getSymbolFactory().newSymbol("logic_def", 61, l$, r$, RESULT); } // logic_def ::= AXIOMATIC any_identifier LBRACE logic_decls RBRACE case 253: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol ldecls$ = CUP$stack.get(CUP$size - 2); List ldecls = (List) ldecls$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); String id = (String) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new Axiomatic(new PolyIdentifier(id), ldecls.toArray(new LogicStatement[0])), l$, r$); return parser.getSymbolFactory().newSymbol("logic_def", 61, l$, r$, RESULT); } // logic_decls ::= case 254: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("logic_decls", 63, CUP$sym, CUP$sym, RESULT); } // logic_decls ::= logic_decl logic_decls case 255: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 1); List list = (List) list$.value; com.github.jhoenicke.javacup.runtime.Symbol ldecl$ = CUP$stack.get(CUP$size - 2); LogicStatement ldecl = (LogicStatement) ldecl$.value; list.add(0, ldecl); RESULT = list; return parser.getSymbolFactory().newSymbol("logic_decls", 63, ldecl$, list$, RESULT); } // logic_decl ::= logic_def case 256: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol ldef$ = CUP$stack.get(CUP$size - 1); LogicStatement ldef = (LogicStatement) ldef$.value; RESULT = ldef; return parser.getSymbolFactory().newSymbol("logic_decl", 62, ldef$, ldef$, RESULT); } // logic_decl ::= AXIOM poly_id COLON lexpr SEMICOLON case 257: { LogicStatement RESULT; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 1); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 2); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 4); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 5); RESULT = setNodeLocationFromSymbols(new Axiom(id, expr), l$, r$); return parser.getSymbolFactory().newSymbol("logic_decl", 62, l$, r$, RESULT); } // reads_clause ::= case 258: { com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("reads_clause", 98, CUP$sym, CUP$sym); } // reads_clause ::= READS zones case 259: { return parser.getSymbolFactory().newSymbol("reads_clause", 98, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // datacons_list ::= case 260: { com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("datacons_list", 100, CUP$sym, CUP$sym); } // datacons_list ::= PIPE datacons datacons_list case 261: { return parser.getSymbolFactory().newSymbol("datacons_list", 100, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // ne_datacons_list ::= datacons datacons_list case 262: { return parser.getSymbolFactory().newSymbol("ne_datacons_list", 99, CUP$stack.get(CUP$size - 2), CUP$stack.get(CUP$size - 1)); } // ne_datacons_list ::= PIPE datacons datacons_list case 263: { return parser.getSymbolFactory().newSymbol("ne_datacons_list", 99, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // datacons ::= identifier LPAR ne_type_list RPAR case 264: { return parser.getSymbolFactory().newSymbol("datacons", 101, CUP$stack.get(CUP$size - 4), CUP$stack.get(CUP$size - 1)); } // ne_type_list ::= logic_type COMMA ne_type_list case 265: { return parser.getSymbolFactory().newSymbol("ne_type_list", 102, CUP$stack.get(CUP$size - 3), CUP$stack.get(CUP$size - 1)); } // indcases ::= case 266: { List RESULT; RESULT = new ArrayList(); com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("indcases", 60, CUP$sym, CUP$sym, RESULT); } // indcases ::= CASE poly_id COLON lexpr SEMICOLON indcases case 267: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol list$ = CUP$stack.get(CUP$size - 1); List list = (List) list$.value; com.github.jhoenicke.javacup.runtime.Symbol r$ = CUP$stack.get(CUP$size - 2); com.github.jhoenicke.javacup.runtime.Symbol expr$ = CUP$stack.get(CUP$size - 3); Expression expr = (Expression) expr$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 5); PolyIdentifier id = (PolyIdentifier) id$.value; com.github.jhoenicke.javacup.runtime.Symbol l$ = CUP$stack.get(CUP$size - 6); list.add(0, setNodeLocationFromSymbols(new Case(id, expr), l$, r$)); RESULT = list; return parser.getSymbolFactory().newSymbol("indcases", 60, l$, list$, RESULT); } // ne_tvar_list ::= identifier case 268: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 1); String id = (String) id$.value; RESULT = new ArrayList(); RESULT.add(id); return parser.getSymbolFactory().newSymbol("ne_tvar_list", 51, id$, id$, RESULT); } // ne_tvar_list ::= identifier COMMA ne_tvar_list case 269: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol vlist$ = CUP$stack.get(CUP$size - 1); List vlist = (List) vlist$.value; com.github.jhoenicke.javacup.runtime.Symbol id$ = CUP$stack.get(CUP$size - 3); String id = (String) id$.value; ArrayList list = new ArrayList(); list.add(id); list.addAll(vlist); RESULT = vlist; return parser.getSymbolFactory().newSymbol("ne_tvar_list", 51, id$, vlist$, RESULT); } // ne_label_list ::= label_name case 270: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol name$ = CUP$stack.get(CUP$size - 1); String name = (String) name$.value; RESULT = new ArrayList(); RESULT.add(name); return parser.getSymbolFactory().newSymbol("ne_label_list", 52, name$, name$, RESULT); } // ne_label_list ::= label_name COMMA ne_label_list case 271: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol llist$ = CUP$stack.get(CUP$size - 1); List llist = (List) llist$.value; com.github.jhoenicke.javacup.runtime.Symbol name$ = CUP$stack.get(CUP$size - 3); String name = (String) name$.value; ArrayList list = new ArrayList(); list.add(name); list.addAll(llist); RESULT = list; return parser.getSymbolFactory().newSymbol("ne_label_list", 52, name$, llist$, RESULT); } // label_name ::= any_identifier case 272: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; RESULT = i; return parser.getSymbolFactory().newSymbol("label_name", 5, i$, i$, RESULT); } // behavior_name_list ::= case 273: { String[] RESULT; RESULT = new String[0]; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("behavior_name_list", 19, CUP$sym, CUP$sym, RESULT); } // behavior_name_list ::= ne_behavior_name_list case 274: { String[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol behavlist$ = CUP$stack.get(CUP$size - 1); String[] behavlist = (String[]) behavlist$.value; RESULT = behavlist; return parser.getSymbolFactory().newSymbol("behavior_name_list", 19, behavlist$, behavlist$, RESULT); } // ne_behavior_name_list ::= behavior_name case 275: { String[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol be$ = CUP$stack.get(CUP$size - 1); List be = (List) be$.value; RESULT = be.toArray(new String[1]); return parser.getSymbolFactory().newSymbol("ne_behavior_name_list", 18, be$, be$, RESULT); } // ne_behavior_name_list ::= behavior_name COMMA ne_behavior_name_list case 276: { String[] RESULT; com.github.jhoenicke.javacup.runtime.Symbol bel$ = CUP$stack.get(CUP$size - 1); String[] bel = (String[]) bel$.value; com.github.jhoenicke.javacup.runtime.Symbol be$ = CUP$stack.get(CUP$size - 3); List be = (List) be$.value; for (String s : bel) { be.add(s); } RESULT = be.toArray(new String[1]); return parser.getSymbolFactory().newSymbol("ne_behavior_name_list", 18, be$, bel$, RESULT); } // behavior_name ::= any_identifier case 277: { List RESULT; com.github.jhoenicke.javacup.runtime.Symbol s$ = CUP$stack.get(CUP$size - 1); String s = (String) s$.value; RESULT = new ArrayList(); RESULT.add(s); return parser.getSymbolFactory().newSymbol("behavior_name", 20, s$, s$, RESULT); } // any_identifier ::= identifier_or_typename case 278: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; RESULT = i; return parser.getSymbolFactory().newSymbol("any_identifier", 3, i$, i$, RESULT); } // identifier_or_typename ::= IDENTIFIER case 279: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; RESULT = i; return parser.getSymbolFactory().newSymbol("identifier_or_typename", 4, i$, i$, RESULT); } // identifier_or_typename ::= TYPENAME case 280: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol t$ = CUP$stack.get(CUP$size - 1); String t = (String) t$.value; RESULT = t; return parser.getSymbolFactory().newSymbol("identifier_or_typename", 4, t$, t$, RESULT); } // identifier ::= IDENTIFIER case 281: { String RESULT; com.github.jhoenicke.javacup.runtime.Symbol i$ = CUP$stack.get(CUP$size - 1); String i = (String) i$.value; RESULT = i; return parser.getSymbolFactory().newSymbol("identifier", 1, i$, i$, RESULT); } // identifier ::= GLOBAL case 282: { String RESULT; RESULT = "global"; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("identifier", 1, CUP$sym, CUP$sym, RESULT); } // identifier ::= NEXT case 283: { String RESULT; RESULT = "X"; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("identifier", 1, CUP$sym, CUP$sym, RESULT); } // identifier ::= UNTIL case 284: { String RESULT; RESULT = "U"; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("identifier", 1, CUP$sym, CUP$sym, RESULT); } // identifier ::= WEAKUNTIL case 285: { String RESULT; RESULT = "WU"; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("identifier", 1, CUP$sym, CUP$sym, RESULT); } // identifier ::= RELEASE case 286: { String RESULT; RESULT = "R"; com.github.jhoenicke.javacup.runtime.Symbol CUP$sym = CUP$stack.get(CUP$size - 1); return parser.getSymbolFactory().newSymbol("identifier", 1, CUP$sym, CUP$sym, RESULT); } /* . . . . . .*/ default: throw new InternalError( "Invalid action number found in internal parse table"); } } } }