Index: code/trunk/CMakeLists.txt
===================================================================
--- code/trunk/CMakeLists.txt	(revision 1020)
+++ code/trunk/CMakeLists.txt	(revision 1021)
@@ -71,9 +71,11 @@
 FIND_PACKAGE(OggVorbis)
 FIND_PACKAGE(ZLIB)
+FIND_PACKAGE(Lua)
+#FIND_PACKAGE(ToLua)
 
 #Sets the search paths for the linking
-LINK_DIRECTORIES(${OGRE_LIB_DIR} ${OIS_LIB_DIR} ${CEGUI_LIB_DIR} ${CEGUI_OGRE_LIB_DIR} ${ENet_LIBRARY} ${Boost_LIBRARY_DIRS} ${Zlib_LIBRARY_DIR} core objects loader network weapon classHierarchy audio)
+LINK_DIRECTORIES(${OGRE_LIB_DIR} ${OIS_LIB_DIR} ${CEGUI_LIB_DIR} ${CEGUI_OGRE_LIB_DIR} ${ENet_LIBRARY} ${Boost_LIBRARY_DIRS} ${Zlib_LIBRARY_DIR} ${Lua_LIBRARIES} core objects loader network weapon classHierarchy audio)
 #Sets the search path for include files
-INCLUDE_DIRECTORIES(${OGRE_INCLUDE_DIR} ${OIS_INCLUDE_DIR} ${CEGUI_INCLUDE_DIR} ${CEGUI_OGRE_INCLUDE_DIR} ${ENet_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${OPENAL_INCLUDE_DIR} ${ALUT_INCLUDE_DIR} ${VORBIS_INCLUDE_DIR} ${OGG_INCLUDE_DIR})
+INCLUDE_DIRECTORIES(${OGRE_INCLUDE_DIR} ${OIS_INCLUDE_DIR} ${CEGUI_INCLUDE_DIR} ${CEGUI_OGRE_INCLUDE_DIR} ${ENet_INCLUDE_DIR} ${Boost_INCLUDE_DIRS} ${OPENAL_INCLUDE_DIR} ${ALUT_INCLUDE_DIR} ${VORBIS_INCLUDE_DIR} ${OGG_INCLUDE_DIR} ${Lua_INCLUDE_DIR})
 
 #Set the execution directory
Index: code/trunk/bin/levels/sample.oxw
===================================================================
--- code/trunk/bin/levels/sample.oxw	(revision 1020)
+++ code/trunk/bin/levels/sample.oxw	(revision 1021)
@@ -8,5 +8,6 @@
 			<ogg src="tha_silent_partner_-_void" />
 		</ambient>
-  </audio>
+  </audio> 
+
 -->
 
@@ -23,7 +24,6 @@
 <NPC position="100,0,400" scale="1" mesh="razor.mesh"/>
 
-<!--
-<Model name="starship" position="200,0,500" scale="10" mesh="starship.mesh" yawpitchroll="-90,-90,0" />
-<Model name="drone" position="-200,0,500" scale="10" mesh="drone.mesh" yawpitchroll="-90,-90,0">
+<!--Model name="starship" position="200,0,500" scale="10" mesh="starship.mesh" yawpitchroll="-90,-90,0" /-->
+<!--Model name="drone" position="-200,0,500" scale="10" mesh="drone.mesh" yawpitchroll="-90,-90,0">
   <attached>
     <Model name="drone2" position="200,-100,-500" scale="10" mesh="drone.mesh" yawpitchroll="-90,-90,0">
@@ -33,6 +33,5 @@
     </Model>
   </attached>
-</Model>
--->
+</Model -->
 
 <Model position="-200,1000,500" scale="10" mesh="hoover_body.mesh" yawpitchroll="-90,-90,0" />
@@ -42,229 +41,9 @@
 <Model position="-200,1000,500" scale="10" mesh="hoover_turbine.mesh" yawpitchroll="-90,-90,0" />
 
-    <Model position="-16779,42,11043" scale="95" mesh="ast2.mesh" rotationAxis="0.281711,0.152518,0" rotationRate="27" />
-    <Model position="12893,-1583,-17939" scale="48" mesh="ast1.mesh" rotationAxis="0.0597998,0.923364,0" rotationRate="36" />
-    <Model position="-2107,259,-19814" scale="29" mesh="ast4.mesh" rotationAxis="0.298639,0.96907,0" rotationRate="32" />
-    <Model position="-9583,-2284,-19904" scale="33" mesh="ast5.mesh" rotationAxis="0,0.675659,0.0196445" rotationRate="44" />
-    <Model position="-19597,-15494,3163" scale="37" mesh="ast5.mesh" rotationAxis="0.477996,0,0.048639" rotationRate="23" />
-    <Model position="-182,6442,-4496" scale="25" mesh="ast5.mesh" rotationAxis="0.142225,0,0.154393" rotationRate="37" />
-    <Model position="1004,-19639,-13744" scale="21" mesh="ast1.mesh" rotationAxis="0.974865,0.299775,0" rotationRate="29" />
-    <Model position="-13204,-10191,-1555" scale="31" mesh="ast1.mesh" rotationAxis="0.41675,0,0.385001" rotationRate="42" />
-    <Model position="-1843,12203,2346" scale="81" mesh="ast5.mesh" rotationAxis="0.221171,0,0.331917" rotationRate="41" />
-    <Model position="-1560,-1443,-17416" scale="68" mesh="ast1.mesh" rotationAxis="0.653787,0.00935241,0" rotationRate="44" />
-    <Model position="-7723,18661,3363" scale="94" mesh="ast5.mesh" rotationAxis="0.450345,0,0.417313" rotationRate="29" />
-    <Model position="-8122,5764,16342" scale="45" mesh="ast4.mesh" rotationAxis="0.268558,0,0.089161" rotationRate="30" />
-    <Model position="17575,-14054,-16710" scale="80" mesh="ast1.mesh" rotationAxis="0,0.615899,0.571064" rotationRate="18" />
-    <Model position="-15304,-17381,4149" scale="32" mesh="ast6.mesh" rotationAxis="0.015051,0,0.764924" rotationRate="10" />
-    <Model position="5587,2382,-13876" scale="49" mesh="ast4.mesh" rotationAxis="0.501173,0.208012,0" rotationRate="27" />
-    <Model position="12167,-12466,-3364" scale="29" mesh="ast3.mesh" rotationAxis="0.897424,0.896971,0" rotationRate="21" />
-    <Model position="3157,12173,4070" scale="78" mesh="ast2.mesh" rotationAxis="0.496178,0.760223,0" rotationRate="36" />
-    <Model position="-13948,-6497,18368" scale="96" mesh="ast3.mesh" rotationAxis="0,0.0655793,0.17843" rotationRate="47" />
-    <Model position="9304,-16367,-8429" scale="112" mesh="ast3.mesh" rotationAxis="0,0.220054,0.123838" rotationRate="10" />
-    <Model position="-19293,9147,5573" scale="97" mesh="ast6.mesh" rotationAxis="0,0.0590435,0.200379" rotationRate="27" />
-    <Model position="-13022,13902,19960" scale="67" mesh="ast6.mesh" rotationAxis="0,0.637161,0.286825" rotationRate="22" />
-    <Model position="16898,12368,4477" scale="41" mesh="ast3.mesh" rotationAxis="0.962958,0,0.0295571" rotationRate="30" />
-    <Model position="6687,12586,-11721" scale="33" mesh="ast2.mesh" rotationAxis="0.596958,0.326804,0" rotationRate="24" />
-    <Model position="15066,11759,5229" scale="47" mesh="ast5.mesh" rotationAxis="0,0.993547,0.7269" rotationRate="45" />
-    <Model position="7329,-9876,2203" scale="78" mesh="ast4.mesh" rotationAxis="0,0.170628,0.522448" rotationRate="31" />
-    <Model position="-9132,9542,-14753" scale="20" mesh="ast6.mesh" rotationAxis="0.578006,0.738023,0" rotationRate="47" />
-    <Model position="12958,2638,9476" scale="107" mesh="ast2.mesh" rotationAxis="0.815402,0.549519,0" rotationRate="42" />
-    <Model position="3327,-10549,9196" scale="102" mesh="ast3.mesh" rotationAxis="0.403431,0,0.392179" rotationRate="43" />
-    <Model position="-8947,15802,-16153" scale="72" mesh="ast3.mesh" rotationAxis="0,0.863891,0.789231" rotationRate="28" />
-    <Model position="-5340,12944,14528" scale="108" mesh="ast2.mesh" rotationAxis="0.91406,0.865657,0" rotationRate="34" />
-    <Model position="5107,5365,-5004" scale="75" mesh="ast6.mesh" rotationAxis="0,0.663461,0.406224" rotationRate="13" />
-    <Model position="-6998,18403,8238" scale="70" mesh="ast6.mesh" rotationAxis="0.550689,0,0.834949" rotationRate="41" />
-    <Model position="-9089,7495,-15512" scale="59" mesh="ast6.mesh" rotationAxis="0.0784585,0,0.580422" rotationRate="16" />
-    <Model position="-6698,19465,14091" scale="70" mesh="ast5.mesh" rotationAxis="0,0.0536133,0.663091" rotationRate="48" />
-    <Model position="-9943,9390,19361" scale="115" mesh="ast3.mesh" rotationAxis="0.745415,0.302601,0" rotationRate="25" />
-    <Model position="9341,-6947,7223" scale="49" mesh="ast1.mesh" rotationAxis="0.0217983,0.829754,0" rotationRate="40" />
-    <Model position="10259,8970,-7673" scale="70" mesh="ast3.mesh" rotationAxis="0,0.705347,0.0544375" rotationRate="30" />
-    <Model position="4538,-17169,-15829" scale="119" mesh="ast4.mesh" rotationAxis="0.659901,0,0.6408" rotationRate="42" />
-    <Model position="7746,-9746,14917" scale="89" mesh="ast4.mesh" rotationAxis="0.579678,0,0.632015" rotationRate="46" />
-    <Model position="-4550,1554,11166" scale="49" mesh="ast1.mesh" rotationAxis="0.805799,0.905452,0" rotationRate="25" />
-    <Model position="-4571,-14392,14887" scale="20" mesh="ast2.mesh" rotationAxis="0.163796,0.62884,0" rotationRate="38" />
-    <Model position="18390,-19165,-6118" scale="28" mesh="ast2.mesh" rotationAxis="0.386394,0,0.290423" rotationRate="39" />
-    <Model position="-19119,8707,-11377" scale="119" mesh="ast1.mesh" rotationAxis="0.912683,0,0.722097" rotationRate="17" />
-    <Model position="-15827,6956,-3785" scale="32" mesh="ast1.mesh" rotationAxis="0.901503,0,0.548708" rotationRate="29" />
-    <Model position="1956,-13954,18055" scale="59" mesh="ast1.mesh" rotationAxis="0,0.0523992,0.756846" rotationRate="15" />
-    <Model position="2197,-13870,-11528" scale="92" mesh="ast2.mesh" rotationAxis="0.469413,0,0.742143" rotationRate="13" />
-    <Model position="7377,6656,5591" scale="64" mesh="ast6.mesh" rotationAxis="0,0.599119,0.890718" rotationRate="36" />
-    <Model position="16123,8784,-7928" scale="50" mesh="ast6.mesh" rotationAxis="0.648018,0,0.522075" rotationRate="41" />
-    <Model position="-12751,-2191,-11527" scale="94" mesh="ast2.mesh" rotationAxis="0,0.715065,0.332238" rotationRate="36" />
-    <Model position="18020,-16499,18874" scale="31" mesh="ast6.mesh" rotationAxis="0,0.0608362,0.523216" rotationRate="13" />
-    <Model position="-15807,-7678,16780" scale="37" mesh="ast1.mesh" rotationAxis="0,0.658659,0.0366738" rotationRate="18" />
-    <Model position="-17711,-14807,13817" scale="82" mesh="ast6.mesh" rotationAxis="0.16894,0,0.131653" rotationRate="10" />
-    <Model position="-4428,5259,9741" scale="66" mesh="ast6.mesh" rotationAxis="0.424995,0.0971331,0" rotationRate="39" />
-    <Model position="1682,8250,263" scale="34" mesh="ast2.mesh" rotationAxis="0,0.509205,0.22658" rotationRate="35" />
-    <Model position="13624,-5594,12058" scale="61" mesh="ast5.mesh" rotationAxis="0,0.786326,0.21092" rotationRate="41" />
-    <Model position="-5772,8251,15090" scale="89" mesh="ast6.mesh" rotationAxis="0.446662,0,0.039521" rotationRate="46" />
-    <Model position="18732,8386,-17834" scale="115" mesh="ast3.mesh" rotationAxis="0.484641,0.0994628,0" rotationRate="29" />
-    <Model position="-4662,-13023,1337" scale="116" mesh="ast3.mesh" rotationAxis="0.575875,0.380544,0" rotationRate="34" />
-    <Model position="3193,-18575,-13293" scale="55" mesh="ast3.mesh" rotationAxis="0,0.562414,0.669598" rotationRate="23" />
-    <Model position="-18127,15281,-9961" scale="59" mesh="ast5.mesh" rotationAxis="0,0.430401,0.690096" rotationRate="20" />
-    <Model position="-3978,-10245,108" scale="80" mesh="ast4.mesh" rotationAxis="0,0.0821224,0.236512" rotationRate="25" />
-    <Model position="-11319,-12567,5192" scale="109" mesh="ast2.mesh" rotationAxis="0.39942,0,0.537407" rotationRate="24" />
-    <Model position="-4977,-3230,-7025" scale="34" mesh="ast2.mesh" rotationAxis="0,0.464353,0.474219" rotationRate="31" />
-    <Model position="10069,-14931,15176" scale="97" mesh="ast6.mesh" rotationAxis="0.173174,0.520451,0" rotationRate="26" />
-    <Model position="2766,-16062,-10919" scale="78" mesh="ast4.mesh" rotationAxis="0.521386,0,0.717508" rotationRate="36" />
-    <Model position="-9128,12247,2916" scale="67" mesh="ast2.mesh" rotationAxis="0.347868,0.717047,0" rotationRate="28" />
-    <Model position="6440,-16563,-18432" scale="36" mesh="ast5.mesh" rotationAxis="0.265539,0,0.71717" rotationRate="35" />
-    <Model position="12669,-1534,2196" scale="71" mesh="ast2.mesh" rotationAxis="0,0.472099,0.464159" rotationRate="40" />
-    <Model position="172,-18075,11429" scale="108" mesh="ast5.mesh" rotationAxis="0.0320382,0.32207,0" rotationRate="16" />
-    <Model position="2426,8901,-3677" scale="114" mesh="ast5.mesh" rotationAxis="0.778803,0.0691138,0" rotationRate="46" />
-    <Model position="-4576,-13668,14863" scale="40" mesh="ast6.mesh" rotationAxis="0.979052,0.428032,0" rotationRate="30" />
-    <Model position="9222,-15457,4825" scale="24" mesh="ast6.mesh" rotationAxis="0,0.106496,0.409635" rotationRate="38" />
-    <Model position="-3613,-4696,-13838" scale="82" mesh="ast4.mesh" rotationAxis="0.676407,0,0.69673" rotationRate="16" />
-    <Model position="12743,-1674,8050" scale="78" mesh="ast3.mesh" rotationAxis="0.161952,0.389888,0" rotationRate="19" />
-    <Model position="3398,-19196,10512" scale="96" mesh="ast1.mesh" rotationAxis="0,0.799917,0.520012" rotationRate="38" />
-    <Model position="-2837,-9264,-11236" scale="97" mesh="ast4.mesh" rotationAxis="0.892116,0,0.048004" rotationRate="22" />
-    <Model position="13220,-13790,-9710" scale="90" mesh="ast5.mesh" rotationAxis="0,0.931551,0.148539" rotationRate="19" />
-    <Model position="-9560,19189,2493" scale="24" mesh="ast2.mesh" rotationAxis="0.169182,0.962125,0" rotationRate="22" />
-    <Model position="-18545,-13577,5941" scale="92" mesh="ast4.mesh" rotationAxis="0,0.145122,0.499773" rotationRate="24" />
-    <Model position="-12874,-481,7016" scale="89" mesh="ast4.mesh" rotationAxis="0,0.878644,0.744372" rotationRate="31" />
-    <Model position="5290,-11553,-15958" scale="103" mesh="ast4.mesh" rotationAxis="0,0.0858311,0.860834" rotationRate="26" />
-    <Model position="-18189,19019,16471" scale="72" mesh="ast4.mesh" rotationAxis="0,0.206421,0.423981" rotationRate="33" />
-    <Model position="13736,17565,-4338" scale="72" mesh="ast1.mesh" rotationAxis="0.647033,0,0.0993164" rotationRate="26" />
-    <Model position="-11103,-18306,17096" scale="112" mesh="ast6.mesh" rotationAxis="0.938456,0.184833,0" rotationRate="17" />
-    <Model position="16665,322,-13614" scale="57" mesh="ast5.mesh" rotationAxis="0,0.850806,0.942188" rotationRate="30" />
-    <Model position="-13234,-5004,-19934" scale="100" mesh="ast6.mesh" rotationAxis="0.712244,0.214422,0" rotationRate="30" />
-    <Model position="2334,-2954,-17614" scale="50" mesh="ast5.mesh" rotationAxis="0.62725,0,0.646295" rotationRate="22" />
-    <Model position="16214,-12149,-6186" scale="72" mesh="ast1.mesh" rotationAxis="0,0.6434,0.0914027" rotationRate="40" />
-    <Model position="-11746,15630,-12814" scale="92" mesh="ast1.mesh" rotationAxis="0.0516508,0,0.534206" rotationRate="31" />
-    <Model position="19389,-8340,17620" scale="96" mesh="ast5.mesh" rotationAxis="0.806963,0.925497,0" rotationRate="19" />
-    <Model position="12269,18075,5380" scale="103" mesh="ast6.mesh" rotationAxis="0,0.685539,0.0816417" rotationRate="38" />
-    <Model position="16499,13080,-14830" scale="58" mesh="ast3.mesh" rotationAxis="0.776935,0.430662,0" rotationRate="21" />
-    <Model position="14398,-9629,16663" scale="90" mesh="ast2.mesh" rotationAxis="0.405098,0.0716397,0" rotationRate="31" />
-    <Model position="16021,-8497,-11384" scale="73" mesh="ast1.mesh" rotationAxis="0.284874,0.262371,0" rotationRate="22" />
-    <Model position="-12197,19157,-5268" scale="46" mesh="ast6.mesh" rotationAxis="0.301399,0,0.852104" rotationRate="42" />
-    <Model position="3523,-10238,-17036" scale="58" mesh="ast3.mesh" rotationAxis="0.408875,0,0.896493" rotationRate="32" />
-    <Model position="-9942,2328,437" scale="47" mesh="ast6.mesh" rotationAxis="0.391488,0.552897,0" rotationRate="18" />
-    <Model position="-5089,13146,2485" scale="115" mesh="ast3.mesh" rotationAxis="0,0.77605,0.0301674" rotationRate="46" />
-    <Model position="-3325,16428,-42" scale="59" mesh="ast4.mesh" rotationAxis="0.80208,0.306772,0" rotationRate="11" />
-    <Model position="-8399,370,12441" scale="58" mesh="ast4.mesh" rotationAxis="0,0.673135,0.940884" rotationRate="46" />
-    <Model position="12101,13398,-15098" scale="58" mesh="ast2.mesh" rotationAxis="0.168778,0,0.0517661" rotationRate="38" />
-    <Model position="-2875,-11869,11008" scale="55" mesh="ast3.mesh" rotationAxis="0,0.248125,0.642059" rotationRate="40" />
-    <Model position="1690,-9053,14913" scale="52" mesh="ast4.mesh" rotationAxis="0.454649,0.81489,0" rotationRate="23" />
-    <Model position="17507,7536,-8757" scale="29" mesh="ast3.mesh" rotationAxis="0.947894,0,0.283392" rotationRate="41" />
-    <Model position="-1623,-12605,-14277" scale="58" mesh="ast3.mesh" rotationAxis="0,0.253805,0.162647" rotationRate="46" />
-    <Model position="-4045,-535,-14585" scale="88" mesh="ast4.mesh" rotationAxis="0.257327,0,0.894532" rotationRate="24" />
-    <Model position="-9199,715,4150" scale="117" mesh="ast5.mesh" rotationAxis="0.359984,0,0.231855" rotationRate="18" />
-    <Model position="3202,-6145,19403" scale="97" mesh="ast6.mesh" rotationAxis="0,0.470211,0.784929" rotationRate="11" />
-    <Model position="127,-9694,1418" scale="62" mesh="ast1.mesh" rotationAxis="0.0974775,0.108828,0" rotationRate="33" />
-    <Model position="-1033,-8523,14218" scale="89" mesh="ast1.mesh" rotationAxis="0.483568,0,0.581196" rotationRate="14" />
-    <Model position="-28,-1140,7779" scale="47" mesh="ast2.mesh" rotationAxis="0.0572967,0.588805,0" rotationRate="25" />
-    <Model position="-2434,-17785,-6679" scale="104" mesh="ast2.mesh" rotationAxis="0,0.458048,0.639973" rotationRate="37" />
-    <Model position="4260,8520,-1144" scale="51" mesh="ast3.mesh" rotationAxis="0.403191,0,0.167267" rotationRate="33" />
-    <Model position="-3288,-10630,-16957" scale="111" mesh="ast4.mesh" rotationAxis="0.451879,0.909329,0" rotationRate="34" />
-    <Model position="9481,13063,8871" scale="74" mesh="ast6.mesh" rotationAxis="0.962342,0,0.728256" rotationRate="12" />
-    <Model position="-13869,-19298,8075" scale="107" mesh="ast4.mesh" rotationAxis="0.989258,0,0.644457" rotationRate="38" />
-    <Model position="946,11917,5191" scale="109" mesh="ast5.mesh" rotationAxis="0.495949,0,0.243745" rotationRate="20" />
-    <Model position="7633,-4709,8785" scale="77" mesh="ast2.mesh" rotationAxis="0.167179,0,0.393167" rotationRate="10" />
-    <Model position="-19647,-5229,19334" scale="48" mesh="ast6.mesh" rotationAxis="0.358825,0.560023,0" rotationRate="20" />
-    <Model position="-17999,8929,-15681" scale="112" mesh="ast3.mesh" rotationAxis="0,0.243106,0.553743" rotationRate="37" />
-    <Model position="8866,-1606,7639" scale="23" mesh="ast4.mesh" rotationAxis="0,0.605223,0.587725" rotationRate="31" />
-    <Model position="-11575,15941,-9048" scale="32" mesh="ast4.mesh" rotationAxis="0.0341828,0.453673,0" rotationRate="45" />
-    <Model position="13969,15246,-7756" scale="109" mesh="ast5.mesh" rotationAxis="0.755033,0,0.296033" rotationRate="20" />
-    <Model position="-2325,19875,-19124" scale="86" mesh="ast2.mesh" rotationAxis="0.966503,0.242477,0" rotationRate="12" />
-    <Model position="10304,19403,4335" scale="77" mesh="ast4.mesh" rotationAxis="0,0.00236773,0.681625" rotationRate="47" />
-    <Model position="18514,-3055,13163" scale="78" mesh="ast5.mesh" rotationAxis="0,0.515333,0.653287" rotationRate="43" />
-    <Model position="5789,11308,15861" scale="37" mesh="ast5.mesh" rotationAxis="0,0.382628,0.808718" rotationRate="45" />
-    <Model position="-2178,6872,18230" scale="77" mesh="ast2.mesh" rotationAxis="0.297912,0,0.219303" rotationRate="31" />
-    <Model position="7070,-4542,19838" scale="105" mesh="ast5.mesh" rotationAxis="0.687377,0.740396,0" rotationRate="22" />
-    <Model position="-12823,16872,9832" scale="58" mesh="ast1.mesh" rotationAxis="0.58246,0,0.787929" rotationRate="20" />
-    <Model position="2918,6409,8922" scale="68" mesh="ast1.mesh" rotationAxis="0.17433,0,0.826748" rotationRate="39" />
-    <Model position="-8622,5979,-8353" scale="36" mesh="ast5.mesh" rotationAxis="0.0687289,0.268192,0" rotationRate="46" />
-    <Model position="5979,-7415,3301" scale="31" mesh="ast6.mesh" rotationAxis="0,0.0143773,0.425826" rotationRate="46" />
-    <Model position="-7788,19257,6317" scale="106" mesh="ast2.mesh" rotationAxis="0,0.266194,0.403447" rotationRate="39" />
-    <Model position="12192,-12550,8480" scale="60" mesh="ast1.mesh" rotationAxis="0,0.734682,0.846663" rotationRate="25" />
-    <Model position="440,17184,-7600" scale="113" mesh="ast4.mesh" rotationAxis="0.449652,0,0.149964" rotationRate="24" />
-    <Model position="-12127,-16899,-8417" scale="110" mesh="ast6.mesh" rotationAxis="0,0.650716,0.368006" rotationRate="11" />
-    <Model position="-9670,-7112,18003" scale="30" mesh="ast5.mesh" rotationAxis="0,0.139076,0.954704" rotationRate="14" />
-    <Model position="-12697,177,7300" scale="75" mesh="ast3.mesh" rotationAxis="0.266301,0.479015,0" rotationRate="42" />
-    <Model position="8585,-11163,10773" scale="88" mesh="ast4.mesh" rotationAxis="0.466253,0,0.430903" rotationRate="47" />
-    <Model position="11710,-10481,-1554" scale="86" mesh="ast1.mesh" rotationAxis="0,0.964012,0.587305" rotationRate="35" />
-    <Model position="-2643,-17331,-997" scale="77" mesh="ast1.mesh" rotationAxis="0.156293,0,0.663295" rotationRate="39" />
-    <Model position="19531,-19531,-12541" scale="24" mesh="ast2.mesh" rotationAxis="0,0.848482,0.338155" rotationRate="17" />
-    <Model position="7408,8762,3078" scale="26" mesh="ast5.mesh" rotationAxis="0.993064,0.489089,0" rotationRate="21" />
-    <Model position="-14555,8711,8121" scale="20" mesh="ast6.mesh" rotationAxis="0.831339,0,0.151149" rotationRate="32" />
-    <Model position="13295,-1765,5131" scale="26" mesh="ast1.mesh" rotationAxis="0,0.357794,0.743133" rotationRate="30" />
-    <Model position="-19884,7732,-1186" scale="115" mesh="ast3.mesh" rotationAxis="0.958775,0,0.669833" rotationRate="23" />
-    <Model position="18179,-17940,-19923" scale="20" mesh="ast5.mesh" rotationAxis="0.878644,0,0.217331" rotationRate="44" />
-    <Model position="300,-9529,2789" scale="51" mesh="ast3.mesh" rotationAxis="0.54208,0,0.14456" rotationRate="37" />
-    <Model position="14279,-9293,-11689" scale="114" mesh="ast3.mesh" rotationAxis="0,0.601114,0.645571" rotationRate="33" />
-    <Model position="-14721,-14492,-18237" scale="76" mesh="ast3.mesh" rotationAxis="0.261656,0.207217,0" rotationRate="28" />
-    <Model position="-1436,16914,6450" scale="73" mesh="ast1.mesh" rotationAxis="0.0323497,0,0.291569" rotationRate="28" />
-    <Model position="19533,5238,-16963" scale="65" mesh="ast5.mesh" rotationAxis="0.0116926,0.373665,0" rotationRate="18" />
-    <Model position="13828,8837,-12011" scale="111" mesh="ast5.mesh" rotationAxis="0,0.153227,0.382767" rotationRate="22" />
-    <Model position="-18321,8723,2799" scale="49" mesh="ast6.mesh" rotationAxis="0.96622,0.89771,0" rotationRate="30" />
-    <Model position="-15854,16336,11058" scale="103" mesh="ast2.mesh" rotationAxis="0.0964953,0,0.375937" rotationRate="27" />
-    <Model position="-18187,-9952,-18073" scale="22" mesh="ast6.mesh" rotationAxis="0.61819,0.17807,0" rotationRate="33" />
-    <Model position="-15558,-3796,17538" scale="113" mesh="ast2.mesh" rotationAxis="0.384199,0,0.383805" rotationRate="15" />
-    <Model position="1366,12633,14581" scale="97" mesh="ast6.mesh" rotationAxis="0.930072,0,0.824122" rotationRate="22" />
-    <Model position="-17562,12612,-2860" scale="85" mesh="ast1.mesh" rotationAxis="0.872863,0,0.10971" rotationRate="45" />
-    <Model position="-6467,11186,272" scale="43" mesh="ast4.mesh" rotationAxis="0,0.12058,0.8878" rotationRate="32" />
-    <Model position="-9182,-5778,-18432" scale="72" mesh="ast4.mesh" rotationAxis="0,0.317,0.972754" rotationRate="28" />
-    <Model position="-2685,2227,-7017" scale="75" mesh="ast1.mesh" rotationAxis="0.00795897,0.859802,0" rotationRate="13" />
-    <Model position="202,2704,7869" scale="94" mesh="ast5.mesh" rotationAxis="0,0.0867517,0.971227" rotationRate="49" />
-    <Model position="3157,2393,4862" scale="45" mesh="ast2.mesh" rotationAxis="0.143034,0,0.945654" rotationRate="46" />
-    <Model position="17734,11752,-2817" scale="37" mesh="ast3.mesh" rotationAxis="0.380276,0,0.284309" rotationRate="16" />
-    <Model position="5533,9168,-2009" scale="23" mesh="ast5.mesh" rotationAxis="0,0.59324,0.275897" rotationRate="28" />
-    <Model position="-5583,14555,-13629" scale="99" mesh="ast2.mesh" rotationAxis="0.246217,0,0.279914" rotationRate="12" />
-    <Model position="5755,18319,-13966" scale="111" mesh="ast1.mesh" rotationAxis="0.945343,0.981593,0" rotationRate="19" />
-    <Model position="-506,19330,10258" scale="57" mesh="ast2.mesh" rotationAxis="0.156282,0.449472,0" rotationRate="28" />
-    <Model position="-18180,10800,-19387" scale="111" mesh="ast4.mesh" rotationAxis="0,0.138856,0.558955" rotationRate="46" />
-    <Model position="-19442,9153,6667" scale="65" mesh="ast3.mesh" rotationAxis="0.496782,0,0.891285" rotationRate="18" />
-    <Model position="-1991,12109,-18981" scale="39" mesh="ast1.mesh" rotationAxis="0.251609,0.291046,0" rotationRate="16" />
-    <Model position="3016,6118,758" scale="102" mesh="ast4.mesh" rotationAxis="0.0817345,0.394506,0" rotationRate="36" />
-    <Model position="-5930,6728,8780" scale="57" mesh="ast6.mesh" rotationAxis="0.266048,0.376193,0" rotationRate="19" />
-    <Model position="-747,-11495,13870" scale="44" mesh="ast3.mesh" rotationAxis="0.414018,0,0.750772" rotationRate="21" />
-    <Model position="305,-7504,9849" scale="83" mesh="ast1.mesh" rotationAxis="0.984976,0,0.0811671" rotationRate="25" />
-    <Model position="4685,-10642,-2497" scale="85" mesh="ast6.mesh" rotationAxis="0.415558,0.751553,0" rotationRate="27" />
-    <Model position="17354,16699,2394" scale="44" mesh="ast1.mesh" rotationAxis="0.693572,0.147356,0" rotationRate="35" />
-    <Model position="9192,-17477,-14279" scale="61" mesh="ast2.mesh" rotationAxis="0.461486,0,0.928585" rotationRate="41" />
-    <Model position="8023,-15706,-19451" scale="98" mesh="ast6.mesh" rotationAxis="0,0.000410601,0.90886" rotationRate="23" />
-    <Model position="-4958,16296,-4095" scale="109" mesh="ast1.mesh" rotationAxis="0.533062,0,0.249216" rotationRate="47" />
-    <Model position="843,16586,-13247" scale="36" mesh="ast6.mesh" rotationAxis="0,0.594639,0.732396" rotationRate="38" />
-    <Model position="19074,8315,17723" scale="95" mesh="ast2.mesh" rotationAxis="0.966402,0,0.119558" rotationRate="44" />
-    <Model position="-12490,734,18210" scale="35" mesh="ast4.mesh" rotationAxis="0.0976298,0.455641,0" rotationRate="24" />
-    <Model position="-11940,6896,-17968" scale="33" mesh="ast1.mesh" rotationAxis="0,0.77757,0.432964" rotationRate="39" />
-    <Model position="-2941,-2680,-17184" scale="54" mesh="ast2.mesh" rotationAxis="0.350042,0,0.659718" rotationRate="22" />
-    <Model position="-9114,5177,-14254" scale="69" mesh="ast1.mesh" rotationAxis="0.65862,0.380363,0" rotationRate="27" />
-    <Model position="-7909,1216,-6815" scale="44" mesh="ast2.mesh" rotationAxis="0,0.031546,0.392351" rotationRate="31" />
-    <Model position="1091,-3609,53" scale="27" mesh="ast1.mesh" rotationAxis="0.702045,0.669888,0" rotationRate="17" />
-    <Model position="8211,-10441,-7536" scale="30" mesh="ast3.mesh" rotationAxis="0,0.792689,0.311823" rotationRate="17" />
-    <Model position="1533,8849,17655" scale="38" mesh="ast6.mesh" rotationAxis="0,0.742122,0.71549" rotationRate="49" />
-    <Model position="6546,-5931,9791" scale="71" mesh="ast1.mesh" rotationAxis="0.373001,0,0.854548" rotationRate="47" />
-    <Model position="14884,-14921,13589" scale="20" mesh="ast4.mesh" rotationAxis="0,0.874073,0.518839" rotationRate="28" />
-    <Model position="-4888,1727,-581" scale="40" mesh="ast1.mesh" rotationAxis="0,0.612156,0.58926" rotationRate="49" />
-    <Model position="16617,1806,15260" scale="28" mesh="ast1.mesh" rotationAxis="0.437493,0,0.353516" rotationRate="27" />
-    <Model position="17792,4774,-5272" scale="101" mesh="ast3.mesh" rotationAxis="0,0.916476,0.853167" rotationRate="46" />
-    <Model position="12856,255,-5396" scale="47" mesh="ast6.mesh" rotationAxis="0,0.18605,0.637593" rotationRate="26" />
-    <Model position="-17573,-12764,13494" scale="107" mesh="ast5.mesh" rotationAxis="0.573851,0,0.982895" rotationRate="16" />
-    <Model position="19722,-1137,-18060" scale="71" mesh="ast5.mesh" rotationAxis="0.273151,0.392637,0" rotationRate="34" />
-    <Model position="12155,-1739,-17329" scale="31" mesh="ast2.mesh" rotationAxis="0,0.891737,0.832436" rotationRate="22" />
-    <Model position="-4996,-11586,-15279" scale="119" mesh="ast2.mesh" rotationAxis="0,0.123074,0.209338" rotationRate="16" />
-    <Model position="-13104,865,-611" scale="57" mesh="ast3.mesh" rotationAxis="0.393178,0,0.345322" rotationRate="18" />
-    <Model position="15005,-9877,15622" scale="97" mesh="ast1.mesh" rotationAxis="0,0.152896,0.0210835" rotationRate="25" />
-    <Model position="17583,9888,16829" scale="76" mesh="ast2.mesh" rotationAxis="0,0.947973,0.28026" rotationRate="15" />
-    <Model position="-5279,15909,15382" scale="82" mesh="ast1.mesh" rotationAxis="0,0.499884,0.773145" rotationRate="18" />
-    <Model position="-5938,14646,17243" scale="56" mesh="ast6.mesh" rotationAxis="0,0.0967167,0.348338" rotationRate="16" />
-    <Model position="19518,17215,-1274" scale="119" mesh="ast1.mesh" rotationAxis="0.223859,0,0.252346" rotationRate="44" />
-    <Model position="-16237,-17619,-6745" scale="65" mesh="ast6.mesh" rotationAxis="0.0241466,0.491285,0" rotationRate="39" />
-    <Model position="12763,1468,-3165" scale="78" mesh="ast3.mesh" rotationAxis="0.800474,0.278164,0" rotationRate="37" />
-    <Model position="13946,-7517,13683" scale="92" mesh="ast1.mesh" rotationAxis="0.142206,0.894399,0" rotationRate="40" />
-    <Model position="-5491,-1084,-11117" scale="84" mesh="ast2.mesh" rotationAxis="0.174864,0,0.298694" rotationRate="14" />
-    <Model position="2799,9189,7344" scale="54" mesh="ast3.mesh" rotationAxis="0.330476,0.71494,0" rotationRate="31" />
-    <Model position="-18445,-17042,3296" scale="110" mesh="ast6.mesh" rotationAxis="0,0.320011,0.644437" rotationRate="20" />
-    <Model position="-15377,5559,-12082" scale="26" mesh="ast4.mesh" rotationAxis="0,0.451157,0.102375" rotationRate="20" />
-    <Model position="-2331,-14260,17200" scale="85" mesh="ast5.mesh" rotationAxis="0.0446891,0.515642,0" rotationRate="37" />
-    <Model position="-9613,-4258,4537" scale="103" mesh="ast1.mesh" rotationAxis="0.820812,0.60695,0" rotationRate="13" />
-    <Model position="-6169,19264,-4878" scale="69" mesh="ast3.mesh" rotationAxis="0,0.585115,0.235653" rotationRate="32" />
-    <Model position="8717,-16685,9115" scale="37" mesh="ast4.mesh" rotationAxis="0.0512168,0.899599,0" rotationRate="15" />
-    <Model position="18826,17155,4947" scale="84" mesh="ast4.mesh" rotationAxis="0.204495,0,0.838098" rotationRate="48" />
-    <Model position="7971,3645,-9858" scale="65" mesh="ast3.mesh" rotationAxis="0.348379,0,0.384062" rotationRate="19" />
-    <Model position="9202,8689,-6795" scale="37" mesh="ast4.mesh" rotationAxis="0.826781,0,0.641626" rotationRate="40" />
-    <Model position="-12115,6664,5786" scale="105" mesh="ast1.mesh" rotationAxis="0.794331,0.43244,0" rotationRate="40" />
-    <Model position="17142,15709,-8725" scale="57" mesh="ast5.mesh" rotationAxis="0,0.561188,0.300935" rotationRate="36" />
-    <Model position="1991,-11949,-15733" scale="68" mesh="ast1.mesh" rotationAxis="0,0.390655,0.623811" rotationRate="41" />
-    <Model position="-6787,1792,287" scale="71" mesh="ast6.mesh" rotationAxis="0.161019,0.130015,0" rotationRate="36" />
-    <Model position="-7223,-13574,-11873" scale="24" mesh="ast4.mesh" rotationAxis="0.792203,0,0.177188" rotationRate="38" />
+<?lua
+for i = 1, 226, 1 
+do ?>
+  <Model position="<?lua print(math.random(-19597, 18732))?>, <?lua print(math.random(-19597, 18732)) ?>, <?lua print(math.random(-19597, 18732)) ?>" scale="<?lua print(math.random( 20, 119)) ?>" mesh="ast<?lua print(i%6 + 1) ?>.mesh" rotationAxis="<?lua print(math.random()) ?>, <?lua print(math.random()) ?>, <?lua print(math.random()) ?>" rotationRate="<?lua print(math.random(16, 44)) ?>" />
+<?lua 
+end
+?>
Index: code/trunk/bin/plugins.cfg-init
===================================================================
--- code/trunk/bin/plugins.cfg-init	(revision 1020)
+++ code/trunk/bin/plugins.cfg-init	(revision 1021)
@@ -2,5 +2,5 @@
 
 # Define plugin folder
-PluginFolder=/usr/lib/OGRE
+PluginFolder=/usr/local/lib/OGRE
 
 # Define plugins
Index: code/trunk/cmake/FindLua.cmake
===================================================================
--- code/trunk/cmake/FindLua.cmake	(revision 1021)
+++ code/trunk/cmake/FindLua.cmake	(revision 1021)
@@ -0,0 +1,61 @@
+# Find Lua includes and library
+#
+# This module defines
+#  Lua_INCLUDE_DIR
+#  Lua_LIBRARIES, the libraries to link against to use Lua.
+#  Lua_LIB_DIR, the location of the libraries
+#  Lua_FOUND, If false, do not try to use Lua
+#
+# Copyright © 2007, Matt Williams
+#
+# Redistribution and use is allowed according to the terms of the BSD license.
+
+IF (Lua_LIBRARIES AND Lua_INCLUDE_DIR)
+    SET(Lua_FIND_QUIETLY TRUE) # Already in cache, be silent
+ENDIF (Lua_LIBRARIES AND Lua_INCLUDE_DIR)
+
+FIND_PATH(Lua_INCLUDE_DIR lua.h
+	/usr/include/lua5.1
+	/usr/local/include/lua5.1)
+
+FIND_LIBRARY(Lua_LIBRARIES lua5.1
+	/usr/lib
+	/usr/local/lib)
+
+IF (NOT Lua_INCLUDE_DIR)
+FIND_PATH(Lua_INCLUDE_DIR lua.h
+	/usr/include/lua50
+	/usr/local/include/lua50
+	/usr/pack/lua-5.0.3-sd/include/)
+ENDIF (NOT Lua_INCLUDE_DIR)
+MESSAGE(STATUS ${Lua_INCLUDE_DIR})
+
+IF (NOT Lua_LIBRARIES)
+FIND_LIBRARY(Lua_LIBRARIES lua50 lua
+	/usr/lib
+	/usr/local/lib
+	/usr/pack/lua-5.0.3-sd/i686-debian-linux3.1/lib/)
+
+FIND_LIBRARY(Lua_LIBRARY lualib50 lualib
+	/usr/lib
+	/usr/local/lib
+	/usr/pack/lua-5.0.3-sd/i686-debian-linux3.1/lib/)
+
+MESSAGE(STATUS ${Lua_LIBRARY})
+MESSAGE(STATUS ${Lua_LIBRARIES})
+
+SET(Lua_LIBRARIES ${Lua_LIBRARIES} ${Lua_LIBRARY})
+
+ENDIF (NOT Lua_LIBRARIES)
+
+IF (Lua_INCLUDE_DIR AND Lua_LIBRARIES)
+    SET(Lua_FOUND TRUE)
+ENDIF (Lua_INCLUDE_DIR AND Lua_LIBRARIES)
+
+IF (Lua_FOUND)
+    MESSAGE(STATUS "Found Lua: ${Lua_LIBRARIES}")
+ELSE (Lua_FOUND)
+    IF (Lua_FIND_REQUIRED)
+        MESSAGE(FATAL_ERROR "Could not find Lua")
+    ENDIF (Lua_FIND_REQUIRED)
+ENDIF (Lua_FOUND)
Index: code/trunk/src/audio/AudioManager.cc
===================================================================
--- code/trunk/src/audio/AudioManager.cc	(revision 1020)
+++ code/trunk/src/audio/AudioManager.cc	(revision 1021)
@@ -42,5 +42,5 @@
 	AudioManager::~AudioManager()
 	{
-		for (unsigned int i=0;i<=bgSounds.size();i++)
+		for (unsigned int i=0;i<bgSounds.size();i++)
 		{
 			bgSounds[i].release();
@@ -84,5 +84,5 @@
 	}
 
-	void AudioManager::update()
+	void AudioManager::tick(float dt)
 	{
 		if (bgSounds.size() > 0)
Index: code/trunk/src/audio/AudioManager.h
===================================================================
--- code/trunk/src/audio/AudioManager.h	(revision 1020)
+++ code/trunk/src/audio/AudioManager.h	(revision 1021)
@@ -3,4 +3,6 @@
 
 #include "AudioIncludes.h"
+
+#include "core/Tickable.h"
 
 #include "AudioPrereqs.h"
@@ -12,5 +14,5 @@
 namespace audio
 {
-	class _AudioExport AudioManager
+  class _AudioExport AudioManager : public orxonox::Tickable
 	{
 	public:
@@ -37,5 +39,5 @@
 
 		// Update
-		void update();
+		void tick(float dt);
 
 		void ambientAdd(std::string file);
Index: code/trunk/src/network/Client.cc
===================================================================
--- code/trunk/src/network/Client.cc	(revision 1020)
+++ code/trunk/src/network/Client.cc	(revision 1021)
@@ -184,5 +184,5 @@
     while(!(client_connection.queueEmpty())){
       packet = client_connection.getPacket();
-      //std::cout << "tick packet size " << packet->dataLength << std::endl;
+      COUT(5) << "tick packet size " << packet->dataLength << std::endl;
       elaborate(packet, 0); // ================= i guess we got to change this .... (client_ID is always same = server)
     }
@@ -191,7 +191,8 @@
 
   void Client::processGamestate( GameStateCompressed *data){
+    int id = data->id;
+    COUT(5) << "received gamestate id: " << data->id << std::endl;
     gamestate.pushGameState(data);
-    std::cout << "received gamestate id: " << data->id << std::endl;
-    client_connection.addPacket(pck_gen.acknowledgement(data->id));
+    client_connection.addPacket(pck_gen.acknowledgement(id));
     client_connection.sendPackets();
     return;
@@ -203,9 +204,10 @@
     if(id!=NULL)
       id->setNetworkID(clid->clid);
+    COUT(4) << "received and set network id: " << clid->clid << "; classname: " << clid->message << std::endl;
     return;
   }
 
   void Client::processChat( chat *data){
-    std::cout << "Server: " << data->message << std::endl;
+    COUT(0) << "Server: " << data->message << std::endl;
   }
 
Index: code/trunk/src/network/Client.h
===================================================================
--- code/trunk/src/network/Client.h	(revision 1020)
+++ code/trunk/src/network/Client.h	(revision 1021)
@@ -17,8 +17,11 @@
 
 #include "NetworkPrereqs.h"
+
+#include "core/Tickable.h"
 #include "ClientConnection.h"
 #include "PacketManager.h"
 #include "GameStateClient.h"
 //#include "NetworkFrameListener.h"
+
 
 
@@ -32,5 +35,5 @@
   *
   */
-  class _NetworkExport Client : PacketDecoder{
+  class _NetworkExport Client : PacketDecoder, public orxonox::Tickable{
   public:
     Client();
Index: code/trunk/src/network/ClientConnection.cc
===================================================================
--- code/trunk/src/network/ClientConnection.cc	(revision 1020)
+++ code/trunk/src/network/ClientConnection.cc	(revision 1021)
@@ -43,4 +43,5 @@
 
 #include "util/Sleep.h"
+#include "orxonox/core/Debug.h"
 #include "ClientConnection.h"
 
@@ -159,5 +160,5 @@
       case ENET_EVENT_TYPE_CONNECT:
       case ENET_EVENT_TYPE_RECEIVE:
-        //std::cout << "got packet" << std::endl;
+        COUT(5) << "receiver-Thread: got new packet" << std::endl;
         processData(&event);
         break;
@@ -215,5 +216,5 @@
 
   bool ClientConnection::processData(ENetEvent *event) {
-    //std::cout << "got packet, pushing to queue" << std::endl;
+    COUT(5) << "got packet, pushing to queue" << std::endl;
     // just add packet to the buffer
     // this can be extended with some preprocessing
Index: code/trunk/src/network/ConnectionManager.cc
===================================================================
--- code/trunk/src/network/ConnectionManager.cc	(revision 1020)
+++ code/trunk/src/network/ConnectionManager.cc	(revision 1021)
@@ -257,27 +257,53 @@
 
   void ConnectionManager::syncClassid(int clientID) {
-    int i=0;
+    unsigned int network_id=0;
     std::string classname;
-    bool abort=false;
     orxonox::Identifier *id;
-    while(!abort){
-      id = ID(i);
-      std::cout << "syncid: " << i << ", ID(id): " << id << std::endl;
-      if(id == NULL){
-        if(i!=0)
-          abort=true;
-        else{
-          ++i;
-          continue;
-        }
-      }
-      else{
-        classname = id->getName();
-        addPacket(packet_gen.clid( i, classname ),clientID);
-      }
-      ++i;
+    std::map<std::string, orxonox::Identifier*>::const_iterator it = orxonox::Factory::getFactoryBegin();
+    while(it != orxonox::Factory::getFactoryEnd()){
+      id = (*it).second;
+      if(id == NULL)
+        continue;
+      classname = id->getName();
+      network_id = id->getNetworkID();
+      COUT(4) << "network_id: " << network_id << ", classname: " << classname << std::endl;
+      
+      addPacket(packet_gen.clid( (int)network_id, classname ), clientID);
+      
+      ++it;
     }
     sendPackets();
   }
 
+  
+  
+  void ConnectionManager::addClientsObjectID( int clientID, int objectID ) {
+    COUT(4) << "ship of client: " << clientID << ": " << objectID << " mapped" << std::endl;
+    clientsShip.insert( std::make_pair( clientID, objectID ) );
+  }
+
+  int ConnectionManager::getClientsShipID( int clientID ) {
+    return clientsShip[clientID];
+  }
+
+  int ConnectionManager::getObjectsClientID( int objectID ) {
+    std::map<int, int>::iterator iter = clientsShip.begin();
+    while( iter != clientsShip.end() ) {
+      if( iter->second == objectID ) return iter->first;
+    }
+    return -99;
+  }
+
+  void ConnectionManager::deleteClientIDReg( int clientID ) {
+    clientsShip.erase( clientID );
+  }
+
+  void ConnectionManager::deleteObjectIDReg( int objectID ) {
+    std::map<int, int>::iterator iter = clientsShip.begin();
+    while( iter != clientsShip.end() ) {
+      if( iter->second == objectID ) break; 
+    }
+    clientsShip.erase( iter->first );
+  }
+  
 }
Index: code/trunk/src/network/ConnectionManager.h
===================================================================
--- code/trunk/src/network/ConnectionManager.h	(revision 1020)
+++ code/trunk/src/network/ConnectionManager.h	(revision 1021)
@@ -14,4 +14,5 @@
 
 #include <string>
+#include <map>
 // enet library for networking support
 #include <enet/enet.h>
@@ -73,4 +74,12 @@
     bool quit; // quit-variable (communication with threads)
     ClientInformation *head_;
+    
+    //functions to map what object every clients uses
+    std::map<int, int> clientsShip;
+    void addClientsObjectID( int clientID, int objectID );
+    int getClientsShipID( int clientID );
+    int getObjectsClientID( int objectID );
+    void deleteClientIDReg( int clientID );
+    void deleteObjectIDReg( int objectID );
   };
 
Index: code/trunk/src/network/GameStateClient.cc
===================================================================
--- code/trunk/src/network/GameStateClient.cc	(revision 1020)
+++ code/trunk/src/network/GameStateClient.cc	(revision 1021)
@@ -40,8 +40,13 @@
 
   bool GameStateClient::pushGameState(GameStateCompressed *compstate) {
+    GameState *gs;
     if(compstate->diffed)
-      return loadSnapshot(decode(reference, *compstate));
+      gs = decode(reference, compstate);
     else
-      return loadSnapshot(decode(*compstate));
+      gs = decode(compstate);
+    if(gs)
+      return loadSnapshot(gs);
+    COUT(4) << "could not use gamestate sent by server" << std::endl;
+    return false;
   }
 
@@ -61,12 +66,12 @@
   * @param state a GameState struct containing the size of the gamestate and a pointer linking to a flat list (returned by getSnapshot)
   */
-  bool GameStateClient::loadSnapshot(GameState state) {
-    unsigned char *data=state.data;
-    std::cout << "loadSnapshot: loading gs: " << state.id << std::endl;
+  bool GameStateClient::loadSnapshot(GameState *state) {
+    unsigned char *data=state->data;
+    COUT(4) << "loadSnapshot: loading gs: " << state->id << std::endl;
     // get the start of the Synchronisable list
     orxonox::Iterator<Synchronisable> it=orxonox::ObjectList<Synchronisable>::start();
     syncData sync;
     // loop as long as we have some data ;)
-    while(data < state.data+state.size){
+    while(data < state->data+state->size){
       // prepare the syncData struct
       sync.length = (int)*data;
@@ -82,10 +87,11 @@
         // bad luck ;)
         // delete the synchronisable (obviously seems to be deleted on the server)
-        while(it && it->objectID!=sync.objectID){
+        while(it && it->objectID!=sync.objectID)
           removeObject(it);
-        }
-        if(it==0){
-          std::cout << "classid: " << sync.classID << ", name: " << ID(sync.classID)->getName() << std::endl;
-          Synchronisable *no = (Synchronisable*)(ID(sync.classID)->fabricate());
+        
+        
+        if(!it){
+          COUT(5) << "classid: " << sync.classID << ", name: " << ID((unsigned int) sync.classID)->getName() << std::endl;
+          Synchronisable *no = (Synchronisable*)(ID((unsigned int) sync.classID)->fabricate());
           no->objectID=sync.objectID;
           no->classID=sync.classID;
@@ -93,5 +99,5 @@
           // update data and create object/entity...
           if( !no->updateData(sync) && !no->create() )
-            COUT(0) << "We couldn't create/update the object: " << sync.objectID << std::endl;
+            COUT(1) << "We couldn't create/update the object: " << sync.objectID << std::endl;
           ++it;
         }
@@ -99,5 +105,5 @@
         // we have our object
         if(! it->updateData(sync))
-          std::cout << "We couldn't update objectID: " \
+          COUT(1) << "We couldn't update objectID: " \
           << sync.objectID << "; classID: " << sync.classID << std::endl;
       }
@@ -108,20 +114,20 @@
   }
 
-  GameState GameStateClient::diff(GameState a, GameState b) {
-    unsigned char *ap = a.data, *bp = b.data;
+  GameState *GameStateClient::undiff(GameState *a, GameState *b) {
+    unsigned char *ap = a->data, *bp = b->data;
     int of=0; // pointers offset
     int dest_length=0;
-    if(a.size>=b.size)
-      dest_length=a.size;
+    if(a->size>=b->size)
+      dest_length=a->size;
     else
-      dest_length=b.size;
+      dest_length=b->size;
     unsigned char *dp = (unsigned char *)malloc(dest_length*sizeof(unsigned char));
-    while(of<a.size && of<b.size){
+    while(of<a->size && of<b->size){
       *(dp+of)=*(ap+of)^*(bp+of); // do the xor
       ++of;
     }
-    if(a.size!=b.size){ // do we have to fill up ?
+    if(a->size!=b->size){ // do we have to fill up ?
       unsigned char n=0;
-      if(a.size<b.size){
+      if(a->size<b->size){
         while(of<dest_length){
           *(dp+of)=n^*(bp+of);
@@ -137,11 +143,15 @@
     // should be finished now
     // FIXME: is it true or false now? (struct has changed, producing warnings)
-    GameState r = {b.id, dest_length, true, dp};
+    GameState *r = new GameState;
+    r->id = b->id;
+    r->size = dest_length;
+    r->diffed = false;
+    r->data = dp;
     return r;
   }
 
-  GameState GameStateClient::decompress(GameStateCompressed a) {
-    int normsize = a.normsize;
-    int compsize = a.compsize;
+  GameState *GameStateClient::decompress(GameStateCompressed *a) {
+    int normsize = a->normsize;
+    int compsize = a->compsize;
     int bufsize;
     if(normsize < compsize)
@@ -154,29 +164,32 @@
     //std::cout << "gamestateclient" << std::endl;
     //std::cout << "normsize " << a.normsize << " compsize " << a.compsize << " " << bufsize << std::endl;
-    retval = uncompress( dest, &length, a.data, (uLong)compsize );
+    retval = uncompress( dest, &length, a->data, (uLong)compsize );
     //std::cout << "length " << length << std::endl;
     switch ( retval ) {
-      case Z_OK: std::cout << "successfully decompressed" << std::endl; break;
-      case Z_MEM_ERROR: std::cout << "not enough memory available" << std::endl; break;
-      case Z_BUF_ERROR: std::cout << "not enough memory available in the buffer" << std::endl; break;
-      case Z_DATA_ERROR: std::cout << "data corrupted" << std::endl; break;
+      case Z_OK: COUT(4) << "successfully decompressed" << std::endl; break;
+      case Z_MEM_ERROR: COUT(1) << "not enough memory available" << std::endl; return NULL;
+      case Z_BUF_ERROR: COUT(2) << "not enough memory available in the buffer" << std::endl; return NULL;
+      case Z_DATA_ERROR: COUT(2) << "data corrupted" << std::endl; return NULL;
     }
 
-    GameState gamestate;
-    gamestate.id = a.id;
-    gamestate.size = normsize;
-    gamestate.data = dest;
-    gamestate.diffed = a.diffed;
+    GameState *gamestate = new GameState;
+    gamestate->id = a->id;
+    gamestate->size = normsize;
+    gamestate->data = dest;
+    gamestate->diffed = a->diffed;
+    
+    delete a->data; //delete compressed data
+    delete a; //we do not need the old (struct) gamestate anymore
 
     return gamestate;
   }
 
-  GameState GameStateClient::decode(GameState a, GameStateCompressed x) {
-    GameState t = decompress(x);
-    return diff(a, t);
+  GameState *GameStateClient::decode(GameState *a, GameStateCompressed *x) {
+    GameState *t = decompress(x);
+    return undiff(a, t);
   }
 
-  GameState GameStateClient::decode(GameStateCompressed x) {
-    GameState t = decompress(x);
+  GameState *GameStateClient::decode(GameStateCompressed *x) {
+    GameState *t = decompress(x);
     return t;
   }
Index: code/trunk/src/network/GameStateClient.h
===================================================================
--- code/trunk/src/network/GameStateClient.h	(revision 1020)
+++ code/trunk/src/network/GameStateClient.h	(revision 1021)
@@ -25,12 +25,12 @@
     bool pushGameState(GameStateCompressed *compstate);
   private:
-    bool loadSnapshot(GameState state);
-    GameState diff(GameState a, GameState b);
-    GameState decompress(GameStateCompressed a);
-    GameState decode(GameState a, GameStateCompressed x);
-    GameState decode(GameStateCompressed x);
+    bool loadSnapshot(GameState *state);
+    GameState *undiff(GameState *a, GameState *b);
+    GameState *decompress(GameStateCompressed *a);
+    GameState *decode(GameState *a, GameStateCompressed *x);
+    GameState *decode(GameStateCompressed *x);
     void removeObject(orxonox::Iterator<Synchronisable> &it);
 
-    GameState reference;
+    GameState *reference;
   };
 
Index: code/trunk/src/network/GameStateManager.cc
===================================================================
--- code/trunk/src/network/GameStateManager.cc	(revision 1020)
+++ code/trunk/src/network/GameStateManager.cc	(revision 1021)
@@ -43,4 +43,5 @@
 
 #include "core/CoreIncludes.h"
+
 #include "ClientInformation.h"
 #include "Synchronisable.h"
@@ -65,7 +66,7 @@
   }
 
-  GameStateCompressed GameStateManager::popGameState(int clientID) {
+  GameStateCompressed *GameStateManager::popGameState(int clientID) {
     int gID = head_->findClient(clientID)->getGamestateID();
-    std::cout << "popgamestate: sending gstate id: " << id << "diffed from: " << gID << std::endl;
+    COUT(4) << "popgamestate: sending gstate id: " << id << "diffed from: " << gID << std::endl;
     if(gID!=GAMESTATEID_INITIAL){
       GameState *client = gameStateMap[gID];
@@ -100,9 +101,9 @@
     GameState *retval=new GameState; //return value
     retval->id=id++;
-    std::cout << "producing gamestate with id: " << retval->id << std::endl;
+    COUT(4) << "producing gamestate with id: " << retval->id << std::endl;
     // reserve a little memory and increase it later on
-    //COUT(2) << "mallocing" << std::endl;
+    COUT(5) << "mallocing" << std::endl;
     retval->data = (unsigned char*)malloc(memsize);
-    //COUT(2) << "malloced" << std::endl;
+    COUT(5) << "malloced" << std::endl;
 
     // offset of memory functions
@@ -113,5 +114,5 @@
       //get size of the synchronisable
       tempsize=it->getSize();
-      //std::cout << "size of temp gamestate: " << tempsize << std::endl;
+//       COUT(5) << "size of temp gamestate: " << tempsize << std::endl;
       //COUT(2) << "size of synchronisable: " << tempsize << std::endl;
       // add place for data and 3 ints (length,classid,objectid)
@@ -137,22 +138,23 @@
       offset+=tempsize+3*sizeof(int);
     }
+    COUT(5) << "Gamestate size: " << totalsize << std::endl;
     retval->size=totalsize;
     return retval;
   }
 
-  GameStateCompressed GameStateManager::encode(GameState *a, GameState *b) {
+  GameStateCompressed *GameStateManager::encode(GameState *a, GameState *b) {
     //GameState r = diff(a,b);
     //r.diffed = true;
-    GameState r = *b;
-    r.diffed = false;
-    return compress_(&r);
-  }
-
-  GameStateCompressed GameStateManager::encode(GameState *a) {
+    GameState *r = b;
+    r->diffed = false;
+    return compress_(r);
+  }
+
+  GameStateCompressed *GameStateManager::encode(GameState *a) {
     a->diffed=false;
     return compress_(a);
   }
 
-  GameState GameStateManager::diff(GameState *a, GameState *b) {
+  GameState *GameStateManager::diff(GameState *a, GameState *b) {
     unsigned char *ap = a->data, *bp = b->data;
     int of=0; // pointers offset
@@ -181,12 +183,15 @@
       }
     }
-    // should be finished now
-    // FIXME: is it true or false now? (struct has changed, producing warnings)
-    GameState r = {b->id, dest_length, true, dp};
+    
+    GameState *r = new GameState;
+    r->id = b->id;
+    r->size = dest_length;
+    r->diffed = true;
+    r->data = dp;
     return r;
   }
 
-  GameStateCompressed GameStateManager::compress_(GameState *a) {
-    //COUT(2) << "compressing gamestate" << std::endl;
+  GameStateCompressed *GameStateManager::compress_(GameState *a) {
+    COUT(5) << "compressing gamestate" << std::endl;
     int size = a->size;
     uLongf buffer = (uLongf)((a->size + 12)*1.01)+1;
@@ -198,18 +203,21 @@
 
     switch ( retval ) {
-      case Z_OK: std::cout << "successfully compressed" << std::endl; break;
-      case Z_MEM_ERROR: std::cout << "not enough memory available" << std::endl; break;
-      case Z_BUF_ERROR: std::cout << "not enough memory available in the buffer" << std::endl; break;
-      case Z_DATA_ERROR: std::cout << "decompress: data corrupted" << std::endl; break;
-    }
-
-    GameStateCompressed compressedGamestate;
-    compressedGamestate.compsize = buffer;
-    //std::cout << "compressedGamestate.compsize = buffer; " << buffer << std::endl;
-    compressedGamestate.normsize = size;
-    //std::cout << "compressedGamestate.normsize = size; " << size << std::endl;
-    compressedGamestate.id = a->id;
-    compressedGamestate.data = dest;
-    compressedGamestate.diffed = a->diffed;
+      case Z_OK: COUT(5) << "successfully compressed" << std::endl; break;
+      case Z_MEM_ERROR: COUT(1) << "not enough memory available in gamestate.compress" << std::endl; 
+      return NULL;
+      case Z_BUF_ERROR: COUT(2) << "not enough memory available in the buffer in gamestate.compress" << std::endl;
+      return NULL;
+      case Z_DATA_ERROR: COUT(2) << "decompress: data corrupted in gamestate.compress" << std::endl;
+      return NULL;
+    }
+
+    GameStateCompressed *compressedGamestate = new GameStateCompressed;
+    compressedGamestate->compsize = buffer;
+//     std::cout << "compressedGamestate.compsize = buffer; " << buffer << std::endl;
+    compressedGamestate->normsize = size;
+//     std::cout << "compressedGamestate.normsize = size; " << size << std::endl;
+    compressedGamestate->id = a->id;
+    compressedGamestate->data = dest;
+    compressedGamestate->diffed = a->diffed;
 
     return compressedGamestate;
Index: code/trunk/src/network/GameStateManager.h
===================================================================
--- code/trunk/src/network/GameStateManager.h	(revision 1020)
+++ code/trunk/src/network/GameStateManager.h	(revision 1021)
@@ -43,13 +43,13 @@
     ~GameStateManager();
     void update();
-    GameStateCompressed popGameState(int clientID);
+    GameStateCompressed *popGameState(int clientID);
     void ackGameState(int clientID, int gamestateID);
     int id;
   private:
     GameState *getSnapshot(int id);
-    GameStateCompressed encode(GameState *a, GameState *b);
-    GameStateCompressed encode(GameState *a);
-    GameState diff(GameState *a, GameState *b);
-    GameStateCompressed compress_(GameState *a);
+    GameStateCompressed *encode(GameState *a, GameState *b);
+    GameStateCompressed *encode(GameState *a);
+    GameState *diff(GameState *a, GameState *b);
+    GameStateCompressed *compress_(GameState *a);
     bool deleteUnusedGameState(int gamestateID);
 
Index: code/trunk/src/network/NetworkPrereqs.h
===================================================================
--- code/trunk/src/network/NetworkPrereqs.h	(revision 1020)
+++ code/trunk/src/network/NetworkPrereqs.h	(revision 1021)
Index: code/trunk/src/network/PacketDecoder.cc
===================================================================
--- code/trunk/src/network/PacketDecoder.cc	(revision 1020)
+++ code/trunk/src/network/PacketDecoder.cc	(revision 1021)
@@ -38,8 +38,8 @@
 #include "PacketTypes.h"
 #include "PacketManager.h"
+#include "orxonox/core/Debug.h"
 
 namespace network
 {
-  using namespace std;
 
   PacketDecoder::PacketDecoder(){}
@@ -52,8 +52,8 @@
   {
     int client = clientId;
-    cout << "clientId: " << client << endl; //control cout, not important, just debugging info
+    COUT(5) << "clientId: " << client << std::endl; //control cout, not important, just debugging info
     int id = (int)*packet->data; //the first 4 bytes are always the enet packet id
-    std::cout << "packet id: " << id << std::endl;
-    std::cout << "packet size inside packetdecoder: " << packet->dataLength << std::endl;
+    COUT(5) << "packet id: " << id << std::endl;
+//     COUT(5) << "packet size inside packetdecoder: " << packet->dataLength << std::endl;
     switch( id ) {
   case ACK:
@@ -93,5 +93,5 @@
 
 
-    std::cout << "got ack id: " << a->id << std::endl;
+    COUT(5) << "got ack id: " << a->id << std::endl;
     processAck( a, clientId ); //debug info
 
@@ -144,37 +144,44 @@
   void PacketDecoder::gstate( ENetPacket* packet )
   {
-    GameStateCompressed* currentState = new GameStateCompressed;
+    GameStateCompressed* currentState = NULL;
+    currentState = new GameStateCompressed;
+    if(currentState == NULL){
+      COUT(3) << "could not generate new GameStateCompressed" << std::endl;
+      return;
+    }
     //since it's not alowed to use void* for pointer arithmetic
-    unsigned char* data = (unsigned char*)packet->data;
+    unsigned char* data = (unsigned char *)(packet->data);
     //copy the GameStateCompressed id into the struct, which is located at second place data+sizeof( int )
     //memcpy( (void*)&(currentState->id), (const void*)(data+sizeof( int )), sizeof( int ) );
-    currentState->id = (int)*(data+sizeof(int));
-    std::cout << "id: " << currentState->id << std::endl;
+    //currentState->id = *((int *)packet->data+sizeof(int));
+    memcpy( (void*)&(currentState->id), (const void*)(packet->data+1*sizeof( int )), sizeof( int) );
+    COUT(5) << "decoder: received gs id: " << currentState->id << std::endl;
+//     std::cout << "id: " << currentState->id << std::endl;
     //copy the size of the GameStateCompressed compressed data into the new GameStateCompressed struct, located at 3th
     //position of the data stream, data+2*sizeof( int )
-    memcpy( (void*)&(currentState->compsize), (const void*)(data+2*sizeof( int )), sizeof( int) );
+    memcpy( (void*)&(currentState->compsize), (const void*)(packet->data+2*sizeof( int )), sizeof( int) );
     //currentState->compsize = (int)*(data+2*sizeof(int));
-    std::cout << "compsize: " << currentState->compsize << std::endl;
+//     std::cout << "compsize: " << currentState->compsize << std::endl;
     //size of uncompressed data
-    memcpy( (void*)&(currentState->normsize), (const void*)(data+3*sizeof( int )), sizeof( int ) );
+    memcpy( (void*)&(currentState->normsize), (const void*)(packet->data+3*sizeof( int )), sizeof( int ) );
     //currentState->normsize = (int)*(data+3*sizeof(int));
-    std::cout << "normsize. " << currentState->normsize << std::endl;
+//     std::cout << "normsize. " << currentState->normsize << std::endl;
     //since the packetgenerator was changed, due to a new parameter, change this function too
-    memcpy( (void*)&(currentState->diffed), (const void*)(data+4*sizeof(int)), sizeof(bool));
+    memcpy( (void*)&(currentState->diffed), (const void*)(packet->data+4*sizeof(int)), sizeof(bool));
     //currentState->diffed = (bool)*(data+4*sizeof(int));
-    std::cout << "diffed: " << currentState->diffed << std::endl;
+//     std::cout << "diffed: " << currentState->diffed << std::endl;
     //since data is not allocated, because it's just a pointer, allocate it with size of gamestatedatastream
+    if(currentState->compsize==0)
+      COUT(2) << "compsize is 0" << std::endl;
     currentState->data = (unsigned char*)(malloc( currentState->compsize ));
     if(currentState->data==NULL)
-      std::cout << "memory leak" << std::endl;
+      COUT(2) << "Gamestatepacket-decoder: memory leak" << std::endl;
     //copy the GameStateCompressed data
     //std::cout << "packet size (enet): " << packet->dataLength << std::endl;
     //std::cout << "totallen: " << 4*sizeof(int)+sizeof(bool)+currentState->compsize << std::endl;
-    memcpy( (void*)(currentState->data), (const void*)(data+4*sizeof( int ) + sizeof(bool)), currentState->compsize );
-
-    //clean memory
-    enet_packet_destroy( packet );
-    //run processGameStateCompressed
-    //TODO: not yet implemented!
+    memcpy( (void*)(currentState->data), (const void*)(packet->data+4*sizeof( int ) + sizeof(bool)), currentState->compsize );
+
+    //clean memory
+    enet_packet_destroy( packet );
     processGamestate(currentState);
   }
@@ -189,5 +196,5 @@
     void *data  = (void *)cid->message;
     memcpy(data, (const void*)(packet->data+3*sizeof(int)), cid->length);
-    std::cout << "classid: " << cid->clid << ", name: " << cid->message << std::endl;
+    COUT(4) << "classid: " << cid->clid << ", name: " << cid->message << std::endl;
     enet_packet_destroy( packet );
     processClassid(cid);
@@ -223,18 +230,18 @@
   void PacketDecoder::printAck( ack* data )
   {
-    cout << "data id: " << data->id << endl;
-    cout << "data:    " << data->a << endl;
+    COUT(5) << "data id: " << data->id << std::endl;
+    COUT(5) << "data:    " << data->a << std::endl;
   }
 
   void PacketDecoder::printMouse( mouse* data )
   {
-    cout << "data id: " << data->id << endl;
-    cout << "data:    " << data->x << " " << data->y << endl;
+    COUT(5) << "data id: " << data->id << std::endl;
+    COUT(5) << "data:    " << data->x << " " << data->y << std::endl;
   }
 
   void PacketDecoder::printKey( keyboard* data )
   {
-    cout << "data id: " << data->id << endl;
-    cout << "data:    " << (char)data->press << endl;
+    COUT(5) << "data id: " << data->id << std::endl;
+    COUT(5) << "data:    " << (char)data->press << std::endl;
   }
 
@@ -242,21 +249,21 @@
   {
     if(clientId!=CLIENTID_CLIENT)
-      cout << "client: " << clientId << endl;
-    cout << "data id: " << data->id << endl;
-    cout << "data:    " << data->message << endl;
+      COUT(5) << "client: " << clientId << std::endl;
+    COUT(5) << "data id: " << data->id << std::endl;
+    COUT(5) << "data:    " << data->message << std::endl;
   }
 
   void PacketDecoder::printGamestate( GameStateCompressed* data )
   {
-    cout << "id of GameStateCompressed:   " << data->id << endl;
-    cout << "size of GameStateCompressed: " << data->compsize << endl;
+    COUT(5) << "id of GameStateCompressed:   " << data->id << std::endl;
+    COUT(5) << "size of GameStateCompressed: " << data->compsize << std::endl;
   }
 
   void PacketDecoder::printClassid( classid *cid)
   {
-    cout << "id of classid:    " << cid->id << endl;
-    cout << "size of classid:  " << cid->length << endl;
-    cout << "ID of classid:    " << cid->clid <<endl;
-    cout << "data of classid:  " << cid->message <<endl;
+    COUT(5) << "id of classid:    " << cid->id << std::endl;
+    COUT(5) << "size of classid:  " << cid->length << std::endl;
+    COUT(5) << "ID of classid:    " << cid->clid << std::endl;
+    COUT(5) << "data of classid:  " << cid->message << std::endl;
   }
 
Index: code/trunk/src/network/PacketGenerator.cc
===================================================================
--- code/trunk/src/network/PacketGenerator.cc	(revision 1020)
+++ code/trunk/src/network/PacketGenerator.cc	(revision 1021)
@@ -50,5 +50,5 @@
   ENetPacket* PacketGenerator::acknowledgement( int state, int reliable )
   {
-    std::cout << "generating new acknowledgement, id: " << state << std::endl;
+    COUT(4) << "generating new acknowledgement, id: " << state << std::endl;
     ack* ackreq = new ack;
     ackreq->id = ACK;
@@ -63,5 +63,5 @@
   ENetPacket* PacketGenerator::mousem( double x, double y, int reliable )
   {
-    std::cout << "generating new mouse" << std::endl;
+    COUT(4) << "generating new mouse" << std::endl;
     mouse* mousemove = new mouse;
     mousemove->id = MOUSE;
@@ -77,5 +77,5 @@
   ENetPacket* PacketGenerator::keystrike( char press, int reliable )
   {
-    std::cout << "generating new keyboard" << std::endl;
+    COUT(4) << "generating new keyboard" << std::endl;
     keyboard* key = new keyboard;
     key->id = KEYBOARD;
Index: code/trunk/src/network/PacketManager.h
===================================================================
--- code/trunk/src/network/PacketManager.h	(revision 1020)
+++ code/trunk/src/network/PacketManager.h	(revision 1021)
@@ -4,4 +4,6 @@
 #include <string>
 #include <enet/enet.h>
+
+#include "core/CoreIncludes.h"
 
 #include "NetworkPrereqs.h"
@@ -65,5 +67,5 @@
     virtual void processGamestate(GameStateCompressed *state);
     virtual void processAck( ack *data, int clientID);
-    void processClassid( classid *cid);
+    virtual void processClassid( classid *cid);
     //virtual void processAck( ack *data);
 
Index: code/trunk/src/network/Server.cc
===================================================================
--- code/trunk/src/network/Server.cc	(revision 1020)
+++ code/trunk/src/network/Server.cc	(revision 1021)
@@ -18,4 +18,5 @@
 #include "ClientInformation.h"
 //#include "NetworkFrameListener.h"
+#include "util/Sleep.h"
 #include "Server.h"
 
@@ -112,4 +113,6 @@
     processQueue();
     updateGamestate();
+
+    sleep(1); // TODO remove
     return;
   }
@@ -134,5 +137,6 @@
     gamestates->update();
     //std::cout << "updated gamestate, sending it" << std::endl;
-    sendGameState();
+    //if(clients->getGamestateID()!=GAMESTATEID_INITIAL)
+      sendGameState();
     //std::cout << "sent gamestate" << std::endl;
   }
@@ -142,5 +146,5 @@
   */
   bool Server::sendGameState() {
-    std::cout << "starting gamestate" << std::endl;
+    COUT(5) << "starting sendGameState" << std::endl;
     ClientInformation *temp = clients;
     bool added=false;
@@ -151,13 +155,17 @@
       }
       if( !(temp->getSynched()) ){
-        std::cout << "not sending gamestate" << std::endl;
+        COUT(5) << "not sending gamestate" << std::endl;
         temp=temp->next();
         continue;
       }
-      std::cout << "doing gamestate" << std::endl;
+      COUT(5) << "doing gamestate gamestate preparation" << std::endl;
       int gid = temp->getGamestateID();
       int cid = temp->getID();
-      std::cout << "server, got acked ID: " << gid << std::endl;
-      GameStateCompressed *gs = &(gamestates->popGameState(cid)); // FIXME: taking address of temporary, check if correct
+      COUT(5) << "server, got acked (gamestate) ID: " << gid << std::endl;
+      GameStateCompressed *gs = gamestates->popGameState(cid);
+      if(gs==NULL){
+        COUT(2) << "could not generate gamestate" << std::endl;
+        return false;
+      }
       //std::cout << "adding gamestate" << std::endl;
       connection->addPacket(packet_gen.gstate(gs), cid);
@@ -168,9 +176,10 @@
     if(added)
       return connection->sendPackets();
-    else
-      return false;
+    COUT(5) << "had no gamestates to send" << std::endl;
+    return false;
   }
 
   void Server::processAck( ack *data, int clientID) {
+    COUT(5) << "processing ack from client: " << clientID << "; ack-id: " << data->id << std::endl;
     clients->findClient(clientID)->setGamestateID(data->a);
   }
Index: code/trunk/src/network/Server.h
===================================================================
--- code/trunk/src/network/Server.h	(revision 1020)
+++ code/trunk/src/network/Server.h	(revision 1021)
@@ -16,6 +16,10 @@
 #include <string>
 
+#include "NetworkPrereqs.h"
+
+#include "core/Tickable.h"
 #include "PacketManager.h"
-#include "NetworkPrereqs.h"
+
+
 
 namespace network
@@ -25,5 +29,5 @@
   * It implements all functions necessary for a Server
   */
-  class _NetworkExport Server : public PacketDecoder{
+  class _NetworkExport Server : public PacketDecoder, public orxonox::Tickable{
   public:
     Server();
Index: code/trunk/src/network/Synchronisable.h
===================================================================
--- code/trunk/src/network/Synchronisable.h	(revision 1020)
+++ code/trunk/src/network/Synchronisable.h	(revision 1021)
@@ -56,5 +56,5 @@
     int getSize();
     bool updateData(syncData vars);
-    void registerAllVariables();
+    virtual void registerAllVariables()=0;
     virtual bool create()=0;
   protected:
Index: code/trunk/src/network/dummyclient3.cc
===================================================================
--- code/trunk/src/network/dummyclient3.cc	(revision 1020)
+++ code/trunk/src/network/dummyclient3.cc	(revision 1021)
@@ -13,8 +13,8 @@
   network::PacketGenerator pck;
   const int PORT = 55556;
-  std::cout << "Enter address of the server xxx.xxx.xxx.xxx (enter for localhost)" << std::endl;
+  COUT(0) << "Enter address of the server xxx.xxx.xxx.xxx (enter for localhost)" << std::endl;
   std::string str;
   std::getline(std::cin, str);
-  std::cout << "You entered: " << str << std::endl;
+  COUT(3) << "You entered: " << str << std::endl;
   if(str.compare("")==0)
     str="127.0.0.1";
@@ -22,6 +22,6 @@
   Client client( str, PORT );
   if ( client.establishConnection() )
-    std::cout << "connection established" << std::endl;
-  else std::cout << "problems establishing connection" << std::endl;
+    COUT(3) << "connection established" << std::endl;
+  else COUT(0) << "problems establishing connection" << std::endl;
   char message[10000];
   char signs[] = "abcdefghijklmnopqrstuvwxy";
Index: code/trunk/src/orxonox/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/CMakeLists.txt	(revision 1020)
+++ code/trunk/src/orxonox/CMakeLists.txt	(revision 1021)
@@ -1,8 +1,9 @@
 SET( ORXONOX_SRC_FILES
   GraphicsEngine.cc
+  InputEventListener.cc
+  InputHandler.cc
   Main.cc
   Orxonox.cc
-  objects/Tickable.cc
-  SpaceshipSteering.cc
+#  SpaceshipSteering.cc
   hud/HUD.cc
   particle/ParticleInterface.cc
Index: code/trunk/src/orxonox/GraphicsEngine.cc
===================================================================
--- code/trunk/src/orxonox/GraphicsEngine.cc	(revision 1020)
+++ code/trunk/src/orxonox/GraphicsEngine.cc	(revision 1021)
@@ -33,7 +33,10 @@
 
 #include <OgreRoot.h>
+#include <OgreException.h>
 #include <OgreConfigFile.h>
 #include <OgreTextureManager.h>
+#include <OgreRenderWindow.h>
 
+#include "core/CoreIncludes.h"
 #include "core/Debug.h"
 #include "GraphicsEngine.h"
@@ -46,8 +49,12 @@
   GraphicsEngine::GraphicsEngine()
   {
+    RegisterObject(GraphicsEngine);
+    //this->bOverwritePath_ = false;
+    this->setConfigValues();
     // set to standard values
     this->configPath_ = "";
-    this->dataPath_ = "";
-    scene_ = NULL;
+    this->root_ = 0;
+    this->scene_ = 0;
+    this->renderWindow_ = 0;
   }
 
@@ -55,4 +62,12 @@
   GraphicsEngine::~GraphicsEngine()
   {
+    if (!this->root_)
+      delete this->root_;
+  }
+
+  void GraphicsEngine::setConfigValues()
+  {
+    SetConfigValue(dataPath_, dataPath_).description("relative path to media data");
+
   }
 
@@ -66,5 +81,5 @@
     root_ = new Root(NULL, configPath_ + "ogre.cfg", configPath_ + "Ogre.log");
 #endif*/
-#if defined(_DEBUG) && defined(WIN32)
+#if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC && defined(_DEBUG)
     std::string plugin_filename = "plugins_d.cfg";
 #else
@@ -87,6 +102,9 @@
   }
 
-  bool GraphicsEngine::load()
+  bool GraphicsEngine::load(std::string dataPath)
   {
+    // temporary overwrite of dataPath, change ini file for permanent change
+    if( dataPath != "" )
+      dataPath_ = dataPath;
     loadRessourceLocations(this->dataPath_);
     if (!root_->restoreConfig() && !root_->showConfigDialog())
@@ -95,8 +113,9 @@
   }
 
-  void GraphicsEngine::startRender()
+  void GraphicsEngine::initialise()
   {
-    root_->initialise(true, "OrxonoxV2");
+    this->renderWindow_ = root_->initialise(true, "OrxonoxV2");
     TextureManager::getSingleton().setDefaultNumMipmaps(5);
+    //TODO: Do NOT load all the groups, why are we doing that? And do we really do that? initialise != load...
     ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
   }
@@ -131,4 +150,49 @@
   }
 
+  /**
+    Returns the window handle of the render window.
+    At least the InputHandler uses this to create the OIS::InputManager
+    @return The window handle of the render window
+  */
+  size_t GraphicsEngine::getWindowHandle()
+  {
+    if (this->renderWindow_)
+    {
+      Ogre::RenderWindow *renderWindow = this->root_->getAutoCreatedWindow();
+      size_t windowHnd = 0;
+      renderWindow->getCustomAttribute("WINDOW", &windowHnd);
+      return windowHnd;
+    }
+    else
+      return 0;
+  }
+
+  /**
+    Get the width of the current render window
+    @return The width of the current render window
+  */
+  int GraphicsEngine::getWindowWidth() const
+  {
+    if (this->renderWindow_)
+    {
+      return this->renderWindow_->getWidth();
+    }
+    else
+      return 0;
+  }
+
+  /**
+    Get the height of the current render window
+    @return The height of the current render window
+  */
+  int GraphicsEngine::getWindowHeight() const
+  {
+    if (this->renderWindow_)
+    {
+      return this->renderWindow_->getHeight();
+    }
+    else
+      return 0;
+  }
 
 }
Index: code/trunk/src/orxonox/GraphicsEngine.h
===================================================================
--- code/trunk/src/orxonox/GraphicsEngine.h	(revision 1020)
+++ code/trunk/src/orxonox/GraphicsEngine.h	(revision 1021)
@@ -10,8 +10,10 @@
 #include <string>
 
+#include <OgrePrerequisites.h>
 #include <OgreRoot.h>
 #include <OgreSceneManager.h>
 
 #include "OrxonoxPrereqs.h"
+#include "core/OrxonoxClass.h"
 
 
@@ -21,17 +23,34 @@
    * graphics engine manager class
  */
-  class _OrxonoxExport GraphicsEngine {
+  class _OrxonoxExport GraphicsEngine : public OrxonoxClass
+  {
     public:
       GraphicsEngine();
       inline void setConfigPath(std::string path) { this->configPath_ = path; };
       // find a better way for this
-      inline Ogre::Root* getRoot() { return root_; };
+      //inline Ogre::Root* getRoot() { return root_; };
+      void setConfigValues();
       void setup();
-      bool load();
+      bool load(std::string path);
       void loadRessourceLocations(std::string path);
       Ogre::SceneManager* getSceneManager();
-      void startRender();
+      void initialise();
+
+      // several window properties
+      Ogre::RenderWindow* getRenderWindow() { return this->renderWindow_; }
+      size_t getWindowHandle();
+      int getWindowWidth() const;
+      int getWindowHeight() const;
+
+      // Ogre Root access for Orxonox
+      void frameStarted(Ogre::FrameEvent &evt)
+      { if (root_) root_->_fireFrameStarted(evt); }
+      void frameEnded  (Ogre::FrameEvent &evt)
+      { if (root_) root_->_fireFrameEnded(evt);   }
+      void renderOneFrame()
+      { if (root_) root_->_updateAllRenderTargets(); }
 
       virtual ~GraphicsEngine();
+
     private:
       Ogre::Root*         root_;        //!< Ogre's root
@@ -39,4 +58,6 @@
       std::string         dataPath_;    //!< path to data file
       Ogre::SceneManager* scene_;       //!< scene manager of the game
+      Ogre::RenderWindow* renderWindow_;//!< the current render window
+      //bool               bOverwritePath_; //!< overwrites path
 
   };
Index: code/trunk/src/orxonox/InputEvent.h
===================================================================
--- code/trunk/src/orxonox/InputEvent.h	(revision 1021)
+++ code/trunk/src/orxonox/InputEvent.h	(revision 1021)
@@ -0,0 +1,52 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+ @file
+ @brief InputEvent Structure declaration
+ */
+
+#ifndef _InputEvent_H__
+#define _InputEvent_H__
+
+#include "OrxonoxPrereqs.h"
+
+namespace orxonox
+{
+  /**
+    @brief Interface that any class can use to get key independent input.
+  */
+  struct InputEvent
+  {
+    unsigned char id;      //!< Event ID
+    bool bStarted;         //!< Tells whether the Event started or ended (e.g. firing started)
+    int data1, data2;      //!< Two additional integer datafields, for instance for the mouse moved event
+    void* dataRef;         //!< Additional pointer to any further data
+  };
+}
+
+#endif /* _InputEvent_H__ */
Index: code/trunk/src/orxonox/InputEventListener.cc
===================================================================
--- code/trunk/src/orxonox/InputEventListener.cc	(revision 1021)
+++ code/trunk/src/orxonox/InputEventListener.cc	(revision 1021)
@@ -0,0 +1,53 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      Some guy writing the example code from Ogre
+ *
+ */
+
+/**
+ @file
+ @brief Core relevant parts of InputEventListener
+ */
+
+#include "OrxonoxStableHeaders.h"
+
+#include "core/CoreIncludes.h"
+#include "InputEventListener.h"
+
+namespace orxonox
+{
+  /**
+    @brief standard constructor
+  */
+  InputEventListener::InputEventListener()
+  {
+    RegisterRootObject(InputEventListener);
+    this->bActive_ = true;
+  }
+
+  InputEventListener::~InputEventListener()
+  {
+  }
+
+}
Index: code/trunk/src/orxonox/InputEventListener.h
===================================================================
--- code/trunk/src/orxonox/InputEventListener.h	(revision 1021)
+++ code/trunk/src/orxonox/InputEventListener.h	(revision 1021)
@@ -0,0 +1,60 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+ @file
+ @brief InputEventListener Interface declaration
+ */
+
+#ifndef _InputEventListener_H__
+#define _InputEventListener_H__
+
+#include "OrxonoxPrereqs.h"
+
+#include "core/OrxonoxClass.h"
+#include "InputEvent.h"
+
+namespace orxonox
+{
+  /**
+    @brief Interface that any class can use to get key independent input.
+  */
+  class _OrxonoxExport InputEventListener : virtual public OrxonoxClass
+  {
+    friend class InputHandler;
+  public:
+    InputEventListener();
+    virtual ~InputEventListener();
+    /** Method is called every time an Input event occurs && bActive */
+    virtual void eventOccured(InputEvent &evt) = 0;
+
+  private:
+    bool bActive_;
+  };
+}
+
+#endif /* _InputEventListener_H__ */
Index: code/trunk/src/orxonox/InputHandler.cc
===================================================================
--- code/trunk/src/orxonox/InputHandler.cc	(revision 1021)
+++ code/trunk/src/orxonox/InputHandler.cc	(revision 1021)
@@ -0,0 +1,272 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+ @file
+ @brief Implementation of a little Input handler that distributes everything
+        coming from OIS.
+ */
+
+#include "OrxonoxStableHeaders.h"
+
+#include "core/CoreIncludes.h"
+#include "core/Debug.h"
+#include "Orxonox.h"
+#include "InputEventListener.h"
+#include "InputHandler.h"
+
+namespace orxonox
+{
+  /**
+    @brief The reference to the singleton
+  */
+  InputHandler* InputHandler::singletonRef_s = 0;
+
+  /**
+    @brief Constructor only resets the pointer values to 0.
+  */
+  InputHandler::InputHandler() :
+      mouse_(0), keyboard_(0), inputSystem_(0)
+  {
+    //RegisterObject(InputHandler);
+  }
+
+  /**
+    @brief Destructor only called at the end of the program
+  */
+  InputHandler::~InputHandler()
+  {
+  }
+
+  /**
+    @brief The one instance of the InputHandler is stored in this function.
+    @return The pointer to the only instance of the InputHandler
+  */
+  InputHandler *InputHandler::getSingleton()
+  {
+    if (!singletonRef_s)
+      singletonRef_s = new InputHandler();
+    return singletonRef_s;
+    //static InputHandler theOnlyInstance;
+    //return &theOnlyInstance;
+  }
+
+  /**
+    @brief Creates the OIS::InputMananger, the keyboard and the mouse and
+           assigns the key bindings.
+    @param windowHnd The window handle of the render window
+    @param windowWidth The width of the render window
+    @param windowHeight The height of the render window
+  */
+  bool InputHandler::initialise(size_t windowHnd, int windowWidth, int windowHeight)
+  {
+    if (!this->inputSystem_)
+    {
+      // Setup basic variables
+      OIS::ParamList paramList;
+      std::ostringstream windowHndStr;
+
+      // Fill parameter list
+      windowHndStr << (unsigned int)windowHnd;
+      paramList.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
+
+#if defined OIS_LINUX_PLATFORM
+      paramList.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true")));
+#endif
+
+      try
+      {
+        // Create inputsystem
+        inputSystem_ = OIS::InputManager::createInputSystem(paramList);
+        //if (getSoftDebugLevel() >= ORX_DEBUG)
+        //  orxonox::OutputHandler::getOutStream().setOutputLevel(4) << "asdfblah" << std::endl;
+        COUT(ORX_DEBUG) << "*** InputHandler: Created OIS input system" << std::endl;
+
+        // If possible create a buffered keyboard
+        /*if (inputSystem_->getNumberOfDevices(OIS::OISKeyboard) > 0)
+        {*/
+          keyboard_ = static_cast<OIS::Keyboard*>(inputSystem_->createInputObject(OIS::OISKeyboard, true));
+          keyboard_->setEventCallback(this);
+          COUT(ORX_DEBUG) << "*** InputHandler: Created OIS mouse" << std::endl;
+        //}
+
+        // If possible create a buffered mouse
+        /*if (inputSystem_->numMice() > 0 )
+        {*/
+          mouse_ = static_cast<OIS::Mouse*>(inputSystem_->createInputObject(OIS::OISMouse, true));
+          mouse_->setEventCallback(this);
+          COUT(ORX_DEBUG) << "*** InputHandler: Created OIS keyboard" << std::endl;
+
+          // Set mouse region
+          this->setWindowExtents(windowWidth, windowHeight);
+        //}
+      }
+      catch (OIS::Exception ex)
+      {
+        // something went wrong with the initialisation
+        COUT(ORX_ERROR) << "Error: Failed creating an input system. Message: \"" << ex.eText << "\"" << std::endl;
+        this->inputSystem_ = 0;
+        return false;
+      }
+    }
+
+    COUT(ORX_DEBUG) << "*** InputHandler: Loading key bindings..." << std::endl;
+    // temporary solution: create event list
+    //InputEvent[] list = this->createEventList();
+    // load the key bindings
+    InputEvent empty = {0, false, 0, 0, 0};
+    for (int i = 0; i < this->numberOfKeys_; i++)
+      this->bindingsKeyPressed_[i] = empty;
+
+    //assign 'abort' to the escape key
+    this->bindingsKeyPressed_[(int)OIS::KC_ESCAPE].id = 1;
+    COUT(ORX_DEBUG) << "*** InputHandler: Loading done." << std::endl;
+
+    return true;
+  }
+
+  /**
+    @brief Destroys all the created input devices.
+  */
+  void InputHandler::destroyDevices()
+  {
+    COUT(ORX_DEBUG) << "*** InputHandler: Destroying InputHandler..." << std::endl;
+    if (this->mouse_)
+      this->inputSystem_->destroyInputObject(mouse_);
+    if (this->keyboard_)
+      this->inputSystem_->destroyInputObject(keyboard_);
+    if (this->inputSystem_)
+      OIS::InputManager::destroyInputSystem(this->inputSystem_);
+
+    this->mouse_         = 0;
+    this->keyboard_      = 0;
+    this->inputSystem_   = 0;
+    COUT(ORX_DEBUG) << "*** InputHandler: Destroying done." << std::endl;
+  }
+
+  /**
+    @brief Destroys the singleton.
+  */
+  void InputHandler::destroy()
+  {
+    if (singletonRef_s)
+      delete singletonRef_s;
+    singletonRef_s = 0;
+  }
+
+  /**
+    @brief Updates the InputHandler
+    @param dt Delta time
+  */
+  void InputHandler::tick(float dt)
+  {
+    // capture all the input. That calls the event handlers.
+    if (mouse_)
+      mouse_->capture();
+
+    if (keyboard_)
+      keyboard_->capture();
+  }
+
+  /**
+    @brief Adjusts the mouse window metrics.
+    This method has to be called every time the size of the window changes.
+    @param width The new width of the render window
+    @param height the new height of the render window
+  */
+  void InputHandler::setWindowExtents(int width, int height)
+  {
+    // Set mouse region (if window resizes, we should alter this to reflect as well)
+    const OIS::MouseState &mouseState = mouse_->getMouseState();
+    mouseState.width  = width;
+    mouseState.height = height;
+  }
+
+  /**
+    @brief Calls all the objects from classes that derive from InputEventListener.
+    @param evt The input event that occured.
+  */
+  inline void InputHandler::callListeners(orxonox::InputEvent &evt)
+  {
+    for (Iterator<InputEventListener> it = ObjectList<InputEventListener>::start(); it; )
+    {
+      if (it->bActive_)
+        (it++)->eventOccured(evt);
+      else
+        it++;
+    }
+  }
+
+  /**
+    @brief Event handler for the keyPressed Event.
+    @param e Event information
+  */
+  bool InputHandler::keyPressed(const OIS::KeyEvent &e)
+  {
+    callListeners(this->bindingsKeyPressed_[(int)e.key]);
+    return true;
+  }
+
+  /**
+    @brief Event handler for the keyReleased Event.
+    @param e Event information
+  */
+  bool InputHandler::keyReleased(const OIS::KeyEvent &e)
+  {
+    return true;
+  }
+
+  /**
+    @brief Event handler for the mouseMoved Event.
+    @param e Event information
+  */
+  bool InputHandler::mouseMoved(const OIS::MouseEvent &e)
+  {
+    return true;
+  }
+
+  /**
+    @brief Event handler for the mousePressed Event.
+    @param e Event information
+    @param id The ID of the mouse button
+  */
+  bool InputHandler::mousePressed(const OIS::MouseEvent &e, OIS::MouseButtonID id)
+  {
+    return true;
+  }
+
+  /**
+    @brief Event handler for the mouseReleased Event.
+    @param e Event information
+    @param id The ID of the mouse button
+  */
+  bool InputHandler::mouseReleased(const OIS::MouseEvent &e, OIS::MouseButtonID id)
+  {
+    return true;
+  }
+
+}
Index: code/trunk/src/orxonox/InputHandler.h
===================================================================
--- code/trunk/src/orxonox/InputHandler.h	(revision 1021)
+++ code/trunk/src/orxonox/InputHandler.h	(revision 1021)
@@ -0,0 +1,108 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+ @file
+ @brief Implementation of a little Input handler that distributes everything
+        coming from OIS.
+ */
+
+#ifndef _InputHandler_H__
+#define _InputHandler_H__
+
+#include <OIS/OIS.h>
+
+#include "OrxonoxPrereqs.h"
+#include "core/Tickable.h"
+#include "InputEvent.h"
+
+namespace orxonox
+{
+  /**
+    @brief Captures and distributes mouse and keyboard input.
+    It resolves the key bindings to InputEvents which can be heard by
+    implementing the InputEventListener interface.
+  */
+  class _OrxonoxExport InputHandler
+        : public Tickable, public OIS::KeyListener, public OIS::MouseListener
+  {
+    //friend class ClassIdentifier<InputHandler>;
+  public:
+    bool initialise(size_t windowHnd, int windowWidth, int windowHeight);
+    void destroyDevices();
+    void tick(float dt);
+    void setWindowExtents(int width, int height);
+
+    // Temporary solutions. Will be removed soon!
+    OIS::Mouse    *getMouse()    { return this->mouse_   ; }
+    OIS::Keyboard *getKeyboard() { return this->keyboard_; }
+
+    static InputHandler* getSingleton();
+    static void destroy();
+
+  private:
+    // don't mess with a Singleton
+    InputHandler ();
+    InputHandler (const InputHandler&);
+    InputHandler& operator=(const InputHandler& instance);
+    ~InputHandler();
+
+    void callListeners(InputEvent &evt);
+
+    // input events
+		bool mousePressed (const OIS::MouseEvent &arg, OIS::MouseButtonID id);
+		bool mouseReleased(const OIS::MouseEvent &arg, OIS::MouseButtonID id);
+    bool mouseMoved   (const OIS::MouseEvent &arg);
+		bool keyPressed   (const OIS::KeyEvent   &arg);
+		bool keyReleased  (const OIS::KeyEvent   &arg);
+
+    OIS::InputManager *inputSystem_;    //!< OIS input manager
+    OIS::Keyboard     *keyboard_;       //!< OIS mouse
+    OIS::Mouse        *mouse_;          //!< OIS keyboard
+
+    /** denotes the maximum number of different keys there are in OIS.
+        256 should be ok since the highest number in the enum is 237. */
+    static const int numberOfKeys_ = 256;
+    //! Array of input events for every pressed key
+    InputEvent bindingsKeyPressed_[numberOfKeys_];
+    //! Array of input events for every released key
+    InputEvent bindingsKeyReleased_[numberOfKeys_];
+
+    /** denotes the maximum number of different buttons there are in OIS.
+        16 should be ok since the highest number in the enum is 7. */
+    static const int numberOfButtons_ = 16;
+    //! Array of input events for every pressed key
+    InputEvent bindingsButtonPressed_[numberOfButtons_];
+    //! Array of input events for every released key
+    InputEvent bindingsButtonReleased_[numberOfButtons_];
+
+    //! Pointer to the instance of the singleton
+    static InputHandler *singletonRef_s;
+  };
+}
+
+#endif /* _InputHandler_H__ */
Index: code/trunk/src/orxonox/Main.cc
===================================================================
--- code/trunk/src/orxonox/Main.cc	(revision 1020)
+++ code/trunk/src/orxonox/Main.cc	(revision 1021)
@@ -27,19 +27,18 @@
 
  /**
- @file  Main.cc
- @brief main file handling most of the machine specific code
+ @file
+ @brief Entry point of the program. Platform specific code.
   */
 
 #include "OrxonoxStableHeaders.h"
 
-#include <OgrePlatform.h>
-#include <OgreException.h>
+#include <exception>
 
-
+#include "OrxonoxPlatform.h"
 #include "core/SignalHandler.h"
 #include "Orxonox.h"
 
 using namespace orxonox;
-#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
+#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
 #include <CoreFoundation/CoreFoundation.h>
 
@@ -72,133 +71,23 @@
 #endif
 
-#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 && !defined( __MINGW32__ )
-#ifndef WIN32_LEAN_AND_MEAN
-#define WIN32_LEAN_AND_MEAN
-#endif
-#include "windows.h"
-  INT WINAPI WinMain(HINSTANCE hInst, HINSTANCE, LPSTR strCmdLine, INT)
-  {
-    // something like this would be less hacky
-    // maybe one can work with trailing '\0'
-    // or maybe use string based functions
-    // I was unable to test it without working windows version
-    char* cmd = strCmdLine;
-    int argc = 2;
-    int i;
-    int j;
-    for(i = 0; cmd[i] != NULL; i++)
-    {
-      if(cmd[i] == ' ') argc++;
-    }
-    char **argv = new char*[argc];
-    for (j = 0; j < argc; j++)
-    {
-      argv[j] = new char[i];
-    }
-    j = 1;
-    int k = 0;
-    for(int i = 0; cmd[i] != NULL; i++)
-    {
-      if(cmd[i] != ' ') {
-        argv[j][k] = cmd[i];
-        k++;
-      }
-      else {
-        argv[j][k] = '\0';
-        k = 0;
-        j++;
-      }
-    }
-    argv[j][k] = '\0';
-    argv[0] = "BeniXonox.exe";
-    //char *argv[2];
-    //argv[0] = "asdfProgram";
-    //argv[1] =  strCmdLine;
-    //int argc = 2;
+int main(int argc, char **argv)
+{
+  try {
+    SignalHandler::getInstance()->doCatch(argv[0], "orxonox.log");
+    Orxonox* orx = Orxonox::getSingleton();
+
+#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_APPLE
+    orx->init(argc, argv, macBundlePath());
 #else
-  int main(int argc, char **argv)
-  {
-#endif
-    try {
-      srand(time(0));  //initaialize RNG; TODO check if it works on win
-      SignalHandler::getInstance()->doCatch(argv[0], "orxonox.log");
-      Orxonox* orx = Orxonox::getSingleton();
-#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
-      orx->init(argc, argv, macBundlePath());
-      orx->start();
-#else
-/*
-for (int i = 0; i < 500; i++)
-{
-int x = rand() % 40000 - 20000;
-int y = rand() % 40000 - 20000;
-int z = rand() % 40000 - 20000;
-
-int scale = rand() % 100 + 20;
-
-int version = rand() % 6 + 1;
-
-float rotx = float(rand()) / RAND_MAX;
-float roty = float(rand()) / RAND_MAX;
-float rotz = float(rand()) / RAND_MAX;
-
-int axis = rand() % 3 + 1;
-
-if (axis == 1)
-  rotx = 0;
-if (axis == 2)
-  roty = 0;
-if (axis == 3)
-  rotz = 0;
-
-int rotation = rand() % 40 + 10;
-
-//    <Model position="1000,1500,0" scale="50" mesh="ast1.mesh" rotationAxis="0,1.25,0" rotationRate="70" />
-std::cout << "    <Model position=\"" << x << "," << y << "," << z << "\" scale=\"" << scale << "\" mesh=\"ast" << version << ".mesh\" rotationAxis=\"" << rotx << "," << roty << "," << rotz << "\" rotationRate=\"" << rotation << "\" />" << std::endl;
-
-
-}
-*/
-      orx->init(argc, argv, "");
-      orx->start();
-#endif
-    }
-    catch (Ogre::Exception& e) {
-#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32 && !defined( __MINGW32__ )
-      MessageBoxA(NULL, e.getFullDescription().c_str(),
-            "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL);
-#else
-      std::cerr << "Exception:\n";
-      std::cerr << e.getFullDescription().c_str() << "\n";
-#endif
-      return 1;
-    }
-    return 0;
-  }
-
-#ifdef __cplusplus
-}
+    orx->init(argc, argv, "");
 #endif
 
-
-/*int main(int argc, char **argv)
-{
-  try
+    orx->start();
+    orx->destroy();
+  }
+  catch (std::exception &ex)
   {
-    SignalHandler::getInstance()->doCatch(argv[0], "orxonox.log");
-    Orxonox* orx = Orxonox::getSingleton();
-#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
-    orx->init(argc, argv, macBundlePath());
-    orx->start();
-#else
-    orx->init(argc, argv, "");
-    orx->start();
-#endif
-
-  }
-  catch(Ogre::Exception& e)
-  {
-    fprintf(stderr, "An exception has occurred: %s\n",
-            e.getFullDescription().c_str());
+    std::cerr << "Exception:\n";
+    std::cerr << ex.what() << "\n";
     return 1;
   }
@@ -207,3 +96,5 @@
 }
 
-*/
+#ifdef __cplusplus
+}
+#endif
Index: code/trunk/src/orxonox/Orxonox.cc
===================================================================
--- code/trunk/src/orxonox/Orxonox.cc	(revision 1020)
+++ code/trunk/src/orxonox/Orxonox.cc	(revision 1021)
@@ -35,27 +35,21 @@
 
 //****** OGRE ******
-#include <OgreException.h>
-#include <OgreRoot.h>
+//#include <OgreException.h>
 #include <OgreFrameListener.h>
-#include <OgreRenderWindow.h>
-#include <OgreTextureManager.h>
-#include <OgreResourceGroupManager.h>
-#include <OgreConfigFile.h>
 #include <OgreOverlay.h>
 #include <OgreOverlayManager.h>
-
-//****** OIS *******
-#include <OIS/OIS.h>
+#include <OgreTimer.h>
+#include <OgreWindowEventUtilities.h>
 
 //****** STD *******
-#include <iostream>
-#include <exception>
+//#include <iostream>
+//#include <exception>
+#include <deque>
 
 //***** ORXONOX ****
 //misc
-#include "util/Sleep.h"
-
-// loader and audio
-//#include "loader/LevelLoader.h"
+//#include "util/Sleep.h"
+
+// audio
 #include "audio/AudioManager.h"
 
@@ -63,17 +57,18 @@
 #include "network/Server.h"
 #include "network/Client.h"
-#include "network/NetworkFrameListener.h"
+network::Client *client_g;
+network::Server *server_g;
 
 // objects
-#include "objects/Tickable.h"
+#include "core/ArgReader.h"
+#include "core/Debug.h"
+#include "core/Factory.h"
+#include "core/Loader.h"
+#include "core/Tickable.h"
+#include "hud/HUD.h"
 #include "tools/Timer.h"
-#include "objects/NPC.h"
-#include "core/ArgReader.h"
-#include "core/Factory.h"
-#include "core/Debug.h"
-#include "core/Loader.h"
-#include "hud/HUD.h"
 #include "objects/weapon/BulletManager.h"
-#include "GraphicsEngine.h"
+
+#include "InputHandler.h"
 
 #include "Orxonox.h"
@@ -81,47 +76,8 @@
 namespace orxonox
 {
-   // put this in a seperate Class or solve the problem in another fashion
-  class OrxListener : public Ogre::FrameListener
-  {
-    public:
-      OrxListener(OIS::Keyboard *keyboard, audio::AudioManager*  auMan, gameMode mode)
-      {
-        mKeyboard = keyboard;
-        mode_=mode;
-        auMan_ = auMan;
-      }
-
-      bool frameStarted(const Ogre::FrameEvent& evt)
-      {
-        auMan_->update();
-        updateAI();
-
-        if(mode_ == PRESENTATION)
-          server_g->tick(evt.timeSinceLastFrame);
-        else if(mode_ == CLIENT)
-          client_g->tick(evt.timeSinceLastFrame);
-
-        usleep(10);
-
-        mKeyboard->capture();
-        return !mKeyboard->isKeyDown(OIS::KC_ESCAPE);
-      }
-
-      void updateAI()
-      {
-        for(Iterator<NPC> it = ObjectList<NPC>::start(); it; ++it)
-        {
-          it->update();
-        }
-      }
-
-    private:
-      gameMode mode_;
-      OIS::Keyboard *mKeyboard;
-      audio::AudioManager*  auMan_;
-  };
-
-  // init static singleton reference of Orxonox
-  Orxonox* Orxonox::singletonRef_ = NULL;
+  /**
+    @brief Reference to the only instance of the class.
+  */
+  Orxonox *Orxonox::singletonRef_s = 0;
 
   /**
@@ -131,13 +87,12 @@
   {
     this->ogre_ = new GraphicsEngine();
+    this->timer_ = 0;
     this->dataPath_ = "";
-//    this->loader_ = 0;
     this->auMan_ = 0;
-    this->singletonRef_ = 0;
-    this->keyboard_ = 0;
-    this->mouse_ = 0;
-    this->inputManager_ = 0;
-    this->frameListener_ = 0;
-    this->root_ = 0;
+    this->inputHandler_ = 0;
+    //this->root_ = 0;
+    // turn on frame smoothing by setting a value different from 0
+    this->frameSmoothingTime_ = 0.0f;
+    this->bAbort_ = false;
   }
 
@@ -147,5 +102,61 @@
   Orxonox::~Orxonox()
   {
-    // nothing to delete as for now
+    // keep in mind: the order of deletion is very important!
+    if (this->bulletMgr_)
+      delete this->bulletMgr_;
+    if (this->orxonoxHUD_)
+      delete this->orxonoxHUD_;
+    Loader::close();
+    InputHandler::destroy();
+    if (this->auMan_)
+      delete this->auMan_;
+    if (this->timer_)
+      delete this->timer_;
+    if (this->ogre_)
+      delete this->ogre_;
+
+    if (client_g)
+      delete client_g;
+    if (server_g)
+      delete server_g;
+  }
+
+  /**
+   * error kills orxonox
+   */
+  void Orxonox::abortImmediate(/* some error code */)
+  {
+    //TODO: destroy and destruct everything and print nice error msg
+    delete this;
+  }
+
+  /**
+    Asks the mainloop nicely to abort.
+  */
+  void Orxonox::abortRequest()
+  {
+    bAbort_ = true;
+  }
+
+  /**
+   * @return singleton object
+   */
+  Orxonox* Orxonox::getSingleton()
+  {
+    if (!singletonRef_s)
+      singletonRef_s = new Orxonox();
+    return singletonRef_s;
+    //static Orxonox theOnlyInstance;
+    //return &theOnlyInstance;
+  }
+
+  /**
+    @brief Destroys the Orxonox singleton.
+  */
+  void Orxonox::destroy()
+  {
+    if (singletonRef_s)
+      delete singletonRef_s;
+    singletonRef_s = 0;
   }
 
@@ -153,5 +164,5 @@
    * initialization of Orxonox object
    * @param argc argument counter
-   * @param argv list of arguments
+   * @param argv list of argumenst
    * @param path path to config (in home dir or something)
    */
@@ -162,154 +173,41 @@
     //TODO: give config file to Ogre
     std::string mode;
-//     if(argc>=2)
-//       mode = std::string(argv[1]);
-//     else
-//       mode = "";
+
     ArgReader ar = ArgReader(argc, argv);
     ar.checkArgument("mode", mode, false);
     ar.checkArgument("data", this->dataPath_, false);
     ar.checkArgument("ip", serverIp_, false);
-    //mode = "presentation";
-    if(ar.errorHandling()) die();
-    if(mode == std::string("server"))
+    if(ar.errorHandling()) abortImmediate();
+    if(mode == std::string("client"))
     {
+      mode_ = CLIENT;
+      clientInit(path);
+    }
+    else if(mode== std::string("server")){
+      mode_ = SERVER;
       serverInit(path);
-      mode_ = SERVER;
-    }
-    else if(mode == std::string("client"))
-    {
-      clientInit(path);
-      mode_ = CLIENT;
-    }
-    else if(mode == std::string("presentation"))
-    {
-      serverInit(path);
-      mode_ = PRESENTATION;
     }
     else{
+      mode_ = STANDALONE;
       standaloneInit(path);
-      mode_ = STANDALONE;
     }
   }
 
-  /**
-   * start modules
-   */
-  void Orxonox::start()
-  {
-    //TODO: start modules
-    ogre_->startRender();
-    //TODO: run engine
-    Factory::createClassHierarchy();
-    createScene();
-    setupScene();
-    setupInputSystem();
-    if(mode_!=CLIENT){ // remove this in future ---- presentation hack
-    }
-    else
-      std::cout << "client here" << std::endl;
-    createFrameListener();
-    switch(mode_){
-    case PRESENTATION:
-      //ogre_->getRoot()->addFrameListener(new network::ServerFrameListener());
-      //std::cout << "could not add framelistener" << std::endl;
-      server_g->open();
-      break;
-    case CLIENT:
-      client_g->establishConnection();
-      break;
-    case SERVER:
-    case STANDALONE:
-    default:
-      break;
-    }
-    startRenderLoop();
-  }
-
-  /**
-   * @return singleton object
-   */
-  Orxonox* Orxonox::getSingleton()
-  {
-    if (!singletonRef_)
-      singletonRef_ = new Orxonox();
-    return singletonRef_;
-  }
-
-  /**
-   * error kills orxonox
-   */
-  void Orxonox::die(/* some error code */)
-  {
-    //TODO: destroy and destruct everything and print nice error msg
-    delete this;
-  }
-
-  void Orxonox::standaloneInit(std::string path)
-  {
+  void Orxonox::serverInit(std::string path)
+  {
+    COUT(2) << "initialising server" << std::endl;
+    
     ogre_->setConfigPath(path);
     ogre_->setup();
-    root_ = ogre_->getRoot();
-    if(!ogre_->load()) die(/* unable to load */);
-
-    //defineResources();
-    //setupRenderSystem();
-    //createRenderWindow();
-    //initializeResourceGroups();
-    /*createScene();
-    setupScene();
-    setupInputSystem();
-    createFrameListener();
-    Factory::createClassHierarchy();
-    startRenderLoop();*/
-  }
-
-  void Orxonox::playableServer(std::string path)
-  {
-    ogre_->setConfigPath(path);
-    ogre_->setup();
-    root_ = ogre_->getRoot();
-    defineResources();
-    setupRenderSystem();
-    createRenderWindow();
-    initializeResourceGroups();
-    setupInputSystem();
-    Factory::createClassHierarchy();
-    createScene();
-    setupScene();
-    createFrameListener();
-    try{
-      server_g = new network::Server(); //!< add port and bindadress
-      server_g->open(); //!< open server and create listener thread
-      if(ogre_ && ogre_->getRoot())
-        ogre_->getRoot()->addFrameListener(new network::ServerFrameListener()); // adds a framelistener for the server
-      COUT(3) << "Info: network framelistener added" << std::endl;
-    }
-    catch(...)
-    {
-      COUT(1) << "Error: There was a problem initialising the server :(" << std::endl;
-    }
-    startRenderLoop();
-  }
-
-  void Orxonox::standalone(){
-
-
-
-  }
-
-  void Orxonox::serverInit(std::string path)
-  {
-    COUT(2) << "initialising server" << std::endl;
-    ogre_->setConfigPath(path);
-    ogre_->setup();
-    server_g = new network::Server(); // FIXME add some settings if wanted
-    if(!ogre_->load()) die(/* unable to load */);
-    // FIXME add network framelistener
+    //root_ = ogre_->getRoot();
+    if(!ogre_->load(this->dataPath_)) abortImmediate(/* unable to load */);
+    
+    server_g = new network::Server();
   }
 
   void Orxonox::clientInit(std::string path)
   {
-    COUT(2) << "initialising client" << std::endl;
+    COUT(2) << "initialising client" << std::endl;\
+    
     ogre_->setConfigPath(path);
     ogre_->setup();
@@ -317,72 +215,44 @@
       client_g = new network::Client();
     else
-      client_g = new network::Client(serverIp_, 55556);
-    if(!ogre_->load()) die(/* unable to load */);
-    ogre_->getRoot()->addFrameListener(new network::ClientFrameListener());
-  }
-
-  void Orxonox::defineResources()
-  {
-    std::string secName, typeName, archName;
-    Ogre::ConfigFile cf;
-#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
-    cf.load(macBundlePath() + "/Contents/Resources/resources.cfg");
-#else
-    cf.load(dataPath_ + "resources.cfg");
-#endif
-
-    Ogre::ConfigFile::SectionIterator seci = cf.getSectionIterator();
-    while (seci.hasMoreElements())
-    {
-      secName = seci.peekNextKey();
-      Ogre::ConfigFile::SettingsMultiMap *settings = seci.getNext();
-      Ogre::ConfigFile::SettingsMultiMap::iterator i;
-      for (i = settings->begin(); i != settings->end(); ++i)
-      {
-        typeName = i->first;
-        archName = i->second;
-#if OGRE_PLATFORM == OGRE_PLATFORM_APPLE
-        Ogre::ResourceGroupManager::getSingleton().addResourceLocation( std::string(macBundlePath() + "/" + archName), typeName, secName);
-#else
-        Ogre::ResourceGroupManager::getSingleton().addResourceLocation( archName, typeName, secName);
-#endif
-      }
+      client_g = new network::Client(serverIp_, NETWORK_PORT);
+    if(!ogre_->load(this->dataPath_)) abortImmediate(/* unable to load */);
+  }
+  
+  void Orxonox::standaloneInit(std::string path)
+  {
+    COUT(2) << "initialising standalone mode" << std::endl;
+    
+    ogre_->setConfigPath(path);
+    ogre_->setup();
+    //root_ = ogre_->getRoot();
+    if(!ogre_->load(this->dataPath_)) abortImmediate(/* unable to load */);
+  }
+  
+  /**
+   * start modules
+   */
+  void Orxonox::start()
+  {
+    switch(mode_){
+    case CLIENT:
+      clientStart();
+      break;
+    case SERVER:
+      serverStart();
+      break;
+    default:
+      standaloneStart();
     }
   }
-
-  void Orxonox::setupRenderSystem()
-  {
-    if (!root_->restoreConfig() && !root_->showConfigDialog())
-      throw Ogre::Exception(52, "User canceled the config dialog!", "OrxApplication::setupRenderSystem()");
-  }
-
-  void Orxonox::createRenderWindow()
-  {
-    root_->initialise(true, "OrxonoxV2");
-  }
-
-  void Orxonox::initializeResourceGroups()
-  {
-    Ogre::TextureManager::getSingleton().setDefaultNumMipmaps(5);
-    Ogre::ResourceGroupManager::getSingleton().initialiseAllResourceGroups();
-  }
-
-  /**
-   *
-   * @param
-   */
-  void Orxonox::createScene(void)
-  {
-	// Init audio
+  
+  void Orxonox::clientStart(){
+    ogre_->initialise();
+    Factory::createClassHierarchy();
+    
+    
     auMan_ = new audio::AudioManager();
 
     bulletMgr_ = new BulletManager();
-
-    // load this file from config
-//    loader_ = new loader::LevelLoader("sample.oxw");
-//    loader_->loadLevel();
-    Level* startlevel = new Level("levels/sample.oxw");
-    Loader::open(startlevel);
-
+    
     Ogre::Overlay* hudOverlay = Ogre::OverlayManager::getSingleton().getByName("Orxonox/HUD1.2");
     HUD* orxonoxHud;
@@ -391,4 +261,54 @@
     orxonoxHud->setEnergyDistr(20,20,60);
     hudOverlay->show();
+    
+    client_g->establishConnection();
+    client_g->tick(0);
+    
+    
+    //setupInputSystem();
+    
+    startRenderLoop();
+  }
+  
+  void Orxonox::serverStart(){
+    //TODO: start modules
+    ogre_->initialise();
+    //TODO: run engine
+    Factory::createClassHierarchy();
+    createScene();
+    setupInputSystem();
+    
+    server_g->open();
+    
+    startRenderLoop();
+  }
+  
+  void Orxonox::standaloneStart(){
+    //TODO: start modules
+    ogre_->initialise();
+    //TODO: run engine
+    Factory::createClassHierarchy();
+    createScene();
+    setupInputSystem();
+    
+    startRenderLoop();
+  }
+
+  void Orxonox::createScene(void)
+  {
+	  // Init audio
+    auMan_ = new audio::AudioManager();
+
+    bulletMgr_ = new BulletManager();
+
+    // load this file from config
+    Level* startlevel = new Level("levels/sample.oxw");
+    Loader::open(startlevel);
+
+    Ogre::Overlay* hudOverlay = Ogre::OverlayManager::getSingleton().getByName("Orxonox/HUD1.2");
+    orxonoxHUD_ = new HUD();
+    orxonoxHUD_->setEnergyValue(20);
+    orxonoxHUD_->setEnergyDistr(20,20,60);
+    hudOverlay->show();
 
 	/*
@@ -396,89 +316,132 @@
     auMan_->ambientAdd("a2");
     auMan_->ambientAdd("a3");
-                                //auMan->ambientAdd("ambient1");
-    auMan_->ambientStart();*/
-  }
-
-
-  /**
-   *
-   */
-  void Orxonox::setupScene()
-  {
-//    SceneManager *mgr = ogre_->getSceneManager();
-
-
-//    SceneNode* node = (SceneNode*)mgr->getRootSceneNode()->getChild("OgreHeadNode");
-//     SceneNode *node = mgr->getRootSceneNode()->createChildSceneNode("OgreHeadNode", Vector3(0,0,0));
-
-
-/*
-    particle::ParticleInterface *e = new particle::ParticleInterface(mgr,"engine","Orxonox/strahl");
-    e->particleSystem_->setParameter("local_space","true");
-    e->setPositionOfEmitter(0, Vector3(0,-10,0));
-    e->setDirection(Vector3(0,0,-1));
-    e->addToSceneNode(node);
-*/
-  }
-
-
+    //auMan->ambientAdd("ambient1");
+    auMan_->ambientStart();
+  */
+  }
+
+  /**
+    @brief Calls the InputHandler which sets up the input devices.
+    The render window width and height are used to set up the mouse movement.
+  */
   void Orxonox::setupInputSystem()
   {
-    size_t windowHnd = 0;
-    std::ostringstream windowHndStr;
-    OIS::ParamList pl;
-
-    // fixes auto repeat problem
-    #if defined OIS_LINUX_PLATFORM
-      pl.insert(std::make_pair(std::string("XAutoRepeatOn"), std::string("true")));
-    #endif
-
-      Ogre::RenderWindow *win = ogre_->getRoot()->getAutoCreatedWindow();
-    win->getCustomAttribute("WINDOW", &windowHnd);
-    windowHndStr << windowHnd;
-    pl.insert(std::make_pair(std::string("WINDOW"), windowHndStr.str()));
-    inputManager_ = OIS::InputManager::createInputSystem(pl);
-
-    try
+    inputHandler_ = InputHandler::getSingleton();
+    if (!inputHandler_->initialise(ogre_->getWindowHandle(),
+          ogre_->getWindowWidth(), ogre_->getWindowHeight()))
+      abortImmediate();
+  }
+
+  /**
+    Main loop of the orxonox game.
+    This is a new solution, using the ogre engine instead of being used by it.
+    An alternative solution would be to simply use the timer of the Root object,
+    but that implies using Ogre in any case. There would be no way to test
+    our code without the help of the root object.
+    There's even a chance that we can dispose of the root object entirely
+    in server mode.
+    About the loop: The design is almost exactly like the one in ogre, so that
+    if any part of ogre registers a framelisteners, it will still behave
+    correctly. Furthermore I have taken over the time smoothing feature from
+    ogre. If turned on (see orxonox constructor), it will calculate the dt_n by
+    means of the recent most dt_n-1, dt_n-2, etc.
+  */
+  void Orxonox::startRenderLoop()
+  {
+    // use the ogre timer class to measure time.
+    if (!timer_)
+      timer_ = new Ogre::Timer();
+    timer_->reset();
+
+    // Contains the times of recently fired events
+    std::deque<unsigned long> eventTimes[3];
+    // Clear event times
+    for (int i = 0; i < 3; ++i)
+      eventTimes[i].clear();
+
+	  while (!bAbort_)
+	  {
+		  // Pump messages in all registered RenderWindows
+      Ogre::WindowEventUtilities::messagePump();
+
+      // get current time
+      unsigned long now = timer_->getMilliseconds();
+
+      // create an event to pass to the frameStarted method in ogre
+      Ogre::FrameEvent evt;
+      evt.timeSinceLastEvent = calculateEventTime(now, eventTimes[0]);
+      evt.timeSinceLastFrame = calculateEventTime(now, eventTimes[1]);
+
+      // show the current time in the HUD
+      orxonoxHUD_->setTime((int)now, 0);
+
+      // Iterate through all Tickables and call their tick(dt) function
+      for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; )
+        (it++)->tick((float)evt.timeSinceLastFrame);
+
+      // don't forget to call _fireFrameStarted in ogre to make sure
+      // everything goes smoothly
+      ogre_->frameStarted(evt);
+
+      if (mode_ != SERVER)
+        ogre_->renderOneFrame(); // only render in non-server mode
+
+      // get current time
+      now = timer_->getMilliseconds();
+
+      // create an event to pass to the frameEnded method in ogre
+      evt.timeSinceLastEvent = calculateEventTime(now, eventTimes[0]);
+      evt.timeSinceLastFrame = calculateEventTime(now, eventTimes[2]);
+
+      // again, just to be sure ogre works fine
+      ogre_->frameEnded(evt);
+	  }
+  }
+
+  /**
+    Method for calculating the average time between recently fired events.
+    Code directly taken from OgreRoot.cc
+    @param now The current time in ms.
+    @param type The type of event to be considered.
+  */
+  float Orxonox::calculateEventTime(unsigned long now, std::deque<unsigned long> &times)
+  {
+    // Calculate the average time passed between events of the given type
+    // during the last mFrameSmoothingTime seconds.
+
+    times.push_back(now);
+
+    if(times.size() == 1)
+      return 0;
+
+    // Times up to mFrameSmoothingTime seconds old should be kept
+    unsigned long discardThreshold =
+      static_cast<unsigned long>(frameSmoothingTime_ * 1000.0f);
+
+    // Find the oldest time to keep
+    std::deque<unsigned long>::iterator it = times.begin(),
+      end = times.end()-2; // We need at least two times
+    while(it != end)
     {
-      keyboard_ = static_cast<OIS::Keyboard*>(inputManager_->createInputObject(OIS::OISKeyboard, false));
-      mouse_ = static_cast<OIS::Mouse*>(inputManager_->createInputObject(OIS::OISMouse, true));
+      if (now - *it > discardThreshold)
+        ++it;
+      else
+        break;
     }
-    catch (const OIS::Exception &e)
-    {
-      throw new Ogre::Exception(42, e.eText, "OrxApplication::setupInputSystem");
-    }
-  }
-
-  // FIXME we actually want to do this differently...
-  void Orxonox::createFrameListener()
-  {
-    TickFrameListener* TickFL = new TickFrameListener();
-    ogre_->getRoot()->addFrameListener(TickFL);
-
-    TimerFrameListener* TimerFL = new TimerFrameListener();
-    ogre_->getRoot()->addFrameListener(TimerFL);
-
-    //if(mode_!=CLIENT) // FIXME just a hack ------- remove this in future
-      frameListener_ = new OrxListener(keyboard_, auMan_, mode_);
-    ogre_->getRoot()->addFrameListener(frameListener_);
-  }
-
-  void Orxonox::startRenderLoop()
-  {
-    // FIXME
-    // this is a hack!!!
-    // the call to reset the mouse clipping size should probably be somewhere
-    // else, however this works for the moment.
-    unsigned int width, height, depth;
-    int left, top;
-    ogre_->getRoot()->getAutoCreatedWindow()->getMetrics(width, height, depth, left, top);
-
-    if(mode_!=CLIENT){
-      const OIS::MouseState &ms = mouse_->getMouseState();
-      ms.width = width;
-      ms.height = height;
-    }
-    ogre_->getRoot()->startRendering();
+
+    // Remove old times
+    times.erase(times.begin(), it);
+
+    return (float)(times.back() - times.front()) / ((times.size()-1) * 1000);
+  }
+
+  /**
+    @brief Test method for the InputHandler.
+    But: Is actually responsible for catching an exit event..
+  */
+  void Orxonox::eventOccured(InputEvent &evt)
+  {
+    if (evt.id == 1)
+      this->abortRequest();
   }
 }
Index: code/trunk/src/orxonox/Orxonox.h
===================================================================
--- code/trunk/src/orxonox/Orxonox.h	(revision 1020)
+++ code/trunk/src/orxonox/Orxonox.h	(revision 1021)
@@ -11,11 +11,11 @@
 
 #include <OgrePrerequisites.h>
-#include <OIS/OISPrereqs.h>
+//#include <OIS/OISPrereqs.h>
 
 #include "OrxonoxPrereqs.h"
-//#include "loader/LoaderPrereqs.h"
 #include "audio/AudioPrereqs.h"
 
 #include "GraphicsEngine.h"
+#include "InputEventListener.h"
 
 
@@ -25,11 +25,10 @@
 
   enum gameMode{
-    STANDALONE,
     SERVER,
     CLIENT,
-    PRESENTATION
+    STANDALONE
   };
 
-  class _OrxonoxExport Orxonox
+  class _OrxonoxExport Orxonox : public InputEventListener
   {
     public:
@@ -37,49 +36,57 @@
       void start();
       // not sure if this should be private
-      void die(/* some error code */);
+      void abortImmediate(/* some error code */);
+      void abortRequest();
+      inline Ogre::SceneManager*  getSceneManager()        { return ogre_->getSceneManager(); };
+      inline GraphicsEngine*      getOgrePointer()         { return ogre_; };
+      inline audio::AudioManager* getAudioManagerPointer() { return auMan_; };
+      inline BulletManager*       getBulletMgr()           { return this->bulletMgr_; }
+
       static Orxonox* getSingleton();
-      inline Ogre::SceneManager* getSceneManager()         { return ogre_->getSceneManager(); };
-      inline GraphicsEngine* getOgrePointer()              { return ogre_; };
-      inline audio::AudioManager* getAudioManagerPointer() { return auMan_; };
-      inline OIS::Keyboard* getKeyboard()                  { return this->keyboard_; }
-      inline OIS::Mouse* getMouse()                        { return this->mouse_; }
-      inline BulletManager* getBulletMgr()                 { return this->bulletMgr_; }
+      static void destroy();
 
-    private:
+   private:
+      // don't mess with singletons
       Orxonox();
-      virtual ~Orxonox();
+      Orxonox(Orxonox& instance);
+      Orxonox& operator=(const Orxonox& instance);
+      ~Orxonox();
+
       // init functions
       void serverInit(std::string path);
       void clientInit(std::string path);
       void standaloneInit(std::string path);
+
       // run functions
-      void playableServer(std::string path);
-      void standalone();
-      void defineResources();
-      void setupRenderSystem();
-      void createRenderWindow();
-      void initializeResourceGroups();
-      void createScene(void);
-      void setupScene();
+      void serverStart();
+      void clientStart();
+      void standaloneStart();
+
+      void createScene();
       void setupInputSystem();
-      void createFrameListener();
       void startRenderLoop();
+      float calculateEventTime(unsigned long, std::deque<unsigned long>&);
+
+      void eventOccured(InputEvent &evt);
 
     private:
       GraphicsEngine*       ogre_;          //!< our dearest graphics engine <3
       std::string           dataPath_;      //!< path to data
-//      loader::LevelLoader*  loader_;        //!< level loader builds the scene
       audio::AudioManager*  auMan_;         //!< audio manager
       BulletManager*        bulletMgr_;     //!< Keeps track of the thrown bullets
-      static Orxonox*       singletonRef_;
-      OIS::Keyboard*        keyboard_;
-      OIS::Mouse*           mouse_;
-      OIS::InputManager*    inputManager_;
-      OrxListener*          frameListener_;
-      Ogre::Root*           root_;
+      InputHandler*         inputHandler_;  //!< Handles input with key bindings
+      Ogre::Root*           root_;          //!< Holy grail of Ogre
+      Ogre::Timer*          timer_;         //!< Main loop timer
+      // TODO: make this a config-value by creating a config class for orxonox
+      float                 frameSmoothingTime_;
+      // little hack to actually show something dynamic in the HUD
+      HUD*                  orxonoxHUD_;
+      bool                  bAbort_;        //!< aborts the render loop if true
 
       // this is used to identify the mode (server/client/...) we're in
       gameMode              mode_;
       std::string           serverIp_;
+
+      static Orxonox *singletonRef_s;
   };
 }
Index: code/trunk/src/orxonox/OrxonoxPlatform.h
===================================================================
--- code/trunk/src/orxonox/OrxonoxPlatform.h	(revision 1020)
+++ code/trunk/src/orxonox/OrxonoxPlatform.h	(revision 1021)
@@ -210,5 +210,9 @@
 //#   pragma warning (disable : 4503)
 
-// disable: "conversion from 'double' to 'float', possible loss of data
+// disable: conversion from 'double' to 'float', possible loss of data
+// disable: conversion from 'ogg_int64_t' to 'long', possible loss of data
+// This has been dealt with in base_properties of the solution since the
+// warning primarily occurs in library header files (which are mostly
+// included before OrxonoxPlatform.h is)
 //#   pragma warning (disable : 4244)
 
@@ -221,5 +225,12 @@
 // disable: "<type> needs to have dll-interface to be used by clients'
 // Happens on STL member variables which are not public therefore is ok
+// This has been dealt with in base_properties of the solution since the
+// warning primarily occurs in library header files (which are mostly
+// included before OrxonoxPlatform.h is)
 //#   pragma warning (disable : 4251)
+
+// disable: 'MultiTypeString' : multiple assignment operators specified
+// Used in MultiType and works fine so far
+#   pragma warning (disable : 4522)
 
 // disable: "non dll-interface class used as base for dll-interface class"
@@ -252,11 +263,7 @@
 
 
-// Create a logical xor operator
+// Define the english written operators like and, or, xor
 #if ORXONOX_COMPILER == ORXONOX_COMPILER_MSVC
-#  define XOR ^
-#elif ORXONOX_COMPILER == ORXONOX_COMPILER_GCC
-#  define XOR xor
-#else
-#  define XOR ^
+#  include <iso646.h>
 #endif
 
Index: code/trunk/src/orxonox/OrxonoxPrereqs.h
===================================================================
--- code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 1020)
+++ code/trunk/src/orxonox/OrxonoxPrereqs.h	(revision 1021)
@@ -68,4 +68,7 @@
   class Camera;
   class GraphicsEngine;
+  struct InputEvent;
+  class InputEventListener;
+  class InputHandler;
   class Mesh;
   class Model;
Index: code/trunk/src/orxonox/OrxonoxStableHeaders.h
===================================================================
--- code/trunk/src/orxonox/OrxonoxStableHeaders.h	(revision 1020)
+++ code/trunk/src/orxonox/OrxonoxStableHeaders.h	(revision 1021)
@@ -41,7 +41,12 @@
 
 // not including the entire Ogre.h doesn't exceed the default heap size for pch
+#ifndef WIN32_LEAN_AND_MEAN
+// prevent Ogre from including winsock.h that messes with winsock2.h from enet
+#  define WIN32_LEAN_AND_MEAN
+#endif
 //#include <Ogre.h>
 #include <OgreBillboardSet.h>
 #include <OgreCamera.h>
+#include <OgreColourValue.h>
 #include <OgreConfigFile.h>
 #include <OgreEntity.h>
@@ -49,4 +54,6 @@
 #include <OgreFrameListener.h>
 #include <OgreLight.h>
+#include <OgreMath.h>
+#include <OgreMatrix3.h>
 #include <OgreOverlay.h>
 #include <OgreOverlayElement.h>
@@ -56,4 +63,6 @@
 #include <OgrePlatform.h>
 #include <OgrePrerequisites.h>
+#include <OgreQuaternion.h>
+#include <OgreResourceGroupManager.h>
 #include <OgreRenderWindow.h>
 #include <OgreRoot.h>
@@ -62,5 +71,10 @@
 #include <OgreStringConverter.h>
 #include <OgreTextureManager.h>
+#include <OgreTimer.h>
+#include <OgreVector2.h>
+#include <OgreVector3.h>
+#include <OgreVector3.h>
 #include <OgreViewport.h>
+#include <OgreWindowEventUtilities.h>
 
 #include <OIS/OIS.h>
@@ -68,13 +82,13 @@
 /**
 * Some of the not so stable header files.
-* But it's not very useful to include them anyway..
+* It's not very useful to include them anyway..
 **/
 
-//#include "audio/AudioManager.h"
-
-//#include "core/CoreIncludes.h"
+#include "core/CoreIncludes.h"
 #include "core/BaseObject.h"
-//#include "core/ArgReader.h"
+#include "core/Tickable.h"
 #include "core/Error.h"
+#include "core/Loader.h"
+#include "core/XMLPort.h"
 
 #include "network/Synchronisable.h"
@@ -97,31 +111,6 @@
 #include "util/tinyxml/tinyxml.h"
 
-//#include "hud/HUD.h"
-//#include "loader/LevelLoader.h"
-//#include "objects/weapon/AmmunitionDump.h"
-//#include "objects/weapon/BarrelGun.h"
-//#include "objects/weapon/Bullet.h"
-//#include "objects/weapon/BulletManager.h"
-//#include "objects/weapon/WeaponStation.h"
-//#include "objects/Ambient.h"
-//#include "objects/Camera.h"
-//#include "objects/Explosion.h"
-//#include "objects/Fighter.h"
 #include "objects/Model.h"
-//#include "objects/NPC.h"
-//#include "objects/Projectile.h"
-//#include "objects/Skybox.h"
-//#include "objects/SpaceShipSteeringObject.h"
-#include "objects/Tickable.h"
 #include "objects/WorldEntity.h"
-//#include "particle/ParticleInterface.h"
-//#include "tools/BillboardSet.h"
-//#include "tools/Light.h"
-//#include "tools/Mesh.h"
-//#include "tools/Timer.h"
-//#include "GraphicsEngine.h"
-//#include "InputManager.h"
-//#include "Orxonox.h"
-//#include "SpaceshipSteering.h"
 
 #endif
Index: code/trunk/src/orxonox/PrecompiledHeaderFiles.cc
===================================================================
--- code/trunk/src/orxonox/PrecompiledHeaderFiles.cc	(revision 1020)
+++ code/trunk/src/orxonox/PrecompiledHeaderFiles.cc	(revision 1021)
@@ -27,5 +27,5 @@
 
 /**
- @file  PrecompiledHeaderFiles.cc
+ @file
  @brief This file actually generates the precompiled header file
  */
Index: code/trunk/src/orxonox/core/BaseObject.cc
===================================================================
--- code/trunk/src/orxonox/core/BaseObject.cc	(revision 1020)
+++ code/trunk/src/orxonox/core/BaseObject.cc	(revision 1021)
@@ -27,5 +27,5 @@
 
 /**
-    @file BaseObject.cc
+    @file
     @brief Implementation of the BaseObject class.
 */
Index: code/trunk/src/orxonox/core/CMakeLists.txt
===================================================================
--- code/trunk/src/orxonox/core/CMakeLists.txt	(revision 1020)
+++ code/trunk/src/orxonox/core/CMakeLists.txt	(revision 1021)
@@ -17,4 +17,6 @@
   Executor.cc
   XMLPort.cc
+  Tickable.cc
+  Script.cc
 )
 
@@ -24,3 +26,4 @@
 TARGET_LINK_LIBRARIES( core
   util
+  ${Lua_LIBRARIES}
 )
Index: code/trunk/src/orxonox/core/ClassTreeMask.cc
===================================================================
--- code/trunk/src/orxonox/core/ClassTreeMask.cc	(revision 1020)
+++ code/trunk/src/orxonox/core/ClassTreeMask.cc	(revision 1021)
@@ -592,5 +592,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) || other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) or other.isIncluded(subclass), false, false);
         }
 
@@ -599,5 +599,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) || other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) or other.isIncluded(subclass), false, false);
         }
 
@@ -623,5 +623,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) && other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) and other.isIncluded(subclass), false, false);
         }
 
@@ -630,5 +630,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) && other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) and other.isIncluded(subclass), false, false);
         }
 
@@ -737,5 +737,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) XOR other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) xor other.isIncluded(subclass), false, false);
         }
 
@@ -744,5 +744,5 @@
         {
             const Identifier* subclass = it->getClass();
-            newmask.add(subclass, this->isIncluded(subclass) XOR other.isIncluded(subclass), false, false);
+            newmask.add(subclass, this->isIncluded(subclass) xor other.isIncluded(subclass), false, false);
         }
 
Index: code/trunk/src/orxonox/core/DebugLevel.cc
===================================================================
--- code/trunk/src/orxonox/core/DebugLevel.cc	(revision 1020)
+++ code/trunk/src/orxonox/core/DebugLevel.cc	(revision 1021)
@@ -95,5 +95,5 @@
 
         // Return a constant value while we're creating the object
-        return 4;
+        return 3;
     }
 }
Index: code/trunk/src/orxonox/core/Loader.cc
===================================================================
--- code/trunk/src/orxonox/core/Loader.cc	(revision 1020)
+++ code/trunk/src/orxonox/core/Loader.cc	(revision 1021)
@@ -33,4 +33,5 @@
 #include "Debug.h"
 #include "CoreIncludes.h"
+#include "Script.h"
 
 #include "util/tinyxml/ticpp.h"
@@ -107,4 +108,13 @@
         Loader::currentMask_s = level->getMask() * mask;
 
+        // let Lua work this out:
+        //Script* lua;
+        /*Script::loadFile(level->getFile(), true);
+        Script::init(Script::getLuaState());
+        Script::run();*/
+        Script* lua = Script::getInstance();
+        lua->loadFile(level->getFile(), true);
+        lua->run();
+
         try
         {
@@ -112,6 +122,10 @@
             COUT(3) << "Mask: " << Loader::currentMask_s << std::endl;
 
-            ticpp::Document xmlfile(level->getFile());
-            xmlfile.LoadFile();
+            //ticpp::Document xmlfile(level->getFile());
+            //xmlfile.LoadFile();
+            //ticpp::Element myelement(*Script::getFileString());
+            ticpp::Document xmlfile;
+            //xmlfile.ToDocument();
+            xmlfile.Parse(lua->getLuaOutput(), true);
 
             for ( ticpp::Iterator<ticpp::Element> child = xmlfile.FirstChildElement(false); child != child.end(); child++ )
Index: code/trunk/src/orxonox/core/Script.cc
===================================================================
--- code/trunk/src/orxonox/core/Script.cc	(revision 1021)
+++ code/trunk/src/orxonox/core/Script.cc	(revision 1021)
@@ -0,0 +1,265 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Benjamin Knecht
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "Script.h"
+
+#include <fstream>
+#include <map>
+
+#include "../core/CoreIncludes.h"
+
+extern "C" {
+#include "lualib.h"
+#include "lauxlib.h"
+}
+
+#include "tolua++.h"
+#include "../../util/tolua/tolua_bind.h"
+
+namespace orxonox
+{
+  Script* Script::singletonRef = NULL;
+
+  Script::Script()
+  {
+    luaState_ = lua_open();
+    luaSource_ = "";
+    luaL_openlibs(luaState_);
+    tolua_orxonox_open(luaState_);
+    output_;
+  }
+
+  void Script::luaPrint(std::string str)
+  {
+    output_ += str;
+    COUT(0) << "Lua_output!:" << std::endl << str << std::endl << "***" << std::endl;
+  }
+
+  /**
+      @brief Loads the specified file line by line
+      @param filename The filename of the file
+      @param luaTags if true, the loaded file gets stripped off luaTags
+  */
+  void Script::loadFile(std::string filename, bool luaTags)
+  {
+    std::ifstream file;
+    file.open(filename.c_str(), std::fstream::in);
+
+    if (!file.is_open())
+    {
+      // some error msg
+    }
+
+    char line[1024];
+    std::string levelString = "";
+
+    while (file.good() && !file.eof())
+    {
+      file.getline(line, 1024);
+      levelString += line;
+      levelString += "\n";
+    }
+
+    file.close();
+    //std::string output;
+
+    if (luaTags) luaSource_ = replaceLuaTags(levelString);
+    COUT(0) << "ParsedSourceCode: " << luaSource_ << std::endl;
+  }
+
+  void Script::run()
+  {
+    int error = 0;
+    std::string init = "local scr = orxonox.Script:getInstance()\nprint = function(s)\nscr:luaPrint(s)\nend\n";
+    init += luaSource_;
+    error = luaL_loadstring(luaState_, init.c_str());
+    if (error == 0)
+      error = lua_pcall(luaState_, 0, 0, 0);
+    if (error != 0) COUT(0) << "Error in Lua-script: " << lua_tostring(luaState_, -1) << std::endl;
+  }
+
+
+  unsigned int Script::getNextQuote(const std::string& text, unsigned int start)
+  {
+    unsigned int quote = start - 1;
+
+    while ((quote = text.find('\"', quote + 1)) != std::string::npos)
+    {
+      unsigned int backslash = quote;
+      unsigned int numbackslashes = 0;
+      for (; backslash > 0; backslash--, numbackslashes++)
+        if (text[backslash - 1] != '\\')
+          break;
+
+      if (numbackslashes % 2 == 0)
+        break;
+    }
+
+    return quote;
+  }
+
+  std::string Script::replaceLuaTags(const std::string& text)
+  {
+    // chreate map with all Lua tags
+    std::map<unsigned int, bool> luaTags;
+    {
+      unsigned int pos = 0;
+      while ((pos = text.find("<?lua", pos)) != std::string::npos)
+        luaTags[pos++] = true;
+    }
+    {
+      unsigned int pos = 0;
+      while ((pos = text.find("?>", pos)) != std::string::npos)
+        luaTags[pos++] = false;
+    }
+
+    // erase all tags from the map that are between two quotes
+    {
+      std::map<unsigned int, bool>::iterator it = luaTags.begin();
+      std::map<unsigned int, bool>::iterator it2 = it;
+      bool bBetweenQuotes = false;
+      bool bBetweenTags = false;
+      unsigned int pos = 0;
+      while ((pos = getNextQuote(text, pos)) != std::string::npos)
+      {
+        while ((it != luaTags.end()) && (it->first < pos))
+        {
+          if (bBetweenQuotes) {
+            it2++;
+            if(it->second && !(it2->second) && it2->first < pos)
+              it = ++it2;
+            else
+              luaTags.erase(it++);
+          }
+          else
+            ++it;
+        }
+        bBetweenQuotes = !bBetweenQuotes;
+        pos++;
+      }
+    }
+
+    // check whether on every opening <?lua tag a closing ?> tag follows
+    {
+      bool expectedValue = true;
+      for (std::map<unsigned int, bool>::iterator it = luaTags.begin(); it != luaTags.end(); ++it)
+      {
+        if ((*it).second == expectedValue)
+          expectedValue = !expectedValue;
+        else
+        {
+          expectedValue = false;
+          break;
+        }
+      }
+      if (!expectedValue) {
+        // todo: errorhandling
+        return "";
+      }
+    }
+
+    // cut the original string into pieces and put them together with print() instead of lua tags
+    std::string output;
+    {
+      std::map<unsigned int, bool>::iterator it = luaTags.begin();
+      bool bInPrintFunction = true;
+      unsigned int start = 0;
+      unsigned int end = 0;
+
+      do
+      {
+        if (it != luaTags.end())
+          end = (*(it++)).first;
+        else
+          end = std::string::npos;
+
+        unsigned int equalSignCounter = 0;
+
+        if (bInPrintFunction)
+        {
+          // count ['='[ and ]'='] and replace tags with print([[ and ]])
+          std::string temp = text.substr(start, end - start);
+          {
+            unsigned int pos = 0;
+            while ((pos = temp.find('[', pos)) != std::string::npos)
+            {
+              unsigned int tempCounter = 1;
+              unsigned int tempPos = pos++;
+              while(temp[++tempPos] == '=') {
+                tempCounter++;
+              }
+              if(temp[tempPos] != '[') {
+                tempCounter = 0;
+              }
+              else if(tempCounter == 0) {
+                tempCounter = 1;
+              }
+              if (tempCounter > equalSignCounter)
+                equalSignCounter = tempCounter;
+            }
+          }
+          {
+            unsigned int pos = 0;
+            while ((pos = temp.find(']', pos)) != std::string::npos)
+            {
+              unsigned int tempCounter = 1;
+              unsigned int tempPos = pos++;
+              while(temp[++tempPos] == '=') {
+                tempCounter++;
+              }
+              if(temp[tempPos] != ']') {
+                tempCounter = 0;
+              }
+              else if(tempCounter == 0) {
+                tempCounter = 1;
+              }
+              if (tempCounter > equalSignCounter)
+                equalSignCounter = tempCounter;
+            }
+          }
+          std::string equalSigns = "";
+          for(unsigned int i = 0; i < equalSignCounter; i++) {
+            equalSigns += "=";
+          }
+          output += "print([" + equalSigns + "[" + temp + "]" + equalSigns +"])";
+          start = end + 5;
+        }
+        else
+        {
+          output += text.substr(start, end - start);
+          start = end + 2;
+        }
+
+        bInPrintFunction = !bInPrintFunction;
+      }
+      while (end != std::string::npos);
+    }
+
+    return output;
+  }
+
+}
Index: code/trunk/src/orxonox/core/Script.h
===================================================================
--- code/trunk/src/orxonox/core/Script.h	(revision 1021)
+++ code/trunk/src/orxonox/core/Script.h	(revision 1021)
@@ -0,0 +1,49 @@
+/**
+ @file  script.h
+ @brief Representation of an interface to lua
+ @author Benjamin Knecht <beni_at_orxonox.net>
+ */
+
+#ifndef _Script_H__
+#define _Script_H__
+
+extern "C" {
+#include "lua.h"
+}
+
+#include <list>
+#include <string>
+
+namespace orxonox // tolua_export
+{ // tolua_export
+
+  class Script // tolua_export
+  { // tolua_export
+    public:
+      inline static Script* getInstance() { if (!Script::singletonRef) Script::singletonRef = new Script(); return Script::singletonRef; } // tolua_export
+      inline ~Script() { Script::singletonRef = NULL; };
+
+    void loadFile(std::string filename, bool luaTags);
+    //void init(lua_State *state_);
+    //void xmlToLua();
+    void run();
+    void luaPrint(std::string str); // tolua_export
+
+    inline lua_State* getLuaState() { return luaState_; };
+    inline std::string getLuaOutput() { return output_; };
+    //inline std::string* getFileString() { return &fileString_; };
+
+    unsigned int getNextQuote(const std::string& text, unsigned int start);
+    std::string replaceLuaTags(const std::string& text);
+
+    private:
+      Script();
+      static Script* singletonRef;
+
+      std::string luaSource_;
+      std::string output_;
+      lua_State* luaState_;
+
+  }; // tolua_export
+} // tolua_export
+#endif /* _Script_H__ */
Index: code/trunk/src/orxonox/core/Tickable.cc
===================================================================
--- code/trunk/src/orxonox/core/Tickable.cc	(revision 1021)
+++ code/trunk/src/orxonox/core/Tickable.cc	(revision 1021)
@@ -0,0 +1,40 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+#include "core/CoreIncludes.h"
+#include "Tickable.h"
+
+namespace orxonox
+{
+    /**
+        @brief Constructor: Registers the object in the Tickable-list
+    */
+    Tickable::Tickable()
+    {
+        RegisterRootObject(Tickable);
+    }
+}
Index: code/trunk/src/orxonox/core/Tickable.h
===================================================================
--- code/trunk/src/orxonox/core/Tickable.h	(revision 1021)
+++ code/trunk/src/orxonox/core/Tickable.h	(revision 1021)
@@ -0,0 +1,66 @@
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Fabian 'x3n' Landau
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/*!
+    @file Tickable.h
+    @brief Definition of the Tickable interface.
+
+    The Tickable interface provides a tick(dt) function, that gets called every frame.
+    float dt is the time since the last frame in seconds.
+
+    Attention:
+    Classes derived from a Tickable that want to have a tick(dt) function on their part, MUST call the
+    parent::tick(dt) function explicitly in their implementation of tick(dt) because it's a virtual function.
+*/
+
+#ifndef _Tickable_H__
+#define _Tickable_H__
+
+#include "CorePrereqs.h"
+#include "core/OrxonoxClass.h"
+
+namespace orxonox
+{
+    //class TickFrameListener; // Forward declaration
+
+    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
+    class _CoreExport Tickable : virtual public OrxonoxClass
+    {
+        public:
+            /**
+                @brief Gets called every frame.
+                @param dt The time since the last frame in seconds
+            */
+            virtual void tick(float dt) = 0;
+
+        protected:
+            Tickable();
+    };
+
+}
+
+#endif /* _Tickable_H__ */
Index: code/trunk/src/orxonox/objects/Camera.cc
===================================================================
--- code/trunk/src/orxonox/objects/Camera.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/Camera.cc	(revision 1021)
@@ -6,5 +6,4 @@
 #include <OgreSceneManager.h>
 #include <OgreSceneNode.h>
-#include <OgreRoot.h>
 #include <OgreRenderWindow.h>
 #include <OgreViewport.h>
@@ -69,5 +68,5 @@
 
         // FIXME: unused var
-        Ogre::Viewport* vp = orxonox::Orxonox::getSingleton()->getOgrePointer()->getRoot()->getAutoCreatedWindow()->addViewport(cam);
+        Ogre::Viewport* vp = orxonox::Orxonox::getSingleton()->getOgrePointer()->getRenderWindow()->addViewport(cam);
 
 
Index: code/trunk/src/orxonox/objects/Fighter.cc
===================================================================
--- code/trunk/src/orxonox/objects/Fighter.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/Fighter.cc	(revision 1021)
@@ -37,7 +37,8 @@
 #include "util/tinyxml/tinyxml.h"
 #include "util/String2Number.h"
-#include "../core/CoreIncludes.h"
-#include "../Orxonox.h"
-#include "../particle/ParticleInterface.h"
+#include "core/CoreIncludes.h"
+#include "Orxonox.h"
+#include "InputHandler.h"
+#include "particle/ParticleInterface.h"
 #include "weapon/AmmunitionDump.h"
 #include "weapon/BarrelGun.h"
@@ -207,5 +208,5 @@
 
             node->attachObject(cam);
-            Orxonox::getSingleton()->getOgrePointer()->getRoot()->getAutoCreatedWindow()->addViewport(cam);
+            Orxonox::getSingleton()->getOgrePointer()->getRenderWindow()->addViewport(cam);
     	}
     }
@@ -254,7 +255,7 @@
         if (!this->setMouseEventCallback_)
         {
-            if (Orxonox::getSingleton()->getMouse())
+            if (InputHandler::getSingleton()->getMouse())
             {
-                Orxonox::getSingleton()->getMouse()->setEventCallback(this);
+                InputHandler::getSingleton()->getMouse()->setEventCallback(this);
                 this->setMouseEventCallback_ = true;
             }
@@ -263,6 +264,6 @@
         WorldEntity::tick(dt);
 
-        OIS::Keyboard* mKeyboard = Orxonox::getSingleton()->getKeyboard();
-        OIS::Mouse* mMouse = Orxonox::getSingleton()->getMouse();
+        OIS::Keyboard* mKeyboard = InputHandler::getSingleton()->getKeyboard();
+        OIS::Mouse* mMouse = InputHandler::getSingleton()->getMouse();
 
         mKeyboard->capture();
Index: code/trunk/src/orxonox/objects/Model.cc
===================================================================
--- code/trunk/src/orxonox/objects/Model.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/Model.cc	(revision 1021)
@@ -44,4 +44,5 @@
     {
         RegisterObject(Model);
+        registerAllVariables();
     }
 
@@ -63,5 +64,6 @@
     /**
         @brief XML loading and saving.
-        @param xmlelement The XML-element
+    @p
+    aram xmlelement The XML-element
         @param loading Loading (true) or saving (false)
         @return The XML-element
@@ -82,4 +84,5 @@
 
     bool Model::create(){
+      WorldEntity::create();
       if(meshSrc_.compare("")!=0){
         this->mesh_.setMesh(meshSrc_);
@@ -87,10 +90,10 @@
         COUT(4) << "Loader: Created model" << std::endl;
       }
-      registerAllVariables();
       return true;
     }
 
     void Model::registerAllVariables(){
-//      registerVar(&meshSrc_, meshSrc_.length() + 1, network::STRING);
+      WorldEntity::registerAllVariables();
+      registerVar(&meshSrc_, meshSrc_.length() + 1, network::STRING);
     }
 }
Index: code/trunk/src/orxonox/objects/Model.h
===================================================================
--- code/trunk/src/orxonox/objects/Model.h	(revision 1020)
+++ code/trunk/src/orxonox/objects/Model.h	(revision 1021)
@@ -22,8 +22,10 @@
             bool create();
 
+        protected:
+            void registerAllVariables();
+            
         private:
             std::string meshSrc_;
             Mesh mesh_;
-            void registerAllVariables();
     };
 }
Index: code/trunk/src/orxonox/objects/NPC.cc
===================================================================
--- code/trunk/src/orxonox/objects/NPC.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/NPC.cc	(revision 1021)
@@ -85,5 +85,5 @@
   void NPC::tick(float dt)
   {
-
+    update();
     this->setVelocity(0.995*this->getVelocity() + this->getAcceleration()*dt);
     this->translate(this->getVelocity()*dt);
Index: code/trunk/src/orxonox/objects/SpaceShip.cc
===================================================================
--- code/trunk/src/orxonox/objects/SpaceShip.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/SpaceShip.cc	(revision 1021)
@@ -39,8 +39,9 @@
 #include "util/String2Number.h"
 #include "util/Math.h"
-#include "../core/CoreIncludes.h"
-#include "../core/Debug.h"
-#include "../Orxonox.h"
-#include "../particle/ParticleInterface.h"
+#include "core/CoreIncludes.h"
+#include "core/Debug.h"
+#include "Orxonox.h"
+#include "InputHandler.h"
+#include "particle/ParticleInterface.h"
 #include "Projectile.h"
 #include "core/XMLPort.h"
@@ -55,4 +56,5 @@
     {
         RegisterObject(SpaceShip);
+        this->registerAllVariables();
 
         this->setConfigValues();
@@ -124,6 +126,7 @@
         this->brakeLoop(loop);
 */
-        this->init();
-
+//         this->create();
+
+        
         COUT(3) << "Info: SpaceShip was loaded" << std::endl;
     }
@@ -135,4 +138,19 @@
     }
 
+    bool SpaceShip::create(){
+      if(Model::create())
+        this->init();
+      else
+        return false;
+      return true;
+    }
+    
+    void SpaceShip::registerAllVariables(){
+      Model::registerAllVariables();
+      
+      
+      
+    }
+    
     void SpaceShip::init()
     {
@@ -202,4 +220,5 @@
     {
         Model::loadParams(xmlElem);
+        this->create();
 /*
         if (xmlElem->Attribute("forward") && xmlElem->Attribute("rotateupdown") && xmlElem->Attribute("rotaterightleft") && xmlElem->Attribute("looprightleft"))
@@ -267,5 +286,5 @@
 
         this->camNode_->attachObject(cam);
-        Orxonox::getSingleton()->getOgrePointer()->getRoot()->getAutoCreatedWindow()->addViewport(cam);
+        Orxonox::getSingleton()->getOgrePointer()->getRenderWindow()->addViewport(cam);
     }
 
@@ -400,7 +419,7 @@
         if (!this->setMouseEventCallback_)
         {
-            if (Orxonox::getSingleton()->getMouse())
+            if (InputHandler::getSingleton()->getMouse())
             {
-                Orxonox::getSingleton()->getMouse()->setEventCallback(this);
+                InputHandler::getSingleton()->getMouse()->setEventCallback(this);
                 this->setMouseEventCallback_ = true;
             }
@@ -427,6 +446,6 @@
         }
 
-        OIS::Keyboard* mKeyboard = Orxonox::getSingleton()->getKeyboard();
-        OIS::Mouse* mMouse = Orxonox::getSingleton()->getMouse();
+        OIS::Keyboard* mKeyboard = InputHandler::getSingleton()->getKeyboard();
+        OIS::Mouse* mMouse = InputHandler::getSingleton()->getMouse();
 
         mKeyboard->capture();
Index: code/trunk/src/orxonox/objects/SpaceShip.h
===================================================================
--- code/trunk/src/orxonox/objects/SpaceShip.h	(revision 1020)
+++ code/trunk/src/orxonox/objects/SpaceShip.h	(revision 1021)
@@ -21,4 +21,6 @@
             SpaceShip();
             ~SpaceShip();
+            bool create();
+            void registerAllVariables();
             void init();
             void setConfigValues();
Index: code/trunk/src/orxonox/objects/Tickable.cc
===================================================================
--- code/trunk/src/orxonox/objects/Tickable.cc	(revision 1020)
+++ 	(revision )
@@ -1,42 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-#include "OrxonoxStableHeaders.h"
-
-#include "core/CoreIncludes.h"
-#include "Tickable.h"
-
-namespace orxonox
-{
-    /**
-        @brief Constructor: Registers the object in the Tickable-list
-    */
-    Tickable::Tickable()
-    {
-        RegisterRootObject(Tickable);
-    }
-}
Index: code/trunk/src/orxonox/objects/Tickable.h
===================================================================
--- code/trunk/src/orxonox/objects/Tickable.h	(revision 1020)
+++ 	(revision )
@@ -1,82 +1,0 @@
-/*
- *   ORXONOX - the hottest 3D action shooter ever to exist
- *
- *
- *   License notice:
- *
- *   This program is free software; you can redistribute it and/or
- *   modify it under the terms of the GNU General Public License
- *   as published by the Free Software Foundation; either version 2
- *   of the License, or (at your option) any later version.
- *
- *   This program is distributed in the hope that it will be useful,
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- *   GNU General Public License for more details.
- *
- *   You should have received a copy of the GNU General Public License
- *   along with this program; if not, write to the Free Software
- *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
- *
- *   Author:
- *      Fabian 'x3n' Landau
- *   Co-authors:
- *      ...
- *
- */
-
-/*!
-    @file Tickable.h
-    @brief Definition of the Tickable interface.
-
-    The Tickable interface provides a tick(dt) function, that gets called every frame.
-    float dt is the time since the last frame in seconds.
-
-    Attention:
-    Classes derived from a Tickable that want to have a tick(dt) function on their part, MUST call the
-    parent::tick(dt) function explicit in their implementation of tick(dt) because it's a virtual function.
-*/
-
-#ifndef _Tickable_H__
-#define _Tickable_H__
-
-#include <OgreFrameListener.h>
-
-#include "../OrxonoxPrereqs.h"
-#include "core/OrxonoxClass.h"
-
-namespace orxonox
-{
-    class TickFrameListener; // Forward declaration
-
-    //! The Tickable interface provides a tick(dt) function, that gets called every frame.
-    class _OrxonoxExport Tickable : virtual public OrxonoxClass
-    {
-        public:
-            /**
-                @brief Gets called every frame.
-                @param dt The time since the last frame in seconds
-            */
-            virtual void tick(float dt) = 0;
-
-        protected:
-            Tickable();
-    };
-
-    //! The TickFrameListener calls the tick(dt) function of all Tickables every frame.
-    class _OrxonoxExport TickFrameListener : public Ogre::FrameListener
-    {
-        private:
-            /** @brief Gets called before a frame gets rendered. */
-            bool frameStarted(const Ogre::FrameEvent &evt)
-            {
-                // Iterate through all Tickables and call their tick(dt) function
-                for (Iterator<Tickable> it = ObjectList<Tickable>::start(); it; )
-                    (it++)->tick(evt.timeSinceLastFrame);
-
-                return FrameListener::frameStarted(evt);
-            }
-    };
-}
-
-#endif /* _Tickable_H__ */
Index: code/trunk/src/orxonox/objects/WorldEntity.cc
===================================================================
--- code/trunk/src/orxonox/objects/WorldEntity.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/WorldEntity.cc	(revision 1021)
@@ -49,15 +49,5 @@
         RegisterObject(WorldEntity);
 
-        if (Orxonox::getSingleton()->getSceneManager())
-        {
-            std::ostringstream name;
-            name << (WorldEntity::worldEntityCounter_s++);
-            this->setName("WorldEntity" + name.str());
-            this->node_ = Orxonox::getSingleton()->getSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName());
-        }
-        else
-        {
-            this->node_ = 0;
-        }
+        //create();
 
         this->bStatic_ = true;
@@ -67,4 +57,18 @@
         this->rotationRate_ = 0;
         this->momentum_ = 0;
+        
+        if (Orxonox::getSingleton()->getSceneManager())
+        {
+          std::ostringstream name;
+          name << (WorldEntity::worldEntityCounter_s++);
+          this->setName("WorldEntity" + name.str());
+          this->node_ = Orxonox::getSingleton()->getSceneManager()->getRootSceneNode()->createChildSceneNode(this->getName());
+        
+          registerAllVariables();
+        }
+        else
+        {
+          this->node_ = 0;
+        }
     }
 
@@ -89,4 +93,5 @@
 
         BaseObject::loadParams(xmlElem);
+        create();
 /*
         if (xmlElem->Attribute("position"))
@@ -185,12 +190,8 @@
     }
 
-    bool WorldEntity::create(){
-      registerAllVariables();
-      return true;
-    }
 
     void WorldEntity::registerAllVariables()
     {
-/*      // register coordinates
+      // register coordinates
       registerVar( (void*) &(this->getPosition().x), sizeof(this->getPosition().x), network::DATA);
       registerVar( (void*) &(this->getPosition().y), sizeof(this->getPosition().y), network::DATA);
@@ -200,7 +201,7 @@
       registerVar( (void*) &(this->getOrientation().x), sizeof(this->getOrientation().x), network::DATA);
       registerVar( (void*) &(this->getOrientation().y), sizeof(this->getOrientation().y), network::DATA);
-      registerVar( (void*) &(this->getOrientation().z), sizeof(this->getOrientation().z), network::DATA);*/
+      registerVar( (void*) &(this->getOrientation().z), sizeof(this->getOrientation().z), network::DATA);
       // not needed at the moment, because we don't have prediction yet
-      /*// register velocity_
+      // register velocity_
       registerVar( (void*) &(this->getVelocity().x), sizeof(this->getVelocity().x), network::DATA);
       registerVar( (void*) &(this->getVelocity().y), sizeof(this->getVelocity().y), network::DATA);
@@ -210,5 +211,5 @@
       registerVar( (void*) &(this->getRotationAxis().x), sizeof(this->getRotationAxis().x), network::DATA);
       registerVar( (void*) &(this->getRotationAxis().y), sizeof(this->getRotationAxis().y), network::DATA);
-      registerVar( (void*) &(this->getRotationAxis().z), sizeof(this->getRotationAxis().z), network::DATA);*/
+      registerVar( (void*) &(this->getRotationAxis().z), sizeof(this->getRotationAxis().z), network::DATA);
     }
 
Index: code/trunk/src/orxonox/objects/WorldEntity.h
===================================================================
--- code/trunk/src/orxonox/objects/WorldEntity.h	(revision 1020)
+++ code/trunk/src/orxonox/objects/WorldEntity.h	(revision 1021)
@@ -12,10 +12,10 @@
 //#include "util/tinyxml/tinyxml.h"
 #include "core/BaseObject.h"
-#include "Tickable.h"
+#include "core/Tickable.h"
 #include "../tools/Mesh.h"
 
 namespace orxonox
 {
-    class _OrxonoxExport WorldEntity : public BaseObject, public Tickable//, public network::Synchronisable
+    class _OrxonoxExport WorldEntity : public BaseObject, public Tickable, public network::Synchronisable
     {
         public:
@@ -26,5 +26,5 @@
             virtual void loadParams(TiXmlElement* xmlElem);
             virtual void XMLPort(Element& xmlelement, bool loading);
-            bool create();
+            inline bool create(){ return true; }
 
             void attachWorldEntity(WorldEntity* entity);
Index: code/trunk/src/orxonox/objects/weapon/AmmunitionDump.cc
===================================================================
--- code/trunk/src/orxonox/objects/weapon/AmmunitionDump.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/weapon/AmmunitionDump.cc	(revision 1021)
@@ -45,4 +45,5 @@
   {
     RegisterObject(AmmunitionDump);
+    registerAllVariables();
 
     for (int i = 0; i < numberOfAmmos_; i++)
@@ -114,3 +115,13 @@
     return stock_[id];
   }
+  
+  void AmmunitionDump::registerAllVariables(){
+    registerVar( &numberOfAmmos_, sizeof(int), network::DATA);
+    
+    for (int i = 0; i < numberOfAmmos_; i++)
+    {
+      registerVar(&stock_[i], sizeof(int), network::DATA);
+      registerVar(&capacity_[i], sizeof(int), network::DATA);
+    }
+  }
 }
Index: code/trunk/src/orxonox/objects/weapon/AmmunitionDump.h
===================================================================
--- code/trunk/src/orxonox/objects/weapon/AmmunitionDump.h	(revision 1020)
+++ code/trunk/src/orxonox/objects/weapon/AmmunitionDump.h	(revision 1021)
@@ -60,4 +60,5 @@
   protected:
     inline bool create() { return true; }
+    void registerAllVariables();
 
     int numberOfAmmos_;
Index: code/trunk/src/orxonox/objects/weapon/BulletManager.cc
===================================================================
--- code/trunk/src/orxonox/objects/weapon/BulletManager.cc	(revision 1020)
+++ code/trunk/src/orxonox/objects/weapon/BulletManager.cc	(revision 1021)
@@ -39,4 +39,5 @@
   {
     RegisterObject(BulletManager);
+    registerAllVariables();
     bullets_ = new Bullet*[bulletsSize_];
   }
@@ -103,3 +104,10 @@
   }
 
+  void BulletManager::registerAllVariables(){
+    registerVar(&bulletsSize_, sizeof(int), network::DATA);
+    registerVar(&bulletsIndex_, sizeof(int), network::DATA);
+    // TODO we got a problem here:
+    // there is no possibility (so far) to synchronise pointers to objects
+  }
+  
 }
Index: code/trunk/src/orxonox/objects/weapon/BulletManager.h
===================================================================
--- code/trunk/src/orxonox/objects/weapon/BulletManager.h	(revision 1020)
+++ code/trunk/src/orxonox/objects/weapon/BulletManager.h	(revision 1021)
@@ -39,5 +39,5 @@
 #include "util/tinyxml/tinyxml.h"
 #include "core/BaseObject.h"
-#include "../Tickable.h"
+#include "core/Tickable.h"
 
 namespace orxonox {
@@ -60,4 +60,5 @@
   protected:
     inline bool create() { return true; }
+    void registerAllVariables();
 
     // Bullet array
Index: code/trunk/src/orxonox/particle/ParticleInterface.cc
===================================================================
--- code/trunk/src/orxonox/particle/ParticleInterface.cc	(revision 1020)
+++ code/trunk/src/orxonox/particle/ParticleInterface.cc	(revision 1021)
@@ -69,5 +69,5 @@
   {
     //Abgleichen der anderen Emitter an die Variabeln
-    for (int i=0; i < numberOfEmitters_; i++) {
+    for (int i=1; i < numberOfEmitters_; i++) {
       particleSystem_->getEmitter(i)->setColour( colour_ );
       particleSystem_->getEmitter(i)->setTimeToLive( distance_ );
@@ -84,5 +84,5 @@
   }
 
-  void ParticleInterface::setRate(float r)
+  void ParticleInterface::setRate(int r)
   {
     rate_ = r;
@@ -127,5 +127,5 @@
   Vector3 ParticleInterface::getPositionOfEmitter ( int emitterNr )
   {
-    return particleSystem_->getEmitter(emitterNr)->getPosition();
+    return particleSystem_->getEmitter(0)->getPosition();
   }
 
Index: code/trunk/src/orxonox/particle/ParticleInterface.h
===================================================================
--- code/trunk/src/orxonox/particle/ParticleInterface.h	(revision 1020)
+++ code/trunk/src/orxonox/particle/ParticleInterface.h	(revision 1021)
@@ -48,7 +48,7 @@
     void setVelocity( Real v );
 
-    inline float getRate()
+    inline int getRate()
       { return rate_; };
-    void setRate( float r );
+    void setRate( int r );
 
     inline Real getDistance()
@@ -71,5 +71,5 @@
     Real distance_;
     Real velocity_;
-    float rate_;
+    int rate_;
     ColourValue colour_;
     int numberOfEmitters_;
Index: code/trunk/src/orxonox/script/tolua++.h
===================================================================
--- code/trunk/src/orxonox/script/tolua++.h	(revision 1021)
+++ code/trunk/src/orxonox/script/tolua++.h	(revision 1021)
@@ -0,0 +1,182 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+
+#ifndef TOLUA_H
+#define TOLUA_H
+
+#ifndef TOLUA_API
+#define TOLUA_API extern
+#endif
+
+#define TOLUA_VERSION "tolua++-1.0.92"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define tolua_pushcppstring(x,y)	tolua_pushstring(x,y.c_str())
+#define tolua_iscppstring	tolua_isstring
+
+#define tolua_iscppstringarray tolua_isstringarray
+#define tolua_pushfieldcppstring(L,lo,idx,s) tolua_pushfieldstring(L, lo, idx, s.c_str())
+
+#ifndef TEMPLATE_BIND
+ #define TEMPLATE_BIND(p)
+#endif
+
+#define TOLUA_TEMPLATE_BIND(p)
+
+#define TOLUA_PROTECTED_DESTRUCTOR
+#define TOLUA_PROPERTY_TYPE(p)
+
+typedef int lua_Object;
+
+#include "lua.h"
+#include "lauxlib.h"
+
+struct tolua_Error
+{
+	int index;
+	int array;
+	const char* type;
+};
+typedef struct tolua_Error tolua_Error;
+
+#define TOLUA_NOPEER	LUA_REGISTRYINDEX /* for lua 5.1 */
+
+TOLUA_API const char* tolua_typename (lua_State* L, int lo);
+TOLUA_API void tolua_error (lua_State* L, char* msg, tolua_Error* err);
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluenil (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err);
+
+TOLUA_API void tolua_open (lua_State* L);
+
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size);
+TOLUA_API int tolua_register_gc (lua_State* L, int lo);
+TOLUA_API int tolua_default_collect (lua_State* tolua_S);
+
+TOLUA_API void tolua_usertype (lua_State* L, char* type);
+TOLUA_API void tolua_beginmodule (lua_State* L, char* name);
+TOLUA_API void tolua_endmodule (lua_State* L);
+TOLUA_API void tolua_module (lua_State* L, char* name, int hasvar);
+TOLUA_API void tolua_class (lua_State* L, char* name, char* base);
+TOLUA_API void tolua_cclass (lua_State* L, char* lname, char* name, char* base, lua_CFunction col);
+TOLUA_API void tolua_function (lua_State* L, char* name, lua_CFunction func);
+TOLUA_API void tolua_constant (lua_State* L, char* name, lua_Number value);
+TOLUA_API void tolua_variable (lua_State* L, char* name, lua_CFunction get, lua_CFunction set);
+TOLUA_API void tolua_array (lua_State* L,char* name, lua_CFunction get, lua_CFunction set);
+
+/* TOLUA_API void tolua_set_call_event(lua_State* L, lua_CFunction func, char* type); */
+/* TOLUA_API void tolua_addbase(lua_State* L, char* name, char* base); */
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo);
+TOLUA_API void tolua_pushboolean (lua_State* L, int value);
+TOLUA_API void tolua_pushnumber (lua_State* L, lua_Number value);
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value);
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value);
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushusertype_and_takeownership(lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, lua_Number v);
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v);
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v);
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type);
+TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, int lo, int index, void* v, const char* type);
+
+TOLUA_API lua_Number tolua_tonumber (lua_State* L, int narg, lua_Number def);
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def);
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def);
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def);
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def);
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def);
+TOLUA_API lua_Number tolua_tofieldnumber (lua_State* L, int lo, int index, lua_Number def);
+TOLUA_API const char* tolua_tofieldstring (lua_State* L, int lo, int index, const char* def);
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def);
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def);
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def);
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def);
+
+TOLUA_API void tolua_dobuffer(lua_State* L, char* B, unsigned int size, const char* name);
+
+TOLUA_API int class_gc_event (lua_State* L);
+
+#ifdef __cplusplus
+static inline const char* tolua_tocppstring (lua_State* L, int narg, const char* def) {
+
+	const char* s = tolua_tostring(L, narg, def);
+	return s?s:"";
+};
+
+static inline const char* tolua_tofieldcppstring (lua_State* L, int lo, int index, const char* def) {
+
+	const char* s = tolua_tofieldstring(L, lo, index, def);
+	return s?s:"";
+};
+
+#else
+#define tolua_tocppstring tolua_tostring
+#define tolua_tofieldcppstring tolua_tofieldstring
+#endif
+
+TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb, int super_index);
+
+#ifndef Mtolua_new
+#define Mtolua_new(EXP) new EXP
+#endif
+
+#ifndef Mtolua_delete
+#define Mtolua_delete(EXP) delete EXP
+#endif
+
+#ifndef Mtolua_delete_dim
+#define Mtolua_delete_dim(EXP) delete [] EXP
+#endif
+
+#ifndef tolua_outside
+#define tolua_outside
+#endif
+
+#ifndef tolua_owned
+#define tolua_owned
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: code/trunk/src/orxonox/tools/Timer.cc
===================================================================
--- code/trunk/src/orxonox/tools/Timer.cc	(revision 1020)
+++ code/trunk/src/orxonox/tools/Timer.cc	(revision 1021)
@@ -46,3 +46,28 @@
         this->time_ = 0;
     }
+
+    /**
+        @brief Updates the timer before the frames are rendered.
+    */
+    void TimerBase::tick(float dt)
+    {
+        if (this->bActive_)
+        {
+            // If active: Decrease the timer by the duration of the last frame
+            this->time_ -= dt;
+
+            if (this->time_ <= 0)
+            {
+                // It's time to call the function
+                if (this->bLoop_)
+                    // Q: Why '+=' and not '='? A: Think about it. It's more accurate like that. Seriously.
+                    this->time_ += this->interval_;
+                else
+                    this->stopTimer(); // Stop the timer if we don't want to loop
+
+                this->run();
+            }
+        }
+    }
+
 }
Index: code/trunk/src/orxonox/tools/Timer.h
===================================================================
--- code/trunk/src/orxonox/tools/Timer.h	(revision 1020)
+++ code/trunk/src/orxonox/tools/Timer.h	(revision 1021)
@@ -58,14 +58,12 @@
 #define _Timer_H__
 
-#include <OgreFrameListener.h>
 #include "../OrxonoxPrereqs.h"
+#include "core/Tickable.h"
 
 namespace orxonox
 {
     //! TimerBase is the parent of the Timer class.
-    class _OrxonoxExport TimerBase : public OrxonoxClass
+    class _OrxonoxExport TimerBase : public Tickable
     {
-        friend class TimerFrameListener;
-
         public:
             TimerBase();
@@ -83,4 +81,6 @@
             /** @brief Returns true if the Timer is active (= not stoped, not paused). @return True = Time is active */
             inline bool isActive() const { return this->bActive_; }
+
+            void tick(float dt);
 
         protected:
@@ -145,39 +145,4 @@
     };
 
-    //! The TimerFrameListener manages all Timers in the game.
-    class TimerFrameListener : public Ogre::FrameListener
-    {
-        private:
-            /** @brief Gets called before a frame gets rendered. */
-            bool frameStarted(const Ogre::FrameEvent &evt)
-            {
-                // Iterate through all Timers
-                for (Iterator<TimerBase> it = ObjectList<TimerBase>::start(); it; )
-                {
-                    if (it->isActive())
-                    {
-                        // If active: Decrease the timer by the duration of the last frame
-                        it->time_ -= evt.timeSinceLastFrame;
-
-                        if (it->time_ <= 0)
-                        {
-                            // It's time to call the function
-                            if (it->bLoop_)
-                                it->time_ += it->interval_; // Q: Why '+=' and not '='? A: Think about it. It's more accurate like that. Seriously.
-                            else
-                                it->stopTimer(); // Stop the timer if we don't want to loop
-
-                            (it++)->run();
-                        }
-                        else
-                            ++it;
-                    }
-                    else
-                        ++it;
-                }
-
-                return FrameListener::frameStarted(evt);
-            }
-    };
 }
 
Index: code/trunk/src/util/CMakeLists.txt
===================================================================
--- code/trunk/src/util/CMakeLists.txt	(revision 1020)
+++ code/trunk/src/util/CMakeLists.txt	(revision 1021)
@@ -2,4 +2,5 @@
 
 AUX_SOURCE_DIRECTORY(tinyxml TINYXML_SRC_FILES)
+AUX_SOURCE_DIRECTORY(tolua TOLUA_SRC_FILES)
 
 SET (UTIL_SRC_FILES
@@ -11,4 +12,5 @@
   MultiTypeMath.cc
   ${TINYXML_SRC_FILES}
+  ${TOLUA_SRC_FILES}
 )
 
Index: code/trunk/src/util/Sleep.h
===================================================================
--- code/trunk/src/util/Sleep.h	(revision 1020)
+++ code/trunk/src/util/Sleep.h	(revision 1021)
@@ -1,7 +1,43 @@
-// hack for the usleep/Sleep problem
-#if defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
+/*
+ *   ORXONOX - the hottest 3D action shooter ever to exist
+ *
+ *
+ *   License notice:
+ *
+ *   This program is free software; you can redistribute it and/or
+ *   modify it under the terms of the GNU General Public License
+ *   as published by the Free Software Foundation; either version 2
+ *   of the License, or (at your option) any later version.
+ *
+ *   This program is distributed in the hope that it will be useful,
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *   GNU General Public License for more details.
+ *
+ *   You should have received a copy of the GNU General Public License
+ *   along with this program; if not, write to the Free Software
+ *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ *
+ *   Author:
+ *      Reto Grieder
+ *   Co-authors:
+ *      ...
+ *
+ */
+
+/**
+ @file  Sleep.h
+ @brief Macros for using sleep() and usleep() under windows
+ */
+
+#include "OrxonoxPlatform.h"
+
+#if ORXONOX_PLATFORM == ORXONOX_PLATFORM_WIN32
 #  include <windows.h>
-#  define usleep(x) Sleep((x)/1000)
+#  define usleep(x) Sleep((x) / 1000)
+#  define msleep(x) Sleep(x)
+#  define  sleep(x) Sleep((x) * 1000)
 #else
 #  include <unistd.h>
+#  define msleep(x) uleep((x) * 1000)
 #endif
Index: code/trunk/src/util/tolua/tolua++.h
===================================================================
--- code/trunk/src/util/tolua/tolua++.h	(revision 1021)
+++ code/trunk/src/util/tolua/tolua++.h	(revision 1021)
@@ -0,0 +1,157 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+
+#ifndef TOLUA_H
+#define TOLUA_H
+
+#ifndef TOLUA_API
+#define TOLUA_API extern
+#endif
+
+#define TOLUA_VERSION "tolua++-1.0.92"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define tolua_pushcppstring(x,y)	tolua_pushstring(x,y.c_str())
+#define tolua_iscppstring	tolua_isstring
+
+#define tolua_iscppstringarray tolua_isstringarray
+#define tolua_pushfieldcppstring(L,lo,idx,s) tolua_pushfieldstring(L, lo, idx, s.c_str())
+
+#define TEMPLATE_BIND(p)
+#define TOLUA_TEMPLATE_BIND(p)
+#define TOLUA_PROTECTED_DESTRUCTOR
+#define TOLUA_PROPERTY_TYPE(p)
+
+typedef int lua_Object;
+
+#include "lua.h"
+#include "lauxlib.h"
+
+struct tolua_Error
+{
+	int index;
+	int array;
+	const char* type;
+};
+typedef struct tolua_Error tolua_Error;
+
+#define TOLUA_NOPEER	LUA_REGISTRYINDEX /* for lua 5.1 */
+
+TOLUA_API const char* tolua_typename (lua_State* L, int lo);
+TOLUA_API void tolua_error (lua_State* L, char* msg, tolua_Error* err);
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err);
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err);
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err);
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err);
+
+TOLUA_API void tolua_open (lua_State* L);
+
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size);
+TOLUA_API int tolua_register_gc (lua_State* L, int lo);
+TOLUA_API int tolua_default_collect (lua_State* tolua_S);
+
+TOLUA_API void tolua_usertype (lua_State* L, char* type);
+TOLUA_API void tolua_beginmodule (lua_State* L, char* name);
+TOLUA_API void tolua_endmodule (lua_State* L);
+TOLUA_API void tolua_module (lua_State* L, char* name, int hasvar);
+TOLUA_API void tolua_class (lua_State* L, char* name, char* base);
+TOLUA_API void tolua_cclass (lua_State* L, char* lname, char* name, char* base, lua_CFunction col);
+TOLUA_API void tolua_function (lua_State* L, char* name, lua_CFunction func);
+TOLUA_API void tolua_constant (lua_State* L, char* name, double value);
+TOLUA_API void tolua_variable (lua_State* L, char* name, lua_CFunction get, lua_CFunction set);
+TOLUA_API void tolua_array (lua_State* L,char* name, lua_CFunction get, lua_CFunction set);
+
+/* TOLUA_API void tolua_set_call_event(lua_State* L, lua_CFunction func, char* type); */
+/* TOLUA_API void tolua_addbase(lua_State* L, char* name, char* base); */
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo);
+TOLUA_API void tolua_pushboolean (lua_State* L, int value);
+TOLUA_API void tolua_pushnumber (lua_State* L, double value);
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value);
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value);
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushusertype_and_takeownership(lua_State* L, void* value, const char* type);
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v);
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, double v);
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v);
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v);
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type);
+TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, int lo, int index, void* v, const char* type);
+
+TOLUA_API double tolua_tonumber (lua_State* L, int narg, double def);
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def);
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def);
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def);
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def);
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def);
+TOLUA_API double tolua_tofieldnumber (lua_State* L, int lo, int index, double def);
+TOLUA_API const char* tolua_tofieldstring (lua_State* L, int lo, int index, const char* def);
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def);
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def);
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def);
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def);
+
+TOLUA_API void tolua_dobuffer(lua_State* L, char* B, unsigned int size, const char* name);
+
+TOLUA_API int class_gc_event (lua_State* L);
+
+#ifdef __cplusplus
+static inline const char* tolua_tocppstring (lua_State* L, int narg, const char* def) {
+
+	const char* s = tolua_tostring(L, narg, def);
+	return s?s:"";
+};
+
+static inline const char* tolua_tofieldcppstring (lua_State* L, int lo, int index, const char* def) {
+
+	const char* s = tolua_tofieldstring(L, lo, index, def);
+	return s?s:"";
+};
+
+#else
+#define tolua_tocppstring tolua_tostring
+#define tolua_tofieldcppstring tolua_tofieldstring
+#endif
+
+TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb, int super_index);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
Index: code/trunk/src/util/tolua/tolua.c
===================================================================
--- code/trunk/src/util/tolua/tolua.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua.c	(revision 1021)
@@ -0,0 +1,167 @@
+/* tolua
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Aug 2003
+** $Id:$
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua++.h"
+
+#include "lua.h"
+#include "lualib.h"
+#include "lauxlib.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+
+static void help (void)
+{
+ fprintf(stderr,"\n"
+         "usage: tolua++ [options] input_file\n"
+         "\n"
+         "Command line options are:\n"
+         "  -v       : print version information.\n"
+         "  -o  file : set output file; default is stdout.\n"
+         "  -H  file : create include file.\n"
+         "  -n  name : set package name; default is input file root name.\n"
+         "  -p       : parse only.\n"
+         "  -P       : parse and print structure information (for debug).\n"
+         "  -S       : disable support for c++ strings.\n"
+         "  -1       : substract 1 to operator[] index (for compatibility with tolua5).\n"
+         "  -L  file : run lua file (with dofile()) before doing anything.\n"
+         "  -D       : disable automatic exporting of destructors for classes that have\n"
+         "             constructors (for compatibility with tolua5)\n"
+         "  -W       : disable warnings for unsupported features (for compatibility\n"
+         "             with tolua5)\n"
+         "  -C       : disable cleanup of included lua code (for easier debugging)\n"
+         "  -E  value[=value] : add extra values to the luastate\n"
+         "  -t       : export a list of types asociates with the C++ typeid name\n"
+         "  -h       : print this message.\n"
+         "Should the input file be omitted, stdin is assumed;\n"
+         "in that case, the package name must be explicitly set.\n\n"
+        );
+}
+
+static void version (void)
+{
+ fprintf(stderr, "%s (written by W. Celes, A. Manzur)\n",TOLUA_VERSION);
+}
+
+static void setfield (lua_State* L, int table, char* f, char* v)
+{
+ lua_pushstring(L,f);
+ lua_pushstring(L,v);
+ lua_settable(L,table);
+}
+
+static void add_extra (lua_State* L, char* value) {
+	int len;
+	lua_getglobal(L, "_extra_parameters");
+	len = luaL_getn(L, -1);
+	lua_pushstring(L, value);
+	lua_rawseti(L, -2, len+1);
+	lua_pop(L, 1);
+};
+
+static void error (char* o)
+{
+ fprintf(stderr,"tolua: unknown option '%s'\n",o);
+ help();
+ exit(1);
+}
+
+int main (int argc, char* argv[])
+{
+ #ifdef LUA_VERSION_NUM /* lua 5.1 */
+ lua_State* L = luaL_newstate();
+ luaL_openlibs(L);
+ #else
+ lua_State* L = lua_open();
+ luaopen_base(L);
+ luaopen_io(L);
+ luaopen_string(L);
+ luaopen_table(L);
+ luaopen_math(L);
+ luaopen_debug(L);
+ #endif
+
+ lua_pushstring(L,TOLUA_VERSION); lua_setglobal(L,"TOLUA_VERSION");
+ lua_pushstring(L,LUA_VERSION); lua_setglobal(L,"TOLUA_LUA_VERSION");
+
+ if (argc==1)
+ {
+  help();
+  return 0;
+ }
+ else
+ {
+  int i, t;
+  lua_newtable(L);
+  lua_setglobal(L, "_extra_parameters");
+  lua_newtable(L);
+  lua_pushvalue(L,-1);
+  lua_setglobal(L,"flags");
+  t = lua_gettop(L);
+  for (i=1; i<argc; ++i)
+  {
+   if (*argv[i] == '-')
+   {
+    switch (argv[i][1])
+    {
+     case 'v': version(); return 0;
+     case 'h': help(); return 0;
+     case 'p': setfield(L,t,"p",""); break;
+     case 'P': setfield(L,t,"P",""); break;
+     case 'o': setfield(L,t,"o",argv[++i]); break;
+     case 'n': setfield(L,t,"n",argv[++i]); break;
+     case 'H': setfield(L,t,"H",argv[++i]); break;
+     case 'S': setfield(L,t,"S",""); break;
+     case '1': setfield(L,t,"1",""); break;
+     case 'L': setfield(L,t,"L",argv[++i]); break;
+     case 'D': setfield(L,t,"D",""); break;
+     case 'W': setfield(L,t,"W",""); break;
+     case 'C': setfield(L,t,"C",""); break;
+     case 'E': add_extra(L,argv[++i]); break;
+     case 't': setfield(L,t,"t",""); break;
+     default: error(argv[i]); break;
+    }
+   }
+   else
+   {
+    setfield(L,t,"f",argv[i]);
+    break;
+   }
+  }
+  lua_pop(L,1);
+ }
+/* #define TOLUA_SCRIPT_RUN */
+#ifndef TOLUA_SCRIPT_RUN
+ {
+  int tolua_tolua_open (lua_State* L);
+  tolua_tolua_open(L);
+ }
+#else
+ {
+  char* p;
+  char  path[BUFSIZ];
+  strcpy(path,argv[0]);
+  p = strrchr(path,'/');
+  if (p==NULL) p = strrchr(path,'\\');
+  p = (p==NULL) ? path : p+1;
+  sprintf(p,"%s","../src/bin/lua/");
+  lua_pushstring(L,path); lua_setglobal(L,"path");
+		strcat(path,"all.lua");
+  lua_dofile(L,path);
+ }
+#endif
+ return 0;
+}
Index: code/trunk/src/util/tolua/tolua.pkg
===================================================================
--- code/trunk/src/util/tolua/tolua.pkg	(revision 1021)
+++ code/trunk/src/util/tolua/tolua.pkg	(revision 1021)
@@ -0,0 +1,1 @@
+$cfile "../../orxonox/core/Script.h"
Index: code/trunk/src/util/tolua/tolua_bind.cc
===================================================================
--- code/trunk/src/util/tolua/tolua_bind.cc	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_bind.cc	(revision 1021)
@@ -0,0 +1,110 @@
+/*
+** Lua binding: orxonox
+** Generated automatically by tolua++-1.0.92 on Sun Apr  6 15:44:17 2008.
+*/
+
+#ifndef __cplusplus
+#include "stdlib.h"
+#endif
+#include "string.h"
+
+#include "tolua++.h"
+
+/* Exported function */
+TOLUA_API int  tolua_orxonox_open (lua_State* tolua_S);
+
+#include "../../orxonox/core/Script.h"
+
+/* function to register type */
+static void tolua_reg_types (lua_State* tolua_S)
+{
+ tolua_usertype(tolua_S,"orxonox::Script");
+}
+
+/* method: getInstance of class  orxonox::Script */
+#ifndef TOLUA_DISABLE_tolua_orxonox_orxonox_Script_getInstance00
+static int tolua_orxonox_orxonox_Script_getInstance00(lua_State* tolua_S)
+{
+#ifndef TOLUA_RELEASE
+ tolua_Error tolua_err;
+ if (
+     !tolua_isusertable(tolua_S,1,"orxonox::Script",0,&tolua_err) ||
+     !tolua_isnoobj(tolua_S,2,&tolua_err)
+ )
+  goto tolua_lerror;
+ else
+#endif
+ {
+  {
+   orxonox::Script* tolua_ret = (orxonox::Script*)  orxonox::Script::getInstance();
+    tolua_pushusertype(tolua_S,(void*)tolua_ret,"orxonox::Script");
+  }
+ }
+ return 1;
+#ifndef TOLUA_RELEASE
+ tolua_lerror:
+ tolua_error(tolua_S,"#ferror in function 'getInstance'.",&tolua_err);
+ return 0;
+#endif
+}
+#endif //#ifndef TOLUA_DISABLE
+
+/* method: luaPrint of class  orxonox::Script */
+#ifndef TOLUA_DISABLE_tolua_orxonox_orxonox_Script_luaPrint00
+static int tolua_orxonox_orxonox_Script_luaPrint00(lua_State* tolua_S)
+{
+#ifndef TOLUA_RELEASE
+ tolua_Error tolua_err;
+ if (
+     !tolua_isusertype(tolua_S,1,"orxonox::Script",0,&tolua_err) ||
+     !tolua_iscppstring(tolua_S,2,0,&tolua_err) ||
+     !tolua_isnoobj(tolua_S,3,&tolua_err)
+ )
+  goto tolua_lerror;
+ else
+#endif
+ {
+  orxonox::Script* self = (orxonox::Script*)  tolua_tousertype(tolua_S,1,0);
+  std::string str = ((std::string)  tolua_tocppstring(tolua_S,2,0));
+#ifndef TOLUA_RELEASE
+  if (!self) tolua_error(tolua_S,"invalid 'self' in function 'luaPrint'",NULL);
+#endif
+  {
+   self->luaPrint(str);
+  }
+ }
+ return 0;
+#ifndef TOLUA_RELEASE
+ tolua_lerror:
+ tolua_error(tolua_S,"#ferror in function 'luaPrint'.",&tolua_err);
+ return 0;
+#endif
+}
+#endif //#ifndef TOLUA_DISABLE
+
+/* Open function */
+TOLUA_API int tolua_orxonox_open (lua_State* tolua_S)
+{
+ tolua_open(tolua_S);
+ tolua_reg_types(tolua_S);
+ tolua_module(tolua_S,NULL,0);
+ tolua_beginmodule(tolua_S,NULL);
+  tolua_module(tolua_S,"orxonox",0);
+  tolua_beginmodule(tolua_S,"orxonox");
+   tolua_cclass(tolua_S,"Script","orxonox::Script","",NULL);
+   tolua_beginmodule(tolua_S,"Script");
+    tolua_function(tolua_S,"getInstance",tolua_orxonox_orxonox_Script_getInstance00);
+    tolua_function(tolua_S,"luaPrint",tolua_orxonox_orxonox_Script_luaPrint00);
+   tolua_endmodule(tolua_S);
+  tolua_endmodule(tolua_S);
+ tolua_endmodule(tolua_S);
+ return 1;
+}
+
+
+#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501
+ TOLUA_API int luaopen_orxonox (lua_State* tolua_S) {
+ return tolua_orxonox_open(tolua_S);
+};
+#endif
+
Index: code/trunk/src/util/tolua/tolua_bind.h
===================================================================
--- code/trunk/src/util/tolua/tolua_bind.h	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_bind.h	(revision 1021)
@@ -0,0 +1,8 @@
+/*
+** Lua binding: orxonox
+** Generated automatically by tolua++-1.0.92 on Sun Apr  6 15:44:17 2008.
+*/
+
+/* Exported function */
+TOLUA_API int  tolua_orxonox_open (lua_State* tolua_S);
+
Index: code/trunk/src/util/tolua/tolua_event.c
===================================================================
--- code/trunk/src/util/tolua/tolua_event.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_event.c	(revision 1021)
@@ -0,0 +1,513 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include <stdio.h>
+
+#include "tolua++.h"
+
+/* Store at ubox
+	* It stores, creating the corresponding table if needed,
+	* the pair key/value in the corresponding ubox table
+*/
+static void storeatubox (lua_State* L, int lo)
+{
+	#ifdef LUA_VERSION_NUM
+		lua_getfenv(L, lo);
+		if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+			lua_pop(L, 1);
+			lua_newtable(L);
+			lua_pushvalue(L, -1);
+			lua_setfenv(L, lo);	/* stack: k,v,table  */
+		};
+		lua_insert(L, -3);
+		lua_settable(L, -3); /* on lua 5.1, we trade the "tolua_peers" lookup for a settable call */
+		lua_pop(L, 1);
+	#else
+	 /* stack: key value (to be stored) */
+		lua_pushstring(L,"tolua_peers");
+		lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: k v ubox */
+		lua_pushvalue(L,lo);
+		lua_rawget(L,-2);                       /* stack: k v ubox ubox[u] */
+		if (!lua_istable(L,-1))
+		{
+			lua_pop(L,1);                          /* stack: k v ubox */
+			lua_newtable(L);                       /* stack: k v ubox table */
+			lua_pushvalue(L,1);
+			lua_pushvalue(L,-2);                   /* stack: k v ubox table u table */
+			lua_rawset(L,-4);                      /* stack: k v ubox ubox[u]=table */
+		}
+		lua_insert(L,-4);                       /* put table before k */
+		lua_pop(L,1);                           /* pop ubox */
+		lua_rawset(L,-3);                       /* store at table */
+		lua_pop(L,1);                           /* pop ubox[u] */
+	#endif
+}
+
+/* Module index function
+*/
+static int module_index_event (lua_State* L)
+{
+	lua_pushstring(L,".get");
+	lua_rawget(L,-3);
+	if (lua_istable(L,-1))
+	{
+		lua_pushvalue(L,2);  /* key */
+		lua_rawget(L,-2);
+		if (lua_iscfunction(L,-1))
+		{
+			lua_call(L,0,1);
+			return 1;
+		}
+		else if (lua_istable(L,-1))
+			return 1;
+	}
+	/* call old index meta event */
+	if (lua_getmetatable(L,1))
+	{
+		lua_pushstring(L,"__index");
+		lua_rawget(L,-2);
+		lua_pushvalue(L,1);
+		lua_pushvalue(L,2);
+		if (lua_isfunction(L,-1))
+		{
+			lua_call(L,2,1);
+			return 1;
+		}
+		else if (lua_istable(L,-1))
+		{
+			lua_gettable(L,-3);
+			return 1;
+		}
+	}
+	lua_pushnil(L);
+	return 1;
+}
+
+/* Module newindex function
+*/
+static int module_newindex_event (lua_State* L)
+{
+	lua_pushstring(L,".set");
+	lua_rawget(L,-4);
+	if (lua_istable(L,-1))
+	{
+		lua_pushvalue(L,2);  /* key */
+		lua_rawget(L,-2);
+		if (lua_iscfunction(L,-1))
+		{
+			lua_pushvalue(L,1); /* only to be compatible with non-static vars */
+			lua_pushvalue(L,3); /* value */
+			lua_call(L,2,0);
+			return 0;
+		}
+	}
+	/* call old newindex meta event */
+	if (lua_getmetatable(L,1) && lua_getmetatable(L,-1))
+	{
+		lua_pushstring(L,"__newindex");
+		lua_rawget(L,-2);
+		if (lua_isfunction(L,-1))
+		{
+		 lua_pushvalue(L,1);
+		 lua_pushvalue(L,2);
+		 lua_pushvalue(L,3);
+			lua_call(L,3,0);
+		}
+	}
+	lua_settop(L,3);
+	lua_rawset(L,-3);
+	return 0;
+}
+
+/* Class index function
+	* If the object is a userdata (ie, an object), it searches the field in
+	* the alternative table stored in the corresponding "ubox" table.
+*/
+static int class_index_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+	if (t == LUA_TUSERDATA)
+	{
+		/* Access alternative table */
+		#ifdef LUA_VERSION_NUM /* new macro on version 5.1 */
+		lua_getfenv(L,1);
+		if (!lua_rawequal(L, -1, TOLUA_NOPEER)) {
+			lua_pushvalue(L, 2); /* key */
+			lua_gettable(L, -2); /* on lua 5.1, we trade the "tolua_peers" lookup for a gettable call */
+			if (!lua_isnil(L, -1))
+				return 1;
+		};
+		#else
+		lua_pushstring(L,"tolua_peers");
+		lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: obj key ubox */
+		lua_pushvalue(L,1);
+		lua_rawget(L,-2);                       /* stack: obj key ubox ubox[u] */
+		if (lua_istable(L,-1))
+		{
+			lua_pushvalue(L,2);  /* key */
+			lua_rawget(L,-2);                      /* stack: obj key ubox ubox[u] value */
+			if (!lua_isnil(L,-1))
+				return 1;
+		}
+		#endif
+		lua_settop(L,2);                        /* stack: obj key */
+		/* Try metatables */
+		lua_pushvalue(L,1);                     /* stack: obj key obj */
+		while (lua_getmetatable(L,-1))
+		{                                       /* stack: obj key obj mt */
+			lua_remove(L,-2);                      /* stack: obj key mt */
+			if (lua_isnumber(L,2))                 /* check if key is a numeric value */
+			{
+				/* try operator[] */
+				lua_pushstring(L,".geti");
+				lua_rawget(L,-2);                      /* stack: obj key mt func */
+				if (lua_isfunction(L,-1))
+				{
+					lua_pushvalue(L,1);
+					lua_pushvalue(L,2);
+					lua_call(L,2,1);
+					return 1;
+				}
+			}
+			else
+			{
+			 lua_pushvalue(L,2);                    /* stack: obj key mt key */
+				lua_rawget(L,-2);                      /* stack: obj key mt value */
+				if (!lua_isnil(L,-1))
+					return 1;
+				else
+					lua_pop(L,1);
+				/* try C/C++ variable */
+				lua_pushstring(L,".get");
+				lua_rawget(L,-2);                      /* stack: obj key mt tget */
+				if (lua_istable(L,-1))
+				{
+					lua_pushvalue(L,2);
+					lua_rawget(L,-2);                      /* stack: obj key mt value */
+					if (lua_iscfunction(L,-1))
+					{
+						lua_pushvalue(L,1);
+						lua_pushvalue(L,2);
+						lua_call(L,2,1);
+						return 1;
+					}
+					else if (lua_istable(L,-1))
+					{
+						/* deal with array: create table to be returned and cache it in ubox */
+						void* u = *((void**)lua_touserdata(L,1));
+						lua_newtable(L);                /* stack: obj key mt value table */
+						lua_pushstring(L,".self");
+						lua_pushlightuserdata(L,u);
+						lua_rawset(L,-3);               /* store usertype in ".self" */
+						lua_insert(L,-2);               /* stack: obj key mt table value */
+						lua_setmetatable(L,-2);         /* set stored value as metatable */
+						lua_pushvalue(L,-1);            /* stack: obj key met table table */
+						lua_pushvalue(L,2);             /* stack: obj key mt table table key */
+						lua_insert(L,-2);               /*  stack: obj key mt table key table */
+						storeatubox(L,1);               /* stack: obj key mt table */
+						return 1;
+					}
+				}
+			}
+			lua_settop(L,3);
+		}
+		lua_pushnil(L);
+		return 1;
+	}
+	else if (t== LUA_TTABLE)
+	{
+		module_index_event(L);
+		return 1;
+	}
+	lua_pushnil(L);
+	return 1;
+}
+
+/* Newindex function
+	* It first searches for a C/C++ varaible to be set.
+	* Then, it either stores it in the alternative ubox table (in the case it is
+	* an object) or in the own table (that represents the class or module).
+*/
+static int class_newindex_event (lua_State* L)
+{
+ int t = lua_type(L,1);
+	if (t == LUA_TUSERDATA)
+	{
+	 /* Try accessing a C/C++ variable to be set */
+		lua_getmetatable(L,1);
+		while (lua_istable(L,-1))                /* stack: t k v mt */
+		{
+			if (lua_isnumber(L,2))                 /* check if key is a numeric value */
+			{
+				/* try operator[] */
+				lua_pushstring(L,".seti");
+				lua_rawget(L,-2);                      /* stack: obj key mt func */
+				if (lua_isfunction(L,-1))
+				{
+					lua_pushvalue(L,1);
+					lua_pushvalue(L,2);
+					lua_pushvalue(L,3);
+					lua_call(L,3,0);
+					return 0;
+				}
+			}
+			else
+			{
+				lua_pushstring(L,".set");
+				lua_rawget(L,-2);                      /* stack: t k v mt tset */
+				if (lua_istable(L,-1))
+				{
+					lua_pushvalue(L,2);
+					lua_rawget(L,-2);                     /* stack: t k v mt tset func */
+					if (lua_iscfunction(L,-1))
+					{
+						lua_pushvalue(L,1);
+						lua_pushvalue(L,3);
+						lua_call(L,2,0);
+						return 0;
+					}
+					lua_pop(L,1);                          /* stack: t k v mt tset */
+				}
+				lua_pop(L,1);                           /* stack: t k v mt */
+				if (!lua_getmetatable(L,-1))            /* stack: t k v mt mt */
+					lua_pushnil(L);
+				lua_remove(L,-2);                       /* stack: t k v mt */
+			}
+		}
+	 lua_settop(L,3);                          /* stack: t k v */
+
+		/* then, store as a new field */
+		storeatubox(L,1);
+	}
+	else if (t== LUA_TTABLE)
+	{
+		module_newindex_event(L);
+	}
+	return 0;
+}
+
+static int class_call_event(lua_State* L) {
+
+	if (lua_istable(L, 1)) {
+		lua_pushstring(L, ".call");
+		lua_rawget(L, 1);
+		if (lua_isfunction(L, -1)) {
+
+			lua_insert(L, 1);
+			lua_call(L, lua_gettop(L)-1, 1);
+
+			return 1;
+		};
+	};
+	tolua_error(L,"Attempt to call a non-callable object.",NULL);
+	return 0;
+};
+
+static int do_operator (lua_State* L, const char* op)
+{
+	if (lua_isuserdata(L,1))
+	{
+		/* Try metatables */
+		lua_pushvalue(L,1);                     /* stack: op1 op2 */
+		while (lua_getmetatable(L,-1))
+		{                                       /* stack: op1 op2 op1 mt */
+			lua_remove(L,-2);                      /* stack: op1 op2 mt */
+			lua_pushstring(L,op);                  /* stack: op1 op2 mt key */
+			lua_rawget(L,-2);                      /* stack: obj key mt func */
+			if (lua_isfunction(L,-1))
+			{
+				lua_pushvalue(L,1);
+				lua_pushvalue(L,2);
+				lua_call(L,2,1);
+				return 1;
+			}
+			lua_settop(L,3);
+		}
+	}
+	tolua_error(L,"Attempt to perform operation on an invalid operand",NULL);
+	return 0;
+}
+
+static int class_add_event (lua_State* L)
+{
+	return do_operator(L,".add");
+}
+
+static int class_sub_event (lua_State* L)
+{
+	return do_operator(L,".sub");
+}
+
+static int class_mul_event (lua_State* L)
+{
+	return do_operator(L,".mul");
+}
+
+static int class_div_event (lua_State* L)
+{
+	return do_operator(L,".div");
+}
+
+static int class_lt_event (lua_State* L)
+{
+	return do_operator(L,".lt");
+}
+
+static int class_le_event (lua_State* L)
+{
+	return do_operator(L,".le");
+}
+
+static int class_eq_event (lua_State* L)
+{
+	return do_operator(L,".eq");
+}
+
+/*
+static int class_gc_event (lua_State* L)
+{
+	void* u = *((void**)lua_touserdata(L,1));
+	fprintf(stderr, "collecting: looking at %p\n", u);
+	lua_pushstring(L,"tolua_gc");
+	lua_rawget(L,LUA_REGISTRYINDEX);
+	lua_pushlightuserdata(L,u);
+	lua_rawget(L,-2);
+	if (lua_isfunction(L,-1))
+	{
+		lua_pushvalue(L,1);
+		lua_call(L,1,0);
+ 		lua_pushlightuserdata(L,u);
+		lua_pushnil(L);
+		lua_rawset(L,-3);
+	}
+	lua_pop(L,2);
+	return 0;
+}
+*/
+TOLUA_API int class_gc_event (lua_State* L)
+{
+	void* u = *((void**)lua_touserdata(L,1));
+	int top;
+	/*fprintf(stderr, "collecting: looking at %p\n", u);*/
+	/*
+	lua_pushstring(L,"tolua_gc");
+	lua_rawget(L,LUA_REGISTRYINDEX);
+	*/
+	lua_pushvalue(L, lua_upvalueindex(1));
+	lua_pushlightuserdata(L,u);
+	lua_rawget(L,-2);            /* stack: gc umt    */
+	lua_getmetatable(L,1);       /* stack: gc umt mt */
+	/*fprintf(stderr, "checking type\n");*/
+	top = lua_gettop(L);
+	if (tolua_fast_isa(L,top,top-1, lua_upvalueindex(2))) /* make sure we collect correct type */
+	{
+		/*fprintf(stderr, "Found type!\n");*/
+		/* get gc function */
+		lua_pushliteral(L,".collector");
+		lua_rawget(L,-2);           /* stack: gc umt mt collector */
+		if (lua_isfunction(L,-1)) {
+			/*fprintf(stderr, "Found .collector!\n");*/
+		}
+		else {
+			lua_pop(L,1);
+			/*fprintf(stderr, "Using default cleanup\n");*/
+			lua_pushcfunction(L,tolua_default_collect);
+		}
+
+		lua_pushvalue(L,1);         /* stack: gc umt mt collector u */
+		lua_call(L,1,0);
+
+		lua_pushlightuserdata(L,u); /* stack: gc umt mt u */
+		lua_pushnil(L);             /* stack: gc umt mt u nil */
+		lua_rawset(L,-5);           /* stack: gc umt mt */
+	}
+	lua_pop(L,3);
+	return 0;
+}
+
+
+/* Register module events
+	* It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_moduleevents (lua_State* L)
+{
+	lua_pushstring(L,"__index");
+	lua_pushcfunction(L,module_index_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__newindex");
+	lua_pushcfunction(L,module_newindex_event);
+	lua_rawset(L,-3);
+}
+
+/* Check if the object on the top has a module metatable
+*/
+TOLUA_API int tolua_ismodulemetatable (lua_State* L)
+{
+	int r = 0;
+	if (lua_getmetatable(L,-1))
+	{
+		lua_pushstring(L,"__index");
+		lua_rawget(L,-2);
+		r = (lua_tocfunction(L,-1) == module_index_event);
+		lua_pop(L,2);
+	}
+	return r;
+}
+
+/* Register class events
+	* It expects the metatable on the top of the stack
+*/
+TOLUA_API void tolua_classevents (lua_State* L)
+{
+	lua_pushstring(L,"__index");
+	lua_pushcfunction(L,class_index_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__newindex");
+	lua_pushcfunction(L,class_newindex_event);
+	lua_rawset(L,-3);
+
+	lua_pushstring(L,"__add");
+	lua_pushcfunction(L,class_add_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__sub");
+	lua_pushcfunction(L,class_sub_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__mul");
+	lua_pushcfunction(L,class_mul_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__div");
+	lua_pushcfunction(L,class_div_event);
+	lua_rawset(L,-3);
+
+	lua_pushstring(L,"__lt");
+	lua_pushcfunction(L,class_lt_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__le");
+	lua_pushcfunction(L,class_le_event);
+	lua_rawset(L,-3);
+	lua_pushstring(L,"__eq");
+	lua_pushcfunction(L,class_eq_event);
+	lua_rawset(L,-3);
+
+	lua_pushstring(L,"__call");
+	lua_pushcfunction(L,class_call_event);
+	lua_rawset(L,-3);
+
+	lua_pushstring(L,"__gc");
+	lua_pushstring(L, "tolua_gc_event");
+	lua_rawget(L, LUA_REGISTRYINDEX);
+	/*lua_pushcfunction(L,class_gc_event);*/
+	lua_rawset(L,-3);
+}
+
Index: code/trunk/src/util/tolua/tolua_event.h
===================================================================
--- code/trunk/src/util/tolua/tolua_event.h	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_event.h	(revision 1021)
@@ -0,0 +1,24 @@
+/* tolua: event functions
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#ifndef TOLUA_EVENT_H
+#define TOLUA_EVENT_H
+
+#include "tolua++.h"
+
+TOLUA_API void tolua_moduleevents (lua_State* L);
+TOLUA_API int tolua_ismodulemetatable (lua_State* L);
+TOLUA_API void tolua_classevents (lua_State* L);
+
+#endif
Index: code/trunk/src/util/tolua/tolua_is.c
===================================================================
--- code/trunk/src/util/tolua/tolua_is.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_is.c	(revision 1021)
@@ -0,0 +1,607 @@
+/* tolua: functions to check types.
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua++.h"
+#include "lauxlib.h"
+
+#include <stdlib.h>
+#include <string.h>
+
+/* a fast check if a is b, without parameter validation
+ i.e. if b is equal to a or a superclass of a. */
+TOLUA_API int tolua_fast_isa(lua_State *L, int mt_indexa, int mt_indexb, int super_index)
+{
+ int result;
+	if (lua_rawequal(L,mt_indexa,mt_indexb))
+		result = 1;
+	else
+	{
+		if (super_index) {
+			lua_pushvalue(L, super_index);
+		} else {
+			lua_pushliteral(L,"tolua_super");
+			lua_rawget(L,LUA_REGISTRYINDEX);  /* stack: super */
+		};
+		lua_pushvalue(L,mt_indexa);       /* stack: super mta */
+		lua_rawget(L,-2);                 /* stack: super super[mta] */
+		lua_pushvalue(L,mt_indexb);       /* stack: super super[mta] mtb */
+		lua_rawget(L,LUA_REGISTRYINDEX);  /* stack: super super[mta] typenameB */
+		lua_rawget(L,-2);                 /* stack: super super[mta] bool */
+		result = lua_toboolean(L,-1);
+		lua_pop(L,3);
+	}
+	return result;
+}
+
+/* Push and returns the corresponding object typename */
+TOLUA_API const char* tolua_typename (lua_State* L, int lo)
+{
+	int tag = lua_type(L,lo);
+ if (tag == LUA_TNONE)
+  lua_pushstring(L,"[no object]");
+ else if (tag != LUA_TUSERDATA && tag != LUA_TTABLE)
+  lua_pushstring(L,lua_typename(L,tag));
+ else if (tag == LUA_TUSERDATA)
+ {
+  if (!lua_getmetatable(L,lo))
+   lua_pushstring(L,lua_typename(L,tag));
+		else
+		{
+		 lua_rawget(L,LUA_REGISTRYINDEX);
+		 if (!lua_isstring(L,-1))
+			{
+		  lua_pop(L,1);
+				lua_pushstring(L,"[undefined]");
+			}
+		}
+	}
+	else  /* is table */
+	{
+		lua_pushvalue(L,lo);
+		lua_rawget(L,LUA_REGISTRYINDEX);
+		if (!lua_isstring(L,-1))
+		{
+			lua_pop(L,1);
+			lua_pushstring(L,"table");
+		}
+		else
+		{
+   lua_pushstring(L,"class ");
+			lua_insert(L,-2);
+			lua_concat(L,2);
+		}
+	}
+	return lua_tostring(L,-1);
+}
+
+TOLUA_API void tolua_error (lua_State* L, char* msg, tolua_Error* err)
+{
+	if (msg[0] == '#')
+	{
+  const char* expected = err->type;
+		const char* provided = tolua_typename(L,err->index);
+  if (msg[1]=='f')
+  {
+   int narg = err->index;
+			if (err->array)
+    luaL_error(L,"%s\n     argument #%d is array of '%s'; array of '%s' expected.\n",
+               msg+2,narg,provided,expected);
+			else
+    luaL_error(L,"%s\n     argument #%d is '%s'; '%s' expected.\n",
+               msg+2,narg,provided,expected);
+  }
+  else if (msg[1]=='v')
+		{
+			if (err->array)
+    luaL_error(L,"%s\n     value is array of '%s'; array of '%s' expected.\n",
+               msg+2,provided,expected);
+			else
+    luaL_error(L,"%s\n     value is '%s'; '%s' expected.\n",
+               msg+2,provided,expected);
+		}
+ }
+ else
+  luaL_error(L,msg);
+}
+
+/* the equivalent of lua_is* for usertable */
+static  int lua_isusertable (lua_State* L, int lo, const char* type)
+{
+	int r = 0;
+	if (lo < 0) lo = lua_gettop(L)+lo+1;
+	lua_pushvalue(L,lo);
+	lua_rawget(L,LUA_REGISTRYINDEX);  /* get registry[t] */
+	if (lua_isstring(L,-1))
+	{
+		r = strcmp(lua_tostring(L,-1),type)==0;
+		if (!r)
+		{
+			/* try const */
+			lua_pushstring(L,"const ");
+			lua_insert(L,-2);
+			lua_concat(L,2);
+			r = lua_isstring(L,-1) && strcmp(lua_tostring(L,-1),type)==0;
+		}
+	}
+	lua_pop(L, 1);
+	return r;
+}
+
+int push_table_instance(lua_State* L, int lo) {
+
+	if (lua_istable(L, lo)) {
+
+		lua_pushstring(L, ".c_instance");
+		lua_gettable(L, lo);
+		if (lua_isuserdata(L, -1)) {
+
+			lua_replace(L, lo);
+			return 1;
+		} else {
+
+			lua_pop(L, 1);
+			return 0;
+		};
+	} else {
+		return 0;
+	};
+
+	return 0;
+};
+
+/* the equivalent of lua_is* for usertype */
+static int lua_isusertype (lua_State* L, int lo, const char* type)
+{
+	if (!lua_isuserdata(L,lo)) {
+		if (!push_table_instance(L, lo)) {
+			return 0;
+		};
+	};
+	{
+		/* check if it is of the same type */
+		int r;
+		const char *tn;
+		if (lua_getmetatable(L,lo))        /* if metatable? */
+		{
+		 lua_rawget(L,LUA_REGISTRYINDEX);  /* get registry[mt] */
+		 tn = lua_tostring(L,-1);
+		 r = tn && (strcmp(tn,type) == 0);
+		 lua_pop(L, 1);
+			if (r)
+			 return 1;
+			else
+			{
+				/* check if it is a specialized class */
+				lua_pushstring(L,"tolua_super");
+				lua_rawget(L,LUA_REGISTRYINDEX); /* get super */
+				lua_getmetatable(L,lo);
+				lua_rawget(L,-2);                /* get super[mt] */
+				if (lua_istable(L,-1))
+				{
+					int b;
+					lua_pushstring(L,type);
+					lua_rawget(L,-2);                /* get super[mt][type] */
+					b = lua_toboolean(L,-1);
+					lua_pop(L,3);
+					if (b)
+					 return 1;
+				}
+			}
+		}
+ }
+	return 0;
+}
+
+TOLUA_API int tolua_isnoobj (lua_State* L, int lo, tolua_Error* err)
+{
+ if (lua_gettop(L)<abs(lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "[no object]";
+ return 0;
+}
+TOLUA_API int tolua_isvalue (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def || abs(lo)<=lua_gettop(L))  /* any valid index */
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "value";
+	return 0;
+}
+
+TOLUA_API int tolua_isboolean (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_isnil(L,lo) || lua_isboolean(L,lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "boolean";
+	return 0;
+}
+
+TOLUA_API int tolua_isnumber (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_isnumber(L,lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "number";
+	return 0;
+}
+
+TOLUA_API int tolua_isstring (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+ if (lua_isnil(L,lo) || lua_isstring(L,lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "string";
+	return 0;
+}
+
+TOLUA_API int tolua_istable (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_istable(L,lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "table";
+	return 0;
+}
+
+TOLUA_API int tolua_isusertable (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_isusertable(L,lo,type))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = type;
+	return 0;
+}
+
+
+TOLUA_API int tolua_isuserdata (lua_State* L, int lo, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_isnil(L,lo) || lua_isuserdata(L,lo))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = "userdata";
+	return 0;
+}
+
+TOLUA_API int tolua_isusertype (lua_State* L, int lo, const char* type, int def, tolua_Error* err)
+{
+	if (def && lua_gettop(L)<abs(lo))
+		return 1;
+	if (lua_isnil(L,lo) || lua_isusertype(L,lo,type))
+		return 1;
+	err->index = lo;
+	err->array = 0;
+	err->type = type;
+	return 0;
+}
+
+TOLUA_API int tolua_isvaluearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+		return 1;
+}
+
+TOLUA_API int tolua_isbooleanarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+	  if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+					  !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->array = 1;
+				err->type = "boolean";
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isnumberarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+			if (!lua_isnumber(L,-1) &&
+					  !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->array = 1;
+				err->type = "number";
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isstringarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+   if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+			    !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->array = 1;
+				err->type = "string";
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_istablearray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+	  if (! lua_istable(L,-1) &&
+			    !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->array = 1;
+				err->type = "table";
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isuserdataarray
+ (lua_State* L, int lo, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+	  if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+			    !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->array = 1;
+				err->type = "userdata";
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+TOLUA_API int tolua_isusertypearray
+ (lua_State* L, int lo, const char* type, int dim, int def, tolua_Error* err)
+{
+	if (!tolua_istable(L,lo,def,err))
+		return 0;
+	else
+	{
+		int i;
+		for (i=1; i<=dim; ++i)
+		{
+			lua_pushnumber(L,i);
+			lua_gettable(L,lo);
+	  if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+			    !(def && lua_isnil(L,-1))
+						)
+			{
+				err->index = lo;
+				err->type = type;
+				err->array = 1;
+				return 0;
+			}
+			lua_pop(L,1);
+		}
+ }
+ return 1;
+}
+
+#if 0
+int tolua_isbooleanfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+	if (!(lua_isnil(L,-1) || lua_isboolean(L,-1)) &&
+			  !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = "boolean";
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isnumberfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+	if (!lua_isnumber(L,-1) &&
+			  !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = "number";
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isstringfield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+ if (!(lua_isnil(L,-1) || lua_isstring(L,-1)) &&
+	    !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = "string";
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+int tolua_istablefield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i+1);
+	lua_gettable(L,lo);
+	if (! lua_istable(L,-1) &&
+	    !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = "table";
+		return 0;
+	}
+	lua_pop(L,1);
+}
+
+int tolua_isusertablefield
+ (lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+	if (! lua_isusertable(L,-1,type) &&
+	    !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = type;
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isuserdatafield
+ (lua_State* L, int lo, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+	if (!(lua_isnil(L,-1) || lua_isuserdata(L,-1)) &&
+	    !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->array = 1;
+		err->type = "userdata";
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+int tolua_isusertypefield
+ (lua_State* L, int lo, const char* type, int i, int def, tolua_Error* err)
+{
+	lua_pushnumber(L,i);
+	lua_gettable(L,lo);
+	if (!(lua_isnil(L,-1) || lua_isusertype(L,-1,type)) &&
+	    !(def && lua_isnil(L,-1))
+				)
+	{
+		err->index = lo;
+		err->type = type;
+		err->array = 1;
+		return 0;
+	}
+	lua_pop(L,1);
+ return 1;
+}
+
+#endif
Index: code/trunk/src/util/tolua/tolua_map.c
===================================================================
--- code/trunk/src/util/tolua/tolua_map.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_map.c	(revision 1021)
@@ -0,0 +1,704 @@
+/* tolua: functions to map features
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua++.h"
+#include "tolua_event.h"
+#include "lauxlib.h"
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <math.h>
+
+
+/* Create metatable
+	* Create and register new metatable
+*/
+static int tolua_newmetatable (lua_State* L, char* name)
+{
+	int r = luaL_newmetatable(L,name);
+
+	#ifdef LUA_VERSION_NUM /* only lua 5.1 */
+	if (r) {
+		lua_pushvalue(L, -1);
+		lua_pushstring(L, name);
+		lua_settable(L, LUA_REGISTRYINDEX); /* reg[mt] = type_name */
+	};
+	#endif
+
+	if (r)
+		tolua_classevents(L); /* set meta events */
+	lua_pop(L,1);
+	return r;
+}
+
+/* Map super classes
+	* It sets 'name' as being also a 'base', mapping all super classes of 'base' in 'name'
+*/
+static void mapsuper (lua_State* L, const char* name, const char* base)
+{
+	/* push registry.super */
+ lua_pushstring(L,"tolua_super");
+ lua_rawget(L,LUA_REGISTRYINDEX);    /* stack: super */
+	luaL_getmetatable(L,name);          /* stack: super mt */
+ lua_rawget(L,-2);                   /* stack: super table */
+	if (lua_isnil(L,-1))
+	{
+	 /* create table */
+		lua_pop(L,1);
+	 lua_newtable(L);                    /* stack: super table */
+	 luaL_getmetatable(L,name);          /* stack: super table mt */
+		lua_pushvalue(L,-2);                /* stack: super table mt table */
+		lua_rawset(L,-4);                   /* stack: super table */
+	}
+
+	/* set base as super class */
+	lua_pushstring(L,base);
+	lua_pushboolean(L,1);
+	lua_rawset(L,-3);                    /* stack: super table */
+
+	/* set all super class of base as super class of name */
+	luaL_getmetatable(L,base);          /* stack: super table base_mt */
+	lua_rawget(L,-3);                   /* stack: super table base_table */
+	if (lua_istable(L,-1))
+	{
+		/* traverse base table */
+		lua_pushnil(L);  /* first key */
+		while (lua_next(L,-2) != 0)
+		{
+			/* stack: ... base_table key value */
+			lua_pushvalue(L,-2);    /* stack: ... base_table key value key */
+			lua_insert(L,-2);       /* stack: ... base_table key key value */
+			lua_rawset(L,-5);       /* stack: ... base_table key */
+		}
+	}
+	lua_pop(L,3);                       /* stack: <empty> */
+}
+
+/* creates a 'tolua_ubox' table for base clases, and
+// expects the metatable and base metatable on the stack */
+static void set_ubox(lua_State* L) {
+
+	/* mt basemt */
+	if (!lua_isnil(L, -1)) {
+		lua_pushstring(L, "tolua_ubox");
+		lua_rawget(L,-2);
+	} else {
+		lua_pushnil(L);
+	};
+	/* mt basemt base_ubox */
+	if (!lua_isnil(L,-1)) {
+		lua_pushstring(L, "tolua_ubox");
+		lua_insert(L, -2);
+		/* mt basemt key ubox */
+		lua_rawset(L,-4);
+		/* (mt with ubox) basemt */
+	} else {
+		/* mt basemt nil */
+		lua_pop(L, 1);
+		lua_pushstring(L,"tolua_ubox"); lua_newtable(L);
+		/* make weak value metatable for ubox table to allow userdata to be
+		garbage-collected */
+		lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "v"); lua_rawset(L, -3);               /* stack: string ubox mt */
+		lua_setmetatable(L, -2);  /* stack:mt basemt string ubox */
+		lua_rawset(L,-4);
+	};
+
+};
+
+/* Map inheritance
+	* It sets 'name' as derived from 'base' by setting 'base' as metatable of 'name'
+*/
+static void mapinheritance (lua_State* L, const char* name, const char* base)
+{
+	/* set metatable inheritance */
+	luaL_getmetatable(L,name);
+
+	if (base && *base)
+		luaL_getmetatable(L,base);
+	else {
+
+		if (lua_getmetatable(L, -1)) { /* already has a mt, we don't overwrite it */
+			lua_pop(L, 2);
+			return;
+		};
+		luaL_getmetatable(L,"tolua_commonclass");
+	};
+
+	set_ubox(L);
+
+	lua_setmetatable(L,-2);
+	lua_pop(L,1);
+}
+
+/* Object type
+*/
+static int tolua_bnd_type (lua_State* L)
+{
+	tolua_typename(L,lua_gettop(L));
+	return 1;
+}
+
+/* Take ownership
+*/
+static int tolua_bnd_takeownership (lua_State* L)
+{
+	int success = 0;
+	if (lua_isuserdata(L,1))
+	{
+		if (lua_getmetatable(L,1))        /* if metatable? */
+		{
+			lua_pop(L,1);             /* clear metatable off stack */
+			/* force garbage collection to avoid C to reuse a to-be-collected address */
+			#ifdef LUA_VERSION_NUM
+			lua_gc(L, LUA_GCCOLLECT, 0);
+			#else
+			lua_setgcthreshold(L,0);
+			#endif
+
+			success = tolua_register_gc(L,1);
+		}
+	}
+	lua_pushboolean(L,success!=0);
+	return 1;
+}
+
+/* Release ownership
+*/
+static int tolua_bnd_releaseownership (lua_State* L)
+{
+	int done = 0;
+	if (lua_isuserdata(L,1))
+	{
+		void* u = *((void**)lua_touserdata(L,1));
+		/* force garbage collection to avoid releasing a to-be-collected address */
+		#ifdef LUA_VERSION_NUM
+		lua_gc(L, LUA_GCCOLLECT, 0);
+		#else
+		lua_setgcthreshold(L,0);
+		#endif
+		lua_pushstring(L,"tolua_gc");
+		lua_rawget(L,LUA_REGISTRYINDEX);
+		lua_pushlightuserdata(L,u);
+		lua_rawget(L,-2);
+		lua_getmetatable(L,1);
+		if (lua_rawequal(L,-1,-2))  /* check that we are releasing the correct type */
+		{
+			lua_pushlightuserdata(L,u);
+			lua_pushnil(L);
+			lua_rawset(L,-5);
+			done = 1;
+		}
+	}
+	lua_pushboolean(L,done!=0);
+	return 1;
+}
+
+/* Type casting
+*/
+static int tolua_bnd_cast (lua_State* L)
+{
+
+/* // old code
+        void* v = tolua_tousertype(L,1,NULL);
+        const char* s = tolua_tostring(L,2,NULL);
+        if (v && s)
+         tolua_pushusertype(L,v,s);
+        else
+         lua_pushnil(L);
+        return 1;
+*/
+
+	void* v;
+	const char* s;
+	if (lua_islightuserdata(L, 1)) {
+		v = tolua_touserdata(L, 1, NULL);
+	} else {
+		v = tolua_tousertype(L, 1, 0);
+	};
+
+	s = tolua_tostring(L,2,NULL);
+	if (v && s)
+	 tolua_pushusertype(L,v,s);
+	else
+	 lua_pushnil(L);
+	return 1;
+}
+
+/* Inheritance
+*/
+static int tolua_bnd_inherit (lua_State* L) {
+
+	/* stack: lua object, c object */
+	lua_pushstring(L, ".c_instance");
+	lua_pushvalue(L, -2);
+	lua_rawset(L, -4);
+	/* l_obj[".c_instance"] = c_obj */
+
+	return 0;
+};
+
+#ifdef LUA_VERSION_NUM /* lua 5.1 */
+static int tolua_bnd_setpeer(lua_State* L) {
+
+	/* stack: userdata, table */
+	if (!lua_isuserdata(L, -2)) {
+		lua_pushstring(L, "Invalid argument #1 to setpeer: userdata expected.");
+		lua_error(L);
+	};
+	
+	if (lua_isnil(L, -1)) {
+
+		lua_pop(L, 1);
+		lua_pushvalue(L, TOLUA_NOPEER);
+	};
+	lua_setfenv(L, -2);
+
+	return 0;
+};
+
+static int tolua_bnd_getpeer(lua_State* L) {
+
+	/* stack: userdata */
+	lua_getfenv(L, -1);
+	if (lua_rawequal(L, -1, TOLUA_NOPEER)) {
+		lua_pop(L, 1);
+		lua_pushnil(L);
+	};
+	return 1;
+};
+#endif
+
+/* static int class_gc_event (lua_State* L); */
+
+TOLUA_API void tolua_open (lua_State* L)
+{
+ int top = lua_gettop(L);
+ lua_pushstring(L,"tolua_opened");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+ if (!lua_isboolean(L,-1))
+ {
+  lua_pushstring(L,"tolua_opened"); lua_pushboolean(L,1); lua_rawset(L,LUA_REGISTRYINDEX);
+
+  #ifndef LUA_VERSION_NUM /* only prior to lua 5.1 */
+  /* create peer object table */
+  lua_pushstring(L, "tolua_peers"); lua_newtable(L);
+  /* make weak key metatable for peers indexed by userdata object */
+  lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "k"); lua_rawset(L, -3);                /* stack: string peers mt */
+  lua_setmetatable(L, -2);   /* stack: string peers */
+  lua_rawset(L,LUA_REGISTRYINDEX);
+  #endif
+
+  /* create object ptr -> udata mapping table */
+  lua_pushstring(L,"tolua_ubox"); lua_newtable(L);
+  /* make weak value metatable for ubox table to allow userdata to be
+     garbage-collected */
+  lua_newtable(L); lua_pushliteral(L, "__mode"); lua_pushliteral(L, "v"); lua_rawset(L, -3);               /* stack: string ubox mt */
+  lua_setmetatable(L, -2);  /* stack: string ubox */
+  lua_rawset(L,LUA_REGISTRYINDEX);
+
+  lua_pushstring(L,"tolua_super"); lua_newtable(L); lua_rawset(L,LUA_REGISTRYINDEX);
+  lua_pushstring(L,"tolua_gc"); lua_newtable(L);lua_rawset(L,LUA_REGISTRYINDEX);
+
+  /* create gc_event closure */
+  lua_pushstring(L, "tolua_gc_event");
+  lua_pushstring(L, "tolua_gc");
+  lua_rawget(L, LUA_REGISTRYINDEX);
+  lua_pushstring(L, "tolua_super");
+  lua_rawget(L, LUA_REGISTRYINDEX);
+  lua_pushcclosure(L, class_gc_event, 2);
+  lua_rawset(L, LUA_REGISTRYINDEX);
+
+  tolua_newmetatable(L,"tolua_commonclass");
+
+  tolua_module(L,NULL,0);
+  tolua_beginmodule(L,NULL);
+  tolua_module(L,"tolua",0);
+  tolua_beginmodule(L,"tolua");
+  tolua_function(L,"type",tolua_bnd_type);
+  tolua_function(L,"takeownership",tolua_bnd_takeownership);
+  tolua_function(L,"releaseownership",tolua_bnd_releaseownership);
+  tolua_function(L,"cast",tolua_bnd_cast);
+  tolua_function(L,"inherit", tolua_bnd_inherit);
+  #ifdef LUA_VERSION_NUM /* lua 5.1 */
+  tolua_function(L, "setpeer", tolua_bnd_setpeer);
+  tolua_function(L, "getpeer", tolua_bnd_getpeer);
+  #endif
+
+  tolua_endmodule(L);
+  tolua_endmodule(L);
+ }
+ lua_settop(L,top);
+}
+
+/* Copy a C object
+*/
+TOLUA_API void* tolua_copy (lua_State* L, void* value, unsigned int size)
+{
+	void* clone = (void*)malloc(size);
+	if (clone)
+	 memcpy(clone,value,size);
+	else
+		tolua_error(L,"insuficient memory",NULL);
+	return clone;
+}
+
+/* Default collect function
+*/
+TOLUA_API int tolua_default_collect (lua_State* tolua_S)
+{
+ void* self = tolua_tousertype(tolua_S,1,0);
+ free(self);
+ return 0;
+}
+
+/* Do clone
+*/
+TOLUA_API int tolua_register_gc (lua_State* L, int lo)
+{
+ int success = 1;
+ void *value = *(void **)lua_touserdata(L,lo);
+ lua_pushstring(L,"tolua_gc");
+ lua_rawget(L,LUA_REGISTRYINDEX);
+	lua_pushlightuserdata(L,value);
+	lua_rawget(L,-2);
+	if (!lua_isnil(L,-1)) /* make sure that object is not already owned */
+		success = 0;
+	else
+	{
+		lua_pushlightuserdata(L,value);
+		lua_getmetatable(L,lo);
+		lua_rawset(L,-4);
+	}
+	lua_pop(L,2);
+	return success;
+}
+
+/* Register a usertype
+	* It creates the correspoding metatable in the registry, for both 'type' and 'const type'.
+	* It maps 'const type' as being also a 'type'
+*/
+TOLUA_API void tolua_usertype (lua_State* L, char* type)
+{
+ char ctype[128] = "const ";
+ strncat(ctype,type,120);
+
+	/* create both metatables */
+ if (tolua_newmetatable(L,ctype) && tolua_newmetatable(L,type))
+	 mapsuper(L,type,ctype);             /* 'type' is also a 'const type' */
+}
+
+
+/* Begin module
+	* It pushes the module (or class) table on the stack
+*/
+TOLUA_API void tolua_beginmodule (lua_State* L, char* name)
+{
+	if (name)
+	{
+	 lua_pushstring(L,name);
+		lua_rawget(L,-2);
+	}
+	else
+	 lua_pushvalue(L,LUA_GLOBALSINDEX);
+}
+
+/* End module
+	* It pops the module (or class) from the stack
+*/
+TOLUA_API void tolua_endmodule (lua_State* L)
+{
+	lua_pop(L,1);
+}
+
+/* Map module
+	* It creates a new module
+*/
+#if 1
+TOLUA_API void tolua_module (lua_State* L, char* name, int hasvar)
+{
+	if (name)
+	{
+		/* tolua module */
+		lua_pushstring(L,name);
+		lua_rawget(L,-2);
+		if (!lua_istable(L,-1))  /* check if module already exists */
+		{
+			lua_pop(L,1);
+		 lua_newtable(L);
+		 lua_pushstring(L,name);
+			lua_pushvalue(L,-2);
+		 lua_rawset(L,-4);       /* assing module into module */
+		}
+	}
+	else
+	{
+		/* global table */
+		lua_pushvalue(L,LUA_GLOBALSINDEX);
+	}
+	if (hasvar)
+	{
+		if (!tolua_ismodulemetatable(L))  /* check if it already has a module metatable */
+		{
+			/* create metatable to get/set C/C++ variable */
+			lua_newtable(L);
+			tolua_moduleevents(L);
+			if (lua_getmetatable(L,-2))
+				lua_setmetatable(L,-2);  /* set old metatable as metatable of metatable */
+			lua_setmetatable(L,-2);
+		}
+	}
+	lua_pop(L,1);               /* pop module */
+}
+#else
+TOLUA_API void tolua_module (lua_State* L, char* name, int hasvar)
+{
+	if (name)
+	{
+		/* tolua module */
+		lua_pushstring(L,name);
+		lua_newtable(L);
+	}
+	else
+	{
+		/* global table */
+		lua_pushvalue(L,LUA_GLOBALSINDEX);
+	}
+	if (hasvar)
+	{
+		/* create metatable to get/set C/C++ variable */
+		lua_newtable(L);
+		tolua_moduleevents(L);
+		if (lua_getmetatable(L,-2))
+			lua_setmetatable(L,-2);  /* set old metatable as metatable of metatable */
+		lua_setmetatable(L,-2);
+	}
+	if (name)
+		lua_rawset(L,-3);       /* assing module into module */
+	else
+		lua_pop(L,1);           /* pop global table */
+}
+#endif
+
+static void push_collector(lua_State* L, const char* type, lua_CFunction col) {
+
+	/* push collector function, but only if it's not NULL, or if there's no
+	   collector already */
+	if (!col) return;
+	luaL_getmetatable(L,type);
+	lua_pushstring(L,".collector");
+	/*
+	if (!col) {
+		lua_pushvalue(L, -1);
+		lua_rawget(L, -3);
+		if (!lua_isnil(L, -1)) {
+			lua_pop(L, 3);
+			return;
+		};
+		lua_pop(L, 1);
+	};
+	//	*/
+	lua_pushcfunction(L,col);
+
+	lua_rawset(L,-3);
+	lua_pop(L, 1);
+};
+
+/* Map C class
+	* It maps a C class, setting the appropriate inheritance and super classes.
+*/
+TOLUA_API void tolua_cclass (lua_State* L, char* lname, char* name, char* base, lua_CFunction col)
+{
+	char cname[128] = "const ";
+	char cbase[128] = "const ";
+	strncat(cname,name,120);
+	strncat(cbase,base,120);
+
+	mapinheritance(L,name,base);
+	mapinheritance(L,cname,name);
+
+	mapsuper(L,cname,cbase);
+	mapsuper(L,name,base);
+
+	lua_pushstring(L,lname);
+	
+	push_collector(L, name, col);
+	/*
+	luaL_getmetatable(L,name);
+	lua_pushstring(L,".collector");
+	lua_pushcfunction(L,col);
+
+	lua_rawset(L,-3);
+	*/
+	
+	luaL_getmetatable(L,name);
+	lua_rawset(L,-3);              /* assign class metatable to module */
+
+	/* now we also need to store the collector table for the const
+	   instances of the class */
+	push_collector(L, cname, col);
+	/*
+	luaL_getmetatable(L,cname);
+	lua_pushstring(L,".collector");
+	lua_pushcfunction(L,col);
+	lua_rawset(L,-3);
+	lua_pop(L,1);
+	*/
+	
+
+}
+
+/* Add base
+	* It adds additional base classes to a class (for multiple inheritance)
+	* (not for now)
+TOLUA_API void tolua_addbase(lua_State* L, char* name, char* base) {
+
+	char cname[128] = "const ";
+	char cbase[128] = "const ";
+	strncat(cname,name,120);
+	strncat(cbase,base,120);
+
+	mapsuper(L,cname,cbase);
+	mapsuper(L,name,base);
+};
+*/
+
+/* Map function
+	* It assigns a function into the current module (or class)
+*/
+TOLUA_API void tolua_function (lua_State* L, char* name, lua_CFunction func)
+{
+ lua_pushstring(L,name);
+ lua_pushcfunction(L,func);
+	lua_rawset(L,-3);
+}
+
+/* sets the __call event for the class (expects the class' main table on top) */
+/*	never really worked :(
+TOLUA_API void tolua_set_call_event(lua_State* L, lua_CFunction func, char* type) {
+
+	lua_getmetatable(L, -1);
+	//luaL_getmetatable(L, type);
+	lua_pushstring(L,"__call");
+	lua_pushcfunction(L,func);
+	lua_rawset(L,-3);
+	lua_pop(L, 1);
+};
+*/
+
+/* Map constant number
+	* It assigns a constant number into the current module (or class)
+*/
+TOLUA_API void tolua_constant (lua_State* L, char* name, double value)
+{
+	lua_pushstring(L,name);
+	tolua_pushnumber(L,value);
+	lua_rawset(L,-3);
+}
+
+
+/* Map variable
+	* It assigns a variable into the current module (or class)
+*/
+TOLUA_API void tolua_variable (lua_State* L, char* name, lua_CFunction get, lua_CFunction set)
+{
+	/* get func */
+	lua_pushstring(L,".get");
+	lua_rawget(L,-2);
+	if (!lua_istable(L,-1))
+	{
+		/* create .get table, leaving it at the top */
+		lua_pop(L,1);
+		lua_newtable(L);
+	 lua_pushstring(L,".get");
+		lua_pushvalue(L,-2);
+		lua_rawset(L,-4);
+	}
+	lua_pushstring(L,name);
+	lua_pushcfunction(L,get);
+ lua_rawset(L,-3);                  /* store variable */
+	lua_pop(L,1);                      /* pop .get table */
+
+	/* set func */
+	if (set)
+	{
+		lua_pushstring(L,".set");
+		lua_rawget(L,-2);
+		if (!lua_istable(L,-1))
+		{
+			/* create .set table, leaving it at the top */
+			lua_pop(L,1);
+			lua_newtable(L);
+			lua_pushstring(L,".set");
+			lua_pushvalue(L,-2);
+			lua_rawset(L,-4);
+		}
+		lua_pushstring(L,name);
+		lua_pushcfunction(L,set);
+		lua_rawset(L,-3);                  /* store variable */
+		lua_pop(L,1);                      /* pop .set table */
+	}
+}
+
+/* Access const array
+	* It reports an error when trying to write into a const array
+*/
+static int const_array (lua_State* L)
+{
+ luaL_error(L,"value of const array cannot be changed");
+ return 0;
+}
+
+/* Map an array
+	* It assigns an array into the current module (or class)
+*/
+TOLUA_API void tolua_array (lua_State* L, char* name, lua_CFunction get, lua_CFunction set)
+{
+	lua_pushstring(L,".get");
+	lua_rawget(L,-2);
+	if (!lua_istable(L,-1))
+	{
+		/* create .get table, leaving it at the top */
+		lua_pop(L,1);
+		lua_newtable(L);
+	 lua_pushstring(L,".get");
+		lua_pushvalue(L,-2);
+		lua_rawset(L,-4);
+	}
+	lua_pushstring(L,name);
+
+ lua_newtable(L);           /* create array metatable */
+ lua_pushvalue(L,-1);
+	lua_setmetatable(L,-2);    /* set the own table as metatable (for modules) */
+ lua_pushstring(L,"__index");
+ lua_pushcfunction(L,get);
+	lua_rawset(L,-3);
+ lua_pushstring(L,"__newindex");
+ lua_pushcfunction(L,set?set:const_array);
+	lua_rawset(L,-3);
+
+ lua_rawset(L,-3);                  /* store variable */
+	lua_pop(L,1);                      /* pop .get table */
+}
+
+
+TOLUA_API void tolua_dobuffer(lua_State* L, char* B, unsigned int size, const char* name) {
+
+ #ifdef LUA_VERSION_NUM /* lua 5.1 */
+ luaL_loadbuffer(L, B, size, name) || lua_pcall(L, 0, 0, 0);
+ #else
+ lua_dobuffer(L, B, size, name);
+ #endif
+};
+
Index: code/trunk/src/util/tolua/tolua_push.c
===================================================================
--- code/trunk/src/util/tolua/tolua_push.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_push.c	(revision 1021)
@@ -0,0 +1,171 @@
+/* tolua: functions to push C values.
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua++.h"
+#include "lauxlib.h"
+
+#include <stdlib.h>
+
+TOLUA_API void tolua_pushvalue (lua_State* L, int lo)
+{
+ lua_pushvalue(L,lo);
+}
+
+TOLUA_API void tolua_pushboolean (lua_State* L, int value)
+{
+ lua_pushboolean(L,value);
+}
+
+TOLUA_API void tolua_pushnumber (lua_State* L, double value)
+{
+ lua_pushnumber(L,value);
+}
+
+TOLUA_API void tolua_pushstring (lua_State* L, const char* value)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+  lua_pushstring(L,value);
+}
+
+TOLUA_API void tolua_pushuserdata (lua_State* L, void* value)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+  lua_pushlightuserdata(L,value);
+}
+
+TOLUA_API void tolua_pushusertype (lua_State* L, void* value, const char* type)
+{
+ if (value == NULL)
+  lua_pushnil(L);
+ else
+ {
+  luaL_getmetatable(L, type);
+  lua_pushstring(L,"tolua_ubox");
+  lua_rawget(L,-2);        /* stack: mt ubox */
+  if (lua_isnil(L, -1)) {
+	  lua_pop(L, 1);
+	  lua_pushstring(L, "tolua_ubox");
+	  lua_rawget(L, LUA_REGISTRYINDEX);
+  };
+  lua_pushlightuserdata(L,value);
+  lua_rawget(L,-2);                       /* stack: mt ubox ubox[u] */
+  if (lua_isnil(L,-1))
+  {
+   lua_pop(L,1);                          /* stack: mt ubox */
+   lua_pushlightuserdata(L,value);
+   *(void**)lua_newuserdata(L,sizeof(void *)) = value;   /* stack: mt ubox u newud */
+   lua_pushvalue(L,-1);                   /* stack: mt ubox u newud newud */
+   lua_insert(L,-4);                      /* stack: mt newud ubox u newud */
+   lua_rawset(L,-3);                      /* stack: mt newud ubox */
+   lua_pop(L,1);                          /* stack: mt newud */
+   /*luaL_getmetatable(L,type);*/
+   lua_pushvalue(L, -2);			/* stack: mt newud mt */
+   lua_setmetatable(L,-2);			/* stack: mt newud */
+
+   #ifdef LUA_VERSION_NUM
+   lua_pushvalue(L, TOLUA_NOPEER);
+   lua_setfenv(L, -2);
+   #endif
+  }
+  else
+  {
+   /* check the need of updating the metatable to a more specialized class */
+   lua_insert(L,-2);                       /* stack: mt ubox[u] ubox */
+   lua_pop(L,1);                           /* stack: mt ubox[u] */
+   lua_pushstring(L,"tolua_super");
+   lua_rawget(L,LUA_REGISTRYINDEX);        /* stack: mt ubox[u] super */
+   lua_getmetatable(L,-2);                 /* stack: mt ubox[u] super mt */
+   lua_rawget(L,-2);                       /* stack: mt ubox[u] super super[mt] */
+			if (lua_istable(L,-1))
+			{
+				lua_pushstring(L,type);                 /* stack: mt ubox[u] super super[mt] type */
+				lua_rawget(L,-2);                       /* stack: mt ubox[u] super super[mt] flag */
+				if (lua_toboolean(L,-1) == 1)   /* if true */
+				{
+					lua_pop(L,3);	/* mt ubox[u]*/
+					lua_remove(L, -2);
+					return;
+				}
+			}
+			/* type represents a more specilized type */
+			/*luaL_getmetatable(L,type);             // stack: mt ubox[u] super super[mt] flag mt */
+			lua_pushvalue(L, -5);					/* stack: mt ubox[u] super super[mt] flag mt */
+			lua_setmetatable(L,-5);                /* stack: mt ubox[u] super super[mt] flag */
+			lua_pop(L,3);                          /* stack: mt ubox[u] */
+  }
+  lua_remove(L, -2);	/* stack: ubox[u]*/
+ }
+}
+
+TOLUA_API void tolua_pushusertype_and_takeownership (lua_State* L, void* value, const char* type)
+{
+	tolua_pushusertype(L,value,type);
+	tolua_register_gc(L,lua_gettop(L));
+}
+
+TOLUA_API void tolua_pushfieldvalue (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushvalue(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldboolean (lua_State* L, int lo, int index, int v)
+{
+ lua_pushnumber(L,index);
+ lua_pushboolean(L,v);
+ lua_settable(L,lo);
+}
+
+
+TOLUA_API void tolua_pushfieldnumber (lua_State* L, int lo, int index, double v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushnumber(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldstring (lua_State* L, int lo, int index, const char* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushstring(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfielduserdata (lua_State* L, int lo, int index, void* v)
+{
+ lua_pushnumber(L,index);
+ tolua_pushuserdata(L,v);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldusertype (lua_State* L, int lo, int index, void* v, const char* type)
+{
+ lua_pushnumber(L,index);
+ tolua_pushusertype(L,v,type);
+ lua_settable(L,lo);
+}
+
+TOLUA_API void tolua_pushfieldusertype_and_takeownership (lua_State* L, int lo, int index, void* v, const char* type)
+{
+ lua_pushnumber(L,index);
+ tolua_pushusertype(L,v,type);
+	tolua_register_gc(L,lua_gettop(L));
+ lua_settable(L,lo);
+}
+
Index: code/trunk/src/util/tolua/tolua_to.c
===================================================================
--- code/trunk/src/util/tolua/tolua_to.c	(revision 1021)
+++ code/trunk/src/util/tolua/tolua_to.c	(revision 1021)
@@ -0,0 +1,133 @@
+/* tolua: funcitons to convert to C types
+** Support code for Lua bindings.
+** Written by Waldemar Celes
+** TeCGraf/PUC-Rio
+** Apr 2003
+** $Id: $
+*/
+
+/* This code is free software; you can redistribute it and/or modify it.
+** The software provided hereunder is on an "as is" basis, and
+** the author has no obligation to provide maintenance, support, updates,
+** enhancements, or modifications.
+*/
+
+#include "tolua++.h"
+
+#include <string.h>
+#include <stdlib.h>
+
+TOLUA_API double tolua_tonumber (lua_State* L, int narg, double def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tonumber(L,narg);
+}
+
+TOLUA_API const char* tolua_tostring (lua_State* L, int narg, const char* def)
+{
+ return lua_gettop(L)<abs(narg) ? def : lua_tostring(L,narg);
+}
+
+TOLUA_API void* tolua_touserdata (lua_State* L, int narg, void* def)
+{
+	
+	/* return lua_gettop(L)<abs(narg) ? def : lua_touserdata(L,narg); */
+
+	if (lua_gettop(L)<abs(narg)) {
+ 		return def;
+	};
+	 
+	if (lua_islightuserdata(L, narg)) {
+	
+		return lua_touserdata(L,narg);
+	};
+	
+	return tolua_tousertype(L, narg, def);
+}
+
+extern int push_table_instance(lua_State* L, int lo);
+
+TOLUA_API void* tolua_tousertype (lua_State* L, int narg, void* def)
+{
+ if (lua_gettop(L)<abs(narg))
+  return def;
+ else
+ {
+  void* u;
+  if (!lua_isuserdata(L, narg)) {
+	  if (!push_table_instance(L, narg)) return NULL;
+  };
+  u = lua_touserdata(L,narg);
+  return (u==NULL) ? NULL : *((void**)u); /* nil represents NULL */
+ }
+}
+
+TOLUA_API int tolua_tovalue (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ? def : narg;
+}
+
+TOLUA_API int tolua_toboolean (lua_State* L, int narg, int def)
+{
+ return lua_gettop(L)<abs(narg) ?  def : lua_toboolean(L,narg);
+}
+
+TOLUA_API double tolua_tofieldnumber (lua_State* L, int lo, int index, double def)
+{
+ double v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_tonumber(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API const char* tolua_tofieldstring
+(lua_State* L, int lo, int index, const char* def)
+{
+ const char* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_tostring(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API void* tolua_tofielduserdata (lua_State* L, int lo, int index, void* def)
+{
+ void* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lua_touserdata(L,-1);
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API void* tolua_tofieldusertype (lua_State* L, int lo, int index, void* def)
+{
+ void* v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : (*(void **)(lua_touserdata(L, -1))); /* lua_unboxpointer(L,-1); */
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_tofieldvalue (lua_State* L, int lo, int index, int def)
+{
+ int v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? def : lo;
+ lua_pop(L,1);
+ return v;
+}
+
+TOLUA_API int tolua_getfieldboolean (lua_State* L, int lo, int index, int def)
+{
+ int v;
+ lua_pushnumber(L,index);
+ lua_gettable(L,lo);
+ v = lua_isnil(L,-1) ? 0 : lua_toboolean(L,-1);
+ lua_pop(L,1);
+ return v;
+}
Index: code/trunk/src/util/tolua/toluabind.c
===================================================================
--- code/trunk/src/util/tolua/toluabind.c	(revision 1021)
+++ code/trunk/src/util/tolua/toluabind.c	(revision 1021)
@@ -0,0 +1,7628 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.91 on Wed Apr 26 22:30:14 2006.
+*/
+
+#ifndef __cplusplus
+#include "stdlib.h"
+#endif
+#include "string.h"
+
+#include "tolua++.h"
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
+
+/* function to register type */
+static void tolua_reg_types (lua_State* tolua_S)
+{
+}
+
+/* Open function */
+TOLUA_API int tolua_tolua_open (lua_State* tolua_S)
+{
+ tolua_open(tolua_S);
+ tolua_reg_types(tolua_S);
+ tolua_module(tolua_S,NULL,0);
+ tolua_beginmodule(tolua_S,NULL);
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+   105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+     95, 86, 69, 82, 83, 73, 79, 78, 44, 32, 34, 53, 37, 46, 48,
+     34, 41, 32,116,104,101,110, 13, 10,  9,114,101,116,117,114,
+    110, 13, 10,101,110,100, 13, 10, 13, 10, 45, 45, 32, 34,108,
+    111, 97,100,102,105,108,101, 34, 13, 10,108,111, 99, 97,108,
+     32,102,117,110, 99,116,105,111,110, 32,112,112, 95,100,111,
+    102,105,108,101, 40,112, 97,116,104, 41, 13, 10, 13, 10,  9,
+    108,111, 99, 97,108, 32,108,111, 97,100,101,100, 32, 61, 32,
+    102, 97,108,115,101, 13, 10,  9,108,111, 99, 97,108, 32,103,
+    101,116,102,105,108,101, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 40, 41, 13, 10, 13, 10,  9,  9,105,102, 32,108,111,
+     97,100,101,100, 32,116,104,101,110, 13, 10,  9,  9,  9,114,
+    101,116,117,114,110, 13, 10,  9,  9,101,108,115,101, 13, 10,
+      9,  9,  9,108,111, 99, 97,108, 32,102,105,108,101, 44,101,
+    114,114, 32, 61, 32,105,111, 46,111,112,101,110, 40,112, 97,
+    116,104, 41, 13, 10,  9,  9,  9,105,102, 32,110,111,116, 32,
+    102,105,108,101, 32,116,104,101,110, 13, 10,  9,  9,  9,  9,
+    101,114,114,111,114, 40, 34,101,114,114,111,114, 32,108,111,
+     97,100,105,110,103, 32,102,105,108,101, 32, 34, 46, 46,112,
+     97,116,104, 46, 46, 34, 58, 32, 34, 46, 46,101,114,114, 41,
+     13, 10,  9,  9,  9,101,110,100, 13, 10,  9,  9,  9,108,111,
+     99, 97,108, 32,114,101,116, 32, 61, 32,102,105,108,101, 58,
+    114,101, 97,100, 40, 34, 42, 97, 34, 41, 13, 10,  9,  9,  9,
+    102,105,108,101, 58, 99,108,111,115,101, 40, 41, 13, 10, 13,
+     10,  9,  9,  9,114,101,116, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,114,101,116, 44, 32, 34, 37, 46,
+     37, 46, 37, 46, 37,115, 42, 37, 41, 34, 44, 32, 34, 46, 46,
+     46, 41, 32,108,111, 99, 97,108, 32, 97,114,103, 32, 61, 32,
+    123,110, 61,115,101,108,101, 99,116, 40, 39, 35, 39, 44, 32,
+     46, 46, 46, 41, 44, 32, 46, 46, 46,125, 59, 34, 41, 13, 10,
+     13, 10,  9,  9,  9,108,111, 97,100,101,100, 32, 61, 32,116,
+    114,117,101, 13, 10,  9,  9,  9,114,101,116,117,114,110, 32,
+    114,101,116, 13, 10,  9,  9,101,110,100, 13, 10,  9,101,110,
+    100, 13, 10, 13, 10,  9,108,111, 99, 97,108, 32,102, 32, 61,
+     32,108,111, 97,100, 40,103,101,116,102,105,108,101, 44, 32,
+    112, 97,116,104, 41, 13, 10,  9,114,101,116,117,114,110, 32,
+    102, 40, 41, 13, 10,101,110,100, 13, 10, 13, 10,111,108,100,
+     95,100,111,102,105,108,101, 32, 61, 32,100,111,102,105,108,
+    101, 13, 10,100,111,102,105,108,101, 32, 61, 32,112,112, 95,
+    100,111,102,105,108,101, 13, 10, 13, 10, 13, 10, 45, 45, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 13, 10, 45, 45,
+     91, 91, 13, 10,108,111, 99, 97,108, 32,111,103,115,117, 98,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 13,
+     10,108,111, 99, 97,108, 32,102,117,110, 99,116,105,111,110,
+     32, 99,111,109,112,103,115,117, 98, 40, 97, 44, 98, 44, 99,
+     44,100, 41, 13, 10, 32, 32,105,102, 32,116,121,112,101, 40,
+     99, 41, 32, 61, 61, 32, 34,102,117,110, 99,116,105,111,110,
+     34, 32,116,104,101,110, 13, 10, 32, 32, 32, 32,108,111, 99,
+     97,108, 32,111, 99, 32, 61, 32, 99, 13, 10, 32, 32, 32, 32,
+     99, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 46,
+     46, 46, 41, 32,114,101,116,117,114,110, 32,111, 99, 40, 46,
+     46, 46, 41, 32,111,114, 32, 39, 39, 32,101,110,100, 13, 10,
+     32, 32,101,110,100, 13, 10, 32, 32,114,101,116,117,114,110,
+     32,111,103,115,117, 98, 40, 97, 44, 98, 44, 99, 44,100, 41,
+     13, 10,101,110,100, 13, 10,115,116,114,105,110,103, 46,114,
+    101,112,108, 32, 61, 32,111,103,115,117, 98, 13, 10, 45, 45,
+     93, 93, 13, 10, 13, 10, 45, 45,115,116,114,105,110,103, 46,
+    103,115,117, 98, 32, 61, 32, 99,111,109,112,103,115,117, 98,
+     13,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/compat-5.1.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 82,101, 97,108,
+     32,103,108,111, 98, 97,108,115, 10, 45, 45, 32, 95, 65, 76,
+     69, 82, 84, 10, 45, 45, 32, 95, 69, 82, 82, 79, 82, 77, 69,
+     83, 83, 65, 71, 69, 10, 45, 45, 32, 95, 86, 69, 82, 83, 73,
+     79, 78, 10, 45, 45, 32, 95, 71, 10, 45, 45, 32, 97,115,115,
+    101,114,116, 10, 45, 45, 32,101,114,114,111,114, 10, 45, 45,
+     32,109,101,116, 97,116, 97, 98,108,101, 10, 45, 45, 32,110,
+    101,120,116, 10, 45, 45, 32,112,114,105,110,116, 10, 45, 45,
+     32,114,101,113,117,105,114,101, 10, 45, 45, 32,116,111,110,
+    117,109, 98,101,114, 10, 45, 45, 32,116,111,115,116,114,105,
+    110,103, 10, 45, 45, 32,116,121,112,101, 10, 45, 45, 32,117,
+    110,112, 97, 99,107, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32, 99,111,108,108,101, 99,116,103, 97,114, 98, 97,
+    103,101, 10, 45, 45, 32,103, 99,105,110,102,111, 10, 10, 45,
+     45, 32,103,108,111, 98, 97,108,115, 10, 10, 45, 45, 32, 99,
+     97,108,108, 32, 32, 32, 45, 62, 32,112,114,111,116,101, 99,
+    116, 40,102, 44, 32,101,114,114, 41, 10, 45, 45, 32,108,111,
+     97,100,102,105,108,101, 10, 45, 45, 32,108,111, 97,100,115,
+    116,114,105,110,103, 10, 10, 45, 45, 32,114, 97,119,103,101,
+    116, 10, 45, 45, 32,114, 97,119,115,101,116, 10, 10, 45, 45,
+     32,103,101,116, 97,114,103,115, 32, 61, 32, 77, 97,105,110,
+     46,103,101,116, 97,114,103,115, 32, 63, 63, 10, 10,114, 97,
+    119,116,121,112,101, 32, 61, 32,116,121,112,101, 10, 10,102,
+    117,110, 99,116,105,111,110, 32,100,111, 95, 32, 40,102, 44,
+     32,101,114,114, 41, 10, 32, 32,105,102, 32,110,111,116, 32,
+    102, 32,116,104,101,110, 32,112,114,105,110,116, 40,101,114,
+    114, 41, 59, 32,114,101,116,117,114,110, 32,101,110,100, 10,
+     32, 32,108,111, 99, 97,108, 32, 97, 44, 98, 32, 61, 32,112,
+     99, 97,108,108, 40,102, 41, 10, 32, 32,105,102, 32,110,111,
+    116, 32, 97, 32,116,104,101,110, 32,112,114,105,110,116, 40,
+     98, 41, 59, 32,114,101,116,117,114,110, 32,110,105,108, 10,
+     32, 32,101,108,115,101, 32,114,101,116,117,114,110, 32, 98,
+     32,111,114, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,100,
+    111,115,116,114,105,110,103, 40,115, 41, 32,114,101,116,117,
+    114,110, 32,100,111, 95, 40,108,111, 97,100,115,116,114,105,
+    110,103, 40,115, 41, 41, 32,101,110,100, 10, 45, 45, 32,102,
+    117,110, 99,116,105,111,110, 32,100,111,102,105,108,101, 40,
+    115, 41, 32,114,101,116,117,114,110, 32,100,111, 95, 40,108,
+    111, 97,100,102,105,108,101, 40,115, 41, 41, 32,101,110,100,
+     10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 84, 97,
+     98,108,101, 32,108,105, 98,114, 97,114,121, 10,108,111, 99,
+     97,108, 32,116, 97, 98, 32, 61, 32,116, 97, 98,108,101, 10,
+    102,111,114,101, 97, 99,104, 32, 61, 32,116, 97, 98, 46,102,
+    111,114,101, 97, 99,104, 10,102,111,114,101, 97, 99,104,105,
+     32, 61, 32,116, 97, 98, 46,102,111,114,101, 97, 99,104,105,
+     10,103,101,116,110, 32, 61, 32,116, 97, 98, 46,103,101,116,
+    110, 10,116,105,110,115,101,114,116, 32, 61, 32,116, 97, 98,
+     46,105,110,115,101,114,116, 10,116,114,101,109,111,118,101,
+     32, 61, 32,116, 97, 98, 46,114,101,109,111,118,101, 10,115,
+    111,114,116, 32, 61, 32,116, 97, 98, 46,115,111,114,116, 10,
+     10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45, 32, 68,101, 98,
+    117,103, 32,108,105, 98,114, 97,114,121, 10,108,111, 99, 97,
+    108, 32,100, 98,103, 32, 61, 32,100,101, 98,117,103, 10,103,
+    101,116,105,110,102,111, 32, 61, 32,100, 98,103, 46,103,101,
+    116,105,110,102,111, 10,103,101,116,108,111, 99, 97,108, 32,
+     61, 32,100, 98,103, 46,103,101,116,108,111, 99, 97,108, 10,
+    115,101,116, 99, 97,108,108,104,111,111,107, 32, 61, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 41, 32,101,114,114,111,
+    114, 34, 96,115,101,116, 99, 97,108,108,104,111,111,107, 39,
+     32,105,115, 32,100,101,112,114,101, 99, 97,116,101,100, 34,
+     32,101,110,100, 10,115,101,116,108,105,110,101,104,111,111,
+    107, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40, 41,
+     32,101,114,114,111,114, 34, 96,115,101,116,108,105,110,101,
+    104,111,111,107, 39, 32,105,115, 32,100,101,112,114,101, 99,
+     97,116,101,100, 34, 32,101,110,100, 10,115,101,116,108,111,
+     99, 97,108, 32, 61, 32,100, 98,103, 46,115,101,116,108,111,
+     99, 97,108, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 45, 45,
+     32,109, 97,116,104, 32,108,105, 98,114, 97,114,121, 10,108,
+    111, 99, 97,108, 32,109, 97,116,104, 32, 61, 32,109, 97,116,
+    104, 10, 97, 98,115, 32, 61, 32,109, 97,116,104, 46, 97, 98,
+    115, 10, 97, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,
+    111,110, 32, 40,120, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97, 99,
+    111,115, 40,120, 41, 41, 32,101,110,100, 10, 97,115,105,110,
+     32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,120, 41,
+     32,114,101,116,117,114,110, 32,109, 97,116,104, 46,100,101,
+    103, 40,109, 97,116,104, 46, 97,115,105,110, 40,120, 41, 41,
+     32,101,110,100, 10, 97,116, 97,110, 32, 61, 32,102,117,110,
+     99,116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,
+    110, 32,109, 97,116,104, 46,100,101,103, 40,109, 97,116,104,
+     46, 97,116, 97,110, 40,120, 41, 41, 32,101,110,100, 10, 97,
+    116, 97,110, 50, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 44,121, 41, 32,114,101,116,117,114,110, 32,109,
+     97,116,104, 46,100,101,103, 40,109, 97,116,104, 46, 97,116,
+     97,110, 50, 40,120, 44,121, 41, 41, 32,101,110,100, 10, 99,
+    101,105,108, 32, 61, 32,109, 97,116,104, 46, 99,101,105,108,
+     10, 99,111,115, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,
+    104, 46, 99,111,115, 40,109, 97,116,104, 46,114, 97,100, 40,
+    120, 41, 41, 32,101,110,100, 10,100,101,103, 32, 61, 32,109,
+     97,116,104, 46,100,101,103, 10,101,120,112, 32, 61, 32,109,
+     97,116,104, 46,101,120,112, 10,102,108,111,111,114, 32, 61,
+     32,109, 97,116,104, 46,102,108,111,111,114, 10,102,114,101,
+    120,112, 32, 61, 32,109, 97,116,104, 46,102,114,101,120,112,
+     10,108,100,101,120,112, 32, 61, 32,109, 97,116,104, 46,108,
+    100,101,120,112, 10,108,111,103, 32, 61, 32,109, 97,116,104,
+     46,108,111,103, 10,108,111,103, 49, 48, 32, 61, 32,109, 97,
+    116,104, 46,108,111,103, 49, 48, 10,109, 97,120, 32, 61, 32,
+    109, 97,116,104, 46,109, 97,120, 10,109,105,110, 32, 61, 32,
+    109, 97,116,104, 46,109,105,110, 10,109,111,100, 32, 61, 32,
+    109, 97,116,104, 46,109,111,100, 10, 80, 73, 32, 61, 32,109,
+     97,116,104, 46,112,105, 10, 45, 45, 63, 63, 63, 32,112,111,
+    119, 32, 61, 32,109, 97,116,104, 46,112,111,119, 32, 32, 10,
+    114, 97,100, 32, 61, 32,109, 97,116,104, 46,114, 97,100, 10,
+    114, 97,110,100,111,109, 32, 61, 32,109, 97,116,104, 46,114,
+     97,110,100,111,109, 10,114, 97,110,100,111,109,115,101,101,
+    100, 32, 61, 32,109, 97,116,104, 46,114, 97,110,100,111,109,
+    115,101,101,100, 10,115,105,110, 32, 61, 32,102,117,110, 99,
+    116,105,111,110, 32, 40,120, 41, 32,114,101,116,117,114,110,
+     32,109, 97,116,104, 46,115,105,110, 40,109, 97,116,104, 46,
+    114, 97,100, 40,120, 41, 41, 32,101,110,100, 10,115,113,114,
+    116, 32, 61, 32,109, 97,116,104, 46,115,113,114,116, 10,116,
+     97,110, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,
+    120, 41, 32,114,101,116,117,114,110, 32,109, 97,116,104, 46,
+    116, 97,110, 40,109, 97,116,104, 46,114, 97,100, 40,120, 41,
+     41, 32,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     45, 45, 32,115,116,114,105,110,103, 32,108,105, 98,114, 97,
+    114,121, 10,108,111, 99, 97,108, 32,115,116,114, 32, 61, 32,
+    115,116,114,105,110,103, 10,115,116,114, 98,121,116,101, 32,
+     61, 32,115,116,114, 46, 98,121,116,101, 10,115,116,114, 99,
+    104, 97,114, 32, 61, 32,115,116,114, 46, 99,104, 97,114, 10,
+    115,116,114,102,105,110,100, 32, 61, 32,115,116,114, 46,102,
+    105,110,100, 10,102,111,114,109, 97,116, 32, 61, 32,115,116,
+    114, 46,102,111,114,109, 97,116, 10,103,115,117, 98, 32, 61,
+     32,115,116,114, 46,103,115,117, 98, 10,115,116,114,108,101,
+    110, 32, 61, 32,115,116,114, 46,108,101,110, 10,115,116,114,
+    108,111,119,101,114, 32, 61, 32,115,116,114, 46,108,111,119,
+    101,114, 10,115,116,114,114,101,112, 32, 61, 32,115,116,114,
+     46,114,101,112, 10,115,116,114,115,117, 98, 32, 61, 32,115,
+    116,114, 46,115,117, 98, 10,115,116,114,117,112,112,101,114,
+     32, 61, 32,115,116,114, 46,117,112,112,101,114, 10, 10, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 10, 45, 45, 32,111,115, 32,108,105,
+     98,114, 97,114,121, 10, 99,108,111, 99,107, 32, 61, 32,111,
+    115, 46, 99,108,111, 99,107, 10,100, 97,116,101, 32, 61, 32,
+    111,115, 46,100, 97,116,101, 10,100,105,102,102,116,105,109,
+    101, 32, 61, 32,111,115, 46,100,105,102,102,116,105,109,101,
+     10,101,120,101, 99,117,116,101, 32, 61, 32,111,115, 46,101,
+    120,101, 99,117,116,101, 32, 45, 45, 63, 10,101,120,105,116,
+     32, 61, 32,111,115, 46,101,120,105,116, 10,103,101,116,101,
+    110,118, 32, 61, 32,111,115, 46,103,101,116,101,110,118, 10,
+    114,101,109,111,118,101, 32, 61, 32,111,115, 46,114,101,109,
+    111,118,101, 10,114,101,110, 97,109,101, 32, 61, 32,111,115,
+     46,114,101,110, 97,109,101, 10,115,101,116,108,111, 99, 97,
+    108,101, 32, 61, 32,111,115, 46,115,101,116,108,111, 99, 97,
+    108,101, 10,116,105,109,101, 32, 61, 32,111,115, 46,116,105,
+    109,101, 10,116,109,112,110, 97,109,101, 32, 61, 32,111,115,
+     46,116,109,112,110, 97,109,101, 10, 10, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 45, 45, 32, 99,111,109,112, 97,116,105, 98,105,
+    108,105,116,121, 32,111,110,108,121, 10,103,101,116,103,108,
+    111, 98, 97,108, 32, 61, 32,102,117,110, 99,116,105,111,110,
+     32, 40,110, 41, 32,114,101,116,117,114,110, 32, 95, 71, 91,
+    110, 93, 32,101,110,100, 10,115,101,116,103,108,111, 98, 97,
+    108, 32, 61, 32,102,117,110, 99,116,105,111,110, 32, 40,110,
+     44,118, 41, 32, 95, 71, 91,110, 93, 32, 61, 32,118, 32,101,
+    110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 10,108,111,
+     99, 97,108, 32,105,111, 44, 32,116, 97, 98, 32, 61, 32,105,
+    111, 44, 32,116, 97, 98,108,101, 10, 10, 45, 45, 32, 73, 79,
+     32,108,105, 98,114, 97,114,121, 32, 40,102,105,108,101,115,
+     41, 10, 95, 83, 84, 68, 73, 78, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 95, 83, 84, 68, 69, 82, 82, 32, 61, 32,
+    105,111, 46,115,116,100,101,114,114, 10, 95, 83, 84, 68, 79,
+     85, 84, 32, 61, 32,105,111, 46,115,116,100,111,117,116, 10,
+     95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,116,100,
+    105,110, 10, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,111,
+     46,115,116,100,111,117,116, 10,115,101,101,107, 32, 61, 32,
+    105,111, 46,115,116,100,105,110, 46,115,101,101,107, 32, 32,
+     32, 45, 45, 32,115,105, 99,107, 32, 59, 45, 41, 10,116,109,
+    112,102,105,108,101, 32, 61, 32,105,111, 46,116,109,112,102,
+    105,108,101, 10, 99,108,111,115,101,102,105,108,101, 32, 61,
+     32,105,111, 46, 99,108,111,115,101, 10,111,112,101,110,102,
+    105,108,101, 32, 61, 32,105,111, 46,111,112,101,110, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,102,108,117,115,104, 32,
+     40,102, 41, 10, 32, 32,105,102, 32,102, 32,116,104,101,110,
+     32,102, 58,102,108,117,115,104, 40, 41, 10, 32, 32,101,108,
+    115,101, 32, 95, 79, 85, 84, 80, 85, 84, 58,102,108,117,115,
+    104, 40, 41, 10, 32, 32,101,110,100, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,114,101, 97,100,102,114,
+    111,109, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102, 32,
+    110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,
+    101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46, 99,
+    108,111,115,101, 40, 95, 73, 78, 80, 85, 84, 41, 10, 32, 32,
+     32, 32, 95, 73, 78, 80, 85, 84, 32, 61, 32,105,111, 46,115,
+    116,100,105,110, 10, 32, 32, 32, 32,114,101,116,117,114,110,
+     32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,
+    101,108,115,101, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,
+    111, 46,111,112,101,110, 40,110, 97,109,101, 44, 32, 34,114,
+     34, 41, 10, 32, 32, 32, 32, 95, 73, 78, 80, 85, 84, 32, 61,
+     32,102, 32,111,114, 32, 95, 73, 78, 80, 85, 84, 10, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,102, 44, 32,101,114,114,
+     44, 32, 99,111,100, 10, 32, 32,101,110,100, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,
+    101,116,111, 32, 40,110, 97,109,101, 41, 10, 32, 32,105,102,
+     32,110, 97,109,101, 32, 61, 61, 32,110,105,108, 32,116,104,
+    101,110, 10, 32, 32, 32, 32,108,111, 99, 97,108, 32,102, 44,
+     32,101,114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,
+     99,108,111,115,101, 40, 95, 79, 85, 84, 80, 85, 84, 41, 10,
+     32, 32, 32, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,105,
+    111, 46,115,116,100,111,117,116, 10, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,
+    100, 10, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,108,111,
+     99, 97,108, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100,
+     32, 61, 32,105,111, 46,111,112,101,110, 40,110, 97,109,101,
+     44, 32, 34,119, 34, 41, 10, 32, 32, 32, 32, 95, 79, 85, 84,
+     80, 85, 84, 32, 61, 32,102, 32,111,114, 32, 95, 79, 85, 84,
+     80, 85, 84, 10, 32, 32, 32, 32,114,101,116,117,114,110, 32,
+    102, 44, 32,101,114,114, 44, 32, 99,111,100, 10, 32, 32,101,
+    110,100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,
+    110, 32, 97,112,112,101,110,100,116,111, 32, 40,110, 97,109,
+    101, 41, 10, 32, 32,108,111, 99, 97,108, 32,102, 44, 32,101,
+    114,114, 44, 32, 99,111,100, 32, 61, 32,105,111, 46,111,112,
+    101,110, 40,110, 97,109,101, 44, 32, 34, 97, 34, 41, 10, 32,
+     32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,102, 32,111,114,
+     32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,114,101,116,117,
+    114,110, 32,102, 44, 32,101,114,114, 44, 32, 99,111,100, 10,
+    101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,
+    101, 97,100, 32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99,
+     97,108, 32,102, 32, 61, 32, 95, 73, 78, 80, 85, 84, 10, 32,
+     32,105,102, 32,114, 97,119,116,121,112,101, 40, 97,114,103,
+     91, 49, 93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,
+    116, 97, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32,
+     61, 32,116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,
+    103, 44, 32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,
+    101,116,117,114,110, 32,102, 58,114,101, 97,100, 40,117,110,
+    112, 97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,119,114,105,116,101,
+     32, 40, 46, 46, 46, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    102, 32, 61, 32, 95, 79, 85, 84, 80, 85, 84, 10, 32, 32,105,
+    102, 32,114, 97,119,116,121,112,101, 40, 97,114,103, 91, 49,
+     93, 41, 32, 61, 61, 32, 39,117,115,101,114,100, 97,116, 97,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 32,102, 32, 61, 32,
+    116, 97, 98, 46,114,101,109,111,118,101, 40, 97,114,103, 44,
+     32, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,114,101,116,
+    117,114,110, 32,102, 58,119,114,105,116,101, 40,117,110,112,
+     97, 99,107, 40, 97,114,103, 41, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/compat.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 98, 97,115,105, 99,
+     32,117,116,105,108,105,116,121, 32,102,117,110, 99,116,105,
+    111,110,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32,
+     98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,
+    101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80,
+     85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49,
+     57, 57, 56, 10, 45, 45, 32, 76, 97,115,116, 32,117,112,100,
+     97,116,101, 58, 32, 65,112,114, 32, 50, 48, 48, 51, 10, 45,
+     45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 45, 45, 32, 66, 97,115,105, 99, 32, 67, 32,116,121,
+    112,101,115, 32, 97,110,100, 32,116,104,101,105,114, 32, 99,
+    111,114,114,101,115,112,111,110,100,105,110,103, 32, 76,117,
+     97, 32,116,121,112,101,115, 10, 45, 45, 32, 65,108,108, 32,
+    111, 99, 99,117,114,114,101,110, 99,101,115, 32,111,102, 32,
+     34, 99,104, 97,114, 42, 34, 32,119,105,108,108, 32, 98,101,
+     32,114,101,112,108, 97, 99,101,100, 32, 98,121, 32, 34, 95,
+     99,115,116,114,105,110,103, 34, 44, 10, 45, 45, 32, 97,110,
+    100, 32, 97,108,108, 32,111, 99, 99,117,114,114,101,110, 99,
+    101,115, 32,111,102, 32, 34,118,111,105,100, 42, 34, 32,119,
+    105,108,108, 32, 98,101, 32,114,101,112,108, 97, 99,101,100,
+     32, 98,121, 32, 34, 95,117,115,101,114,100, 97,116, 97, 34,
+     10, 95, 98, 97,115,105, 99, 32, 61, 32,123, 10, 32, 91, 39,
+    118,111,105,100, 39, 93, 32, 61, 32, 39, 39, 44, 10, 32, 91,
+     39, 99,104, 97,114, 39, 93, 32, 61, 32, 39,110,117,109, 98,
+    101,114, 39, 44, 10, 32, 91, 39,105,110,116, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,115,
+    104,111,114,116, 39, 93, 32, 61, 32, 39,110,117,109, 98,101,
+    114, 39, 44, 10, 32, 91, 39,108,111,110,103, 39, 93, 32, 61,
+     32, 39,110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39,117,
+    110,115,105,103,110,101,100, 39, 93, 32, 61, 32, 39,110,117,
+    109, 98,101,114, 39, 44, 10, 32, 91, 39,102,108,111, 97,116,
+     39, 93, 32, 61, 32, 39,110,117,109, 98,101,114, 39, 44, 10,
+     32, 91, 39,100,111,117, 98,108,101, 39, 93, 32, 61, 32, 39,
+    110,117,109, 98,101,114, 39, 44, 10, 32, 91, 39, 95, 99,115,
+    116,114,105,110,103, 39, 93, 32, 61, 32, 39,115,116,114,105,
+    110,103, 39, 44, 10, 32, 91, 39, 95,117,115,101,114,100, 97,
+    116, 97, 39, 93, 32, 61, 32, 39,117,115,101,114,100, 97,116,
+     97, 39, 44, 10, 32, 91, 39, 99,104, 97,114, 42, 39, 93, 32,
+     61, 32, 39,115,116,114,105,110,103, 39, 44, 10, 32, 91, 39,
+    118,111,105,100, 42, 39, 93, 32, 61, 32, 39,117,115,101,114,
+    100, 97,116, 97, 39, 44, 10, 32, 91, 39, 98,111,111,108, 39,
+     93, 32, 61, 32, 39, 98,111,111,108,101, 97,110, 39, 44, 10,
+     32, 91, 39,108,117, 97, 95, 79, 98,106,101, 99,116, 39, 93,
+     32, 61, 32, 39,118, 97,108,117,101, 39, 44, 10, 32, 91, 39,
+     76, 85, 65, 95, 86, 65, 76, 85, 69, 39, 93, 32, 61, 32, 39,
+    118, 97,108,117,101, 39, 44, 32, 32, 32, 32, 45, 45, 32,102,
+    111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,116,
+    121, 32,119,105,116,104, 32,116,111,108,117, 97, 32, 52, 46,
+     48, 10, 32, 91, 39,108,117, 97, 95, 83,116, 97,116,101, 42,
+     39, 93, 32, 61, 32, 39,115,116, 97,116,101, 39, 44, 10, 32,
+     91, 39, 95,108,115,116, 97,116,101, 39, 93, 32, 61, 32, 39,
+    115,116, 97,116,101, 39, 44, 10, 32, 91, 39,108,117, 97, 95,
+     70,117,110, 99,116,105,111,110, 39, 93, 32, 61, 32, 39,118,
+     97,108,117,101, 39, 44, 10,125, 10, 10, 95, 98, 97,115,105,
+     99, 95, 99,116,121,112,101, 32, 61, 32,123, 10, 32,110,117,
+    109, 98,101,114, 32, 61, 32, 34,108,117, 97, 95, 78,117,109,
+     98,101,114, 34, 44, 10, 32,115,116,114,105,110,103, 32, 61,
+     32, 34, 99,111,110,115,116, 32, 99,104, 97,114, 42, 34, 44,
+     10, 32,117,115,101,114,100, 97,116, 97, 32, 61, 32, 34,118,
+    111,105,100, 42, 34, 44, 10, 32, 98,111,111,108,101, 97,110,
+     32, 61, 32, 34, 98,111,111,108, 34, 44, 10, 32,118, 97,108,
+    117,101, 32, 61, 32, 34,105,110,116, 34, 44, 10, 32,115,116,
+     97,116,101, 32, 61, 32, 34,108,117, 97, 95, 83,116, 97,116,
+    101, 42, 34, 44, 10,125, 10, 10, 45, 45, 32,102,117,110, 99,
+    116,105,111,110,115, 32,116,104,101, 32, 97,114,101, 32,117,
+    115,101,100, 32,116,111, 32,100,111, 32, 97, 32, 39,114, 97,
+    119, 32,112,117,115,104, 39, 32,111,102, 32, 98, 97,115,105,
+     99, 32,116,121,112,101,115, 10, 95, 98, 97,115,105, 99, 95,
+    114, 97,119, 95,112,117,115,104, 32, 61, 32,123,125, 10, 10,
+     45, 45, 32, 76,105,115,116, 32,111,102, 32,117,115,101,114,
+     32,100,101,102,105,110,101,100, 32,116,121,112,101,115, 10,
+     45, 45, 32, 69, 97, 99,104, 32,116,121,112,101, 32, 99,111,
+    114,114,101,115,112,111,110,100,115, 32,116,111, 32, 97, 32,
+    118, 97,114,105, 97, 98,108,101, 32,110, 97,109,101, 32,116,
+    104, 97,116, 32,115,116,111,114,101,115, 32,105,116,115, 32,
+    116, 97,103, 32,118, 97,108,117,101, 46, 10, 95,117,115,101,
+    114,116,121,112,101, 32, 61, 32,123,125, 10, 10, 45, 45, 32,
+     76,105,115,116, 32,111,102, 32,116,121,112,101,115, 32,116,
+    104, 97,116, 32,104, 97,118,101, 32,116,111, 32, 98,101, 32,
+     99,111,108,108,101, 99,116,101,100, 10, 95, 99,111,108,108,
+    101, 99,116, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,116,121,112,101,115, 10, 95,103,108,
+    111, 98, 97,108, 95,116,121,112,101,115, 32, 61, 32,123,110,
+     61, 48,125, 10, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 95,104, 97,115,104, 32, 61, 32,123,125, 10, 10, 45,
+     45, 32,108,105,115,116, 32,111,102, 32, 99,108, 97,115,115,
+    101,115, 10, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,
+    115,101,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,105,
+    115,116, 32,111,102, 32,101,110,117,109, 32, 99,111,110,115,
+    116, 97,110,116,115, 10, 95,103,108,111, 98, 97,108, 95,101,
+    110,117,109,115, 32, 61, 32,123,125, 10, 10, 45, 45, 32, 76,
+    105,115,116, 32,111,102, 32, 97,117,116,111, 32,114,101,110,
+     97,109,105,110,103, 10, 95,114,101,110, 97,109,105,110,103,
+     32, 61, 32,123,125, 10,102,117,110, 99,116,105,111,110, 32,
+     97,112,112,101,110,100,114,101,110, 97,109,105,110,103, 32,
+     40,115, 41, 10, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,
+    111,108,100, 44,110,101,119, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 37,115, 42, 40, 46, 45, 41, 37,115,
+     42, 64, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 36, 34, 41,
+     10,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110,
+     10,  9, 32,101,114,114,111,114, 40, 34, 35, 73,110,118, 97,
+    108,105,100, 32,114,101,110, 97,109,105,110,103, 32,115,121,
+    110,116, 97,120, 59, 32,105,116, 32,115,104,111,117,108,100,
+     32, 98,101, 32,111,102, 32,116,104,101, 32,102,111,114,109,
+     58, 32,112, 97,116,116,101,114,110, 64,112, 97,116,116,101,
+    114,110, 34, 41, 10,  9,101,110,100, 10,  9,116,105,110,115,
+    101,114,116, 40, 95,114,101,110, 97,109,105,110,103, 44,123,
+    111,108,100, 61,111,108,100, 44, 32,110,101,119, 61,110,101,
+    119,125, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32, 97,112,112,108,121,114,101,110, 97,109,105,110,
+    103, 32, 40,115, 41, 10,  9,102,111,114, 32,105, 61, 49, 44,
+    103,101,116,110, 40, 95,114,101,110, 97,109,105,110,103, 41,
+     32,100,111, 10,  9, 32,108,111, 99, 97,108, 32,109, 44,110,
+     32, 61, 32,103,115,117, 98, 40,115, 44, 95,114,101,110, 97,
+    109,105,110,103, 91,105, 93, 46,111,108,100, 44, 95,114,101,
+    110, 97,109,105,110,103, 91,105, 93, 46,110,101,119, 41, 10,
+      9,  9,105,102, 32,110, 32,126, 61, 32, 48, 32,116,104,101,
+    110, 10,  9,  9, 32,114,101,116,117,114,110, 32,109, 10,  9,
+      9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,
+     69,114,114,111,114, 32,104, 97,110,100,108,101,114, 10,102,
+    117,110, 99,116,105,111,110, 32,116,111,108,117, 97, 95,101,
+    114,114,111,114, 32, 40,115, 44,102, 41, 10,105,102, 32, 95,
+     99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110, 10,
+      9,112,114,105,110,116, 40, 34, 42, 42, 42, 99,117,114,114,
+     32, 99,111,100,101, 32,102,111,114, 32,101,114,114,111,114,
+     32,105,115, 32, 34, 46, 46,116,111,115,116,114,105,110,103,
+     40, 95, 99,117,114,114, 95, 99,111,100,101, 41, 41, 10,  9,
+    112,114,105,110,116, 40,100,101, 98,117,103, 46,116,114, 97,
+     99,101, 98, 97, 99,107, 40, 41, 41, 10,101,110,100, 10, 32,
+    108,111, 99, 97,108, 32,111,117,116, 32, 61, 32, 95, 79, 85,
+     84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61,
+     32, 95, 83, 84, 68, 69, 82, 82, 10, 32,105,102, 32,115,116,
+    114,115,117, 98, 40,115, 44, 49, 44, 49, 41, 32, 61, 61, 32,
+     39, 35, 39, 32,116,104,101,110, 10, 32, 32,119,114,105,116,
+    101, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97, 58, 32,
+     34, 46, 46,115,116,114,115,117, 98, 40,115, 44, 50, 41, 46,
+     46, 34, 46, 92,110, 92,110, 34, 41, 10, 32, 32,105,102, 32,
+     95, 99,117,114,114, 95, 99,111,100,101, 32,116,104,101,110,
+     10, 32, 32, 32,108,111, 99, 97,108, 32, 95, 44, 95, 44,115,
+     32, 61, 32,115,116,114,102,105,110,100, 40, 95, 99,117,114,
+    114, 95, 99,111,100,101, 44, 34, 94, 37,115, 42, 40, 46, 45,
+     92,110, 41, 34, 41, 32, 45, 45, 32,101,120,116,114, 97, 99,
+    116, 32,102,105,114,115,116, 32,108,105,110,101, 10, 32, 32,
+     32,105,102, 32,115, 61, 61,110,105,108, 32,116,104,101,110,
+     32,115, 32, 61, 32, 95, 99,117,114,114, 95, 99,111,100,101,
+     32,101,110,100, 10, 32, 32, 32,115, 32, 61, 32,103,115,117,
+     98, 40,115, 44, 34, 95,117,115,101,114,100, 97,116, 97, 34,
+     44, 34,118,111,105,100, 42, 34, 41, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,118,111,105,100,
+     42, 39, 10, 32, 32, 32,115, 32, 61, 32,103,115,117, 98, 40,
+    115, 44, 34, 95, 99,115,116,114,105,110,103, 34, 44, 34, 99,
+    104, 97,114, 42, 34, 41, 32, 32, 45, 45, 32,114,101,116,117,
+    114,110, 32,119,105,116,104, 32, 39, 99,104, 97,114, 42, 39,
+     10, 32, 32, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
+     34, 95,108,115,116, 97,116,101, 34, 44, 34,108,117, 97, 95,
+     83,116, 97,116,101, 42, 34, 41, 32, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,119,105,116,104, 32, 39,108,117, 97, 95,
+     83,116, 97,116,101, 42, 39, 10, 32, 32, 32,119,114,105,116,
+    101, 40, 34, 67,111,100,101, 32, 98,101,105,110,103, 32,112,
+    114,111, 99,101,115,115,101,100, 58, 92,110, 34, 46, 46,115,
+     46, 46, 34, 92,110, 34, 41, 10, 32, 32,101,110,100, 10, 32,
+    101,108,115,101, 10, 32,105,102, 32,110,111,116, 32,102, 32,
+    116,104,101,110, 32,102, 32, 61, 32, 34, 40,102, 32,105,115,
+     32,110,105,108, 41, 34, 32,101,110,100, 10, 32, 32,112,114,
+    105,110,116, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97,
+     32,105,110,116,101,114,110, 97,108, 32,101,114,114,111,114,
+     58, 32, 34, 46, 46,102, 46, 46,115, 46, 46, 34, 46, 92,110,
+     92,110, 34, 41, 10, 32, 32,114,101,116,117,114,110, 10, 32,
+    101,110,100, 10, 32, 95, 79, 85, 84, 80, 85, 84, 32, 61, 32,
+    111,117,116, 10,101,110,100, 10, 10,102,117,110, 99,116,105,
+    111,110, 32,119, 97,114,110,105,110,103, 32, 40,109,115,103,
+     41, 10, 32,108,111, 99, 97,108, 32,111,117,116, 32, 61, 32,
+     95, 79, 85, 84, 80, 85, 84, 10, 32, 95, 79, 85, 84, 80, 85,
+     84, 32, 61, 32, 95, 83, 84, 68, 69, 82, 82, 10, 32,119,114,
+    105,116,101, 40, 34, 92,110, 42, 42, 32,116,111,108,117, 97,
+     32,119, 97,114,110,105,110,103, 58, 32, 34, 46, 46,109,115,
+    103, 46, 46, 34, 46, 92,110, 92,110, 34, 41, 10, 32, 95, 79,
+     85, 84, 80, 85, 84, 32, 61, 32,111,117,116, 10,101,110,100,
+     10, 10, 45, 45, 32,114,101,103,105,115,116,101,114, 32, 97,
+    110, 32,117,115,101,114, 32,100,101,102,105,110,101,100, 32,
+    116,121,112,101, 58, 32,114,101,116,117,114,110,115, 32,102,
+    117,108,108, 32,116,121,112,101, 10,102,117,110, 99,116,105,
+    111,110, 32,114,101,103,116,121,112,101, 32, 40,116, 41, 10,
+      9, 45, 45,105,102, 32,105,115, 98, 97,115,105, 99, 40,116,
+     41, 32,116,104,101,110, 10,  9, 45, 45,  9,114,101,116,117,
+    114,110, 32,116, 10,  9, 45, 45,101,110,100, 10,  9,108,111,
+     99, 97,108, 32,102,116, 32, 61, 32,102,105,110,100,116,121,
+    112,101, 40,116, 41, 10, 10,  9,105,102, 32,110,111,116, 32,
+     95,117,115,101,114,116,121,112,101, 91,102,116, 93, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 32, 97,112,
+    112,101,110,100,117,115,101,114,116,121,112,101, 40,116, 41,
+     10,  9,101,110,100, 10,  9,114,101,116,117,114,110, 32,102,
+    116, 10,101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,
+    110, 32,116,121,112,101, 32,110, 97,109,101, 58, 32,114,101,
+    116,117,114,110,115, 32,102,117,108,108, 32,116,121,112,101,
+     10,102,117,110, 99,116,105,111,110, 32,116,121,112,101,118,
+     97,114, 40,116,121,112,101, 41, 10,  9,105,102, 32,116,121,
+    112,101, 32, 61, 61, 32, 39, 39, 32,111,114, 32,116,121,112,
+    101, 32, 61, 61, 32, 39,118,111,105,100, 39, 32,116,104,101,
+    110, 10,  9,  9,114,101,116,117,114,110, 32,116,121,112,101,
+     10,  9,101,108,115,101, 10,  9,  9,108,111, 99, 97,108, 32,
+    102,116, 32, 61, 32,102,105,110,100,116,121,112,101, 40,116,
+    121,112,101, 41, 10,  9,  9,105,102, 32,102,116, 32,116,104,
+    101,110, 10,  9,  9,  9,114,101,116,117,114,110, 32,102,116,
+     10,  9,  9,101,110,100, 10,  9,  9, 95,117,115,101,114,116,
+    121,112,101, 91,116,121,112,101, 93, 32, 61, 32,116,121,112,
+    101, 10,  9,  9,114,101,116,117,114,110, 32,116,121,112,101,
+     10,  9,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32, 98, 97,115,105, 99, 32,116,
+    121,112,101, 10,102,117,110, 99,116,105,111,110, 32,105,115,
+     98, 97,115,105, 99, 32, 40,116,121,112,101, 41, 10, 32,108,
+    111, 99, 97,108, 32,116, 32, 61, 32,103,115,117, 98, 40,116,
+    121,112,101, 44, 39, 99,111,110,115,116, 32, 39, 44, 39, 39,
+     41, 10, 32,108,111, 99, 97,108, 32,109, 44,116, 32, 61, 32,
+     97,112,112,108,121,116,121,112,101,100,101,102, 40, 39, 39,
+     44, 32,116, 41, 10, 32,108,111, 99, 97,108, 32, 98, 32, 61,
+     32, 95, 98, 97,115,105, 99, 91,116, 93, 10, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32,114,101,116,117,114,110,
+     32, 98, 44, 95, 98, 97,115,105, 99, 95, 99,116,121,112,101,
+     91, 98, 93, 10, 32,101,110,100, 10, 32,114,101,116,117,114,
+    110, 32,110,105,108, 10,101,110,100, 10, 10, 45, 45, 32,115,
+    112,108,105,116, 32,115,116,114,105,110,103, 32,117,115,105,
+    110,103, 32, 97, 32,116,111,107,101,110, 10,102,117,110, 99,
+    116,105,111,110, 32,115,112,108,105,116, 32, 40,115, 44,116,
+     41, 10, 32,108,111, 99, 97,108, 32,108, 32, 61, 32,123,110,
+     61, 48,125, 10, 32,108,111, 99, 97,108, 32,102, 32, 61, 32,
+    102,117,110, 99,116,105,111,110, 32, 40,115, 41, 10, 32, 32,
+    108, 46,110, 32, 61, 32,108, 46,110, 32, 43, 32, 49, 10, 32,
+     32,108, 91,108, 46,110, 93, 32, 61, 32,115, 10, 32, 32,114,
+    101,116,117,114,110, 32, 34, 34, 10, 32,101,110,100, 10, 32,
+    108,111, 99, 97,108, 32,112, 32, 61, 32, 34, 37,115, 42, 40,
+     46, 45, 41, 37,115, 42, 34, 46, 46,116, 46, 46, 34, 37,115,
+     42, 34, 10, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44,
+     34, 94, 37,115, 43, 34, 44, 34, 34, 41, 10, 32,115, 32, 61,
+     32,103,115,117, 98, 40,115, 44, 34, 37,115, 43, 36, 34, 44,
+     34, 34, 41, 10, 32,115, 32, 61, 32,103,115,117, 98, 40,115,
+     44,112, 44,102, 41, 10, 32,108, 46,110, 32, 61, 32,108, 46,
+    110, 32, 43, 32, 49, 10, 32,108, 91,108, 46,110, 93, 32, 61,
+     32,103,115,117, 98, 40,115, 44, 34, 40, 37,115, 37,115, 42,
+     41, 36, 34, 44, 34, 34, 41, 10, 32,114,101,116,117,114,110,
+     32,108, 10,101,110,100, 10, 10, 45, 45, 32,115,112,108,105,
+    116,115, 32, 97, 32,115,116,114,105,110,103, 32,117,115,105,
+    110,103, 32, 97, 32,112, 97,116,116,101,114,110, 44, 32, 99,
+    111,110,115,105,100,101,114,105,110,103, 32,116,104,101, 32,
+    115,112, 97, 99,105, 97,108, 32, 99, 97,115,101,115, 32,111,
+    102, 32, 67, 32, 99,111,100,101, 32, 40,116,101,109,112,108,
+     97,116,101,115, 44, 32,102,117,110, 99,116,105,111,110, 32,
+    112, 97,114, 97,109,101,116,101,114,115, 44, 32,101,116, 99,
+     41, 10, 45, 45, 32,112, 97,116,116,101,114,110, 32, 99, 97,
+    110, 39,116, 32, 99,111,110,116, 97,105,110, 32,116,104,101,
+     32, 39, 94, 39, 32, 40, 97,115, 32,117,115,101,100, 32,116,
+    111, 32,105,100,101,110,116,105,102,121, 32,116,104,101, 32,
+     98,101,103,105,110,105,110,103, 32,111,102, 32,116,104,101,
+     32,108,105,110,101, 41, 10, 45, 45, 32, 97,108,115,111, 32,
+    115,116,114,105,112,115, 32,119,104,105,116,101,115,112, 97,
+     99,101, 10,102,117,110, 99,116,105,111,110, 32,115,112,108,
+    105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44, 32,
+    112, 97,116, 41, 10, 10,  9,115, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 94, 37,115,
+     42, 34, 44, 32, 34, 34, 41, 10,  9,115, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32, 34, 37,
+    115, 42, 36, 34, 44, 32, 34, 34, 41, 10, 10,  9,108,111, 99,
+     97,108, 32,116,111,107,101,110, 95, 98,101,103,105,110, 32,
+     61, 32, 49, 10,  9,108,111, 99, 97,108, 32,116,111,107,101,
+    110, 95,101,110,100, 32, 61, 32, 49, 10,  9,108,111, 99, 97,
+    108, 32,111,102,115, 32, 61, 32, 49, 10,  9,108,111, 99, 97,
+    108, 32,114,101,116, 32, 61, 32,123,110, 61, 48,125, 10, 10,
+      9,102,117,110, 99,116,105,111,110, 32, 97,100,100, 95,116,
+    111,107,101,110, 40,111,102,115, 41, 10, 10,  9,  9,108,111,
+     99, 97,108, 32,116, 32, 61, 32,115,116,114,105,110,103, 46,
+    115,117, 98, 40,115, 44, 32,116,111,107,101,110, 95, 98,101,
+    103,105,110, 44, 32,111,102,115, 41, 10,  9,  9,116, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,116, 44,
+     32, 34, 94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,  9,
+    116, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,116, 44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34, 41,
+     10,  9,  9,114,101,116, 46,110, 32, 61, 32,114,101,116, 46,
+    110, 32, 43, 32, 49, 10,  9,  9,114,101,116, 91,114,101,116,
+     46,110, 93, 32, 61, 32,116, 10,  9,101,110,100, 10, 10,  9,
+    119,104,105,108,101, 32,111,102,115, 32, 60, 61, 32,115,116,
+    114,105,110,103, 46,108,101,110, 40,115, 41, 32,100,111, 10,
+     10,  9,  9,108,111, 99, 97,108, 32,115,117, 98, 32, 61, 32,
+    115,116,114,105,110,103, 46,115,117, 98, 40,115, 44, 32,111,
+    102,115, 44, 32, 45, 49, 41, 10,  9,  9,108,111, 99, 97,108,
+     32, 98, 44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,117, 98, 44, 32, 34, 94, 34, 46, 46,112,
+     97,116, 41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,110,
+     10,  9,  9,  9, 97,100,100, 95,116,111,107,101,110, 40,111,
+    102,115, 45, 49, 41, 10,  9,  9,  9,111,102,115, 32, 61, 32,
+    111,102,115, 43,101, 10,  9,  9,  9,116,111,107,101,110, 95,
+     98,101,103,105,110, 32, 61, 32,111,102,115, 10,  9,  9,101,
+    108,115,101, 10,  9,  9,  9,108,111, 99, 97,108, 32, 99,104,
+     97,114, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98,
+     40,115, 44, 32,111,102,115, 44, 32,111,102,115, 41, 10,  9,
+      9,  9,105,102, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 40,
+     34, 32,111,114, 32, 99,104, 97,114, 32, 61, 61, 32, 34, 60,
+     34, 32,116,104,101,110, 10, 10,  9,  9,  9,  9,108,111, 99,
+     97,108, 32, 98,108,111, 99,107, 10,  9,  9,  9,  9,105,102,
+     32, 99,104, 97,114, 32, 61, 61, 32, 34, 40, 34, 32,116,104,
+    101,110, 32, 98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98,
+     40, 41, 34, 32,101,110,100, 10,  9,  9,  9,  9,105,102, 32,
+     99,104, 97,114, 32, 61, 61, 32, 34, 60, 34, 32,116,104,101,
+    110, 32, 98,108,111, 99,107, 32, 61, 32, 34, 94, 37, 98, 60,
+     62, 34, 32,101,110,100, 10, 10,  9,  9,  9,  9, 98, 44,101,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115,117, 98, 44, 32, 98,108,111, 99,107, 41, 10,  9,  9,  9,
+      9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,
+      9,  9,  9,  9,  9, 45, 45, 32,117,110,116,101,114,109,105,
+    110, 97,116,101,100, 32, 98,108,111, 99,107, 63, 10,  9,  9,
+      9,  9,  9,111,102,115, 32, 61, 32,111,102,115, 43, 49, 10,
+      9,  9,  9,  9,101,108,115,101, 10,  9,  9,  9,  9,  9,111,
+    102,115, 32, 61, 32,111,102,115, 32, 43, 32,101, 10,  9,  9,
+      9,  9,101,110,100, 10, 10,  9,  9,  9,101,108,115,101, 10,
+      9,  9,  9,  9,111,102,115, 32, 61, 32,111,102,115, 43, 49,
+     10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,100, 10, 10,
+      9,101,110,100, 10,  9, 97,100,100, 95,116,111,107,101,110,
+     40,111,102,115, 41, 10,  9, 45, 45,105,102, 32,114,101,116,
+     46,110, 32, 61, 61, 32, 48, 32,116,104,101,110, 10, 10,  9,
+     45, 45,  9,114,101,116, 46,110, 61, 49, 10,  9, 45, 45,  9,
+    114,101,116, 91, 49, 93, 32, 61, 32, 34, 34, 10,  9, 45, 45,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,114,101,
+    116, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,111,110, 99,
+     97,116,101,110, 97,116,101, 32,115,116,114,105,110,103,115,
+     32,111,102, 32, 97, 32,116, 97, 98,108,101, 10,102,117,110,
+     99,116,105,111,110, 32, 99,111,110, 99, 97,116, 32, 40,116,
+     44,102, 44,108, 44,106,115,116,114, 41, 10,  9,106,115,116,
+    114, 32, 61, 32,106,115,116,114, 32,111,114, 32, 34, 32, 34,
+     10, 32,108,111, 99, 97,108, 32,115, 32, 61, 32, 39, 39, 10,
+     32,108,111, 99, 97,108, 32,105, 61,102, 10, 32,119,104,105,
+    108,101, 32,105, 60, 61,108, 32,100,111, 10, 32, 32,115, 32,
+     61, 32,115, 46, 46,116, 91,105, 93, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32, 32,105,102, 32,105, 32, 60, 61, 32,
+    108, 32,116,104,101,110, 32,115, 32, 61, 32,115, 46, 46,106,
+    115,116,114, 32,101,110,100, 10, 32,101,110,100, 10, 32,114,
+    101,116,117,114,110, 32,115, 10,101,110,100, 10, 10, 45, 45,
+     32, 99,111,110, 99, 97,116,101,110, 97,116,101, 32, 97,108,
+    108, 32,112, 97,114, 97,109,101,116,101,114,115, 44, 32,102,
+    111,108,108,111,119,105,110,103, 32,111,117,116,112,117,116,
+     32,114,117,108,101,115, 10,102,117,110, 99,116,105,111,110,
+     32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 32, 40,108,
+    105,110,101, 44, 32, 46, 46, 46, 41, 10, 32,108,111, 99, 97,
+    108, 32,105, 61, 49, 10, 32,119,104,105,108,101, 32,105, 60,
+     61, 97,114,103, 46,110, 32,100,111, 10, 32, 32,105,102, 32,
+     95, 99,111,110,116, 32, 97,110,100, 32,110,111,116, 32,115,
+    116,114,102,105,110,100, 40, 95, 99,111,110,116, 44, 39, 91,
+     37, 40, 44, 34, 93, 39, 41, 32, 97,110,100, 10, 32, 32, 32,
+     32, 32,115,116,114,102,105,110,100, 40, 97,114,103, 91,105,
+     93, 44, 34, 94, 91, 37, 97, 95,126, 93, 34, 41, 32,116,104,
+    101,110, 10,  9, 32, 32, 32, 32,108,105,110,101, 32, 61, 32,
+    108,105,110,101, 32, 46, 46, 32, 39, 32, 39, 10, 32, 32,101,
+    110,100, 10, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,
+    101, 32, 46, 46, 32, 97,114,103, 91,105, 93, 10, 32, 32,105,
+    102, 32, 97,114,103, 91,105, 93, 32,126, 61, 32, 39, 39, 32,
+    116,104,101,110, 10, 32, 32, 32, 95, 99,111,110,116, 32, 61,
+     32,115,116,114,115,117, 98, 40, 97,114,103, 91,105, 93, 44,
+     45, 49, 44, 45, 49, 41, 10, 32, 32,101,110,100, 10, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,105,
+    102, 32,115,116,114,102,105,110,100, 40, 97,114,103, 91, 97,
+    114,103, 46,110, 93, 44, 34, 91, 37, 47, 37, 41, 37, 59, 37,
+    123, 37,125, 93, 36, 34, 41, 32,116,104,101,110, 10, 32, 32,
+     95, 99,111,110,116, 61,110,105,108, 32,108,105,110,101, 32,
+     61, 32,108,105,110,101, 32, 46, 46, 32, 39, 92,110, 39, 10,
+     32,101,110,100, 10,  9,114,101,116,117,114,110, 32,108,105,
+    110,101, 10,101,110,100, 10, 10, 45, 45, 32,111,117,116,112,
+    117,116, 32,108,105,110,101, 10,102,117,110, 99,116,105,111,
+    110, 32,111,117,116,112,117,116, 32, 40, 46, 46, 46, 41, 10,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,
+    108,101, 32,105, 60, 61, 97,114,103, 46,110, 32,100,111, 10,
+     32, 32,105,102, 32, 95, 99,111,110,116, 32, 97,110,100, 32,
+    110,111,116, 32,115,116,114,102,105,110,100, 40, 95, 99,111,
+    110,116, 44, 39, 91, 37, 40, 44, 34, 93, 39, 41, 32, 97,110,
+    100, 10, 32, 32, 32, 32, 32,115,116,114,102,105,110,100, 40,
+     97,114,103, 91,105, 93, 44, 34, 94, 91, 37, 97, 95,126, 93,
+     34, 41, 32,116,104,101,110, 10,  9, 32, 32, 32, 32,119,114,
+    105,116,101, 40, 39, 32, 39, 41, 10, 32, 32,101,110,100, 10,
+     32, 32,119,114,105,116,101, 40, 97,114,103, 91,105, 93, 41,
+     10, 32, 32,105,102, 32, 97,114,103, 91,105, 93, 32,126, 61,
+     32, 39, 39, 32,116,104,101,110, 10, 32, 32, 32, 95, 99,111,
+    110,116, 32, 61, 32,115,116,114,115,117, 98, 40, 97,114,103,
+     91,105, 93, 44, 45, 49, 44, 45, 49, 41, 10, 32, 32,101,110,
+    100, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,
+    100, 10, 32,105,102, 32,115,116,114,102,105,110,100, 40, 97,
+    114,103, 91, 97,114,103, 46,110, 93, 44, 34, 91, 37, 47, 37,
+     41, 37, 59, 37,123, 37,125, 93, 36, 34, 41, 32,116,104,101,
+    110, 10, 32, 32, 95, 99,111,110,116, 61,110,105,108, 32,119,
+    114,105,116,101, 40, 39, 92,110, 39, 41, 10, 32,101,110,100,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+    103,101,116, 95,112,114,111,112,101,114,116,121, 95,109,101,
+    116,104,111,100,115, 40,112,116,121,112,101, 44, 32,110, 97,
+    109,101, 41, 10, 10,  9,105,102, 32,103,101,116, 95,112,114,
+    111,112,101,114,116,121, 95,109,101,116,104,111,100,115, 95,
+    104,111,111,107, 32, 97,110,100, 32,103,101,116, 95,112,114,
+    111,112,101,114,116,121, 95,109,101,116,104,111,100,115, 95,
+    104,111,111,107, 40,112,116,121,112,101, 44,110, 97,109,101,
+     41, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110,
+     32,103,101,116, 95,112,114,111,112,101,114,116,121, 95,109,
+    101,116,104,111,100,115, 95,104,111,111,107, 40,112,116,121,
+    112,101, 44, 32,110, 97,109,101, 41, 10,  9,101,110,100, 10,
+     10,  9,105,102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,
+    100,101,102, 97,117,108,116, 34, 32,116,104,101,110, 32, 45,
+     45, 32,103,101,116, 95,110, 97,109,101, 44, 32,115,101,116,
+     95,110, 97,109,101, 10,  9,  9,114,101,116,117,114,110, 32,
+     34,103,101,116, 95, 34, 46, 46,110, 97,109,101, 44, 32, 34,
+    115,101,116, 95, 34, 46, 46,110, 97,109,101, 10,  9,101,110,
+    100, 10, 10,  9,105,102, 32,112,116,121,112,101, 32, 61, 61,
+     32, 34,113,116, 34, 32,116,104,101,110, 32, 45, 45, 32,110,
+     97,109,101, 44, 32,115,101,116, 78, 97,109,101, 10,  9,  9,
+    114,101,116,117,114,110, 32,110, 97,109,101, 44, 32, 34,115,
+    101,116, 34, 46, 46,115,116,114,105,110,103, 46,117,112,112,
+    101,114, 40,115,116,114,105,110,103, 46,115,117, 98, 40,110,
+     97,109,101, 44, 32, 49, 44, 32, 49, 41, 41, 46, 46,115,116,
+    114,105,110,103, 46,115,117, 98, 40,110, 97,109,101, 44, 32,
+     50, 44, 32, 45, 49, 41, 10,  9,101,110,100, 10, 10,  9,105,
+    102, 32,112,116,121,112,101, 32, 61, 61, 32, 34,111,118,101,
+    114,108,111, 97,100, 34, 32,116,104,101,110, 32, 45, 45, 32,
+    110, 97,109,101, 44, 32,110, 97,109,101, 10,  9,  9,114,101,
+    116,117,114,110, 32,110, 97,109,101, 44,110, 97,109,101, 10,
+      9,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,
+    105,108, 10,101,110,100, 10, 10, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 32,116,104,101, 32,104,111,111,
+    107,115, 10, 10, 45, 45, 32, 99, 97,108,108,101,100, 32,114,
+    105,103,104,116, 32, 97,102,116,101,114, 32,112,114,111, 99,
+    101,115,115,105,110,103, 32,116,104,101, 32, 36, 91,105, 99,
+    104,108, 93,102,105,108,101, 32,100,105,114,101, 99,116,105,
+    118,101,115, 44, 10, 45, 45, 32,114,105,103,104,116, 32, 98,
+    101,102,111,114,101, 32,112,114,111, 99,101,115,115,105,110,
+    103, 32, 97,110,121,116,104,105,110,103, 32,101,108,115,101,
+     10, 45, 45, 32,116, 97,107,101,115, 32,116,104,101, 32,112,
+     97, 99,107, 97,103,101, 32,111, 98,106,101, 99,116, 32, 97,
+    115, 32,116,104,101, 32,112, 97,114, 97,109,101,116,101,114,
+     10,102,117,110, 99,116,105,111,110, 32,112,114,101,112,114,
+    111, 99,101,115,115, 95,104,111,111,107, 40,112, 41, 10,  9,
+     45, 45, 32,112, 46, 99,111,100,101, 32,104, 97,115, 32, 97,
+    108,108, 32,116,104,101, 32,105,110,112,117,116, 32, 99,111,
+    100,101, 32,102,114,111,109, 32,116,104,101, 32,112,107,103,
+     10,101,110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,108,101,
+    100, 32,102,111,114, 32,101,118,101,114,121, 32, 36,105,102,
+    105,108,101, 32,100,105,114,101, 99,116,105,118,101, 10, 45,
+     45, 32,116, 97,107,101,115, 32, 97, 32,116, 97, 98,108,101,
+     32,119,105,116,104, 32, 97, 32,115,116,114,105,110,103, 32,
+     99, 97,108,108,101,100, 32, 39, 99,111,100,101, 39, 32,105,
+    110,115,105,100,101, 44, 32,116,104,101, 32,102,105,108,101,
+    110, 97,109,101, 44, 32, 97,110,100, 32, 97,110,121, 32,101,
+    120,116,114, 97, 32, 97,114,103,117,109,101,110,116,115, 10,
+     45, 45, 32,112, 97,115,115,101,100, 32,116,111, 32, 36,105,
+    102,105,108,101, 46, 32,110,111, 32,114,101,116,117,114,110,
+     32,118, 97,108,117,101, 10,102,117,110, 99,116,105,111,110,
+     32,105,110, 99,108,117,100,101, 95,102,105,108,101, 95,104,
+    111,111,107, 40,116, 44, 32,102,105,108,101,110, 97,109,101,
+     44, 32, 46, 46, 46, 41, 10, 10,101,110,100, 10, 10, 45, 45,
+     32, 99, 97,108,108,101,100, 32, 97,102,116,101,114, 32,112,
+    114,111, 99,101,115,115,105,110,103, 32, 97,110,121,116,104,
+    105,110,103, 32,116,104, 97,116, 39,115, 32,110,111,116, 32,
+     99,111,100,101, 32, 40,108,105,107,101, 32, 39, 36,114,101,
+    110, 97,109,105,110,103, 39, 44, 32, 99,111,109,109,101,110,
+    116,115, 44, 32,101,116, 99, 41, 10, 45, 45, 32, 97,110,100,
+     32,114,105,103,104,116, 32, 98,101,102,111,114,101, 32,112,
+     97,114,115,105,110,103, 32,116,104,101, 32, 97, 99,116,117,
+     97,108, 32, 99,111,100,101, 46, 10, 45, 45, 32,116, 97,107,
+    101,115, 32,116,104,101, 32, 80, 97, 99,107, 97,103,101, 32,
+    111, 98,106,101, 99,116, 32,119,105,116,104, 32, 97,108,108,
+     32,116,104,101, 32, 99,111,100,101, 32,111,110, 32,116,104,
+    101, 32, 39, 99,111,100,101, 39, 32,107,101,121, 46, 32,110,
+    111, 32,114,101,116,117,114,110, 32,118, 97,108,117,101, 10,
+    102,117,110, 99,116,105,111,110, 32,112,114,101,112, 97,114,
+    115,101, 95,104,111,111,107, 40,112, 97, 99,107, 97,103,101,
+     41, 10, 10,101,110,100, 10, 10, 10, 45, 45, 32, 99, 97,108,
+    108,101,100, 32, 97,102,116,101,114, 32,119,114,105,116,105,
+    110,103, 32, 97,108,108, 32,116,104,101, 32,111,117,116,112,
+    117,116, 46, 10, 45, 45, 32,116, 97,107,101,115, 32,116,104,
+    101, 32, 80, 97, 99,107, 97,103,101, 32,111, 98,106,101, 99,
+    116, 10,102,117,110, 99,116,105,111,110, 32,112,111,115,116,
+     95,111,117,116,112,117,116, 95,104,111,111,107, 40,112, 97,
+     99,107, 97,103,101, 41, 10, 10,101,110,100, 10, 10, 10, 45,
+     45, 32, 99, 97,108,108,101,100, 32,102,114,111,109, 32, 39,
+    103,101,116, 95,112,114,111,112,101,114,116,121, 95,109,101,
+    116,104,111,100,115, 39, 32,116,111, 32,103,101,116, 32,116,
+    104,101, 32,109,101,116,104,111,100,115, 32,116,111, 32,114,
+    101,116,114,105,101,118,101, 32, 97, 32,112,114,111,112,101,
+    114,116,121, 10, 45, 45, 32, 97, 99, 99,111,114,100,105,110,
+    103, 32,116,111, 32,105,116,115, 32,116,121,112,101, 10,102,
+    117,110, 99,116,105,111,110, 32,103,101,116, 95,112,114,111,
+    112,101,114,116,121, 95,109,101,116,104,111,100,115, 95,104,
+    111,111,107, 40,112,114,111,112,101,114,116,121, 95,116,121,
+    112,101, 44, 32,110, 97,109,101, 41, 10, 10,101,110,100, 10,
+     10, 45, 45, 32, 99, 97,108,108,101,100, 32,102,114,111,109,
+     32, 67,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     58,100,111,112, 97,114,115,101, 32,119,105,116,104, 32,116,
+    104,101, 32,115,116,114,105,110,103, 32, 98,101,105,110,103,
+     32,112, 97,114,115,101,100, 10, 45, 45, 32,114,101,116,117,
+    114,110, 32,110,105,108, 44, 32,111,114, 32, 97, 32,115,117,
+     98,115,116,114,105,110,103, 10,102,117,110, 99,116,105,111,
+    110, 32,112, 97,114,115,101,114, 95,104,111,111,107, 40,115,
+     41, 10, 10,  9,114,101,116,117,114,110, 32,110,105,108, 10,
+    101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/basic.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97, 98,115,116,114,
+     97, 99,116, 32,102,101, 97,116,117,114,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110, 32, 98,
+    121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,108,101,
+    115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47, 80, 85,
+     67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32, 49, 57,
+     57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10, 10, 45,
+     45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,
+    102,114,101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,
+    121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,
+    105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,111,114,
+     32,109,111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32,
+     84,104,101, 32,115,111,102,116,119, 97,114,101, 32,112,114,
+    111,118,105,100,101,100, 32,104,101,114,101,117,110,100,101,
+    114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,
+    105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10,
+     45, 45, 32,116,104,101, 32, 97,117,116,104,111,114, 32,104,
+     97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,105,111,
+    110, 32,116,111, 32,112,114,111,118,105,100,101, 32,109, 97,
+    105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,
+    111,114,116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45,
+     45, 32,101,110,104, 97,110, 99,101,109,101,110,116,115, 44,
+     32,111,114, 32,109,111,100,105,102,105, 99, 97,116,105,111,
+    110,115, 46, 10, 10, 10, 45, 45, 32, 70,101, 97,116,117,114,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,116,104,101, 32, 98, 97,115,101,
+     32, 99,108, 97,115,115, 32,111,102, 32, 97,108,108, 32,109,
+     97,112,112,101,100, 32,102,101, 97,116,117,114,101, 46, 10,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 32, 61, 32,
+    123, 10,125, 10, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 70,101, 97,116,117,114,101, 10, 10, 45, 45, 32,119,
+    114,105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,
+    100,101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 70,101, 97,116,117,114,101, 58,115,117,112, 99,111,
+    100,101, 32, 40, 41, 10,101,110,100, 10, 10, 45, 45, 32,111,
+    117,116,112,117,116, 32,116, 97,103, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 58,100,101, 99,108,116,121,112,101, 32, 40, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,114,
+     32,102,101, 97,116,117,114,101, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
+     58,114,101,103,105,115,116,101,114, 32, 40,112,114,101, 41,
+     10,101,110,100, 10, 10, 45, 45, 32,116,114, 97,110,115,108,
+     97,116,101, 32,118,101,114, 98, 97,116,105,109, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,
+    116,117,114,101, 58,112,114,101, 97,109, 98,108,101, 32, 40,
+     41, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,116, 32,105,115, 32, 97, 32,118, 97,114,
+    105, 97, 98,108,101, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,105,115,
+    118, 97,114,105, 97, 98,108,101, 32, 40, 41, 10, 32,114,101,
+    116,117,114,110, 32,102, 97,108,115,101, 10,101,110,100, 10,
+     10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,105,116,
+     32,114,101,113,117,105,114,101,115, 32, 99,111,108,108,101,
+     99,116,105,111,110, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 70,101, 97,116,117,114,101, 58,114,101,
+    113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,110,
+     32, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,102, 97,
+    108,115,101, 10,101,110,100, 10, 10, 45, 45, 32, 98,117,105,
+    108,100, 32,110, 97,109,101,115, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,114,101,
+     58, 98,117,105,108,100,110, 97,109,101,115, 32, 40, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,110, 97,109,101, 32, 97,
+    110,100, 32,115,101,108,102, 46,110, 97,109,101,126, 61, 39,
+     39, 32,116,104,101,110, 10, 32, 32,108,111, 99, 97,108, 32,
+    110, 32, 61, 32,115,112,108,105,116, 40,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 64, 39, 41, 10, 32, 32,115,101,108,
+    102, 46,110, 97,109,101, 32, 61, 32,110, 91, 49, 93, 10, 32,
+     32,105,102, 32,110,111,116, 32,110, 91, 50, 93, 32,116,104,
+    101,110, 10, 32, 32, 32,110, 91, 50, 93, 32, 61, 32, 97,112,
+    112,108,121,114,101,110, 97,109,105,110,103, 40,110, 91, 49,
+     93, 41, 10, 32, 32,101,110,100, 10, 32, 32,115,101,108,102,
+     46,108,110, 97,109,101, 32, 61, 32,110, 91, 50, 93, 32,111,
+    114, 32,103,115,117, 98, 40,110, 91, 49, 93, 44, 34, 37, 91,
+     46, 45, 37, 93, 34, 44, 34, 34, 41, 10, 32, 32,115,101,108,
+    102, 46,111,114,105,103,105,110, 97,108, 95,110, 97,109,101,
+     32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10, 32, 32,
+    115,101,108,102, 46,108,110, 97,109,101, 32, 61, 32, 99,108,
+    101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,115,101,
+    108,102, 46,108,110, 97,109,101, 41, 10, 32,101,110,100, 10,
+     32,105,102, 32,110,111,116, 32,115,101,108,102, 46,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 32,116,104,101,110,
+     10,  9, 32,115,101,108,102, 46,110, 97,109,101, 32, 61, 32,
+    103,101,116,111,110,108,121,110, 97,109,101,115,112, 97, 99,
+    101, 40, 41, 32, 46, 46, 32,115,101,108,102, 46,110, 97,109,
+    101, 10, 32,101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,
+    112, 97,114,101,110,116, 32, 61, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10, 32,
+    105,102, 32,112, 97,114,101,110,116, 32,116,104,101,110, 10,
+     32,  9,115,101,108,102, 46, 97, 99, 99,101,115,115, 32, 61,
+     32,112, 97,114,101,110,116, 46, 99,117,114,114, 95,109,101,
+    109, 98,101,114, 95, 97, 99, 99,101,115,115, 10, 32,101,108,
+    115,101, 10, 32,101,110,100, 10,101,110,100, 10, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,
+    116,117,114,101, 58, 99,104,101, 99,107, 95,112,117, 98,108,
+    105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 10, 10,  9,105,
+    102, 32,115,101,108,102, 46, 97, 99, 99,101,115,115, 32, 97,
+    110,100, 32,115,101,108,102, 46, 97, 99, 99,101,115,115, 32,
+    126, 61, 32, 48, 32,116,104,101,110, 10,  9,  9,114,101,116,
+    117,114,110, 32,102, 97,108,115,101, 10,  9,101,110,100, 10,
+     10,  9,108,111, 99, 97,108, 32,112, 97,114,101,110,116, 32,
+     61, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 46, 99,117,114,114, 10,  9,119,104,105,108,101, 32,112,
+     97,114,101,110,116, 32,100,111, 10,  9,  9,105,102, 32,112,
+     97,114,101,110,116, 46, 97, 99, 99,101,115,115, 32, 97,110,
+    100, 32,112, 97,114,101,110,116, 46, 97, 99, 99,101,115,115,
+     32,126, 61, 32, 48, 32,116,104,101,110, 10,  9,  9,  9,114,
+    101,116,117,114,110, 32,102, 97,108,115,101, 10,  9,  9,101,
+    110,100, 10,  9,  9,112, 97,114,101,110,116, 32, 61, 32,112,
+     97,114,101,110,116, 46,112,114,111,120, 10,  9,101,110,100,
+     10,  9,114,101,116,117,114,110, 32,116,114,117,101, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+    101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,116, 41,
+     10, 10,  9,114,101,116,117,114,110, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,116, 44, 32, 34, 91, 60, 62, 58,
+     44, 32, 37, 42, 93, 34, 44, 32, 34, 95, 34, 41, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    102,101, 97,116,117,114,101, 32,105,115, 32,105,110,115,105,
+    100,101, 32, 97, 32, 99,111,110,116, 97,105,110,101,114, 32,
+    100,101,102,105,110,105,116,105,111,110, 10, 45, 45, 32,105,
+    116, 32,114,101,116,117,114,110,115, 32,116,104,101, 32, 99,
+    111,110,116, 97,105,110,101,114, 32, 99,108, 97,115,115, 32,
+    110, 97,109,101, 32,111,114, 32,110,105,108, 46, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,
+    116,117,114,101, 58,105,110, 99,111,110,116, 97,105,110,101,
+    114, 32, 40,119,104,105, 99,104, 41, 10, 32,105,102, 32,115,
+    101,108,102, 46,112, 97,114,101,110,116, 32,116,104,101,110,
+     10, 32, 32,108,111, 99, 97,108, 32,112, 97,114,101,110,116,
+     32, 61, 32,115,101,108,102, 46,112, 97,114,101,110,116, 10,
+     32, 32,119,104,105,108,101, 32,112, 97,114,101,110,116, 32,
+    100,111, 10, 32, 32, 32,105,102, 32,112, 97,114,101,110,116,
+     46, 99,108, 97,115,115,116,121,112,101, 32, 61, 61, 32,119,
+    104,105, 99,104, 32,116,104,101,110, 10, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32,112, 97,114,101,110,116, 46,110, 97,
+    109,101, 10, 32, 32, 32,101,110,100, 10, 32, 32, 32,112, 97,
+    114,101,110,116, 32, 61, 32,112, 97,114,101,110,116, 46,112,
+     97,114,101,110,116, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 32,114,101,116,117,114,110, 32,110,105,108, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 70,101, 97,116,117,114,101, 58,105,110, 99,108,
+     97,115,115, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,
+    115,101,108,102, 58,105,110, 99,111,110,116, 97,105,110,101,
+    114, 40, 39, 99,108, 97,115,115, 39, 41, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+     70,101, 97,116,117,114,101, 58,105,110,109,111,100,117,108,
+    101, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,115,101,
+    108,102, 58,105,110, 99,111,110,116, 97,105,110,101,114, 40,
+     39,109,111,100,117,108,101, 39, 41, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 70,
+    101, 97,116,117,114,101, 58,105,110,110, 97,109,101,115,112,
+     97, 99,101, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,
+    115,101,108,102, 58,105,110, 99,111,110,116, 97,105,110,101,
+    114, 40, 39,110, 97,109,101,115,112, 97, 99,101, 39, 41, 10,
+    101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110, 32,
+     67, 32, 98,105,110,100,105,110,103, 32,102,117,110, 99,116,
+    105,111,110, 32,110, 97,109,101, 32, 98, 97,115,101,100, 32,
+    111,110, 32,110, 97,109,101, 10, 45, 45, 32,116,104,101, 32,
+     99,108,105,101,110,116, 32,115,112,101, 99,105,102,105,101,
+    115, 32, 97, 32,112,114,101,102,105,120, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 70,101, 97,116,117,
+    114,101, 58, 99,102,117,110, 99,110, 97,109,101, 32, 40,110,
+     41, 10, 10, 32,105,102, 32,115,101,108,102, 46,112, 97,114,
+    101,110,116, 32,116,104,101,110, 10, 32, 32,110, 32, 61, 32,
+    115,101,108,102, 46,112, 97,114,101,110,116, 58, 99,102,117,
+    110, 99,110, 97,109,101, 40,110, 41, 10, 32,101,110,100, 10,
+     10, 32, 32,110, 32, 61, 32,115,116,114,105,110,103, 46,103,
+    115,117, 98, 40,110, 46, 46, 39, 95, 39, 46, 46, 32, 40,115,
+    101,108,102, 46,108,110, 97,109,101, 32,111,114, 32,115,101,
+    108,102, 46,110, 97,109,101, 41, 44, 32, 34, 91, 60, 62, 58,
+     44, 32, 92, 46, 37, 42, 38, 93, 34, 44, 32, 34, 95, 34, 41,
+     10, 10, 32, 32,114,101,116,117,114,110, 32,110, 10,101,110,
+    100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/feature.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118,101,114, 98, 97,
+    116,105,109, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32,118,101,114, 98, 97,116,105,109, 46,108,117, 97,
+     44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48, 49, 47,
+     50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 54, 32, 99,101,108,
+    101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,
+    105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101,
+     32,115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32,
+     99, 97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,
+    101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,
+    105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,
+    115,111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,
+    101,100, 32,104,101,114,101,117,110,100,101,114, 32,105,115,
+     32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32,
+     98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,
+    104,101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,
+    111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111,
+     32,112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,
+    110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44,
+     32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,
+    104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,
+    109,111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10,
+     10, 10, 10, 45, 45, 32, 86,101,114, 98, 97,116,105,109, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32,108,105,110,101, 32,116,114, 97,
+    110,115,108, 97,116,101,100, 32,100,105,114,101, 99,116,101,
+    100, 32,116,111, 32,116,104,101, 32, 98,105,110,100,105,110,
+    103, 32,102,105,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,
+    102,111,108,108,111,119,105,110,103, 32,102,105,108,100,115,
+     32, 97,114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45,
+     32, 32, 32,108,105,110,101, 32, 61, 32,108,105,110,101, 32,
+    116,101,120,116, 10, 99,108, 97,115,115, 86,101,114, 98, 97,
+    116,105,109, 32, 61, 32,123, 10, 32,108,105,110,101, 32, 61,
+     32, 39, 39, 44, 10,  9, 99,111,110,100, 32, 61, 32,110,105,
+    108, 44, 32, 32, 32, 32, 45, 45, 32, 99,111,110,100,105,116,
+    105,111,110, 58, 32,119,104,101,114,101, 32,116,111, 32,103,
+    101,110,101,114, 97,116,101, 32,116,104,101, 32, 99,111,100,
+    101, 32, 40,115, 61,115,117,112,111,114,116, 44, 32,114, 61,
+    114,101,103,105,115,116,101,114, 41, 10,125, 10, 99,108, 97,
+    115,115, 86,101,114, 98, 97,116,105,109, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86,101,114, 98,
+     97,116,105,109, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,
+    109, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,112,114,101, 97,109, 98,108,101, 32,118,
+    101,114, 98, 97,116,105,109, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109,
+     58,112,114,101, 97,109, 98,108,101, 32, 40, 41, 10, 32,105,
+    102, 32,115,101,108,102, 46, 99,111,110,100, 32, 61, 61, 32,
+     39, 39, 32,116,104,101,110, 10, 32, 32,119,114,105,116,101,
+     40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,110,
+    100, 10,101,110,100, 10, 10, 45, 45, 32,115,117,112,112,111,
+    114,116, 32, 99,111,100,101, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,105,109,
+     58,115,117,112, 99,111,100,101, 32, 40, 41, 10, 32,105,102,
+     32,115,116,114,102,105,110,100, 40,115,101,108,102, 46, 99,
+    111,110,100, 44, 39,115, 39, 41, 32,116,104,101,110, 10, 32,
+     32,119,114,105,116,101, 40,115,101,108,102, 46,108,105,110,
+    101, 41, 10, 32, 32,119,114,105,116,101, 40, 39, 92,110, 39,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+    114,101,103,105,115,116,101,114, 32, 99,111,100,101, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 86,101,
+    114, 98, 97,116,105,109, 58,114,101,103,105,115,116,101,114,
+     32, 40,112,114,101, 41, 10, 32,105,102, 32,115,116,114,102,
+    105,110,100, 40,115,101,108,102, 46, 99,111,110,100, 44, 39,
+    114, 39, 41, 32,116,104,101,110, 10, 32, 32,119,114,105,116,
+    101, 40,115,101,108,102, 46,108,105,110,101, 41, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86,101,114, 98, 97,116,
+    105,109, 58,112,114,105,110,116, 32, 40,105,100,101,110,116,
+     44, 99,108,111,115,101, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 86,101,114, 98, 97,116,105,
+    109,123, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,108,105,110,101, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,108,105,110,101, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,
+    116, 46, 46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,
+    101,110,100, 10, 10, 10, 45, 45, 32, 73,110,116,101,114,110,
+     97,108, 32, 99,111,110,115,116,114,117, 99,116,111,114, 10,
+    102,117,110, 99,116,105,111,110, 32, 95, 86,101,114, 98, 97,
+    116,105,109, 32, 40,116, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 86,
+    101,114, 98, 97,116,105,109, 41, 10, 32, 97,112,112,101,110,
+    100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,117,
+     99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,115,
+     32, 97, 32,115,116,114,105,110,103, 32,114,101,112,114,101,
+    115,101,110,116,105,110,103, 32,116,104,101, 32,116,101,120,
+    116, 32,108,105,110,101, 10,102,117,110, 99,116,105,111,110,
+     32, 86,101,114, 98, 97,116,105,109, 32, 40,108, 44, 99,111,
+    110,100, 41, 10, 32,105,102, 32,115,116,114,115,117, 98, 40,
+    108, 44, 49, 44, 49, 41, 32, 61, 61, 32, 34, 39, 34, 32,116,
+    104,101,110, 10, 32, 32,108, 32, 61, 32,115,116,114,115,117,
+     98, 40,108, 44, 50, 41, 10, 32,101,108,115,101,105,102, 32,
+    115,116,114,115,117, 98, 40,108, 44, 49, 44, 49, 41, 32, 61,
+     61, 32, 39, 36, 39, 32,116,104,101,110, 10, 32, 32, 99,111,
+    110,100, 32, 61, 32, 39,115,114, 39, 32, 32, 32, 32, 32, 32,
+     32, 45, 45, 32,103,101,110,101,114, 97,116,101,115, 32,105,
+    110, 32, 98,111,116,104, 32,115,117,112,111,114,116, 32, 97,
+    110,100, 32,114,101,103,105,115,116,101,114, 32,102,114, 97,
+    103,109,101,110,116,115, 10, 32, 32,108, 32, 61, 32,115,116,
+    114,115,117, 98, 40,108, 44, 50, 41, 10, 32,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 95, 86,101,114, 98, 97,116,
+    105,109, 32,123, 10, 32, 32,108,105,110,101, 32, 61, 32,108,
+     44, 10, 32, 32, 99,111,110,100, 32, 61, 32, 99,111,110,100,
+     32,111,114, 32, 39, 39, 44, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/verbatim.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,100,101, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,
+    110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,
+    101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102,
+     47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108,
+     32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32, 36,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10, 45, 45, 32,103,108,111, 98,
+     97,108, 10, 99,111,100,101, 95,110, 32, 61, 32, 49, 10, 10,
+     45, 45, 32, 67,111,100,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 76,117,
+     97, 32, 99,111,100,101, 32,116,111, 32, 98,101, 32, 99,111,
+    109,112,105,108,101,100, 32, 97,110,100, 32,105,110, 99,108,
+    117,100,101,100, 10, 45, 45, 32,105,110, 32,116,104,101, 32,
+    105,110,105,116,105, 97,108,105,122, 97,116,105,111,110, 32,
+    102,117,110, 99,116,105,111,110, 46, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,101,
+    108,100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58,
+     10, 45, 45, 32, 32, 32,116,101,120,116, 32, 61, 32,116,101,
+    120,116, 32, 99,111,100,101, 10, 99,108, 97,115,115, 67,111,
+    100,101, 32, 61, 32,123, 10, 32,116,101,120,116, 32, 61, 32,
+     39, 39, 44, 10,125, 10, 99,108, 97,115,115, 67,111,100,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 67,111,100,101, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,100,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32, 99,111,100,101,
+     10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+     67,111,100,101, 58,114,101,103,105,115,116,101,114, 32, 40,
+    112,114,101, 41, 10, 32,112,114,101, 32, 61, 32,112,114,101,
+     32,111,114, 32, 39, 39, 10, 32, 45, 45, 32, 99,108,101, 97,
+    110, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,108,111, 99,
+     97,108, 32,115, 32, 61, 32, 99,108,101, 97,110, 40,115,101,
+    108,102, 46,116,101,120,116, 41, 10, 32,105,102, 32,110,111,
+    116, 32,115, 32,116,104,101,110, 10, 32, 32, 45, 45,112,114,
+    105,110,116, 40,115,101,108,102, 46,116,101,120,116, 41, 10,
+     32, 32,101,114,114,111,114, 40, 34,112, 97,114,115,101,114,
+     32,101,114,114,111,114, 32,105,110, 32,101,109, 98,101,100,
+    100,101,100, 32, 99,111,100,101, 34, 41, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,103,101,116, 32,102,105,114,115,116,
+     32,108,105,110,101, 10, 32,108,111, 99, 97,108, 32, 95, 44,
+     32, 95, 44, 32,102,105,114,115,116, 95,108,105,110,101, 61,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,
+    102, 46,116,101,120,116, 44, 32, 34, 94, 40, 91, 94, 92,110,
+     92,114, 93, 42, 41, 34, 41, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,102,105,114,115,116, 95,
+    108,105,110,101, 44, 32, 34, 94, 37,115, 42, 37, 45, 37, 45,
+     34, 41, 32,116,104,101,110, 10,  9, 32,105,102, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,102,105,114,115,116,
+     95,108,105,110,101, 44, 32, 34, 94, 37, 45, 37, 45, 35, 35,
+     34, 41, 32,116,104,101,110, 10,  9,  9,102,105,114,115,116,
+     95,108,105,110,101, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,102,105,114,115,116, 95,108,105,110,101,
+     44, 32, 34, 94, 37, 45, 37, 45, 35, 35, 34, 44, 32, 34, 34,
+     41, 10,  9,  9,105,102, 32,102,108, 97,103,115, 91, 39, 67,
+     39, 93, 32,116,104,101,110, 10,  9,  9,  9,115, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,115, 44, 32,
+     34, 94, 37, 45, 37, 45, 35, 35, 91, 94, 92,110, 92,114, 93,
+     42, 92,110, 34, 44, 32, 34, 34, 41, 10,  9,  9,101,110,100,
+     10,  9, 32,101,110,100, 10, 32,101,108,115,101, 10, 32,  9,
+    102,105,114,115,116, 95,108,105,110,101, 32, 61, 32, 34, 34,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,111,110,118,
+    101,114,116, 32,116,111, 32, 67, 10, 32,111,117,116,112,117,
+    116, 40, 39, 92,110, 39, 46, 46,112,114,101, 46, 46, 39,123,
+     32, 47, 42, 32, 98,101,103,105,110, 32,101,109, 98,101,100,
+    100,101,100, 32,108,117, 97, 32, 99,111,100,101, 32, 42, 47,
+     92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39, 32,105,110,116, 32,116,111,112, 32, 61, 32,
+    108,117, 97, 95,103,101,116,116,111,112, 40,116,111,108,117,
+     97, 95, 83, 41, 59, 39, 41, 10, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 39, 32,115,116, 97,116,105, 99, 32,
+    117,110,115,105,103,110,101,100, 32, 99,104, 97,114, 32, 66,
+     91, 93, 32, 61, 32,123, 92,110, 32, 32, 32, 39, 41, 10, 32,
+    108,111, 99, 97,108, 32,116, 61,123,110, 61, 48,125, 10, 32,
+    108,111, 99, 97,108, 32, 98, 32, 61, 32,103,115,117, 98, 40,
+    115, 44, 39, 40, 46, 41, 39, 44,102,117,110, 99,116,105,111,
+    110, 32, 40, 99, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,108,111, 99, 97,108, 32,101, 32, 61, 32, 39, 39, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32,116, 46,110, 61,116, 46,
+    110, 43, 49, 32,105,102, 32,116, 46,110, 61, 61, 49, 53, 32,
+    116,104,101,110, 32,116, 46,110, 61, 48, 32,101, 61, 39, 92,
+    110, 39, 46, 46,112,114,101, 46, 46, 39, 32, 32, 39, 32,101,
+    110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32,102,111,114,109, 97,116, 40, 39, 37, 51,
+    117, 44, 37,115, 39, 44,115,116,114, 98,121,116,101, 40, 99,
+     41, 44,101, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+    110,100, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 41, 10, 32,111,117,116,112,117,116, 40, 98, 46,
+     46,115,116,114, 98,121,116,101, 40, 34, 32, 34, 41, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 92,110, 39, 46, 46,112,
+    114,101, 46, 46, 39, 32,125, 59, 92,110, 39, 41, 10, 32,105,
+    102, 32,102,105,114,115,116, 95,108,105,110,101, 32, 97,110,
+    100, 32,102,105,114,115,116, 95,108,105,110,101, 32,126, 61,
+     32, 34, 34, 32,116,104,101,110, 10, 32,  9,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39, 32,116,111,108,117, 97,
+     95,100,111, 98,117,102,102,101,114, 40,116,111,108,117, 97,
+     95, 83, 44, 40, 99,104, 97,114, 42, 41, 66, 44,115,105,122,
+    101,111,102, 40, 66, 41, 44, 34,116,111,108,117, 97, 32,101,
+    109, 98,101,100,100,101,100, 58, 32, 39, 46, 46,102,105,114,
+    115,116, 95,108,105,110,101, 46, 46, 39, 34, 41, 59, 39, 41,
+     10, 32,101,108,115,101, 10, 32,  9,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 39, 32,116,111,108,117, 97, 95,100,
+    111, 98,117,102,102,101,114, 40,116,111,108,117, 97, 95, 83,
+     44, 40, 99,104, 97,114, 42, 41, 66, 44,115,105,122,101,111,
+    102, 40, 66, 41, 44, 34,116,111,108,117, 97, 58, 32,101,109,
+     98,101,100,100,101,100, 32, 76,117, 97, 32, 99,111,100,101,
+     32, 39, 46, 46, 99,111,100,101, 95,110, 46, 46, 39, 34, 41,
+     59, 39, 41, 10, 32,101,110,100, 10, 32,111,117,116,112,117,
+    116, 40,112,114,101, 46, 46, 39, 32,108,117, 97, 95,115,101,
+    116,116,111,112, 40,116,111,108,117, 97, 95, 83, 44, 32,116,
+    111,112, 41, 59, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+    112,114,101, 46, 46, 39,125, 32, 47, 42, 32,101,110,100, 32,
+    111,102, 32,101,109, 98,101,100,100,101,100, 32,108,117, 97,
+     32, 99,111,100,101, 32, 42, 47, 92,110, 92,110, 39, 41, 10,
+     32, 99,111,100,101, 95,110, 32, 61, 32, 99,111,100,101, 95,
+    110, 32, 43, 49, 10,101,110,100, 10, 10, 10, 45, 45, 32, 80,
+    114,105,110,116, 32,109,101,116,104,111,100, 10,102,117,110,
+     99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,100,101,
+     58,112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,
+    108,111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 67,111,100,101,123, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    116,101,120,116, 32, 61, 32, 91, 91, 34, 46, 46,115,101,108,
+    102, 46,116,101,120,116, 46, 46, 34, 93, 93, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+    125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
+     10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 67,111,100,101, 32, 40,116, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 67,111,100,101, 41, 10, 32, 97,112,
+    112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,
+    116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101,
+     99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,101,
+    112,114,101,115,101,110,116,105,110,103, 32,116,104,101, 32,
+     99,111,100,101, 32,116,101,120,116, 10,102,117,110, 99,116,
+    105,111,110, 32, 67,111,100,101, 32, 40,108, 41, 10, 32,114,
+    101,116,117,114,110, 32, 95, 67,111,100,101, 32,123, 10, 32,
+     32,116,101,120,116, 32, 61, 32,108, 10, 32,125, 10,101,110,
+    100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/code.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,116,121,112,101,100,
+    101,102, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 84,121,112,101,100,101,102, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97,
+     32,116,121,112,101, 32,115,121,110,111,110,121,109, 46, 10,
+     45, 45, 32, 84,104,101, 32, 39,100,101, 32,102, 97, 99,116,
+    111, 39, 32,116,121,112,101, 32,114,101,112,108, 97, 99,101,
+    115, 32,116,104,101, 32,116,121,112,101,100,101,102, 32, 98,
+    101,102,111,114,101, 32,116,104,101, 10, 45, 45, 32,114,101,
+    109, 97,105,110,105,110,103, 32, 99,111,100,101, 32,105,115,
+     32,112, 97,114,115,101,100, 46, 10, 45, 45, 32, 84,104,101,
+     32,102,111,108,108,111,119,105,110,103, 32,102,105,101,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,117,116,121,112,101, 32, 61, 32,116,121,
+    112,101,100,101,102, 32,110, 97,109,101, 10, 45, 45, 32, 32,
+     32,116,121,112,101, 32, 61, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,116,121,112,101, 10, 45, 45, 32, 32, 32,
+    109,111,100, 32, 61, 32,109,111,100,105,102,105,101,114,115,
+     32,116,111, 32,116,104,101, 32, 39,100,101, 32,102, 97, 99,
+    116,111, 39, 32,116,121,112,101, 10, 99,108, 97,115,115, 84,
+    121,112,101,100,101,102, 32, 61, 32,123, 10, 32,117,116,121,
+    112,101, 32, 61, 32, 39, 39, 44, 10, 32,109,111,100, 32, 61,
+     32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39, 39,
+     10,125, 10, 99,108, 97,115,115, 84,121,112,101,100,101,102,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 84,121,112,101,100,
+    101,102, 58,112,114,105,110,116, 32, 40,105,100,101,110,116,
+     44, 99,108,111,115,101, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 84,121,112,101,100,101,102,
+    123, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,
+    116, 46, 46, 34, 32,117,116,121,112,101, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,117,116,121,112,101, 46, 46, 34,
+     39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,109,111,100, 32, 61, 32, 39, 34, 46,
+     46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+     34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100,
+     10, 10, 45, 45, 32, 82,101,116,117,114,110, 32,105,116, 39,
+    115, 32,110,111,116, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 84,121,112,101,100,101,102, 58,105,115,118, 97,114,105,
+     97, 98,108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,102, 97,108,115,101, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 84,121,112,101,100,101,102, 32, 40,116, 41, 10, 32,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,
+    108, 97,115,115, 84,121,112,101,100,101,102, 41, 10, 32,116,
+     46,116,121,112,101, 32, 61, 32,114,101,115,111,108,118,101,
+     95,116,101,109,112,108, 97,116,101, 95,116,121,112,101,115,
+     40,116, 46,116,121,112,101, 41, 10, 32, 97,112,112,101,110,
+    100,116,121,112,101,100,101,102, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,111,110,101, 32,115,116,114,
+    105,110,103, 32,114,101,112,114,101,115,101,110,116,105,110,
+    103, 32,116,104,101, 32,116,121,112,101, 32,100,101,102,105,
+    110,105,116,105,111,110, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 84,121,112,101,100,101,102, 32, 40,115, 41, 10, 32,
+    105,102, 32,115,116,114,102,105,110,100, 40,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,115, 44, 32, 39, 37, 98, 60,
+     62, 39, 44, 32, 39, 39, 41, 44, 39, 91, 37, 42, 38, 93, 39,
+     41, 32,116,104,101,110, 10, 32, 32,116,111,108,117, 97, 95,
+    101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,105,100,
+     32,116,121,112,101,100,101,102, 58, 32,112,111,105,110,116,
+    101,114,115, 32, 40, 97,110,100, 32,114,101,102,101,114,101,
+    110, 99,101,115, 41, 32, 97,114,101, 32,110,111,116, 32,115,
+    117,112,112,111,114,116,101,100, 34, 41, 10, 32,101,110,100,
+     10, 32,108,111, 99, 97,108, 32,111, 32, 61, 32,123,109,111,
+    100, 32, 61, 32, 39, 39,125, 10, 32,105,102, 32,115,116,114,
+    105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 91, 60,
+     62, 93, 34, 41, 32,116,104,101,110, 10, 32,  9, 95, 44, 95,
+     44,111, 46,116,121,112,101, 44,111, 46,117,116,121,112,101,
+     32, 61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    115, 44, 32, 34, 94, 37,115, 42, 40, 91, 94, 60, 62, 93, 43,
+     37, 98, 60, 62, 91, 94, 37,115, 93, 42, 41, 37,115, 43, 40,
+     46, 45, 41, 36, 34, 41, 10, 32,101,108,115,101, 10, 32,  9,
+    108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116,
+     40,103,115,117, 98, 40,115, 44, 34, 37,115, 37,115, 42, 34,
+     44, 34, 32, 34, 41, 44, 34, 32, 34, 41, 10, 32,  9,111, 32,
+     61, 32,123, 10,  9, 32, 32,117,116,121,112,101, 32, 61, 32,
+    116, 91,116, 46,110, 93, 44, 10,  9, 32, 32,116,121,112,101,
+     32, 61, 32,116, 91,116, 46,110, 45, 49, 93, 44, 10,  9, 32,
+     32,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,116,
+     44, 49, 44,116, 46,110, 45, 50, 41, 44, 10,  9, 32,125, 10,
+     32,101,110,100, 10, 32,114,101,116,117,114,110, 32, 95, 84,
+    121,112,101,100,101,102, 40,111, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/typedef.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,111,110,116, 97,
+    105,110,101,114, 32, 97, 98,115,116,114, 97, 99,116, 32, 99,
+    108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,101,110,
+     32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32, 67,101,
+    108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,102, 47,
+     80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,108, 32,
+     49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,105,
+    115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,101,
+     59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,115,
+    116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100, 47,
+    111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10, 45,
+     45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101, 32,
+    112,114,111,118,105,100,101,100, 32,104,101,114,101,117,110,
+    100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34, 97,
+    115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,110,
+    100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,114,
+     32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,116,
+    105,111,110, 32,116,111, 32,112,114,111,118,105,100,101, 32,
+    109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,117,
+    112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115, 44,
+     10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,116,
+    115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,116,
+    105,111,110,115, 46, 10, 10, 45, 45, 32,116, 97, 98,108,101,
+     32,116,111, 32,115,116,111,114,101, 32,110, 97,109,101,115,
+    112, 97, 99,101,100, 32,116,121,112,101,100,101,102,115, 47,
+    101,110,117,109,115, 32,105,110, 32,103,108,111, 98, 97,108,
+     32,115, 99,111,112,101, 10,103,108,111, 98, 97,108, 95,116,
+    121,112,101,100,101,102,115, 32, 61, 32,123,125, 10,103,108,
+    111, 98, 97,108, 95,101,110,117,109,115, 32, 61, 32,123,125,
+     10, 10, 45, 45, 32, 67,111,110,116, 97,105,110,101,114, 32,
+     99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,115,
+    101,110,116,115, 32, 97, 32, 99,111,110,116, 97,105,110,101,
+    114, 32,111,102, 32,102,101, 97,116,117,114,101,115, 32,116,
+    111, 32, 98,101, 32, 98,111,117,110,100, 10, 45, 45, 32,116,
+    111, 32,108,117, 97, 46, 10, 99,108, 97,115,115, 67,111,110,
+    116, 97,105,110,101,114, 32, 61, 10,123, 10, 32, 99,117,114,
+    114, 32, 61, 32,110,105,108, 44, 10,125, 10, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 10,115,101,116,109,101,116, 97,116, 97,
+     98,108,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,
+    101, 41, 10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116,
+     97,103,115, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 67,111,110,116, 97,105,110,101,114, 58,100,101,
+     99,108,116,121,112,101, 32, 40, 41, 10, 32,112,117,115,104,
+     40,115,101,108,102, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,105, 93,
+     58,100,101, 99,108,116,121,112,101, 40, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 10, 45, 45, 32,119,114,
+    105,116,101, 32,115,117,112,112,111,114,116, 32, 99,111,100,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 58,115,117,112, 99,
+    111,100,101, 32, 40, 41, 10, 10,  9,105,102, 32,110,111,116,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,
+    101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,110,
+    100, 10, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,
+    108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32,
+     32,105,102, 32,115,101,108,102, 91,105, 93, 58, 99,104,101,
+     99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,101,115,
+    115, 40, 41, 32,116,104,101,110, 10, 32, 32,  9,115,101,108,
+    102, 91,105, 93, 58,115,117,112, 99,111,100,101, 40, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10, 32,112,111,112, 40, 41, 10,101,110,
+    100, 10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 58,104, 97,115,
+    118, 97,114, 32, 40, 41, 10, 32,108,111, 99, 97,108, 32,105,
+     61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,102, 91,
+    105, 93, 32,100,111, 10, 32, 32,105,102, 32,115,101,108,102,
+     91,105, 93, 58,105,115,118, 97,114,105, 97, 98,108,101, 40,
+     41, 32,116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,
+    110, 32, 49, 10,  9,  9,101,110,100, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32, 48, 10,101,110,100, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,116, 97,105,110,101,
+    114, 32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,
+    117,110, 99,116,105,111,110, 32, 95, 67,111,110,116, 97,105,
+    110,101,114, 32, 40,115,101,108,102, 41, 10, 32,115,101,116,
+    109,101,116, 97,116, 97, 98,108,101, 40,115,101,108,102, 44,
+     99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 41,
+     10, 32,115,101,108,102, 46,110, 32, 61, 32, 48, 10, 32,115,
+    101,108,102, 46,116,121,112,101,100,101,102,115, 32, 61, 32,
+    123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,115,101,
+    108,102, 46,117,115,101,114,116,121,112,101,115, 32, 61, 32,
+    123,125, 10, 32,115,101,108,102, 46,101,110,117,109,115, 32,
+     61, 32,123,116,111,108,117, 97, 95,110, 61, 48,125, 10, 32,
+    115,101,108,102, 46,108,110, 97,109,101,115, 32, 61, 32,123,
+    125, 10, 32,114,101,116,117,114,110, 32,115,101,108,102, 10,
+    101,110,100, 10, 10, 45, 45, 32,112,117,115,104, 32, 99,111,
+    110,116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,
+    110, 32,112,117,115,104, 32, 40,116, 41, 10,  9,116, 46,112,
+    114,111,120, 32, 61, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 10, 32, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,
+    114, 32, 61, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,112,
+    111,112, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32,112,111,112, 32, 40, 41, 10, 45,
+     45,112,114,105,110,116, 40, 34,110, 97,109,101, 34, 44, 99,
+    108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,
+    117,114,114, 46,110, 97,109,101, 41, 10, 45, 45,102,111,114,
+    101, 97, 99,104, 40, 99,108, 97,115,115, 67,111,110,116, 97,
+    105,110,101,114, 46, 99,117,114,114, 46,117,115,101,114,116,
+    121,112,101,115, 44,112,114,105,110,116, 41, 10, 45, 45,112,
+    114,105,110,116, 40, 34, 95, 95, 95, 95, 95, 95, 95, 95, 95,
+     95, 95, 95, 95, 95, 34, 41, 10, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 32, 61,
+     32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     46, 99,117,114,114, 46,112,114,111,120, 10,101,110,100, 10,
+     10, 45, 45, 32,103,101,116, 32, 99,117,114,114,101,110,116,
+     32,110, 97,109,101,115,112, 97, 99,101, 10,102,117,110, 99,
+    116,105,111,110, 32,103,101,116, 99,117,114,114,110, 97,109,
+    101,115,112, 97, 99,101, 32, 40, 41, 10,  9,114,101,116,117,
+    114,110, 32,103,101,116,110, 97,109,101,115,112, 97, 99,101,
+     40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     46, 99,117,114,114, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+     97,112,112,101,110,100, 32,116,111, 32, 99,117,114,114,101,
+    110,116, 32, 99,111,110,116, 97,105,110,101,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 97,112,112,101,110,100, 32, 40,
+    116, 41, 10, 32,114,101,116,117,114,110, 32, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     58, 97,112,112,101,110,100, 40,116, 41, 10,101,110,100, 10,
+     10, 45, 45, 32, 97,112,112,101,110,100, 32,116,121,112,101,
+    100,101,102, 32,116,111, 32, 99,117,114,114,101,110,116, 32,
+     99,111,110,116, 97,105,110,101,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 97,112,112,101,110,100,116,121,112,101,100,
+    101,102, 32, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,
+     99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46,
+     99,117,114,114, 58, 97,112,112,101,110,100,116,121,112,101,
+    100,101,102, 40,116, 41, 10,101,110,100, 10, 10, 45, 45, 32,
+     97,112,112,101,110,100, 32,117,115,101,114,116,121,112,101,
+     32,116,111, 32, 99,117,114,114,101,110,116, 32, 99,111,110,
+    116, 97,105,110,101,114, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100,117,115,101,114,116,121,112,101,
+     32, 40,116, 41, 10, 32,114,101,116,117,114,110, 32, 99,108,
+     97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,
+    114,114, 58, 97,112,112,101,110,100,117,115,101,114,116,121,
+    112,101, 40,116, 41, 10,101,110,100, 10, 10, 45, 45, 32, 97,
+    112,112,101,110,100, 32,101,110,117,109, 32,116,111, 32, 99,
+    117,114,114,101,110,116, 32, 99,111,110,116, 97,105,110,101,
+    114, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,101,
+    110,100,101,110,117,109, 32, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 46, 99,117,114,114, 58, 97,112,112,101,110,100,
+    101,110,117,109, 40,116, 41, 10,101,110,100, 10, 10, 45, 45,
+     32,115,117, 98,115,116,105,116,117,116,101, 32,116,121,112,
+    101,100,101,102, 10,102,117,110, 99,116,105,111,110, 32, 97,
+    112,112,108,121,116,121,112,101,100,101,102, 32, 40,109,111,
+    100, 44,116,121,112,101, 41, 10, 32,114,101,116,117,114,110,
+     32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     46, 99,117,114,114, 58, 97,112,112,108,121,116,121,112,101,
+    100,101,102, 40,109,111,100, 44,116,121,112,101, 41, 10,101,
+    110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102,
+     32,105,115, 32,116,121,112,101, 10,102,117,110, 99,116,105,
+    111,110, 32,102,105,110,100,116,121,112,101, 32, 40,116,121,
+    112,101, 41, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,
+     99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 46,
+     99,117,114,114, 58,102,105,110,100,116,121,112,101, 40,116,
+    121,112,101, 41, 10,  9,114,101,116,117,114,110, 32,116, 10,
+    101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,
+    102, 32,105,115, 32,116,121,112,101,100,101,102, 10,102,117,
+    110, 99,116,105,111,110, 32,105,115,116,121,112,101,100,101,
+    102, 32, 40,116,121,112,101, 41, 10, 32,114,101,116,117,114,
+    110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 46, 99,117,114,114, 58,105,115,116,121,112,101,100,101,
+    102, 40,116,121,112,101, 41, 10,101,110,100, 10, 10, 45, 45,
+     32,103,101,116, 32,102,117,108,108,116,121,112,101, 32, 40,
+    119,105,116,104, 32,110, 97,109,101,115,112, 97, 99,101, 41,
+     10,102,117,110, 99,116,105,111,110, 32,102,117,108,108,116,
+    121,112,101, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+     99,117,114,114, 32, 61, 32, 32, 99,108, 97,115,115, 67,111,
+    110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,  9,119,
+    104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,
+    105,102, 32, 99,117,114,114, 32,116,104,101,110, 10,  9,  9,
+     32,105,102, 32, 99,117,114,114, 46,116,121,112,101,100,101,
+    102,115, 32, 97,110,100, 32, 99,117,114,114, 46,116,121,112,
+    101,100,101,102,115, 91,116, 93, 32,116,104,101,110, 10,  9,
+      9, 32, 32,114,101,116,117,114,110, 32, 99,117,114,114, 46,
+    116,121,112,101,100,101,102,115, 91,116, 93, 10,  9,  9, 32,
+    101,108,115,101,105,102, 32, 99,117,114,114, 46,117,115,101,
+    114,116,121,112,101,115, 32, 97,110,100, 32, 99,117,114,114,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9, 32, 32,114,101,116,117,114,110, 32,
+     99,117,114,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,
+    101, 99,107,115, 32,105,102, 32,105,116, 32,114,101,113,117,
+    105,114,101,115, 32, 99,111,108,108,101, 99,116,105,111,110,
+     10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 58,114,101,113,117,105,
+    114,101, 99,111,108,108,101, 99,116,105,111,110, 32, 40,116,
+     41, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10,  9,108,111, 99, 97,
+    108, 32,114, 32, 61, 32,102, 97,108,115,101, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,114, 32, 61, 32,115,101,108,102, 91,105, 93, 58,114,
+    101,113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,
+    110, 40,116, 41, 32,111,114, 32,114, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10,  9,112,111,112, 40,
+     41, 10,  9,114,101,116,117,114,110, 32,114, 10,101,110,100,
+     10, 10, 10, 45, 45, 32,103,101,116, 32,110, 97,109,101,115,
+     97,112, 99,101, 10,102,117,110, 99,116,105,111,110, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 32, 40, 99,117,
+    114,114, 41, 10,  9,108,111, 99, 97,108, 32,110, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,119,104,105,
+    108,101, 32, 99,117,114,114, 32,100,111, 10,  9, 32,105,102,
+     32, 99,117,114,114, 32, 97,110,100, 10,  9,  9, 32, 32, 32,
+     40, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,114,
+     32, 99,117,114,114, 46, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101, 39,
+     41, 10,  9,  9,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 40, 99,117,114,114, 46,
+    111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,
+    114, 32, 99,117,114,114, 46,110, 97,109,101, 41, 32, 46, 46,
+     32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,101,115,112,
+     97, 99,101, 10,  9,  9, 32, 45, 45,110, 97,109,101,115,112,
+     97, 99,101, 32, 61, 32, 99,117,114,114, 46,110, 97,109,101,
+     32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,110, 97,109,
+    101,115,112, 97, 99,101, 10,  9,  9,101,110,100, 10,  9, 32,
+     99,117,114,114, 32, 61, 32, 99,117,114,114, 46,112,114,111,
+    120, 10,  9,101,110,100, 10,  9,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,101,110,100, 10, 10,
+     45, 45, 32,103,101,116, 32,110, 97,109,101,115,112, 97, 99,
+    101, 32, 40,111,110,108,121, 32,110, 97,109,101,115,112, 97,
+     99,101, 41, 10,102,117,110, 99,116,105,111,110, 32,103,101,
+    116,111,110,108,121,110, 97,109,101,115,112, 97, 99,101, 32,
+     40, 41, 10, 32,108,111, 99, 97,108, 32, 99,117,114,114, 32,
+     61, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 46, 99,117,114,114, 10,  9,108,111, 99, 97,108, 32,110,
+     97,109,101,115,112, 97, 99,101, 32, 61, 32, 39, 39, 10,  9,
+    119,104,105,108,101, 32, 99,117,114,114, 32,100,111, 10,  9,
+      9,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,
+    116,104,101,110, 10,  9,  9, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,108,115,
+    101,105,102, 32, 99,117,114,114, 46, 99,108, 97,115,115,116,
+    121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97,
+     99,101, 39, 32,116,104,101,110, 10,  9,  9, 32,110, 97,109,
+    101,115,112, 97, 99,101, 32, 61, 32, 99,117,114,114, 46,110,
+     97,109,101, 32, 46, 46, 32, 39, 58, 58, 39, 32, 46, 46, 32,
+    110, 97,109,101,115,112, 97, 99,101, 10,  9,  9,101,110,100,
+     10,  9, 32, 99,117,114,114, 32, 61, 32, 99,117,114,114, 46,
+    112,114,111,120, 10,  9,101,110,100, 10,  9,114,101,116,117,
+    114,110, 32,110, 97,109,101,115,112, 97, 99,101, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,115, 32,101,110,117,109, 10,102,117,110, 99,116,105,111,
+    110, 32,105,115,101,110,117,109, 32, 40,116,121,112,101, 41,
+     10, 32,114,101,116,117,114,110, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 58,105,
+    115,101,110,117,109, 40,116,121,112,101, 41, 10,101,110,100,
+     10, 10, 45, 45, 32, 97,112,112,101,110,100, 32,102,101, 97,
+    116,117,114,101, 32,116,111, 32, 99,111,110,116, 97,105,110,
+    101,114, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 58, 97,112,112,
+    101,110,100, 32, 40,116, 41, 10, 32,115,101,108,102, 46,110,
+     32, 61, 32,115,101,108,102, 46,110, 32, 43, 32, 49, 10, 32,
+    115,101,108,102, 91,115,101,108,102, 46,110, 93, 32, 61, 32,
+    116, 10, 32,116, 46,112, 97,114,101,110,116, 32, 61, 32,115,
+    101,108,102, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,116,121,112,101,100,101,102, 10,102,117,110,
+     99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 58, 97,112,112,101,110,100,116,121,112,
+    101,100,101,102, 32, 40,116, 41, 10, 32,108,111, 99, 97,108,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,
+    116,110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,
+    115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114,
+     41, 10, 32,115,101,108,102, 46,116,121,112,101,100,101,102,
+    115, 46,116,111,108,117, 97, 95,110, 32, 61, 32,115,101,108,
+    102, 46,116,121,112,101,100,101,102,115, 46,116,111,108,117,
+     97, 95,110, 32, 43, 32, 49, 10, 32,115,101,108,102, 46,116,
+    121,112,101,100,101,102,115, 91,115,101,108,102, 46,116,121,
+    112,101,100,101,102,115, 46,116,111,108,117, 97, 95,110, 93,
+     32, 61, 32,116, 10,  9,115,101,108,102, 46,116,121,112,101,
+    100,101,102,115, 91,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,110, 97,109,101,115,112, 97, 99,101, 32, 46, 46, 32,116,
+     46,117,116,121,112,101, 10,  9,103,108,111, 98, 97,108, 95,
+    116,121,112,101,100,101,102,115, 91,110, 97,109,101,115,112,
+     97, 99,101, 46, 46,116, 46,117,116,121,112,101, 93, 32, 61,
+     32,116, 10,  9,116, 46,102,116,121,112,101, 32, 61, 32,102,
+    105,110,100,116,121,112,101, 40,116, 46,116,121,112,101, 41,
+     32,111,114, 32,116, 46,116,121,112,101, 10,  9, 45, 45,112,
+    114,105,110,116, 40, 34, 97,112,112,101,110,100,105,110,103,
+     32,116,121,112,101,100,101,102, 32, 34, 46, 46,116, 46,117,
+    116,121,112,101, 46, 46, 34, 32, 97,115, 32, 34, 46, 46,110,
+     97,109,101,115,112, 97, 99,101, 46, 46,116, 46,117,116,121,
+    112,101, 46, 46, 34, 32,119,105,116,104, 32,102,116,121,112,
+    101, 32, 34, 46, 46,116, 46,102,116,121,112,101, 41, 10,  9,
+     97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,116,
+    121,112,101, 40,110, 97,109,101,115,112, 97, 99,101, 46, 46,
+    116, 46,117,116,121,112,101, 41, 10,  9,105,102, 32,116, 46,
+    102,116,121,112,101, 32, 97,110,100, 32,105,115,101,110,117,
+    109, 40,116, 46,102,116,121,112,101, 41, 32,116,104,101,110,
+     10, 10,  9,  9,103,108,111, 98, 97,108, 95,101,110,117,109,
+    115, 91,110, 97,109,101,115,112, 97, 99,101, 46, 46,116, 46,
+    117,116,121,112,101, 93, 32, 61, 32,116,114,117,101, 10,  9,
+    101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,
+    101,110,100, 32,117,115,101,114,116,121,112,101, 58, 32,114,
+    101,116,117,114,110, 32,102,117,108,108, 32,116,121,112,101,
+     10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 58, 97,112,112,101,110,
+    100,117,115,101,114,116,121,112,101, 32, 40,116, 41, 10,  9,
+    108,111, 99, 97,108, 32, 99,111,110,116, 97,105,110,101,114,
+     10,  9,105,102, 32,116, 32, 61, 61, 32, 40,115,101,108,102,
+     46,111,114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,
+    111,114, 32,115,101,108,102, 46,110, 97,109,101, 41, 32,116,
+    104,101,110, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 46,112,114,111,120, 10,  9,101,
+    108,115,101, 10,  9,  9, 99,111,110,116, 97,105,110,101,114,
+     32, 61, 32,115,101,108,102, 10,  9,101,110,100, 10,  9,108,
+    111, 99, 97,108, 32,102,116, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99,111,110,116, 97,105,110,
+    101,114, 41, 32, 46, 46, 32,116, 10,  9, 99,111,110,116, 97,
+    105,110,101,114, 46,117,115,101,114,116,121,112,101,115, 91,
+    116, 93, 32, 61, 32,102,116, 10,  9, 95,117,115,101,114,116,
+    121,112,101, 91,102,116, 93, 32, 61, 32,102,116, 10,  9,114,
+    101,116,117,114,110, 32,102,116, 10,101,110,100, 10, 10, 45,
+     45, 32, 97,112,112,101,110,100, 32,101,110,117,109, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,
+    110,116, 97,105,110,101,114, 58, 97,112,112,101,110,100,101,
+    110,117,109, 32, 40,116, 41, 10, 32,108,111, 99, 97,108, 32,
+    110, 97,109,101,115,112, 97, 99,101, 32, 61, 32,103,101,116,
+    110, 97,109,101,115,112, 97, 99,101, 40, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 41,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 46,116,111,
+    108,117, 97, 95,110, 32, 61, 32,115,101,108,102, 46,101,110,
+    117,109,115, 46,116,111,108,117, 97, 95,110, 32, 43, 32, 49,
+     10, 32,115,101,108,102, 46,101,110,117,109,115, 91,115,101,
+    108,102, 46,101,110,117,109,115, 46,116,111,108,117, 97, 95,
+    110, 93, 32, 61, 32,116, 10,  9,103,108,111, 98, 97,108, 95,
+    101,110,117,109,115, 91,110, 97,109,101,115,112, 97, 99,101,
+     46, 46,116, 46,110, 97,109,101, 93, 32, 61, 32,116, 10,101,
+    110,100, 10, 10, 45, 45, 32,100,101,116,101,114,109,105,110,
+    101, 32,108,117, 97, 32,102,117,110, 99,116,105,111,110, 32,
+    110, 97,109,101, 32,111,118,101,114,108,111, 97,100, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,
+    110,116, 97,105,110,101,114, 58,111,118,101,114,108,111, 97,
+    100, 32, 40,108,110, 97,109,101, 41, 10, 32,105,102, 32,110,
+    111,116, 32,115,101,108,102, 46,108,110, 97,109,101,115, 91,
+    108,110, 97,109,101, 93, 32,116,104,101,110, 10, 32, 32,115,
+    101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,109,
+    101, 93, 32, 61, 32, 48, 10, 32,101,108,115,101, 10, 32, 32,
+    115,101,108,102, 46,108,110, 97,109,101,115, 91,108,110, 97,
+    109,101, 93, 32, 61, 32,115,101,108,102, 46,108,110, 97,109,
+    101,115, 91,108,110, 97,109,101, 93, 32, 43, 32, 49, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,102,111,114,
+    109, 97,116, 40, 34, 37, 48, 50,100, 34, 44,115,101,108,102,
+     46,108,110, 97,109,101,115, 91,108,110, 97,109,101, 93, 41,
+     10,101,110,100, 10, 10, 45, 45, 32, 97,112,112,108,105,101,
+    115, 32,116,121,112,101,100,101,102, 58, 32,114,101,116,117,
+    114,110,115, 32,116,104,101, 32, 39,116,104,101, 32,102, 97,
+     99,116,111, 39, 32,109,111,100,105,102,105,101,114, 32, 97,
+    110,100, 32,116,121,112,101, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,
+    114, 58, 97,112,112,108,121,116,121,112,101,100,101,102, 32,
+     40,109,111,100, 44,116,121,112,101, 41, 10,  9,105,102, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 32,116,104,101,110, 10,  9,  9, 45,
+     45,112,114,105,110,116, 40, 34,102,111,117,110,100, 32,116,
+    121,112,101,100,101,102, 32, 34, 46, 46,103,108,111, 98, 97,
+    108, 95,116,121,112,101,100,101,102,115, 91,116,121,112,101,
+     93, 46,116,121,112,101, 41, 10,  9,  9,108,111, 99, 97,108,
+     32,109,111,100, 49, 44, 32,116,121,112,101, 49, 32, 61, 32,
+    103,108,111, 98, 97,108, 95,116,121,112,101,100,101,102,115,
+     91,116,121,112,101, 93, 46,109,111,100, 44, 32,103,108,111,
+     98, 97,108, 95,116,121,112,101,100,101,102,115, 91,116,121,
+    112,101, 93, 46,102,116,121,112,101, 10,  9,  9,108,111, 99,
+     97,108, 32,109,111,100, 50, 44, 32,116,121,112,101, 50, 32,
+     61, 32, 97,112,112,108,121,116,121,112,101,100,101,102, 40,
+    109,111,100, 46, 46, 34, 32, 34, 46, 46,109,111,100, 49, 44,
+     32,116,121,112,101, 49, 41, 10,  9,  9, 45, 45,114,101,116,
+    117,114,110, 32,109,111,100, 50, 32, 46, 46, 32, 39, 32, 39,
+     32, 46, 46, 32,109,111,100, 49, 44, 32,116,121,112,101, 50,
+     10,  9,  9,114,101,116,117,114,110, 32,109,111,100, 50, 44,
+     32,116,121,112,101, 50, 10,  9,101,110,100, 10,  9,100,111,
+     32,114,101,116,117,114,110, 32,109,111,100, 44,116,121,112,
+    101, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,116,121,112,101,100,101,102, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+    101,114, 58,105,115,116,121,112,101,100,101,102, 32, 40,116,
+    121,112,101, 41, 10, 32,108,111, 99, 97,108, 32,101,110,118,
+     32, 61, 32,115,101,108,102, 10, 32,119,104,105,108,101, 32,
+    101,110,118, 32,100,111, 10, 32, 32,105,102, 32,101,110,118,
+     46,116,121,112,101,100,101,102,115, 32,116,104,101,110, 10,
+     32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+     32,119,104,105,108,101, 32,101,110,118, 46,116,121,112,101,
+    100,101,102,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,
+    105,102, 32,101,110,118, 46,116,121,112,101,100,101,102,115,
+     91,105, 93, 46,117,116,121,112,101, 32, 61, 61, 32,116,121,
+    112,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,121,112,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,110,105,108,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+    102,105,110,100, 95,101,110,117,109, 95,118, 97,114, 40,118,
+     97,114, 41, 10, 10,  9,105,102, 32,116,111,110,117,109, 98,
+    101,114, 40,118, 97,114, 41, 32,116,104,101,110, 32,114,101,
+    116,117,114,110, 32,118, 97,114, 32,101,110,100, 10, 10,  9,
+    108,111, 99, 97,108, 32, 99, 32, 61, 32, 99,108, 97,115,115,
+     67,111,110,116, 97,105,110,101,114, 46, 99,117,114,114, 10,
+      9,119,104,105,108,101, 32, 99, 32,100,111, 10,  9,  9,108,
+    111, 99, 97,108, 32,110,115, 32, 61, 32,103,101,116,110, 97,
+    109,101,115,112, 97, 99,101, 40, 99, 41, 10,  9,  9,102,111,
+    114, 32,107, 44,118, 32,105,110, 32,112, 97,105,114,115, 40,
+     95,103,108,111, 98, 97,108, 95,101,110,117,109,115, 41, 32,
+    100,111, 10,  9,  9,  9,105,102, 32,109, 97,116, 99,104, 95,
+    116,121,112,101, 40,118, 97,114, 44, 32,118, 44, 32,110,115,
+     41, 32,116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,
+    114,110, 32,118, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,
+    110,100, 10,  9,  9,105,102, 32, 99, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 99, 46, 98, 97,115,101, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9, 99, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+     99, 58,102,105,110,100,116,121,112,101, 40, 99, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+     99, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,118, 97,
+    114, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101, 99,107,
+     32,105,102, 32,105,115, 32, 97, 32,114,101,103,105,115,116,
+    101,114,101,100, 32,116,121,112,101, 58, 32,114,101,116,117,
+    114,110, 32,102,117,108,108, 32,116,121,112,101, 32,111,114,
+     32,110,105,108, 10,102,117,110, 99,116,105,111,110, 32, 99,
+    108, 97,115,115, 67,111,110,116, 97,105,110,101,114, 58,102,
+    105,110,100,116,121,112,101, 32, 40,116, 41, 10, 10,  9,116,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 44, 32, 34, 61, 46, 42, 34, 44, 32, 34, 34, 41, 10,  9,
+    105,102, 32, 95, 98, 97,115,105, 99, 91,116, 93, 32,116,104,
+    101,110, 10,  9, 32,114,101,116,117,114,110, 32,116, 10,  9,
+    101,110,100, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44, 95,
+     44,101,109, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,116, 44, 32, 34, 40, 91, 38, 37, 42, 93, 41, 37,
+    115, 42, 36, 34, 41, 10,  9,116, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,116, 44, 32, 34, 37,115, 42,
+     40, 91, 38, 37, 42, 93, 41, 37,115, 42, 36, 34, 44, 32, 34,
+     34, 41, 10,  9,112, 32, 61, 32,115,101,108,102, 10,  9,119,
+    104,105,108,101, 32,112, 32, 97,110,100, 32,116,121,112,101,
+     40,112, 41, 61, 61, 39,116, 97, 98,108,101, 39, 32,100,111,
+     10,  9,  9,108,111, 99, 97,108, 32,115,116, 32, 61, 32,103,
+    101,116,110, 97,109,101,115,112, 97, 99,101, 40,112, 41, 10,
+     10,  9,  9,102,111,114, 32,105, 61, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 46,110, 44, 49, 44, 45, 49, 32,
+    100,111, 32, 45, 45, 32,105,110, 32,114,101,118,101,114,115,
+    101, 32,111,114,100,101,114, 10, 10,  9,  9,  9,105,102, 32,
+    109, 97,116, 99,104, 95,116,121,112,101, 40,116, 44, 32, 95,
+    103,108,111, 98, 97,108, 95,116,121,112,101,115, 91,105, 93,
+     44, 32,115,116, 41, 32,116,104,101,110, 10,  9,  9,  9,  9,
+    114,101,116,117,114,110, 32, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101,115, 91,105, 93, 46, 46, 40,101,109, 32,111,
+    114, 32, 34, 34, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+    101,110,100, 10,  9,  9,105,102, 32,112, 46, 98, 97,115,101,
+     32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126, 61, 32,
+     39, 39, 32, 97,110,100, 32,112, 46, 98, 97,115,101, 32,126,
+     61, 32,116, 32,116,104,101,110, 10,  9,  9,  9, 45, 45,112,
+    114,105,110,116, 40, 34,116,121,112,101, 32,105,115, 32, 34,
+     46, 46,116, 46, 46, 34, 44, 32,112, 32,105,115, 32, 34, 46,
+     46,112, 46, 98, 97,115,101, 46, 46, 34, 32,115,101,108,102,
+     46,116,121,112,101, 32,105,115, 32, 34, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 34, 32,115,101,108,102, 46,
+    110, 97,109,101, 32,105,115, 32, 34, 46, 46,115,101,108,102,
+     46,110, 97,109,101, 41, 10,  9,  9,  9,112, 32, 61, 32, 95,
+    103,108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,
+    112, 58,102,105,110,100,116,121,112,101, 40,112, 46, 98, 97,
+    115,101, 41, 93, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,
+    112, 32, 61, 32,110,105,108, 10,  9,  9,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,110,105,
+    108, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32, 97,112,112,101,110,100, 95,103,108,111, 98, 97,108, 95,
+    116,121,112,101, 40,116, 44, 32, 99,108, 97,115,115, 41, 10,
+      9, 95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 46,
+    110, 32, 61, 32, 95,103,108,111, 98, 97,108, 95,116,121,112,
+    101,115, 46,110, 32, 43, 49, 10,  9, 95,103,108,111, 98, 97,
+    108, 95,116,121,112,101,115, 91, 95,103,108,111, 98, 97,108,
+     95,116,121,112,101,115, 46,110, 93, 32, 61, 32,116, 10,  9,
+     95,103,108,111, 98, 97,108, 95,116,121,112,101,115, 95,104,
+     97,115,104, 91,116, 93, 32, 61, 32, 49, 10,  9,105,102, 32,
+     99,108, 97,115,115, 32,116,104,101,110, 32, 97,112,112,101,
+    110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,116,
+     44, 32, 99,108, 97,115,115, 41, 32,101,110,100, 10,101,110,
+    100, 10, 10,102,117,110, 99,116,105,111,110, 32, 97,112,112,
+    101,110,100, 95, 99,108, 97,115,115, 95,116,121,112,101, 40,
+    116, 44, 99,108, 97,115,115, 41, 10,  9,105,102, 32, 95,103,
+    108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116,
+     93, 32,116,104,101,110, 10,  9,  9, 99,108, 97,115,115, 46,
+    102,108, 97,103,115, 32, 61, 32, 95,103,108,111, 98, 97,108,
+     95, 99,108, 97,115,115,101,115, 91,116, 93, 46,102,108, 97,
+    103,115, 10,  9,  9, 99,108, 97,115,115, 46,108,110, 97,109,
+    101,115, 32, 61, 32, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46,108,110, 97,109,101,115,
+     10,  9,  9,105,102, 32, 95,103,108,111, 98, 97,108, 95, 99,
+    108, 97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,
+     97,110,100, 32, 40, 95,103,108,111, 98, 97,108, 95, 99,108,
+     97,115,115,101,115, 91,116, 93, 46, 98, 97,115,101, 32,126,
+     61, 32, 39, 39, 41, 32,116,104,101,110, 10,  9,  9,  9, 99,
+    108, 97,115,115, 46, 98, 97,115,101, 32, 61, 32, 95,103,108,
+    111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,116, 93,
+     46, 98, 97,115,101, 32,111,114, 32, 99,108, 97,115,115, 46,
+     98, 97,115,101, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10,  9, 95,103,108,111, 98, 97,108, 95, 99,108, 97,115,115,
+    101,115, 91,116, 93, 32, 61, 32, 99,108, 97,115,115, 10,  9,
+     99,108, 97,115,115, 46,102,108, 97,103,115, 32, 61, 32, 99,
+    108, 97,115,115, 46,102,108, 97,103,115, 32,111,114, 32,123,
+    125, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,109, 97,116, 99,104, 95,116,121,112,101, 40, 99,104,105,
+    108,100,116,121,112,101, 44, 32,114,101,103,116,121,112,101,
+     44, 32,115,116, 41, 10, 45, 45,112,114,105,110,116, 40, 34,
+    102,105,110,100,116,121,112,101, 32, 34, 46, 46, 99,104,105,
+    108,100,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,114,
+    101,103,116,121,112,101, 46, 46, 34, 44, 32, 34, 46, 46,115,
+    116, 41, 10,  9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40,114,101,
+    103,116,121,112,101, 44, 32, 99,104,105,108,100,116,121,112,
+    101, 44, 32, 45,115,116,114,105,110,103, 46,108,101,110, 40,
+     99,104,105,108,100,116,121,112,101, 41, 44, 32,116,114,117,
+    101, 41, 10,  9,105,102, 32, 98, 32,116,104,101,110, 10, 10,
+      9,  9,105,102, 32,101, 32, 61, 61, 32,115,116,114,105,110,
+    103, 46,108,101,110, 40,114,101,103,116,121,112,101, 41, 32,
+     97,110,100, 10,  9,  9,  9,  9, 40, 98, 32, 61, 61, 32, 49,
+     32,111,114, 32, 40,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 98, 45, 49, 44, 32,
+     98, 45, 49, 41, 32, 61, 61, 32, 39, 58, 39, 32, 97,110,100,
+     10,  9,  9,  9,  9,115,116,114,105,110,103, 46,115,117, 98,
+     40,114,101,103,116,121,112,101, 44, 32, 49, 44, 32, 98, 45,
+     49, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,115,117,
+     98, 40,115,116, 44, 32, 49, 44, 32, 98, 45, 49, 41, 41, 41,
+     32,116,104,101,110, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,114,101,116,117,114,110, 32,102, 97,108,115,
+    101, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32,102,105,110,100,116,121,112,101, 95,111,110, 95, 99,104,
+    105,108,100,115, 40,115,101,108,102, 44, 32,116, 41, 10, 10,
+      9,108,111, 99, 97,108, 32,116, 99,104,105,108,100, 10,  9,
+    105,102, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39, 32,111,
+    114, 32,115,101,108,102, 46, 99,108, 97,115,115,116,121,112,
+    101, 32, 61, 61, 32, 39,110, 97,109,101,115,112, 97, 99,101,
+     39, 32,116,104,101,110, 10,  9,  9,102,111,114, 32,107, 44,
+    118, 32,105,110, 32,105,112, 97,105,114,115, 40,115,101,108,
+    102, 41, 32,100,111, 10,  9,  9,  9,105,102, 32,118, 46, 99,
+    108, 97,115,115,116,121,112,101, 32, 61, 61, 32, 39, 99,108,
+     97,115,115, 39, 32,111,114, 32,118, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 32,116,104,101,110, 10,  9,  9,  9,  9,105,
+    102, 32,118, 46,116,121,112,101,100,101,102,115, 32, 97,110,
+    100, 32,118, 46,116,121,112,101,100,101,102,115, 91,116, 93,
+     32,116,104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,
+    114,110, 32,118, 46,116,121,112,101,100,101,102,115, 91,116,
+     93, 10,  9,  9,  9,  9,101,108,115,101,105,102, 32,118, 46,
+    117,115,101,114,116,121,112,101,115, 32, 97,110,100, 32,118,
+     46,117,115,101,114,116,121,112,101,115, 91,116, 93, 32,116,
+    104,101,110, 10,  9,  9,  9,  9, 32,114,101,116,117,114,110,
+     32,118, 46,117,115,101,114,116,121,112,101,115, 91,116, 93,
+     10,  9,  9,  9,  9,101,110,100, 10,  9,  9,  9,  9,116, 99,
+    104,105,108,100, 32, 61, 32,102,105,110,100,116,121,112,101,
+     95,111,110, 95, 99,104,105,108,100,115, 40,118, 44, 32,116,
+     41, 10,  9,  9,  9,  9,105,102, 32,116, 99,104,105,108,100,
+     32,116,104,101,110, 32,114,101,116,117,114,110, 32,116, 99,
+    104,105,108,100, 32,101,110,100, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,101,110,100, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32,110,105,108, 10, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 58,105,115,101,110,117,109,
+     32, 40,116,121,112,101, 41, 10, 32,105,102, 32,103,108,111,
+     98, 97,108, 95,101,110,117,109,115, 91,116,121,112,101, 93,
+     32,116,104,101,110, 10,  9,114,101,116,117,114,110, 32,116,
+    121,112,101, 10, 32,101,108,115,101, 10, 32,  9,114,101,116,
+    117,114,110, 32,102, 97,108,115,101, 10, 32,101,110,100, 10,
+     10, 32,108,111, 99, 97,108, 32, 98, 97,115,101,116,121,112,
+    101, 32, 61, 32,103,115,117, 98, 40,116,121,112,101, 44, 34,
+     94, 46, 42, 58, 58, 34, 44, 34, 34, 41, 10, 32,108,111, 99,
+     97,108, 32,101,110,118, 32, 61, 32,115,101,108,102, 10, 32,
+    119,104,105,108,101, 32,101,110,118, 32,100,111, 10, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 32,116,104,
+    101,110, 10, 32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49,
+     10, 32, 32, 32,119,104,105,108,101, 32,101,110,118, 46,101,
+    110,117,109,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,
+    105,102, 32,101,110,118, 46,101,110,117,109,115, 91,105, 93,
+     46,110, 97,109,101, 32, 61, 61, 32, 98, 97,115,101,116,121,
+    112,101, 32,116,104,101,110, 10, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32,116,114,117,101, 10, 32,
+     32, 32, 32, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32, 32,
+     32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32,101,110,100, 10, 32, 32,101,110,118,
+     32, 61, 32,101,110,118, 46,112, 97,114,101,110,116, 10, 32,
+    101,110,100, 10, 32,114,101,116,117,114,110, 32,102, 97,108,
+    115,101, 10,101,110,100, 10, 10,109,101,116,104,111,100,105,
+    115,118,105,114,116,117, 97,108, 32, 61, 32,102, 97,108,115,
+    101, 32, 45, 45, 32, 97, 32,103,108,111, 98, 97,108, 10, 10,
+     45, 45, 32,112, 97,114,115,101, 32, 99,104,117,110,107, 10,
+    102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,
+    111,110,116, 97,105,110,101,114, 58,100,111,112, 97,114,115,
+    101, 32, 40,115, 41, 10, 45, 45,112,114,105,110,116, 32, 40,
+     34,112, 97,114,115,101, 32, 34, 46, 46,115, 41, 10, 10, 32,
+     45, 45, 32,116,114,121, 32,116,104,101, 32,112, 97,114,115,
+    101,114, 32,104,111,111,107, 10, 32,100,111, 10, 32,  9,108,
+    111, 99, 97,108, 32,115,117, 98, 32, 61, 32,112, 97,114,115,
+    101,114, 95,104,111,111,107, 40,115, 41, 10, 32,  9,105,102,
+     32,115,117, 98, 32,116,104,101,110, 10, 32,  9,  9,114,101,
+    116,117,114,110, 32,115,117, 98, 10, 32,  9,101,110,100, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,116,
+    104,101, 32,110,117,108,108, 32,115,116, 97,116,101,109,101,
+    110,116, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 59, 34, 41, 10, 32,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,  9,101,110,
+    100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121,
+     32,101,109,112,116,121, 32,118,101,114, 98, 97,116,105,109,
+     32,108,105,110,101, 10, 32,100,111, 10, 32,  9,108,111, 99,
+     97,108, 32, 98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34,
+     94, 37,115, 42, 36, 92,110, 34, 41, 10, 32,  9,105,102, 32,
+     98, 32,116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32,116,114,121, 32, 76,117, 97, 32, 99,111,100,101, 10,
+     32,100,111, 10, 32, 32,108,111, 99, 97,108, 32, 98, 44,101,
+     44, 99,111,100,101, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44, 34, 94, 37,115, 42, 40, 37, 98, 92, 49, 92, 50,
+     41, 34, 41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 67,111,100,101, 40,115,116,114,115,117, 98,
+     40, 99,111,100,101, 44, 50, 44, 45, 50, 41, 41, 10, 32, 32,
+     32,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 67, 32, 99,
+    111,100,101, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,108,
+     32, 98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,
+    102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 37, 98,
+     92, 51, 92, 52, 41, 34, 41, 10, 32, 32,105,102, 32, 98, 32,
+    116,104,101,110, 10,  9, 99,111,100,101, 32, 61, 32, 39,123,
+     39, 46, 46,115,116,114,115,117, 98, 40, 99,111,100,101, 44,
+     50, 44, 45, 50, 41, 46, 46, 39, 92,110,125, 92,110, 39, 10,
+      9, 86,101,114, 98, 97,116,105,109, 40, 99,111,100,101, 44,
+     39,114, 39, 41, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,
+    118,101,114, 98, 97,116,105,109, 32, 99,111,100,101, 32,102,
+    111,114, 32, 39,114, 39,101,103,105,115,116,101,114, 32,102,
+    114, 97,103,109,101,110,116, 10,  9,114,101,116,117,114,110,
+     32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32,116,114,121, 32, 67, 32, 99,111,100,101, 32,102,111,114,
+     32,112,114,101, 97,109, 98,108,101, 32,115,101, 99,116,105,
+    111,110, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 99,111,100,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115,
+     42, 40, 37, 98, 92, 53, 92, 54, 41, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9, 99,111,100,
+    101, 32, 61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+     99,111,100,101, 44, 32, 50, 44, 32, 45, 50, 41, 46, 46, 34,
+     92,110, 34, 10,  9,  9, 86,101,114, 98, 97,116,105,109, 40,
+     99,111,100,101, 44, 32, 39, 39, 41, 10,  9,  9,114,101,116,
+    117,114,110, 32,115,116,114,105,110,103, 46,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,100,101,
+    102, 97,117,108,116, 95,112,114,111,112,101,114,116,121, 32,
+    100,105,114,101, 99,116,105,118,101, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 44,112,116,121,112,
+    101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32,
+     34, 94, 37,115, 42, 84, 79, 76, 85, 65, 95, 80, 82, 79, 80,
+     69, 82, 84, 89, 95, 84, 89, 80, 69, 37,115, 42, 37, 40, 43,
+     37,115, 42, 40, 91, 94, 37, 41, 37,115, 93, 42, 41, 37,115,
+     42, 37, 41, 43, 37,115, 42, 59, 63, 34, 41, 10, 32,  9,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32,  9,  9,105,102, 32,
+    110,111,116, 32,112,116,121,112,101, 32,111,114, 32,112,116,
+    121,112,101, 32, 61, 61, 32, 34, 34, 32,116,104,101,110, 10,
+     32,  9,  9,  9,112,116,121,112,101, 32, 61, 32, 34,100,101,
+    102, 97,117,108,116, 34, 10, 32,  9,  9,101,110,100, 10, 32,
+      9,  9,115,101,108,102, 58,115,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,116,121,112,101, 40,112,116,121,112,101,
+     41, 10,  9, 32,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,
+    110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,
+    121, 32,112,114,111,116,101, 99,116,101,100, 95,100,101,115,
+    116,114,117, 99,116,111,114, 32,100,105,114,101, 99,116,105,
+    118,101, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115, 44, 32, 34, 94, 37,115, 42, 84, 79, 76, 85,
+     65, 95, 80, 82, 79, 84, 69, 67, 84, 69, 68, 95, 68, 69, 83,
+     84, 82, 85, 67, 84, 79, 82, 37,115, 42, 59, 63, 34, 41, 10,
+      9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9,105,102,
+     32,115,101,108,102, 46,115,101,116, 95,112,114,111,116,101,
+     99,116,101,100, 95,100,101,115,116,114,117, 99,116,111,114,
+     32,116,104,101,110, 10,  9, 32,  9,  9,115,101,108,102, 58,
+    115,101,116, 95,112,114,111,116,101, 99,116,101,100, 95,100,
+    101,115,116,114,117, 99,116,111,114, 40,116,114,117,101, 41,
+     10,  9, 32,  9,101,110,100, 10, 32,  9,  9,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44, 32,101, 43,
+     49, 41, 10, 32,  9,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32,100,111, 10, 32,
+      9,108,111, 99, 97,108, 32, 98, 44,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115, 44, 32, 34, 94,
+     37,115, 42,101,120,116,101,114,110, 37,115, 43, 34, 41, 10,
+     32,  9,105,102, 32, 98, 32,116,104,101,110, 10,  9,  9, 45,
+     45, 32,100,111, 32,110,111,116,104,105,110,103, 10, 32,  9,
+      9,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,110,100, 10, 32,
+    101,110,100, 10,  9, 10, 32, 45, 45, 32,116,114,121, 32, 39,
+    118,105,114,116,117, 97,108, 39, 32,107,101,121,119,111,114,
+    107,100, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,115, 44, 32, 34, 94, 37,115, 42,118,105,114,116,
+    117, 97,108, 37,115, 43, 34, 41, 10, 32,  9,105,102, 32, 98,
+     32,116,104,101,110, 10, 32,  9,  9,109,101,116,104,111,100,
+    105,115,118,105,114,116,117, 97,108, 32, 61, 32,116,114,117,
+    101, 10, 32,  9,  9,114,101,116,117,114,110, 32,115,116,114,
+    115,117, 98, 40,115, 44, 32,101, 43, 49, 41, 10, 32,  9,101,
+    110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,116,114,
+    121, 32,108, 97, 98,101,108,115, 32, 40,112,117, 98,108,105,
+     99, 44, 32,112,114,105,118, 97,116,101, 44, 32,101,116, 99,
+     41, 10, 32,100,111, 10, 32,  9,108,111, 99, 97,108, 32, 98,
+     44,101, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115, 44, 32, 34, 94, 37,115, 42, 37,119, 42, 37,115,
+     42, 58, 91, 94, 58, 93, 34, 41, 10, 32,  9,105,102, 32, 98,
+     32,116,104,101,110, 10, 32,  9,  9,114,101,116,117,114,110,
+     32,115,116,114,115,117, 98, 40,115, 44, 32,101, 41, 32, 45,
+     45, 32,112,114,101,115,101,114,118,101, 32,116,104,101, 32,
+     91, 94, 58, 93, 10, 32,  9,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,116,114,121, 32,109,111,100,117,108,
+    101, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,108, 32, 98,
+     44,101, 44,110, 97,109,101, 44, 98,111,100,121, 32, 61, 32,
+    115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,
+    109,111,100,117,108,101, 37,115, 37,115, 42, 40, 91, 95, 37,
+    119, 93, 91, 95, 37,119, 93, 42, 41, 37,115, 42, 40, 37, 98,
+    123,125, 41, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32, 98,
+     32,116,104,101,110, 10, 32, 32, 32, 95, 99,117,114,114, 95,
+     99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115,
+     44, 98, 44,101, 41, 10, 32, 32, 32, 77,111,100,117,108,101,
+     40,110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,
+    114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115,
+     44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32,116,114,121, 32,110, 97,109,101,
+    115, 97,112, 99,101, 10, 32,100,111, 10, 32, 32,108,111, 99,
+     97,108, 32, 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,
+    121, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34,
+     94, 37,115, 42,110, 97,109,101,115,112, 97, 99,101, 37,115,
+     37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 93, 42,
+     41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 59, 63,
+     34, 41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10,
+     32, 32, 32, 95, 99,117,114,114, 95, 99,111,100,101, 32, 61,
+     32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10,
+     32, 32, 32, 78, 97,109,101,115,112, 97, 99,101, 40,110, 97,
+    109,101, 44, 98,111,100,121, 41, 10, 32, 32, 32,114,101,116,
+    117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+     49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32,100,101,102,105,110,101, 10,
+     32,100,111, 10, 32, 32,108,111, 99, 97,108, 32, 98, 44,101,
+     44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44, 34, 94, 37,115, 42, 35,100,101,102,105,110,101,
+     37,115, 37,115, 42, 40, 91, 94, 37,115, 93, 42, 41, 91, 94,
+     92,110, 93, 42, 92,110, 37,115, 42, 34, 41, 10, 32, 32,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32, 32, 32, 95, 99,117,
+    114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
+     98, 40,115, 44, 98, 44,101, 41, 10, 32, 32, 32, 68,101,102,
+    105,110,101, 40,110, 97,109,101, 41, 10, 32, 32, 32,114,101,
+    116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101,
+     43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10,
+     10, 32, 45, 45, 32,116,114,121, 32,101,110,117,109,101,114,
+     97,116,101,115, 10, 10, 32,100,111, 10, 32, 32,108,111, 99,
+     97,108, 32, 98, 44,101, 44,110, 97,109,101, 44, 98,111,100,
+    121, 44,118, 97,114,110, 97,109,101, 32, 61, 32,115,116,114,
+    102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,101,110,117,
+    109, 37,115, 43, 40, 37, 83, 42, 41, 37,115, 42, 40, 37, 98,
+    123,125, 41, 37,115, 42, 40, 91, 94, 37,115, 59, 93, 42, 41,
+     37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,105,102,
+     32, 98, 32,116,104,101,110, 10, 32, 32, 32, 45, 45,101,114,
+    114,111,114, 40, 34, 35, 83,111,114,114,121, 44, 32,100,101,
+     99,108, 97,114, 97,116,105,111,110, 32,111,102, 32,101,110,
+    117,109,115, 32, 97,110,100, 32,118, 97,114,105, 97, 98,108,
+    101,115, 32,111,110, 32,116,104,101, 32,115, 97,109,101, 32,
+    115,116, 97,116,101,109,101,110,116, 32,105,115, 32,110,111,
+    116, 32,115,117,112,112,111,114,116,101,100, 46, 92,110, 68,
+    101, 99,108, 97,114,101, 32,121,111,117,114, 32,118, 97,114,
+    105, 97, 98,108,101, 32,115,101,112, 97,114, 97,116,101,108,
+    121, 32, 40,101,120, 97,109,112,108,101, 58, 32, 39, 34, 46,
+     46,110, 97,109,101, 46, 46, 34, 32, 34, 46, 46,118, 97,114,
+    110, 97,109,101, 46, 46, 34, 59, 39, 41, 34, 41, 10, 32, 32,
+     32, 95, 99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,
+    116,114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 32, 32,
+     32, 69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101,
+     44, 98,111,100,121, 44,118, 97,114,110, 97,109,101, 41, 10,
+     32, 32, 32,114,101,116,117,114,110, 32,115,116,114,115,117,
+     98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10,
+     32,101,110,100, 10, 10, 45, 45, 32,100,111, 10, 45, 45, 32,
+     32,108,111, 99, 97,108, 32, 98, 44,101, 44,110, 97,109,101,
+     44, 98,111,100,121, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44, 34, 94, 37,115, 42,101,110,117,109, 37,115, 43,
+     40, 37, 83, 42, 41, 37,115, 42, 40, 37, 98,123,125, 41, 37,
+    115, 42, 59, 63, 37,115, 42, 34, 41, 10, 45, 45, 32, 32,105,
+    102, 32, 98, 32,116,104,101,110, 10, 45, 45, 32, 32, 32, 95,
+     99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,
+    115,117, 98, 40,115, 44, 98, 44,101, 41, 10, 45, 45, 32, 32,
+     32, 69,110,117,109,101,114, 97,116,101, 40,110, 97,109,101,
+     44, 98,111,100,121, 41, 10, 45, 45, 32, 32,114,101,116,117,
+    114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49,
+     41, 10, 45, 45, 32, 32,101,110,100, 10, 45, 45, 32,101,110,
+    100, 10, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,108, 32,
+     98, 44,101, 44, 98,111,100,121, 44,110, 97,109,101, 32, 61,
+     32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+     42,116,121,112,101,100,101,102, 37,115, 43,101,110,117,109,
+     91, 94,123, 93, 42, 40, 37, 98,123,125, 41, 37,115, 42, 40,
+     91, 37,119, 95, 93, 91, 94, 37,115, 93, 42, 41, 37,115, 42,
+     59, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32, 98, 32,116,
+    104,101,110, 10, 32, 32, 32, 95, 99,117,114,114, 95, 99,111,
+    100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98,
+     44,101, 41, 10, 32, 32, 32, 69,110,117,109,101,114, 97,116,
+    101, 40,110, 97,109,101, 44, 98,111,100,121, 41, 10, 32, 32,
+     32,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,111,112,101,
+    114, 97,116,111,114, 10, 32,100,111, 10, 32, 32,108,111, 99,
+     97,108, 32, 98, 44,101, 44,100,101, 99,108, 44,107,105,110,
+    100, 44, 97,114,103, 44, 99,111,110,115,116, 32, 61, 32,115,
+    116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 40,
+     91, 95, 37,119, 93, 91, 95, 37,119, 37,115, 37, 42, 38, 58,
+     60, 62, 44, 93, 45, 37,115, 43,111,112,101,114, 97,116,111,
+    114, 41, 37,115, 42, 40, 91, 94, 37,115, 93, 91, 94, 37,115,
+     93, 42, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42,
+     40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42,
+     59, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32,110,111,116,
+     32, 98, 32,116,104,101,110, 10,  9,  9, 32, 45, 45, 32,116,
+    114,121, 32,105,110,108,105,110,101, 10, 32, 32, 32, 98, 44,
+    101, 44,100,101, 99,108, 44,107,105,110,100, 44, 97,114,103,
+     44, 99,111,110,115,116, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93,
+     91, 95, 37,119, 37,115, 37, 42, 38, 58, 60, 62, 44, 93, 45,
+     37,115, 43,111,112,101,114, 97,116,111,114, 41, 37,115, 42,
+     40, 91, 94, 37,115, 93, 91, 94, 37,115, 93, 42, 41, 37,115,
+     42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111, 63,
+    110, 63,115, 63,116, 63, 41, 91, 37,115, 92,110, 93, 42, 37,
+     98,123,125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32,
+     32,101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98,
+     32,116,104,101,110, 10, 32, 32,  9, 45, 45, 32,116,114,121,
+     32, 99, 97,115,116, 32,111,112,101,114, 97,116,111,114, 10,
+     32, 32,  9, 98, 44,101, 44,100,101, 99,108, 44,107,105,110,
+    100, 44, 97,114,103, 44, 99,111,110,115,116, 32, 61, 32,115,
+    116,114,102,105,110,100, 40,115, 44, 32, 34, 94, 37,115, 42,
+     40,111,112,101,114, 97,116,111,114, 41, 37,115, 43, 40, 91,
+     37,119, 95, 58, 37,100, 60, 62, 37, 42, 37, 38, 37,115, 93,
+     43, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40,
+     99, 63,111, 63,110, 63,115, 63,116, 63, 41, 34, 41, 59, 10,
+     32, 32,  9,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,
+      9,  9,108,111, 99, 97,108, 32, 95, 44,105,101, 32, 61, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,115, 44, 32,
+     34, 94, 37,115, 42, 37, 98,123,125, 34, 44, 32,101, 43, 49,
+     41, 10, 32, 32,  9,  9,105,102, 32,105,101, 32,116,104,101,
+    110, 10, 32, 32,  9,  9,  9,101, 32, 61, 32,105,101, 10, 32,
+     32,  9,  9,101,110,100, 10, 32, 32,  9,101,110,100, 10, 32,
+     32,101,110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32, 32, 95, 99,117,114,114, 95, 99,111,100,101,
+     32, 61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101,
+     41, 10, 32, 32, 32, 79,112,101,114, 97,116,111,114, 40,100,
+    101, 99,108, 44,107,105,110,100, 44, 97,114,103, 44, 99,111,
+    110,115,116, 41, 10, 32, 32, 32,114,101,116,117,114,110, 32,
+    115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32,
+     32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32,
+    116,114,121, 32,102,117,110, 99,116,105,111,110, 10, 32,100,
+    111, 10, 32, 32, 45, 45,108,111, 99, 97,108, 32, 98, 44,101,
+     44,100,101, 99,108, 44, 97,114,103, 44, 99,111,110,115,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94,
+     37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95, 64, 37,119,
+     37,115, 37, 42, 38, 58, 60, 62, 93, 42, 91, 95, 37,119, 93,
+     41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
+     63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 61, 63,
+     37,115, 42, 48, 63, 37,115, 42, 59, 37,115, 42, 34, 41, 10,
+     32, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,100,101, 99,
+    108, 44, 97,114,103, 44, 99,111,110,115,116, 44,118,105,114,
+    116, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 34,
+     94, 37,115, 42, 40, 91, 94, 37, 40, 92,110, 93, 43, 41, 37,
+    115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,111,
+     63,110, 63,115, 63,116, 63, 41, 37,115, 42, 40, 61, 63, 37,
+    115, 42, 48, 63, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,
+     32, 32,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110,
+     10, 32, 32,  9, 45, 45, 32,116,114,121, 32,102,117,110, 99,
+    116,105,111,110, 32,119,105,116,104, 32,116,101,109,112,108,
+     97,116,101, 10, 32, 32,  9, 98, 44,101, 44,100,101, 99,108,
+     44, 97,114,103, 44, 99,111,110,115,116, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 91,
+    126, 95, 37,119, 93, 91, 95, 64, 37,119, 37,115, 37, 42, 38,
+     58, 60, 62, 93, 42, 91, 95, 37,119, 93, 37, 98, 60, 62, 41,
+     37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99, 63,
+    111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 61, 63, 37,
+    115, 42, 48, 63, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32,
+     32,101,110,100, 10, 32, 32,105,102, 32,110,111,116, 32, 98,
+     32,116,104,101,110, 10, 32, 32, 32, 45, 45, 32,116,114,121,
+     32, 97, 32,115,105,110,103,108,101, 32,108,101,116,116,101,
+    114, 32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101,
+     10, 32, 32, 32, 98, 44,101, 44,100,101, 99,108, 44, 97,114,
+    103, 44, 99,111,110,115,116, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119,
+     93, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40,
+     99, 63,111, 63,110, 63,115, 63,116, 63, 41, 37,115, 42, 59,
+     37,115, 42, 34, 41, 10, 32, 32,101,110,100, 10, 32, 32,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32, 32,  9,105,102, 32,
+    118,105,114,116, 32, 97,110,100, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,118,105,114,116, 44, 32, 34, 91, 61,
+     48, 93, 34, 41, 32,116,104,101,110, 10, 32, 32,  9,  9,105,
+    102, 32,115,101,108,102, 46,102,108, 97,103,115, 32,116,104,
+    101,110, 10, 32, 32,  9,  9,  9,115,101,108,102, 46,102,108,
+     97,103,115, 46,112,117,114,101, 95,118,105,114,116,117, 97,
+    108, 32, 61, 32,116,114,117,101, 10, 32, 32,  9,  9,101,110,
+    100, 10, 32, 32,  9,101,110,100, 10, 32, 32, 32, 95, 99,117,
+    114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
+     98, 40,115, 44, 98, 44,101, 41, 10, 32, 32, 32, 70,117,110,
+     99,116,105,111,110, 40,100,101, 99,108, 44, 97,114,103, 44,
+     99,111,110,115,116, 41, 10, 32, 32, 32,114,101,116,117,114,
+    110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43, 49, 41,
+     10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45,
+     45, 32,116,114,121, 32,105,110,108,105,110,101, 32,102,117,
+    110, 99,116,105,111,110, 10, 32,100,111, 10, 32, 32,108,111,
+     99, 97,108, 32, 98, 44,101, 44,100,101, 99,108, 44, 97,114,
+    103, 44, 99,111,110,115,116, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 94, 37, 40,
+     92,110, 93, 43, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,
+    115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 91,
+     94, 59,123, 93, 42, 37, 98,123,125, 37,115, 42, 59, 63, 37,
+    115, 42, 34, 41, 10, 32, 32, 45, 45,108,111, 99, 97,108, 32,
+     98, 44,101, 44,100,101, 99,108, 44, 97,114,103, 44, 99,111,
+    110,115,116, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+     44, 34, 94, 37,115, 42, 40, 91,126, 95, 37,119, 93, 91, 95,
+     64, 37,119, 37,115, 37, 42, 38, 58, 60, 62, 93, 42, 91, 95,
+     37,119, 62, 93, 41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,
+    115, 42, 40, 99, 63,111, 63,110, 63,115, 63,116, 63, 41, 91,
+     94, 59, 93, 42, 37, 98,123,125, 37,115, 42, 59, 63, 37,115,
+     42, 34, 41, 10, 32, 32,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10, 32, 32, 32, 45, 45, 32,116,114,121, 32,
+     97, 32,115,105,110,103,108,101, 32,108,101,116,116,101,114,
+     32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101, 10,
+     32, 32, 32, 98, 44,101, 44,100,101, 99,108, 44, 97,114,103,
+     44, 99,111,110,115,116, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93,
+     41, 37,115, 42, 40, 37, 98, 40, 41, 41, 37,115, 42, 40, 99,
+     63,111, 63,110, 63,115, 63,116, 63, 41, 46, 45, 37, 98,123,
+    125, 37,115, 42, 59, 63, 37,115, 42, 34, 41, 10, 32, 32,101,
+    110,100, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10,
+     32, 32, 32, 95, 99,117,114,114, 95, 99,111,100,101, 32, 61,
+     32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101, 41, 10,
+     32, 32, 32, 70,117,110, 99,116,105,111,110, 40,100,101, 99,
+    108, 44, 97,114,103, 44, 99,111,110,115,116, 41, 10, 32, 32,
+     32,114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,
+    115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32, 99,108, 97,
+    115,115, 10, 32,100,111, 10,  9, 32,108,111, 99, 97,108, 32,
+     98, 44,101, 44,110, 97,109,101, 44, 98, 97,115,101, 44, 98,
+    111,100,121, 10,  9,  9, 98, 97,115,101, 32, 61, 32, 39, 39,
+     32, 98,111,100,121, 32, 61, 32, 39, 39, 10,  9,  9, 98, 44,
+    101, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115, 44, 34, 94, 37,115, 42, 99,108, 97,115,115, 37,
+    115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42,
+     41, 37,115, 42, 59, 34, 41, 32, 32, 45, 45, 32,100,117,109,
+    109,121, 32, 99,108, 97,115,115, 10,  9,  9,105,102, 32,110,
+    111,116, 32, 98, 32,116,104,101,110, 10,  9,  9,  9, 98, 44,
+    101, 44,110, 97,109,101, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115, 44, 34, 94, 37,115, 42,115,116,114,117, 99,116,
+     37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93,
+     42, 41, 37,115, 42, 59, 34, 41, 32, 32, 32, 32, 45, 45, 32,
+    100,117,109,109,121, 32,115,116,114,117, 99,116, 10,  9,  9,
+      9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110, 10,
+      9,  9,  9,  9, 98, 44,101, 44,110, 97,109,101, 44, 98, 97,
+    115,101, 44, 98,111,100,121, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115, 44, 34, 94, 37,115, 42, 99,108, 97,115,115,
+     37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93,
+     42, 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42, 40, 37, 98,
+    123,125, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10,  9,  9,
+      9,  9,105,102, 32,110,111,116, 32, 98, 32,116,104,101,110,
+     10,  9,  9,  9,  9,  9, 98, 44,101, 44,110, 97,109,101, 44,
+     98, 97,115,101, 44, 98,111,100,121, 32, 61, 32,115,116,114,
+    102,105,110,100, 40,115, 44, 34, 94, 37,115, 42,115,116,114,
+    117, 99,116, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 95, 37,
+    119, 64, 93, 42, 41, 37,115, 42, 40, 46, 45, 41, 37,115, 42,
+     40, 37, 98,123,125, 41, 37,115, 42, 59, 37,115, 42, 34, 41,
+     10,  9,  9,  9,  9,  9,105,102, 32,110,111,116, 32, 98, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,  9,  9, 98, 44,101, 44,
+    110, 97,109,101, 44, 98, 97,115,101, 44, 98,111,100,121, 32,
+     61, 32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,
+    115, 42,117,110,105,111,110, 37,115, 42, 40, 91, 95, 37,119,
+     93, 91, 95, 37,119, 64, 93, 42, 41, 37,115, 42, 40, 46, 45,
+     41, 37,115, 42, 40, 37, 98,123,125, 41, 37,115, 42, 59, 37,
+    115, 42, 34, 41, 10,  9,  9,  9,  9,  9,  9,105,102, 32,110,
+    111,116, 32, 98, 32,116,104,101,110, 10,  9,  9,  9,  9,  9,
+      9,  9, 98, 97,115,101, 32, 61, 32, 39, 39, 10,  9,  9,  9,
+      9,  9,  9,  9, 98, 44,101, 44, 98,111,100,121, 44,110, 97,
+    109,101, 32, 61, 32,115,116,114,102,105,110,100, 40,115, 44,
+     34, 94, 37,115, 42,116,121,112,101,100,101,102, 37,115, 37,
+    115, 42,115,116,114,117, 99,116, 37,115, 37,115, 42, 91, 95,
+     37,119, 93, 42, 37,115, 42, 40, 37, 98,123,125, 41, 37,115,
+     42, 40, 91, 95, 37,119, 93, 91, 95, 37,119, 64, 93, 42, 41,
+     37,115, 42, 59, 37,115, 42, 34, 41, 10,  9,  9,  9,  9,  9,
+      9,101,110,100, 10,  9,  9,  9,  9,  9,101,110,100, 10,  9,
+      9,  9,  9,101,110,100, 10,  9,  9,  9,101,110,100, 10,  9,
+      9,101,110,100, 10,  9,  9,105,102, 32, 98, 32,116,104,101,
+    110, 10,  9,  9,  9,105,102, 32, 98, 97,115,101, 32,126, 61,
+     32, 39, 39, 32,116,104,101,110, 10,  9,  9,  9,  9, 98, 97,
+    115,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40, 98, 97,115,101, 44, 32, 34, 94, 37,115, 42, 58, 37,
+    115, 42, 34, 44, 32, 34, 34, 41, 10,  9,  9,  9,  9, 98, 97,
+    115,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40, 98, 97,115,101, 44, 32, 34, 37,115, 42,112,117, 98,
+    108,105, 99, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,  9,
+      9,  9, 98, 97,115,101, 32, 61, 32,115,112,108,105,116, 40,
+     98, 97,115,101, 44, 32, 34, 44, 34, 41, 10,  9,  9,  9,  9,
+     45, 45,108,111, 99, 97,108, 32, 98, 44,101, 10,  9,  9,  9,
+      9, 45, 45, 98, 44,101, 44, 98, 97,115,101, 32, 61, 32,115,
+    116,114,102,105,110,100, 40, 98, 97,115,101, 44, 34, 46, 45,
+     40, 91, 95, 37,119, 93, 91, 95, 37,119, 60, 62, 44, 58, 93,
+     42, 41, 36, 34, 41, 10,  9,  9,  9,101,108,115,101, 10,  9,
+      9,  9,  9, 98, 97,115,101, 32, 61, 32,123,125, 10,  9,  9,
+      9,101,110,100, 10,  9,  9,  9, 95, 99,117,114,114, 95, 99,
+    111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44,
+     98, 44,101, 41, 10,  9,  9,  9, 67,108, 97,115,115, 40,110,
+     97,109,101, 44, 98, 97,115,101, 44, 98,111,100,121, 41, 10,
+      9,  9,  9,114,101,116,117,114,110, 32,115,116,114,115,117,
+     98, 40,115, 44,101, 43, 49, 41, 10,  9,  9,101,110,100, 10,
+      9,101,110,100, 10, 10, 32, 45, 45, 32,116,114,121, 32,116,
+    121,112,101,100,101,102, 10, 32,100,111, 10, 32, 32,108,111,
+     99, 97,108, 32, 98, 44,101, 44,116,121,112,101,115, 32, 61,
+     32,115,116,114,102,105,110,100, 40,115, 44, 34, 94, 37,115,
+     42,116,121,112,101,100,101,102, 37,115, 37,115, 42, 40, 46,
+     45, 41, 37,115, 42, 59, 37,115, 42, 34, 41, 10, 32, 32,105,
+    102, 32, 98, 32,116,104,101,110, 10, 32, 32, 32, 95, 99,117,
+    114,114, 95, 99,111,100,101, 32, 61, 32,115,116,114,115,117,
+     98, 40,115, 44, 98, 44,101, 41, 10, 32, 32, 32, 84,121,112,
+    101,100,101,102, 40,116,121,112,101,115, 41, 10, 32, 32, 32,
+    114,101,116,117,114,110, 32,115,116,114,115,117, 98, 40,115,
+     44,101, 43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 10, 32, 45, 45, 32,116,114,121, 32,118, 97,114,105,
+     97, 98,108,101, 10, 32,100,111, 10, 32, 32,108,111, 99, 97,
+    108, 32, 98, 44,101, 44,100,101, 99,108, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115, 44, 34, 94, 37,115, 42, 40, 91,
+     95, 37,119, 93, 91, 95, 64, 37,115, 37,119, 37,100, 37, 42,
+     38, 58, 60, 62, 44, 93, 42, 91, 95, 37,119, 37,100, 93, 41,
+     37,115, 42, 59, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32,
+     98, 32,116,104,101,110, 10, 32, 32, 32, 95, 99,117,114,114,
+     95, 99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,
+    115, 44, 98, 44,101, 41, 10, 10,  9,108,111, 99, 97,108, 32,
+    108,105,115,116, 32, 61, 32,115,112,108,105,116, 95, 99, 95,
+    116,111,107,101,110,115, 40,100,101, 99,108, 44, 32, 34, 44,
+     34, 41, 10,  9, 86, 97,114,105, 97, 98,108,101, 40,108,105,
+    115,116, 91, 49, 93, 41, 10,  9,105,102, 32,108,105,115,116,
+     46,110, 32, 62, 32, 49, 32,116,104,101,110, 10,  9,  9,108,
+    111, 99, 97,108, 32, 95, 44, 95, 44,116,121,112,101, 32, 61,
+     32,115,116,114,102,105,110,100, 40,108,105,115,116, 91, 49,
+     93, 44, 32, 34, 40, 46, 45, 41, 37,115, 43, 40, 91, 94, 37,
+    115, 93, 42, 41, 36, 34, 41, 59, 10, 10,  9,  9,108,111, 99,
+     97,108, 32,105, 32, 61, 50, 59, 10,  9,  9,119,104,105,108,
+    101, 32,108,105,115,116, 91,105, 93, 32,100,111, 10,  9,  9,
+      9, 86, 97,114,105, 97, 98,108,101, 40,116,121,112,101, 46,
+     46, 34, 32, 34, 46, 46,108,105,115,116, 91,105, 93, 41, 10,
+      9,  9,  9,105, 61,105, 43, 49, 10,  9,  9,101,110,100, 10,
+      9,101,110,100, 10, 32, 32, 32, 45, 45, 86, 97,114,105, 97,
+     98,108,101, 40,100,101, 99,108, 41, 10, 32, 32, 32,114,101,
+    116,117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101,
+     43, 49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10,
+     10,  9, 45, 45, 32,116,114,121, 32,115,116,114,105,110,103,
+     10, 32,100,111, 10, 32, 32,108,111, 99, 97,108, 32, 98, 44,
+    101, 44,100,101, 99,108, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93,
+     63, 91, 95, 37,115, 37,119, 37,100, 93, 45, 99,104, 97,114,
+     37,115, 43, 91, 95, 64, 37,119, 37,100, 93, 42, 37,115, 42,
+     37, 91, 37,115, 42, 37, 83, 43, 37,115, 42, 37, 93, 41, 37,
+    115, 42, 59, 37,115, 42, 34, 41, 10, 32, 32,105,102, 32, 98,
+     32,116,104,101,110, 10, 32, 32, 32, 95, 99,117,114,114, 95,
+     99,111,100,101, 32, 61, 32,115,116,114,115,117, 98, 40,115,
+     44, 98, 44,101, 41, 10, 32, 32, 32, 86, 97,114,105, 97, 98,
+    108,101, 40,100,101, 99,108, 41, 10, 32, 32, 32,114,101,116,
+    117,114,110, 32,115,116,114,115,117, 98, 40,115, 44,101, 43,
+     49, 41, 10, 32, 32,101,110,100, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32,116,114,121, 32, 97,114,114, 97,121, 10, 32,
+    100,111, 10, 32, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,
+    100,101, 99,108, 32, 61, 32,115,116,114,102,105,110,100, 40,
+    115, 44, 34, 94, 37,115, 42, 40, 91, 95, 37,119, 93, 91, 93,
+     91, 95, 64, 37,115, 37,119, 37,100, 37, 42, 38, 58, 93, 42,
+     91, 93, 95, 37,119, 37,100, 93, 41, 37,115, 42, 59, 37,115,
+     42, 34, 41, 10, 32, 32,105,102, 32, 98, 32,116,104,101,110,
+     10, 32, 32, 32, 95, 99,117,114,114, 95, 99,111,100,101, 32,
+     61, 32,115,116,114,115,117, 98, 40,115, 44, 98, 44,101, 41,
+     10, 32, 32, 32, 65,114,114, 97,121, 40,100,101, 99,108, 41,
+     10, 32, 32, 32,114,101,116,117,114,110, 32,115,116,114,115,
+    117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32,101,110,100,
+     10, 32,101,110,100, 10, 10, 32, 45, 45, 32,110,111, 32,109,
+     97,116, 99,104,105,110,103, 10, 32,105,102, 32,103,115,117,
+     98, 40,115, 44, 34, 37,115, 37,115, 42, 34, 44, 34, 34, 41,
+     32,126, 61, 32, 34, 34, 32,116,104,101,110, 10, 32, 32, 95,
+     99,117,114,114, 95, 99,111,100,101, 32, 61, 32,115, 10, 32,
+     32,101,114,114,111,114, 40, 34, 35,112, 97,114,115,101, 32,
+    101,114,114,111,114, 34, 41, 10, 32,101,108,115,101, 10, 32,
+     32,114,101,116,117,114,110, 32, 34, 34, 10, 32,101,110,100,
+     10, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 67,111,110,116, 97,105,110,101,114,
+     58,112, 97,114,115,101, 32, 40,115, 41, 10, 10,  9,115,101,
+    108,102, 46, 99,117,114,114, 95,109,101,109, 98,101,114, 95,
+     97, 99, 99,101,115,115, 32, 61, 32,110,105,108, 10, 10, 32,
+    119,104,105,108,101, 32,115, 32,126, 61, 32, 39, 39, 32,100,
+    111, 10, 32, 32,115, 32, 61, 32,115,101,108,102, 58,100,111,
+    112, 97,114,115,101, 40,115, 41, 10, 32, 32,109,101,116,104,
+    111,100,105,115,118,105,114,116,117, 97,108, 32, 61, 32,102,
+     97,108,115,101, 10, 32,101,110,100, 10,101,110,100, 10, 10,
+     10, 45, 45, 32,112,114,111,112,101,114,116,121, 32,116,121,
+    112,101,115, 10, 10,102,117,110, 99,116,105,111,110, 32,103,
+    101,116, 95,112,114,111,112,101,114,116,121, 95,116,121,112,
+    101, 40, 41, 10, 10,  9,114,101,116,117,114,110, 32, 99,108,
+     97,115,115, 67,111,110,116, 97,105,110,101,114, 46, 99,117,
+    114,114, 58,103,101,116, 95,112,114,111,112,101,114,116,121,
+     95,116,121,112,101, 40, 41, 10,101,110,100, 10, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,
+    116, 97,105,110,101,114, 58,115,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,116,121,112,101, 40,112,116,121,112,101,
+     41, 10,  9,112,116,121,112,101, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,112,116,121,112,101, 44, 32,
+     34, 94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,112,116,
+    121,112,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,112,116,121,112,101, 44, 32, 34, 37,115, 42, 36,
+     34, 44, 32, 34, 34, 41, 10, 10,  9,115,101,108,102, 46,112,
+    114,111,112,101,114,116,121, 95,116,121,112,101, 32, 61, 32,
+    112,116,121,112,101, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 67,111,110,116, 97,
+    105,110,101,114, 58,103,101,116, 95,112,114,111,112,101,114,
+    116,121, 95,116,121,112,101, 40, 41, 10,  9,114,101,116,117,
+    114,110, 32,115,101,108,102, 46,112,114,111,112,101,114,116,
+    121, 95,116,121,112,101, 32,111,114, 32, 40,115,101,108,102,
+     46,112, 97,114,101,110,116, 32, 97,110,100, 32,115,101,108,
+    102, 46,112, 97,114,101,110,116, 58,103,101,116, 95,112,114,
+    111,112,101,114,116,121, 95,116,121,112,101, 40, 41, 41, 32,
+    111,114, 32, 34,100,101,102, 97,117,108,116, 34, 10,101,110,
+    100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/container.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,112, 97, 99,107, 97,
+    103,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,
+    116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,
+    114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,
+    114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32,
+     74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100,
+     58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,
+    100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,
+    119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,
+    101,100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32,
+     97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,
+    116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119,
+     97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,
+    114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,
+    110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115,
+     44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,
+    116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,
+    105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,
+    105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101,
+     44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,
+    116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,
+    109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,
+    105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45,
+     32, 80, 97, 99,107, 97,103,101, 32, 99,108, 97,115,115, 10,
+     45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,116,
+    104,101, 32,119,104,111,108,101, 32,112, 97, 99,107, 97,103,
+    101, 32, 98,101,105,110,103, 32, 98,111,117,110,100, 46, 10,
+     45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,110,
+    103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,116,
+    111,114,101,100, 58, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 61, 32,108,105,115,116, 32,111,102, 32,111, 98,106,101,
+     99,116,115, 32,105,110, 32,116,104,101, 32,112, 97, 99,107,
+     97,103,101, 46, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,
+    103,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,
+    112,101, 32, 61, 32, 39,112, 97, 99,107, 97,103,101, 39, 10,
+    125, 10, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 46,
+     95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,115,
+     80, 97, 99,107, 97,103,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 80, 97, 99,107,
+     97,103,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,
+    110,101,114, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 58,112,
+    114,105,110,116, 32, 40, 41, 10, 32,112,114,105,110,116, 40,
+     34, 80, 97, 99,107, 97,103,101, 58, 32, 34, 46, 46,115,101,
+    108,102, 46,110, 97,109,101, 41, 10, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,
+    105, 93, 58,112,114,105,110,116, 40, 34, 34, 44, 34, 34, 41,
+     10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 58,112,114,
+    101,112,114,111, 99,101,115,115, 32, 40, 41, 10, 10, 32, 45,
+     45, 32, 97,118,111,105,100, 32,112,114,101,112,114,111, 99,
+    101,115,115,105,110,103, 32,101,109, 98,101,100,100,101,100,
+     32, 76,117, 97, 32, 99,111,100,101, 10, 32,108,111, 99, 97,
+    108, 32, 76, 32, 61, 32,123,125, 10, 32,115,101,108,102, 46,
+     99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+    102, 46, 99,111,100,101, 44, 34, 92,110, 37,115, 42, 37, 36,
+     37, 91, 34, 44, 34, 92, 49, 34, 41, 32, 45, 45, 32,100,101,
+     97,108, 32,119,105,116,104, 32,101,109, 98,101,100,100,101,
+    100, 32,108,117, 97, 32, 99,111,100,101, 10, 32,115,101,108,
+    102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46, 99,111,100,101, 44, 34, 92,110, 37,115, 42,
+     37, 36, 37, 93, 34, 44, 34, 92, 50, 34, 41, 10, 32,115,101,
+    108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46, 99,111,100,101, 44, 34, 40, 37, 98, 92,
+     49, 92, 50, 41, 34, 44, 32, 32, 32, 32, 32, 32, 32,102,117,
+    110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,105,
+    110,115,101,114,116, 40, 76, 44, 99, 41, 10, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,
+    116,117,114,110, 32, 34, 92,110, 35, 91, 34, 46, 46,103,101,
+    116,110, 40, 76, 41, 46, 46, 34, 93, 35, 34, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,110,
+    100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,
+    101,112,114,111, 99,101,115,115,105,110,103, 32,101,109, 98,
+    101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,108,
+    111, 99, 97,108, 32, 67, 32, 61, 32,123,125, 10, 32,115,101,
+    108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46, 99,111,100,101, 44, 34, 92,110, 37,115,
+     42, 37, 36, 37, 60, 34, 44, 34, 92, 51, 34, 41, 32, 45, 45,
+     32,100,101, 97,108, 32,119,105,116,104, 32,101,109, 98,101,
+    100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,115,101,
+    108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46, 99,111,100,101, 44, 34, 92,110, 37,115,
+     42, 37, 36, 37, 62, 34, 44, 34, 92, 52, 34, 41, 10, 32,115,
+    101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98,
+     40,115,101,108,102, 46, 99,111,100,101, 44, 34, 40, 37, 98,
+     92, 51, 92, 52, 41, 34, 44, 32, 32, 32, 32, 32, 32, 32,102,
+    117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,116,
+    105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46, 46,103,
+    101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,101,
+    110,100, 41, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,
+    114,101,112,114,111, 99,101,115,115,105,110,103, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117,
+     98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 92,110,
+     37,115, 42, 37, 36, 37,123, 34, 44, 34, 92, 53, 34, 41, 32,
+     45, 45, 32,100,101, 97,108, 32,119,105,116,104, 32,101,109,
+     98,101,100,100,101,100, 32, 67, 32, 99,111,100,101, 10, 32,
+    115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117,
+     98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 92,110,
+     37,115, 42, 37, 36, 37,125, 34, 44, 34, 92, 54, 34, 41, 10,
+     32,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+    117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 40,
+     37, 98, 92, 53, 92, 54, 41, 34, 44, 32, 32, 32, 32, 32, 32,
+     32,102,117,110, 99,116,105,111,110, 32, 40, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,116,105,110,115,101,114,116, 40, 67, 44, 99, 41, 10, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,114,101,116,117,114,110, 32, 34, 92,110, 35, 60, 34, 46,
+     46,103,101,116,110, 40, 67, 41, 46, 46, 34, 62, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45,115,101,108,102, 46,
+     99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,
+    102, 46, 99,111,100,101, 44, 34, 92,110, 37,115, 42, 35, 91,
+     94,100, 93, 91, 94, 92,110, 93, 42, 92,110, 34, 44, 32, 34,
+     92,110, 92,110, 34, 41, 32, 45, 45, 32,101,108,105,109,105,
+    110, 97,116,101, 32,112,114,101,112,114,111, 99,101,115,115,
+    111,114, 32,100,105,114,101, 99,116,105,118,101,115, 32,116,
+    104, 97,116, 32,100,111,110, 39,116, 32,115,116, 97,114,116,
+     32,119,105,116,104, 32, 39,100, 39, 10, 32,115,101,108,102,
+     46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46, 99,111,100,101, 44, 34, 92,110, 91, 32, 92,116,
+     93, 42, 35, 91, 32, 92,116, 93, 42, 91, 94,100, 37, 60, 37,
+     91, 93, 34, 44, 32, 34, 92,110, 47, 47, 34, 41, 32, 45, 45,
+     32,101,108,105,109,105,110, 97,116,101, 32,112,114,101,112,
+    114,111, 99,101,115,115,111,114, 32,100,105,114,101, 99,116,
+    105,118,101,115, 32,116,104, 97,116, 32,100,111,110, 39,116,
+     32,115,116, 97,114,116, 32,119,105,116,104, 32, 39,100, 39,
+     10, 10, 32, 45, 45, 32, 97,118,111,105,100, 32,112,114,101,
+    112,114,111, 99,101,115,115,105,110,103, 32,118,101,114, 98,
+     97,116,105,109, 32,108,105,110,101,115, 10, 32,108,111, 99,
+     97,108, 32, 86, 32, 61, 32,123,125, 10, 32,115,101,108,102,
+     46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46, 99,111,100,101, 44, 34, 92,110, 40, 37,115, 42,
+     37, 36, 91, 94, 37, 91, 37, 93, 93, 91, 94, 92,110, 93, 42,
+     41, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,118, 41,
+     10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,116,105,110,115,101,114,116, 40, 86, 44,118, 41,
+     10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32,114,101,116,117,114,110, 32, 34, 92,110, 35, 34,
+     46, 46,103,101,116,110, 40, 86, 41, 46, 46, 34, 35, 34, 10,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32, 45, 45, 32,112,101,114,102,
+    111,114,109, 32,103,108,111, 98, 97,108, 32,115,117, 98,115,
+    116,105,116,117,116,105,111,110, 10, 10, 32,115,101,108,102,
+     46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46, 99,111,100,101, 44, 34, 40, 47, 47, 91, 94, 92,
+    110, 93, 42, 41, 34, 44, 34, 34, 41, 32, 32, 32, 32, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32, 67, 43, 43,
+     32, 99,111,109,109,101,110,116,115, 10, 32,115,101,108,102,
+     46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46, 99,111,100,101, 44, 34, 47, 37, 42, 34, 44, 34,
+     92, 49, 34, 41, 10, 32,115,101,108,102, 46, 99,111,100,101,
+     32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
+    100,101, 44, 34, 37, 42, 47, 34, 44, 34, 92, 50, 34, 41, 10,
+     32,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+    117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37,
+     98, 92, 49, 92, 50, 34, 44, 34, 34, 41, 10, 32,115,101,108,
+    102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46, 99,111,100,101, 44, 34, 92, 49, 34, 44, 34,
+     47, 37, 42, 34, 41, 10, 32,115,101,108,102, 46, 99,111,100,
+    101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,
+    111,100,101, 44, 34, 92, 50, 34, 44, 34, 37, 42, 47, 34, 41,
+     10, 32,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,
+    115,117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34,
+     37,115, 42, 64, 37,115, 42, 34, 44, 34, 64, 34, 41, 32, 45,
+     45, 32,101,108,105,109,105,110, 97,116,101, 32,115,112, 97,
+     99,101,115, 32, 98,101,115,105,100,101, 32, 64, 10, 32,115,
+    101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98,
+     40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37,115, 63,
+    105,110,108,105,110,101, 40, 37,115, 41, 34, 44, 34, 37, 49,
+     34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,105,110,108,105,110,101, 39, 32,107,101,121,119,111,
+    114,100, 10, 32, 45, 45,115,101,108,102, 46, 99,111,100,101,
+     32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
+    100,101, 44, 34, 37,115, 63,101,120,116,101,114,110, 40, 37,
+    115, 41, 34, 44, 34, 37, 49, 34, 41, 32, 45, 45, 32,101,108,
+    105,109,105,110, 97,116,101, 32, 39,101,120,116,101,114,110,
+     39, 32,107,101,121,119,111,114,100, 10, 32, 45, 45,115,101,
+    108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46, 99,111,100,101, 44, 34, 37,115, 63,118,
+    105,114,116,117, 97,108, 40, 37,115, 41, 34, 44, 34, 37, 49,
+     34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,118,105,114,116,117, 97,108, 39, 32,107,101,121,119,
+    111,114,100, 10, 32, 45, 45,115,101,108,102, 46, 99,111,100,
+    101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,
+    111,100,101, 44, 34,112,117, 98,108,105, 99, 58, 34, 44, 34,
+     34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 39,112,117, 98,108,105, 99, 58, 39, 32,107,101,121,119,
+    111,114,100, 10, 32,115,101,108,102, 46, 99,111,100,101, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,100,
+    101, 44, 34, 40, 91, 94, 37,119, 95, 93, 41,118,111,105,100,
+     37,115, 42, 37, 42, 34, 44, 34, 37, 49, 95,117,115,101,114,
+    100, 97,116, 97, 32, 34, 41, 32, 45, 45, 32,115,117, 98,115,
+    116,105,116,117,116,101, 32, 39,118,111,105,100, 42, 39, 10,
+     32,115,101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,
+    117, 98, 40,115,101,108,102, 46, 99,111,100,101, 44, 34, 40,
+     91, 94, 37,119, 95, 93, 41,118,111,105,100, 37,115, 42, 37,
+     42, 34, 44, 34, 37, 49, 95,117,115,101,114,100, 97,116, 97,
+     32, 34, 41, 32, 45, 45, 32,115,117, 98,115,116,105,116,117,
+    116,101, 32, 39,118,111,105,100, 42, 39, 10, 32,115,101,108,
+    102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46, 99,111,100,101, 44, 34, 40, 91, 94, 37,119,
+     95, 93, 41, 99,104, 97,114, 37,115, 42, 37, 42, 34, 44, 34,
+     37, 49, 95, 99,115,116,114,105,110,103, 32, 34, 41, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+     99,104, 97,114, 42, 39, 10, 32,115,101,108,102, 46, 99,111,
+    100,101, 32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46,
+     99,111,100,101, 44, 34, 40, 91, 94, 37,119, 95, 93, 41,108,
+    117, 97, 95, 83,116, 97,116,101, 37,115, 42, 37, 42, 34, 44,
+     34, 37, 49, 95,108,115,116, 97,116,101, 32, 34, 41, 32, 32,
+     45, 45, 32,115,117, 98,115,116,105,116,117,116,101, 32, 39,
+    108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,101,109, 98,101,100,
+    100,101,100, 32, 76,117, 97, 32, 99,111,100,101, 10, 32,115,
+    101,108,102, 46, 99,111,100,101, 32, 61, 32,103,115,117, 98,
+     40,115,101,108,102, 46, 99,111,100,101, 44, 34, 37, 35, 37,
+     91, 40, 37,100, 43, 41, 37, 93, 37, 35, 34, 44,102,117,110,
+     99,116,105,111,110, 32, 40,110, 41, 10, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,101,116,117,
+    114,110, 32, 76, 91,116,111,110,117,109, 98,101,114, 40,110,
+     41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,101,110,100, 41, 10, 32, 45, 45, 32,114,101,115,116,
+    111,114,101, 32,101,109, 98,101,100,100,101,100, 32, 67, 32,
+     99,111,100,101, 10, 32,115,101,108,102, 46, 99,111,100,101,
+     32, 61, 32,103,115,117, 98, 40,115,101,108,102, 46, 99,111,
+    100,101, 44, 34, 37, 35, 37, 60, 40, 37,100, 43, 41, 37, 62,
+     37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,110,
+     41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32,114,101,116,117,114,110, 32, 67, 91,116,111,110,117,
+    109, 98,101,114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32,101,110,100, 41, 10, 32, 45,
+     45, 32,114,101,115,116,111,114,101, 32,118,101,114, 98, 97,
+    116,105,109, 32,108,105,110,101,115, 10, 32,115,101,108,102,
+     46, 99,111,100,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46, 99,111,100,101, 44, 34, 37, 35, 40, 37,100, 43,
+     41, 37, 35, 34, 44,102,117,110, 99,116,105,111,110, 32, 40,
+    110, 41, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,114,
+    101,116,117,114,110, 32, 86, 91,116,111,110,117,109, 98,101,
+    114, 40,110, 41, 93, 10, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
+     32,101,110,100, 41, 10, 10, 32,115,101,108,102, 46, 99,111,
+    100,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46, 99,111,100,101, 44, 32, 34, 92,
+    110, 37,115, 42, 37, 36, 40, 91, 94, 92,110, 93, 43, 41, 34,
+     44, 32,102,117,110, 99,116,105,111,110, 32, 40,108, 41, 10,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,  9, 86,101,114, 98,
+     97,116,105,109, 40,108, 46, 46, 34, 92,110, 34, 41, 10,  9,
+      9,  9,  9,  9,  9,  9,  9,  9,  9,  9,114,101,116,117,114,
+    110, 32, 34, 92,110, 34, 10,  9,  9,  9,  9,  9,  9,  9,  9,
+      9,  9, 32, 32,101,110,100, 41, 10,101,110,100, 10, 10, 45,
+     45, 32,116,114, 97,110,115,108, 97,116,101, 32,118,101,114,
+     98, 97,116,105,109, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 80, 97, 99,107, 97,103,101, 58,112,114,
+    101, 97,109, 98,108,101, 32, 40, 41, 10, 32,111,117,116,112,
+    117,116, 40, 39, 47, 42, 92,110, 39, 41, 10, 32,111,117,116,
+    112,117,116, 40, 39, 42, 42, 32, 76,117, 97, 32, 98,105,110,
+    100,105,110,103, 58, 32, 39, 46, 46,115,101,108,102, 46,110,
+     97,109,101, 46, 46, 39, 92,110, 39, 41, 10, 32,111,117,116,
+    112,117,116, 40, 39, 42, 42, 32, 71,101,110,101,114, 97,116,
+    101,100, 32, 97,117,116,111,109, 97,116,105, 99, 97,108,108,
+    121, 32, 98,121, 32, 39, 46, 46, 84, 79, 76, 85, 65, 95, 86,
+     69, 82, 83, 73, 79, 78, 46, 46, 39, 32,111,110, 32, 39, 46,
+     46,100, 97,116,101, 40, 41, 46, 46, 39, 46, 92,110, 39, 41,
+     10, 32,111,117,116,112,117,116, 40, 39, 42, 47, 92,110, 92,
+    110, 39, 41, 10, 10,  9,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 35,105,110, 99,108,117,100,101, 32, 34,115,116,100,
+    108,105, 98, 46,104, 34, 92,110, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41,
+     10,  9,111,117,116,112,117,116, 40, 39, 35,105,110, 99,108,
+    117,100,101, 32, 34,115,116,114,105,110,103, 46,104, 34, 92,
+    110, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     35,105,110, 99,108,117,100,101, 32, 34,116,111,108,117, 97,
+     43, 43, 46,104, 34, 92,110, 92,110, 39, 41, 10, 10, 32,105,
+    102, 32,110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,
+    104,101,110, 10, 32, 32,111,117,116,112,117,116, 40, 39, 47,
+     42, 32, 69,120,112,111,114,116,101,100, 32,102,117,110, 99,
+    116,105,111,110, 32, 42, 47, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,
+    105,110,116, 32, 32,116,111,108,117, 97, 95, 39, 46, 46,115,
+    101,108,102, 46,110, 97,109,101, 46, 46, 39, 95,111,112,101,
+    110, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,
+    111,108,117, 97, 95, 83, 41, 59, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,
+    104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111,
+     10, 32, 32,115,101,108,102, 91,105, 93, 58,112,114,101, 97,
+    109, 98,108,101, 40, 41, 10, 32, 32,105, 32, 61, 32,105, 43,
+     49, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,108,
+    102, 58,114,101,113,117,105,114,101, 99,111,108,108,101, 99,
+    116,105,111,110, 40, 95, 99,111,108,108,101, 99,116, 41, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39,
+     47, 42, 32,102,117,110, 99,116,105,111,110, 32,116,111, 32,
+    114,101,108,101, 97,115,101, 32, 99,111,108,108,101, 99,116,
+    101,100, 32,111, 98,106,101, 99,116, 32,118,105, 97, 32,100,
+    101,115,116,114,117, 99,116,111,114, 32, 42, 47, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,105,102,100,101,
+    102, 32, 95, 95, 99,112,108,117,115,112,108,117,115, 92,110,
+     39, 41, 10,  9,  9,102,111,114, 32,105, 44,118, 32,105,110,
+     32,112, 97,105,114,115, 40, 95, 99,111,108,108,101, 99,116,
+     41, 32,100,111, 10,  9,  9, 32,111,117,116,112,117,116, 40,
+     39, 92,110,115,116, 97,116,105, 99, 32,105,110,116, 32, 39,
+     46, 46,118, 46, 46, 39, 32, 40,108,117, 97, 95, 83,116, 97,
+    116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39,123, 39, 41, 10,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 39, 46, 46,
+    105, 46, 46, 39, 42, 32,115,101,108,102, 32, 61, 32, 40, 39,
+     46, 46,105, 46, 46, 39, 42, 41, 32,116,111,108,117, 97, 95,
+    116,111,117,115,101,114,116,121,112,101, 40,116,111,108,117,
+     97, 95, 83, 44, 49, 44, 48, 41, 59, 39, 41, 10,  9,  9,  9,
+    111,117,116,112,117,116, 40, 39,  9,100,101,108,101,116,101,
+     32,115,101,108,102, 59, 39, 41, 10,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39,  9,114,101,116,117,114,110, 32, 48, 59,
+     39, 41, 10,  9,  9,  9,111,117,116,112,117,116, 40, 39,125,
+     39, 41, 10,  9,  9,101,110,100, 10,  9,  9,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 92,110, 39,
+     41, 10,  9,101,110,100, 10, 10, 32,111,117,116,112,117,116,
+     40, 39, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 47, 42, 32,102,117,110, 99,116,105,111,110, 32,116,111,
+     32,114,101,103,105,115,116,101,114, 32,116,121,112,101, 32,
+     42, 47, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,115,
+    116, 97,116,105, 99, 32,118,111,105,100, 32,116,111,108,117,
+     97, 95,114,101,103, 95,116,121,112,101,115, 32, 40,108,117,
+     97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95,
+     83, 41, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,123,
+     39, 41, 10, 32,102,111,114,101, 97, 99,104, 40, 95,117,115,
+    101,114,116,121,112,101, 44,102,117,110, 99,116,105,111,110,
+     40,110, 44,118, 41, 32,111,117,116,112,117,116, 40, 39, 32,
+    116,111,108,117, 97, 95,117,115,101,114,116,121,112,101, 40,
+    116,111,108,117, 97, 95, 83, 44, 34, 39, 44,118, 44, 39, 34,
+     41, 59, 39, 41, 32,101,110,100, 41, 10,  9,105,102, 32,102,
+    108, 97,103,115, 46,116, 32,116,104,101,110, 10,  9,  9,111,
+    117,116,112,117,116, 40, 34, 35,105,102,110,100,101,102, 32,
+     77,116,111,108,117, 97, 95,116,121,112,101,105,100, 92,110,
+     35,100,101,102,105,110,101, 32, 77,116,111,108,117, 97, 95,
+    116,121,112,101,105,100, 40, 76, 44, 84, 73, 44, 84, 41, 92,
+    110, 35,101,110,100,105,102, 92,110, 34, 41, 10,  9,  9,102,
+    111,114,101, 97, 99,104, 40, 95,117,115,101,114,116,121,112,
+    101, 44,102,117,110, 99,116,105,111,110, 40,110, 44,118, 41,
+     32,111,117,116,112,117,116, 40, 39, 32, 77,116,111,108,117,
+     97, 95,116,121,112,101,105,100, 40,116,111,108,117, 97, 95,
+     83, 44,116,121,112,101,105,100, 40, 39, 44,118, 44, 39, 41,
+     44, 32, 34, 39, 44,118, 44, 39, 34, 41, 59, 39, 41, 32,101,
+    110,100, 41, 10,  9,101,110,100, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 92,110, 39, 41, 10,101,110,100, 10, 10, 45, 45, 32,114,
+    101,103,105,115,116,101,114, 32,112, 97, 99,107, 97,103,101,
+     10, 45, 45, 32,119,114,105,116,101, 32,112, 97, 99,107, 97,
+    103,101, 32,111,112,101,110, 32,102,117,110, 99,116,105,111,
+    110, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 80, 97, 99,107, 97,103,101, 58,114,101,103,105,115,116,
+    101,114, 32, 40,112,114,101, 41, 10, 32,112,114,101, 32, 61,
+     32,112,114,101, 32,111,114, 32, 39, 39, 10, 32,112,117,115,
+    104, 40,115,101,108,102, 41, 10, 32,111,117,116,112,117,116,
+     40,112,114,101, 46, 46, 34, 47, 42, 32, 79,112,101,110, 32,
+    102,117,110, 99,116,105,111,110, 32, 42, 47, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79,
+     76, 85, 65, 95, 65, 80, 73, 32,105,110,116, 32,116,111,108,
+    117, 97, 95, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 95,111,112,101,110, 32, 40,108,117, 97, 95, 83,
+    116, 97,116,101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34,
+     41, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 34, 32,116,111,108,117, 97, 95,111,112,101,110,
+     40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41, 10, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,
+    108,117, 97, 95,114,101,103, 95,116,121,112,101,115, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 34, 41, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 34, 32,116,111,108,117,
+     97, 95,109,111,100,117,108,101, 40,116,111,108,117, 97, 95,
+     83, 44, 78, 85, 76, 76, 44, 34, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 34, 41, 59, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,116,
+    111,108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 78, 85, 76, 76, 41,
+     59, 34, 41, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10,
+     32,119,104,105,108,101, 32,115,101,108,102, 91,105, 93, 32,
+    100,111, 10, 32, 32,115,101,108,102, 91,105, 93, 58,114,101,
+    103,105,115,116,101,114, 40,112,114,101, 46, 46, 34, 32, 32,
+     34, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46,
+     46, 34, 32,116,111,108,117, 97, 95,101,110,100,109,111,100,
+    117,108,101, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41,
+     10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,
+     32,114,101,116,117,114,110, 32, 49, 59, 34, 41, 10, 32,111,
+    117,116,112,117,116, 40,112,114,101, 46, 46, 34,125, 34, 41,
+     10, 10, 32,111,117,116,112,117,116, 40, 34, 92,110, 92,110,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+     32,100,101,102,105,110,101,100, 40, 76, 85, 65, 95, 86, 69,
+     82, 83, 73, 79, 78, 95, 78, 85, 77, 41, 32, 38, 38, 32, 76,
+     85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 95, 78, 85, 77, 32,
+     62, 61, 32, 53, 48, 49, 92,110, 34, 41, 59, 10, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 34, 84, 79, 76, 85,
+     65, 95, 65, 80, 73, 32,105,110,116, 32,108,117, 97,111,112,
+    101,110, 95, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 32, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+     32,116,111,108,117, 97, 95, 83, 41, 32,123, 34, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 34, 32,114,
+    101,116,117,114,110, 32,116,111,108,117, 97, 95, 34, 46, 46,
+    115,101,108,102, 46,110, 97,109,101, 46, 46, 34, 95,111,112,
+    101,110, 40,116,111,108,117, 97, 95, 83, 41, 59, 34, 41, 10,
+     32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 34,125,
+     59, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,101,
+    110,100,105,102, 92,110, 92,110, 34, 41, 10, 10,  9,112,111,
+    112, 40, 41, 10,101,110,100, 10, 10, 45, 45, 32,119,114,105,
+    116,101, 32,104,101, 97,100,101,114, 32,102,105,108,101, 10,
+    102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 80,
+     97, 99,107, 97,103,101, 58,104,101, 97,100,101,114, 32, 40,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 47, 42, 92,110,
+     39, 41, 32,111,117,116,112,117,116, 40, 39, 42, 42, 32, 76,
+    117, 97, 32, 98,105,110,100,105,110,103, 58, 32, 39, 46, 46,
+    115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 92,110, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 42, 42, 32, 71,
+    101,110,101,114, 97,116,101,100, 32, 97,117,116,111,109, 97,
+    116,105, 99, 97,108,108,121, 32, 98,121, 32, 39, 46, 46, 84,
+     79, 76, 85, 65, 95, 86, 69, 82, 83, 73, 79, 78, 46, 46, 39,
+     32,111,110, 32, 39, 46, 46,100, 97,116,101, 40, 41, 46, 46,
+     39, 46, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 42, 47, 92,110, 92,110, 39, 41, 10, 10, 32,105,102, 32,
+    110,111,116, 32,102,108, 97,103,115, 46,104, 32,116,104,101,
+    110, 10, 32, 32,111,117,116,112,117,116, 40, 39, 47, 42, 32,
+     69,120,112,111,114,116,101,100, 32,102,117,110, 99,116,105,
+    111,110, 32, 42, 47, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 84, 79, 76, 85, 65, 95, 65, 80, 73, 32,105,110,
+    116, 32, 32,116,111,108,117, 97, 95, 39, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 39, 95,111,112,101,110, 32,
+     40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,108,
+    117, 97, 95, 83, 41, 59, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 92,110, 39, 41, 10, 32,101,110,100, 10,101,
+    110,100, 10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,102,117,
+    110, 99,116,105,111,110, 32, 95, 80, 97, 99,107, 97,103,101,
+     32, 40,115,101,108,102, 41, 10, 32,115,101,116,109,101,116,
+     97,116, 97, 98,108,101, 40,115,101,108,102, 44, 99,108, 97,
+    115,115, 80, 97, 99,107, 97,103,101, 41, 10, 32,114,101,116,
+    117,114,110, 32,115,101,108,102, 10,101,110,100, 10, 10, 45,
+     45, 32, 80, 97,114,115,101, 32, 67, 32,104,101, 97,100,101,
+    114, 32,102,105,108,101, 32,119,105,116,104, 32,116,111,108,
+    117, 97, 32,100,105,114,101, 99,116,105,118,101,115, 10, 45,
+     45, 32, 42, 42, 42, 32, 84,104, 97,110,107,115, 32,116,111,
+     32, 65,114,105,101,108, 32, 77, 97,110,122,117,114, 32,102,
+    111,114, 32,102,105,120,105,110,103, 32, 98,117,103,115, 32,
+    105,110, 32,110,101,115,116,101,100, 32,100,105,114,101, 99,
+    116,105,118,101,115, 32, 42, 42, 42, 10,102,117,110, 99,116,
+    105,111,110, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,
+    101, 40,102,110, 44,115, 41, 10,  9,108,111, 99, 97,108, 32,
+     99,111,100,101, 32, 61, 32, 39, 92,110, 36, 35,105,110, 99,
+    108,117,100,101, 32, 34, 39, 46, 46,102,110, 46, 46, 39, 34,
+     92,110, 39, 10,  9,115, 61, 32, 34, 92,110, 34, 32, 46, 46,
+     32,115, 32, 46, 46, 32, 34, 92,110, 34, 32, 45, 45, 32, 97,
+    100,100, 32, 98,108, 97,110,107, 32,108,105,110,101,115, 32,
+     97,115, 32,115,101,110,116,105,110,101,108,115, 10,  9,108,
+    111, 99, 97,108, 32, 95, 44,101, 44, 99, 44,116, 32, 61, 32,
+    115,116,114,102,105,110,100, 40,115, 44, 32, 34, 92,110, 40,
+     91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91, 79,111, 93,
+     91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93, 95, 40, 91,
+     94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42, 92,110, 34,
+     41, 10,  9,119,104,105,108,101, 32,101, 32,100,111, 10,  9,
+      9,116, 32, 61, 32,115,116,114,108,111,119,101,114, 40,116,
+     41, 10,  9,  9,105,102, 32,116, 32, 61, 61, 32, 34, 98,101,
+    103,105,110, 34, 32,116,104,101,110, 10,  9,  9,  9, 95, 44,
+    101, 44, 99, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+     44, 34, 40, 46, 45, 41, 92,110, 91, 94, 92,110, 93, 42, 91,
+     84,116, 93, 91, 79,111, 93, 91, 76,108, 93, 91, 85,117, 93,
+     91, 65, 97, 93, 95, 91, 69,101, 93, 91, 78,110, 93, 91, 68,
+    100, 93, 91, 94, 92,110, 93, 42, 92,110, 34, 44,101, 41, 10,
+      9,  9,  9,105,102, 32,110,111,116, 32,101, 32,116,104,101,
+    110, 10,  9,  9,  9, 32,116,111,108,117, 97, 95,101,114,114,
+    111,114, 40, 34, 85,110, 98, 97,108, 97,110, 99,101,100, 32,
+     39,116,111,108,117, 97, 95, 98,101,103,105,110, 39, 32,100,
+    105,114,101, 99,116,105,118,101, 32,105,110, 32,104,101, 97,
+    100,101,114, 32,102,105,108,101, 34, 41, 10,  9,  9,  9,101,
+    110,100, 10,  9,  9,101,110,100, 10,  9,  9, 99,111,100,101,
+     32, 61, 32, 99,111,100,101, 32, 46, 46, 32, 99, 32, 46, 46,
+     32, 34, 92,110, 34, 10,  9, 32, 95, 44,101, 44, 99, 44,116,
+     32, 61, 32,115,116,114,102,105,110,100, 40,115, 44, 32, 34,
+     92,110, 40, 91, 94, 92,110, 93, 45, 41, 91, 84,116, 93, 91,
+     79,111, 93, 91, 76,108, 93, 91, 85,117, 93, 91, 65, 97, 93,
+     95, 40, 91, 94, 37,115, 93, 42, 41, 91, 94, 92,110, 93, 42,
+     92,110, 34, 44,101, 41, 10,  9,101,110,100, 10,  9,114,101,
+    116,117,114,110, 32, 99,111,100,101, 10,101,110,100, 10, 10,
+     45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10,
+     45, 45, 32, 69,120,112,101, 99,116,115, 32,116,104,101, 32,
+    112, 97, 99,107, 97,103,101, 32,110, 97,109,101, 44, 32,116,
+    104,101, 32,102,105,108,101, 32,101,120,116,101,110,115,105,
+    111,110, 44, 32, 97,110,100, 32,116,104,101, 32,102,105,108,
+    101, 32,116,101,120,116, 46, 10,102,117,110, 99,116,105,111,
+    110, 32, 80, 97, 99,107, 97,103,101, 32, 40,110, 97,109,101,
+     44,102,110, 41, 10, 32,108,111, 99, 97,108, 32,101,120,116,
+     32, 61, 32, 34,112,107,103, 34, 10, 10, 32, 45, 45, 32,111,
+    112,101,110, 32,105,110,112,117,116, 32,102,105,108,101, 44,
+     32,105,102, 32, 97,110,121, 10, 32,105,102, 32,102,110, 32,
+    116,104,101,110, 10, 32, 32,108,111, 99, 97,108, 32,115,116,
+     44, 32,109,115,103, 32, 61, 32,114,101, 97,100,102,114,111,
+    109, 40,102,108, 97,103,115, 46,102, 41, 10, 32, 32,105,102,
+     32,110,111,116, 32,115,116, 32,116,104,101,110, 10, 32, 32,
+     32,101,114,114,111,114, 40, 39, 35, 39, 46, 46,109,115,103,
+     41, 10, 32, 32,101,110,100, 10,  9,  9,108,111, 99, 97,108,
+     32, 95, 59, 32, 95, 44, 32, 95, 44, 32,101,120,116, 32, 61,
+     32,115,116,114,102,105,110,100, 40,102,110, 44, 34, 46, 42,
+     37, 46, 40, 46, 42, 41, 36, 34, 41, 10, 32,101,110,100, 10,
+     32,108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32, 34,
+     92,110, 34, 32, 46, 46, 32,114,101, 97,100, 40, 39, 42, 97,
+     39, 41, 10,  9,105,102, 32,101,120,116, 32, 61, 61, 32, 39,
+    104, 39, 32,111,114, 32,101,120,116, 32, 61, 61, 32, 39,104,
+    112,112, 39, 32,116,104,101,110, 10,  9, 32, 99,111,100,101,
+     32, 61, 32,101,120,116,114, 97, 99,116, 95, 99,111,100,101,
+     40,102,110, 44, 99,111,100,101, 41, 10,  9,101,110,100, 10,
+     10, 32, 45, 45, 32, 99,108,111,115,101, 32,102,105,108,101,
+     10, 32,105,102, 32,102,110, 32,116,104,101,110, 10, 32, 32,
+    114,101, 97,100,102,114,111,109, 40, 41, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32,100,101, 97,108, 32,119,105,116,104,
+     32,105,110, 99,108,117,100,101, 32,100,105,114,101, 99,116,
+    105,118,101, 10, 32,108,111, 99, 97,108, 32,110,115,117, 98,
+    115,116, 10, 32,114,101,112,101, 97,116, 10, 32, 32, 99,111,
+    100,101, 44,110,115,117, 98,115,116, 32, 61, 32,103,115,117,
+     98, 40, 99,111,100,101, 44, 39, 92,110, 37,115, 42, 37, 36,
+     40, 46, 41,102,105,108,101, 37,115, 42, 34, 40, 46, 45, 41,
+     34, 40, 91, 94, 92,110, 93, 42, 41, 92,110, 39, 44, 10,  9,
+      9,102,117,110, 99,116,105,111,110, 32, 40,107,105,110,100,
+     44,102,110, 44,101,120,116,114, 97, 41, 10,  9,  9,  9,108,
+    111, 99, 97,108, 32, 95, 44, 32, 95, 44, 32,101,120,116, 32,
+     61, 32,115,116,114,102,105,110,100, 40,102,110, 44, 34, 46,
+     42, 37, 46, 40, 46, 42, 41, 36, 34, 41, 10,  9,  9,  9,108,
+    111, 99, 97,108, 32,102,112, 44,109,115,103, 32, 61, 32,111,
+    112,101,110,102,105,108,101, 40,102,110, 44, 39,114, 39, 41,
+     10,  9,  9,  9,105,102, 32,110,111,116, 32,102,112, 32,116,
+    104,101,110, 10,  9,  9,  9,  9,101,114,114,111,114, 40, 39,
+     35, 39, 46, 46,109,115,103, 46, 46, 39, 58, 32, 39, 46, 46,
+    102,110, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,108,
+    111, 99, 97,108, 32,115, 32, 61, 32,114,101, 97,100, 40,102,
+    112, 44, 39, 42, 97, 39, 41, 10,  9,  9,  9, 99,108,111,115,
+    101,102,105,108,101, 40,102,112, 41, 10,  9,  9,  9,105,102,
+     32,107,105,110,100, 32, 61, 61, 32, 39, 99, 39, 32,111,114,
+     32,107,105,110,100, 32, 61, 61, 32, 39,104, 39, 32,116,104,
+    101,110, 10,  9,  9,  9,  9,114,101,116,117,114,110, 32,101,
+    120,116,114, 97, 99,116, 95, 99,111,100,101, 40,102,110, 44,
+    115, 41, 10,  9,  9,  9,101,108,115,101,105,102, 32,107,105,
+    110,100, 32, 61, 61, 32, 39,112, 39, 32,116,104,101,110, 10,
+      9,  9,  9,  9,114,101,116,117,114,110, 32, 34, 92,110, 92,
+    110, 34, 32, 46, 46, 32,115, 10,  9,  9,  9,101,108,115,101,
+    105,102, 32,107,105,110,100, 32, 61, 61, 32, 39,108, 39, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,114,101,116,117,114,110,
+     32, 34, 92,110, 36, 91, 45, 45, 35, 35, 34, 46, 46,102,110,
+     46, 46, 34, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32,
+     34, 92,110, 36, 93, 92,110, 34, 10,  9,  9,  9,101,108,115,
+    101,105,102, 32,107,105,110,100, 32, 61, 61, 32, 39,105, 39,
+     32,116,104,101,110, 10,  9,  9,  9,  9,108,111, 99, 97,108,
+     32,116, 32, 61, 32,123, 99,111,100,101, 61,115,125, 10,  9,
+      9,  9,  9,101,120,116,114, 97, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,101,120,116,114, 97, 44, 32,
+     34, 94, 37,115, 42, 44, 37,115, 42, 34, 44, 32, 34, 34, 41,
+     10,  9,  9,  9,  9,108,111, 99, 97,108, 32,112, 97,114,115,
+     32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,
+    110,115, 40,101,120,116,114, 97, 44, 32, 34, 44, 34, 41, 10,
+      9,  9,  9,  9,105,110, 99,108,117,100,101, 95,102,105,108,
+    101, 95,104,111,111,107, 40,116, 44, 32,102,110, 44, 32,117,
+    110,112, 97, 99,107, 40,112, 97,114,115, 41, 41, 10,  9,  9,
+      9,  9,114,101,116,117,114,110, 32, 34, 92,110, 92,110, 34,
+     32, 46, 46, 32,116, 46, 99,111,100,101, 10,  9,  9,  9,101,
+    108,115,101, 10,  9,  9,  9,  9,101,114,114,111,114, 40, 39,
+     35, 73,110,118, 97,108,105,100, 32,105,110, 99,108,117,100,
+    101, 32,100,105,114,101, 99,116,105,118,101, 32, 40,117,115,
+    101, 32, 36, 99,102,105,108,101, 44, 32, 36,112,102,105,108,
+    101, 44, 32, 36,108,102,105,108,101, 32,111,114, 32, 36,105,
+    102,105,108,101, 41, 39, 41, 10,  9,  9,  9,101,110,100, 10,
+      9,  9,101,110,100, 41, 10, 32,117,110,116,105,108, 32,110,
+    115,117, 98,115,116, 61, 61, 48, 10, 10, 32, 45, 45, 32,100,
+    101, 97,108, 32,119,105,116,104, 32,114,101,110, 97,109,105,
+    110,103, 32,100,105,114,101, 99,116,105,118,101, 10, 32,114,
+    101,112,101, 97,116, 32, 45, 45, 32, 73, 32,100,111,110, 39,
+    116, 32,107,110,111,119, 32,119,104,121, 32,116,104,105,115,
+     32,105,115, 32,110,101, 99,101,115, 97,114,121, 10,  9, 99,
+    111,100,101, 44,110,115,117, 98,115,116, 32, 61, 32,103,115,
+    117, 98, 40, 99,111,100,101, 44, 39, 92,110, 37,115, 42, 37,
+     36,114,101,110, 97,109,105,110,103, 37,115, 42, 40, 46, 45,
+     41, 37,115, 42, 92,110, 39, 44, 32,102,117,110, 99,116,105,
+    111,110, 32, 40,114, 41, 32, 97,112,112,101,110,100,114,101,
+    110, 97,109,105,110,103, 40,114, 41, 32,114,101,116,117,114,
+    110, 32, 34, 92,110, 34, 32,101,110,100, 41, 10, 32,117,110,
+    116,105,108, 32,110,115,117, 98,115,116, 32, 61, 61, 32, 48,
+     10, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32, 95, 80,
+     97, 99,107, 97,103,101, 40, 95, 67,111,110,116, 97,105,110,
+    101,114,123,110, 97,109,101, 61,110, 97,109,101, 44, 32, 99,
+    111,100,101, 61, 99,111,100,101,125, 41, 10, 32,112,117,115,
+    104, 40,116, 41, 10, 32,112,114,101,112,114,111, 99,101,115,
+    115, 95,104,111,111,107, 40,116, 41, 10, 32,116, 58,112,114,
+    101,112,114,111, 99,101,115,115, 40, 41, 10, 32,112,114,101,
+    112, 97,114,115,101, 95,104,111,111,107, 40,116, 41, 10, 32,
+    116, 58,112, 97,114,115,101, 40,116, 46, 99,111,100,101, 41,
+     10, 32,112,111,112, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/package.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,109,111,100,117,108,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45, 45, 32,
+     77,111,100,117,108,101, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 82,101,112,114,101,115,101,110,116,115, 32,109,111,100,
+    117,108,101, 46, 10, 45, 45, 32, 84,104,101, 32,102,111,108,
+    108,111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,
+    114,101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32,
+     32, 32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102,
+     32,111, 98,106,101, 99,116,115, 32,105,110, 32,116,104,101,
+     32,109,111,100,117,108,101, 46, 10, 99,108, 97,115,115, 77,
+    111,100,117,108,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,109,111,100,117,108,101,
+     39, 10,125, 10, 99,108, 97,115,115, 77,111,100,117,108,101,
+     46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,115,
+    115, 77,111,100,117,108,101, 10,115,101,116,109,101,116, 97,
+    116, 97, 98,108,101, 40, 99,108, 97,115,115, 77,111,100,117,
+    108,101, 44, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+    101,114, 41, 10, 10, 45, 45, 32,114,101,103,105,115,116,101,
+    114, 32,109,111,100,117,108,101, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 77,111,100,117,108,101, 58,
+    114,101,103,105,115,116,101,114, 32, 40,112,114,101, 41, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,112,117,115,104, 40,115,101,108,102, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95,109,111,100,117,108,101, 40,116,111,108,117,
+     97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,110, 97,
+    109,101, 46, 46, 39, 34, 44, 39, 44,115,101,108,102, 58,104,
+     97,115,118, 97,114, 40, 41, 44, 39, 41, 59, 39, 41, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95, 98,101,103,105,110,109,111,100,117,108,101,
+     40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,
+    108,102, 46,110, 97,109,101, 46, 46, 39, 34, 41, 59, 39, 41,
+     10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,115,101,108,102, 91,105, 93, 58,114,101,103,105,115,
+    116,101,114, 40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32,
+     32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,
+    111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,
+    108,117, 97, 95,101,110,100,109,111,100,117,108,101, 40,116,
+    111,108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112,
+     40, 41, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 77,111,100,117,108,101, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 77,111,100,117,108,101,123, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 34, 39, 59, 34, 41, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,
+    115,101,108,102, 91,105, 93, 58,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 32, 34, 44, 34, 44, 34, 41, 10,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+    125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
+     10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 77,111,100,117,108,101, 32, 40,116, 41,
+     10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,
+    116, 44, 99,108, 97,115,115, 77,111,100,117,108,101, 41, 10,
+     32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,
+    111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,
+    120,112,101, 99,116,115, 32,116,119,111, 32,115,116,114,105,
+    110,103, 32,114,101,112,114,101,115,101,110,116,105,110,103,
+     32,116,104,101, 32,109,111,100,117,108,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32, 98,111,100,121, 46, 10,102,117,110,
+     99,116,105,111,110, 32, 77,111,100,117,108,101, 32, 40,110,
+     44, 98, 41, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,
+     95, 77,111,100,117,108,101, 40, 95, 67,111,110,116, 97,105,
+    110,101,114,123,110, 97,109,101, 61,110,125, 41, 10, 32,112,
+    117,115,104, 40,116, 41, 10, 32,116, 58,112, 97,114,115,101,
+     40,115,116,114,115,117, 98, 40, 98, 44, 50, 44,115,116,114,
+    108,101,110, 40, 98, 41, 45, 49, 41, 41, 32, 45, 45, 32,101,
+    108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,101,115,
+     10, 32,112,111,112, 40, 41, 10, 32,114,101,116,117,114,110,
+     32,116, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/module.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,110, 97,109,101,115,
+    112, 97, 99,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 50, 48, 48, 51, 10, 45, 45, 32, 36,
+     73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32,
+     99,111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,
+    102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110,
+     32,114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,
+    116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121,
+     32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,
+    116,119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,
+    104,101,114,101,117,110,100,101,114, 32,105,115, 32,111,110,
+     32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,
+    105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32,
+     97,117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111,
+     98,108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,
+    111,118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110,
+     99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,
+    100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110,
+     99,101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,
+    105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45,
+     45, 32, 78, 97,109,101,115,112, 97, 99,101, 32, 99,108, 97,
+    115,115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,
+    115, 32, 97, 32,110, 97,109,101,115, 97,112, 99,101, 32,100,
+    101,102,105,110,105,116,105,111,110, 46, 10, 45, 45, 32, 83,
+    116,111,114,101,115, 32,116,104,101, 32,102,111,108,108,111,
+    119,105,110,103, 32,102,105,101,108,100,115, 58, 10, 45, 45,
+     32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,108, 97,115,
+    115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32, 32,123,105,
+    125, 32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,
+    109, 98,101,114,115, 10, 99,108, 97,115,115, 78, 97,109,101,
+    115,112, 97, 99,101, 32, 61, 32,123, 10, 32, 99,108, 97,115,
+    115,116,121,112,101, 32, 61, 32, 39,110, 97,109,101,115,112,
+     97, 99,101, 39, 44, 10, 32,110, 97,109,101, 32, 61, 32, 39,
+     39, 44, 10,125, 10, 99,108, 97,115,115, 78, 97,109,101,115,
+    112, 97, 99,101, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 78, 97,109,101,115,112, 97, 99,101, 44, 99,108,
+     97,115,115, 77,111,100,117,108,101, 41, 10, 10, 45, 45, 32,
+     80,114,105,110,116, 32,109,101,116,104,111,100, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 78, 97,109,
+    101,115,112, 97, 99,101, 58,112,114,105,110,116, 32, 40,105,
+    100,101,110,116, 44, 99,108,111,115,101, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 78, 97,109,
+    101,115,112, 97, 99,101,123, 34, 41, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101,
+     32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,
+    101, 46, 46, 34, 39, 44, 34, 41, 10, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,
+    105, 93, 58,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46, 99,
+    108,111,115,101, 41, 10,101,110,100, 10, 10, 45, 45, 32, 73,
+    110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117,
+     99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95,
+     78, 97,109,101,115,112, 97, 99,101, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 78, 97,109,101,115,112, 97, 99,101, 41,
+     10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,
+    116,117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32,
+     69,120,112,101, 99,116,115, 32,116,104,101, 32,110, 97,109,
+    101, 32, 97,110,100, 32,116,104,101, 32, 98,111,100,121, 32,
+    111,102, 32,116,104,101, 32,110, 97,109,101,115,112, 97, 99,
+    101, 46, 10,102,117,110, 99,116,105,111,110, 32, 78, 97,109,
+    101,115,112, 97, 99,101, 32, 40,110, 44, 98, 41, 10, 32,108,
+    111, 99, 97,108, 32, 99, 32, 61, 32, 95, 78, 97,109,101,115,
+    112, 97, 99,101, 40, 95, 67,111,110,116, 97,105,110,101,114,
+    123,110, 97,109,101, 61,110,125, 41, 10, 32,112,117,115,104,
+     40, 99, 41, 10, 32, 99, 58,112, 97,114,115,101, 40,115,116,
+    114,115,117, 98, 40, 98, 44, 50, 44,115,116,114,108,101,110,
+     40, 98, 41, 45, 49, 41, 41, 32, 45, 45, 32,101,108,105,109,
+    105,110, 97,116,101, 32, 98,114, 97, 99,101,115, 10, 32,112,
+    111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/namespace.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101,102,105,110,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,
+    116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114,
+     32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114,
+     97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,
+    117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58,
+     32,100,101,102,105,110,101, 46,108,117, 97, 44,118, 32, 49,
+     46, 50, 32, 49, 57, 57, 57, 47, 48, 55, 47, 50, 56, 32, 50,
+     50, 58, 50, 49, 58, 48, 56, 32, 99,101,108,101,115, 32, 69,
+    120,112, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 68,101,102,105,110,101, 32, 99,108, 97,115,115, 10, 45,
+     45, 32, 82,101,112,114,101,115,101,110,116,115, 32, 97, 32,
+    110,117,109,101,114,105, 99, 32, 99,111,110,115,116, 32,100,
+    101,102,105,110,105,116,105,111,110, 10, 45, 45, 32, 84,104,
+    101, 32,102,111,108,108,111,119,105,110,103, 32,102,105,108,
+    100,115, 32, 97,114,101, 32,115,116,111,114,101,100, 58, 10,
+     45, 45, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,111,110,
+    115,116, 97,110,116, 32,110, 97,109,101, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 32, 61, 32,123, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,115,
+    115, 68,101,102,105,110,101, 46, 95, 95,105,110,100,101,120,
+     32, 61, 32, 99,108, 97,115,115, 68,101,102,105,110,101, 10,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108,
+     97,115,115, 68,101,102,105,110,101, 44, 99,108, 97,115,115,
+     70,101, 97,116,117,114,101, 41, 10, 10, 45, 45, 32,114,101,
+    103,105,115,116,101,114, 32,100,101,102,105,110,101, 10,102,
+    117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101,
+    102,105,110,101, 58,114,101,103,105,115,116,101,114, 32, 40,
+    112,114,101, 41, 10,  9,105,102, 32,110,111,116, 32,115,101,
+    108,102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99,
+     95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,
+      9,  9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 10,
+     32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39,
+     39, 10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     39,116,111,108,117, 97, 95, 99,111,110,115,116, 97,110,116,
+     40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,
+    108,102, 46,108,110, 97,109,101, 46, 46, 39, 34, 44, 39, 46,
+     46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 41, 59,
+     39, 41, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,110,
+    116, 32,109,101,116,104,111,100, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 68,101,102,105,110,101, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 68,101,102,105,110,101,123, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    108,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,108,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+    125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10,
+     10, 10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,
+    111,110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,
+    116,105,111,110, 32, 95, 68,101,102,105,110,101, 32, 40,116,
+     41, 10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40,116, 44, 99,108, 97,115,115, 68,101,102,105,110,101, 41,
+     10, 32,116, 58, 98,117,105,108,100,110, 97,109,101,115, 40,
+     41, 10, 10, 32,105,102, 32,116, 46,110, 97,109,101, 32, 61,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,101,114,114,
+    111,114, 40, 34, 35,105,110,118, 97,108,105,100, 32,100,101,
+    102,105,110,101, 34, 41, 10, 32,101,110,100, 10, 10, 32, 97,
+    112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32, 97, 32,115,116,114,105,110,103, 32,114,
+    101,112,114,101,115,101,110,116,105,110,103, 32,116,104,101,
+     32, 99,111,110,115,116, 97,110,116, 32,110, 97,109,101, 10,
+    102,117,110, 99,116,105,111,110, 32, 68,101,102,105,110,101,
+     32, 40,110, 41, 10, 32,114,101,116,117,114,110, 32, 95, 68,
+    101,102,105,110,101,123, 10, 32, 32,110, 97,109,101, 32, 61,
+     32,110, 10, 32,125, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/define.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,101,110,117,109,101,
+    114, 97,116,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,
+    114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,
+    109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101,
+     67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45,
+     45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36,
+     73,100, 58, 32,101,110,117,109,101,114, 97,116,101, 46,108,
+    117, 97, 44,118, 32, 49, 46, 51, 32, 50, 48, 48, 48, 47, 48,
+     49, 47, 50, 52, 32, 50, 48, 58, 52, 49, 58, 49, 53, 32, 99,
+    101,108,101,115, 32, 69,120,112, 32, 36, 10, 10, 45, 45, 32,
+     84,104,105,115, 32, 99,111,100,101, 32,105,115, 32,102,114,
+    101,101, 32,115,111,102,116,119, 97,114,101, 59, 32,121,111,
+    117, 32, 99, 97,110, 32,114,101,100,105,115,116,114,105, 98,
+    117,116,101, 32,105,116, 32, 97,110,100, 47,111,114, 32,109,
+    111,100,105,102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,
+    101, 32,115,111,102,116,119, 97,114,101, 32,112,114,111,118,
+    105,100,101,100, 32,104,101,114,101,117,110,100,101,114, 32,
+    105,115, 32,111,110, 32, 97,110, 32, 34, 97,115, 32,105,115,
+     34, 32, 98, 97,115,105,115, 44, 32, 97,110,100, 10, 45, 45,
+     32,116,104,101, 32, 97,117,116,104,111,114, 32,104, 97,115,
+     32,110,111, 32,111, 98,108,105,103, 97,116,105,111,110, 32,
+    116,111, 32,112,114,111,118,105,100,101, 32,109, 97,105,110,
+    116,101,110, 97,110, 99,101, 44, 32,115,117,112,112,111,114,
+    116, 44, 32,117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,
+    101,110,104, 97,110, 99,101,109,101,110,116,115, 44, 32,111,
+    114, 32,109,111,100,105,102,105, 99, 97,116,105,111,110,115,
+     46, 10, 10, 10, 45, 45, 32, 69,110,117,109,101,114, 97,116,
+    101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,
+    101,115,101,110,116,115, 32,101,110,117,109,101,114, 97,116,
+    105,111,110, 10, 45, 45, 32, 84,104,101, 32,102,111,108,108,
+    111,119,105,110,103, 32,102,105,101,108,100,115, 32, 97,114,
+    101, 32,115,116,111,114,101,100, 58, 10, 45, 45, 32, 32, 32,
+     32,123,105,125, 32, 61, 32,108,105,115,116, 32,111,102, 32,
+     99,111,110,115,116, 97,110,116, 32,110, 97,109,101,115, 10,
+     99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 32,
+     61, 32,123, 10,125, 10, 99,108, 97,115,115, 69,110,117,109,
+    101,114, 97,116,101, 46, 95, 95,105,110,100,101,120, 32, 61,
+     32, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,101,
+     10,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,
+    108, 97,115,115, 69,110,117,109,101,114, 97,116,101, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32,114,101,103,105,115,116,101,114, 32,101,110,117,109,
+    101,114, 97,116,105,111,110, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 69,110,117,109,101,114, 97,116,
+    101, 58,114,101,103,105,115,116,101,114, 32, 40,112,114,101,
+     41, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,111,114,
+     32, 39, 39, 10, 32,108,111, 99, 97,108, 32,110,115,112, 97,
+     99,101, 32, 61, 32,103,101,116,110, 97,109,101,115,112, 97,
+     99,101, 40, 99,108, 97,115,115, 67,111,110,116, 97,105,110,
+    101,114, 46, 99,117,114,114, 41, 10, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,111,117,116,112,117,
+    116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97, 95, 99,
+    111,110,115,116, 97,110,116, 40,116,111,108,117, 97, 95, 83,
+     44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101,
+    115, 91,105, 93, 46, 46, 39, 34, 44, 39, 46, 46,110,115,112,
+     97, 99,101, 46, 46,115,101,108,102, 91,105, 93, 46, 46, 39,
+     41, 59, 39, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 80,114,
+    105,110,116, 32,109,101,116,104,111,100, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 69,110,117,109,101,
+    114, 97,116,101, 58,112,114,105,110,116, 32, 40,105,100,101,
+    110,116, 44, 99,108,111,115,101, 41, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34, 69,110,117,109,101,
+    114, 97,116,101,123, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32, 61,
+     32, 34, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,
+    108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 39, 34, 46, 46,115,101,108,102, 91,105, 93, 46, 46, 34,
+     39, 40, 34, 46, 46,115,101,108,102, 46,108,110, 97,109,101,
+    115, 91,105, 93, 46, 46, 34, 41, 44, 34, 41, 10, 32, 32,105,
+     32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46,
+     46, 99,108,111,115,101, 41, 10,101,110,100, 10, 10, 45, 45,
+     32, 73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,
+    114,117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110,
+     32, 95, 69,110,117,109,101,114, 97,116,101, 32, 40,116, 44,
+    118, 97,114,110, 97,109,101, 41, 10, 32,115,101,116,109,101,
+    116, 97,116, 97, 98,108,101, 40,116, 44, 99,108, 97,115,115,
+     69,110,117,109,101,114, 97,116,101, 41, 10, 32, 97,112,112,
+    101,110,100, 40,116, 41, 10, 32, 97,112,112,101,110,100,101,
+    110,117,109, 40,116, 41, 10,  9, 32,105,102, 32,118, 97,114,
+    110, 97,109,101, 32, 97,110,100, 32,118, 97,114,110, 97,109,
+    101, 32,126, 61, 32, 34, 34, 32,116,104,101,110, 10,  9,  9,
+    105,102, 32,116, 46,110, 97,109,101, 32,126, 61, 32, 34, 34,
+     32,116,104,101,110, 10,  9,  9,  9, 86, 97,114,105, 97, 98,
+    108,101, 40,116, 46,110, 97,109,101, 46, 46, 34, 32, 34, 46,
+     46,118, 97,114,110, 97,109,101, 41, 10,  9,  9,101,108,115,
+    101, 10,  9,  9,  9,108,111, 99, 97,108, 32,110,115, 32, 61,
+     32,103,101,116, 99,117,114,114,110, 97,109,101,115,112, 97,
+     99,101, 40, 41, 10,  9,  9,  9,119, 97,114,110,105,110,103,
+     40, 34, 86, 97,114,105, 97, 98,108,101, 32, 34, 46, 46,110,
+    115, 46, 46,118, 97,114,110, 97,109,101, 46, 46, 34, 32,111,
+    102, 32,116,121,112,101, 32, 60, 97,110,111,110,121,109,111,
+    117,115, 32,101,110,117,109, 62, 32,105,115, 32,100,101, 99,
+    108, 97,114,101,100, 32, 97,115, 32,114,101, 97,100, 45,111,
+    110,108,121, 34, 41, 10,  9,  9,  9, 86, 97,114,105, 97, 98,
+    108,101, 40, 34,116,111,108,117, 97, 95,114,101, 97,100,111,
+    110,108,121, 32,105,110,116, 32, 34, 46, 46,118, 97,114,110,
+     97,109,101, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10,114,101,116,117,114,110, 32,116, 10,101,110,100, 10, 10,
+     45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114, 10,
+     45, 45, 32, 69,120,112,101, 99,116,115, 32, 97, 32,115,116,
+    114,105,110,103, 32,114,101,112,114,101,115,101,110,116,105,
+    110,103, 32,116,104,101, 32,101,110,117,109,101,114, 97,116,
+    101, 32, 98,111,100,121, 10,102,117,110, 99,116,105,111,110,
+     32, 69,110,117,109,101,114, 97,116,101, 32, 40,110, 44, 98,
+     44,118, 97,114,110, 97,109,101, 41, 10,  9, 98, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40, 98, 44, 32,
+     34, 44, 91, 37,115, 92,110, 93, 42,125, 34, 44, 32, 34, 92,
+    110,125, 34, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,
+    116,101, 32,108, 97,115,116, 32, 39, 44, 39, 10, 32,108,111,
+     99, 97,108, 32,116, 32, 61, 32,115,112,108,105,116, 40,115,
+    116,114,115,117, 98, 40, 98, 44, 50, 44, 45, 50, 41, 44, 39,
+     44, 39, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,
+    101, 32, 98,114, 97, 99,101,115, 10, 32,108,111, 99, 97,108,
+     32,105, 32, 61, 32, 49, 10, 32,108,111, 99, 97,108, 32,101,
+     32, 61, 32,123,110, 61, 48,125, 10, 32,119,104,105,108,101,
+     32,116, 91,105, 93, 32,100,111, 10, 32, 32,108,111, 99, 97,
+    108, 32,116,116, 32, 61, 32,115,112,108,105,116, 40,116, 91,
+    105, 93, 44, 39, 61, 39, 41, 32, 32, 45, 45, 32,100,105,115,
+     99, 97,114,100, 32,105,110,105,116,105, 97,108, 32,118, 97,
+    108,117,101, 10, 32, 32,101, 46,110, 32, 61, 32,101, 46,110,
+     32, 43, 32, 49, 10, 32, 32,101, 91,101, 46,110, 93, 32, 61,
+     32,116,116, 91, 49, 93, 10, 32, 32,105, 32, 61, 32,105, 43,
+     49, 10, 32,101,110,100, 10, 32, 45, 45, 32,115,101,116, 32,
+    108,117, 97, 32,110, 97,109,101,115, 10, 32,105, 32, 32, 61,
+     32, 49, 10, 32,101, 46,108,110, 97,109,101,115, 32, 61, 32,
+    123,125, 10, 32,108,111, 99, 97,108, 32,110,115, 32, 61, 32,
+    103,101,116, 99,117,114,114,110, 97,109,101,115,112, 97, 99,
+    101, 40, 41, 10, 32,119,104,105,108,101, 32,101, 91,105, 93,
+     32,100,111, 10, 32, 32,108,111, 99, 97,108, 32,116, 32, 61,
+     32,115,112,108,105,116, 40,101, 91,105, 93, 44, 39, 64, 39,
+     41, 10, 32, 32,101, 91,105, 93, 32, 61, 32,116, 91, 49, 93,
+     10,  9,  9,105,102, 32,110,111,116, 32,116, 91, 50, 93, 32,
+    116,104,101,110, 10,  9,  9, 32,116, 91, 50, 93, 32, 61, 32,
+     97,112,112,108,121,114,101,110, 97,109,105,110,103, 40,116,
+     91, 49, 93, 41, 10,  9,  9,101,110,100, 10, 32, 32,101, 46,
+    108,110, 97,109,101,115, 91,105, 93, 32, 61, 32,116, 91, 50,
+     93, 32,111,114, 32,116, 91, 49, 93, 10, 32, 32, 95,103,108,
+    111, 98, 97,108, 95,101,110,117,109,115, 91, 32,110,115, 46,
+     46,101, 91,105, 93, 32, 93, 32, 61, 32, 40,110,115, 46, 46,
+    101, 91,105, 93, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10,  9,101, 46,110, 97,109,101, 32, 61,
+     32,110, 10,  9,105,102, 32,110, 32,126, 61, 32, 34, 34, 32,
+    116,104,101,110, 10,  9,  9, 84,121,112,101,100,101,102, 40,
+     34,105,110,116, 32, 34, 46, 46,110, 41, 10,  9,101,110,100,
+     10, 32,114,101,116,117,114,110, 32, 95, 69,110,117,109,101,
+    114, 97,116,101, 40,101, 44, 32,118, 97,114,110, 97,109,101,
+     41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/enumerate.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,100,101, 99,108, 97,
+    114, 97,116,105,111,110, 32, 99,108, 97,115,115, 10, 45, 45,
+     32, 87,114,105,116,116,101,110, 32, 98,121, 32, 87, 97,108,
+    100,101,109, 97,114, 32, 67,101,108,101,115, 10, 45, 45, 32,
+     84,101, 67, 71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111,
+     10, 45, 45, 32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45,
+     32, 36, 73,100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,
+    115, 32, 99,111,100,101, 32,105,115, 32,102,114,101,101, 32,
+    115,111,102,116,119, 97,114,101, 59, 32,121,111,117, 32, 99,
+     97,110, 32,114,101,100,105,115,116,114,105, 98,117,116,101,
+     32,105,116, 32, 97,110,100, 47,111,114, 32,109,111,100,105,
+    102,121, 32,105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,
+    111,102,116,119, 97,114,101, 32,112,114,111,118,105,100,101,
+    100, 32,104,101,114,101,117,110,100,101,114, 32,105,115, 32,
+    111,110, 32, 97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98,
+     97,115,105,115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,
+    101, 32, 97,117,116,104,111,114, 32,104, 97,115, 32,110,111,
+     32,111, 98,108,105,103, 97,116,105,111,110, 32,116,111, 32,
+    112,114,111,118,105,100,101, 32,109, 97,105,110,116,101,110,
+     97,110, 99,101, 44, 32,115,117,112,112,111,114,116, 44, 32,
+    117,112,100, 97,116,101,115, 44, 10, 45, 45, 32,101,110,104,
+     97,110, 99,101,109,101,110,116,115, 44, 32,111,114, 32,109,
+    111,100,105,102,105, 99, 97,116,105,111,110,115, 46, 10, 10,
+     10, 45, 45, 32, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,112,114,101,
+    115,101,110,116,115, 32,118, 97,114,105, 97, 98,108,101, 44,
+     32,102,117,110, 99,116,105,111,110, 44, 32,111,114, 32, 97,
+    114,103,117,109,101,110,116, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 45, 45, 32, 83,116,111,114,101,115,
+     32,116,104,101, 32,102,111,108,108,111,119,105,110,103, 32,
+    102,105,101,108,100,115, 58, 10, 45, 45, 32, 32,109,111,100,
+     32, 32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,
+    101,114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,
+    116,121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61,
+     32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102,
+     32,114,101,112,114,101,115,101,110,116,105,110,103, 32, 97,
+     32,112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,
+    101,102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,
+    109,101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,100,
+    105,109, 32, 32, 61, 32,100,105,109,101,110,115,105,111,110,
+     44, 32,105,102, 32, 97, 32,118,101, 99,116,111,114, 10, 45,
+     45, 32, 32,100,101,102, 32, 32, 61, 32,100,101,102, 97,117,
+    108,116, 32,118, 97,108,117,101, 44, 32,105,102, 32, 97,110,
+    121, 32, 40,111,110,108,121, 32,102,111,114, 32, 97,114,103,
+    117,109,101,110,116,115, 41, 10, 45, 45, 32, 32,114,101,116,
+     32, 32, 61, 32, 34, 42, 34, 32,111,114, 32, 34, 38, 34, 44,
+     32,105,102, 32,118, 97,108,117,101, 32,105,115, 32,116,111,
+     32, 98,101, 32,114,101,116,117,114,110,101,100, 32, 40,111,
+    110,108,121, 32,102,111,114, 32, 97,114,103,117,109,101,110,
+    116,115, 41, 10, 99,108, 97,115,115, 68,101, 99,108, 97,114,
+     97,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10, 32,
+    110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32,100,105,109,
+     32, 61, 32, 39, 39, 44, 10, 32,114,101,116, 32, 61, 32, 39,
+     39, 44, 10, 32,100,101,102, 32, 61, 32, 39, 39, 10,125, 10,
+     99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
+    110, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 10,115,
+    101,116,109,101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 44, 99,
+    108, 97,115,115, 70,101, 97,116,117,114,101, 41, 10, 10, 45,
+     45, 32, 67,114,101, 97,116,101, 32, 97,110, 32,117,110,105,
+    113,117,101, 32,118, 97,114,105, 97, 98,108,101, 32,110, 97,
+    109,101, 10,102,117,110, 99,116,105,111,110, 32, 99,114,101,
+     97,116,101, 95,118, 97,114,110, 97,109,101, 32, 40, 41, 10,
+     32,105,102, 32,110,111,116, 32, 95,118, 97,114,110,117,109,
+     98,101,114, 32,116,104,101,110, 32, 95,118, 97,114,110,117,
+    109, 98,101,114, 32, 61, 32, 48, 32,101,110,100, 10, 32, 95,
+    118, 97,114,110,117,109, 98,101,114, 32, 61, 32, 95,118, 97,
+    114,110,117,109, 98,101,114, 32, 43, 32, 49, 10, 32,114,101,
+    116,117,114,110, 32, 34,116,111,108,117, 97, 95,118, 97,114,
+     95, 34, 46, 46, 95,118, 97,114,110,117,109, 98,101,114, 10,
+    101,110,100, 10, 10, 45, 45, 32, 67,104,101, 99,107, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110, 32,110, 97,109,101,
+     10, 45, 45, 32, 73,116, 32, 97,108,115,111, 32,105,100,101,
+    110,116,105,102,105,101,115, 32,100,101,102, 97,117,108,116,
+     32,118, 97,108,117,101,115, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+    105,111,110, 58, 99,104,101, 99,107,110, 97,109,101, 32, 40,
+     41, 10, 10, 32,105,102, 32,115,116,114,115,117, 98, 40,115,
+    101,108,102, 46,110, 97,109,101, 44, 49, 44, 49, 41, 32, 61,
+     61, 32, 39, 91, 39, 32, 97,110,100, 32,110,111,116, 32,102,
+    105,110,100,116,121,112,101, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 32,116,104,101,110, 10, 32, 32,115,101,108,102,
+     46,110, 97,109,101, 32, 61, 32,115,101,108,102, 46,116,121,
+    112,101, 46, 46,115,101,108,102, 46,110, 97,109,101, 10, 32,
+     32,108,111, 99, 97,108, 32,109, 32, 61, 32,115,112,108,105,
+    116, 40,115,101,108,102, 46,109,111,100, 44, 39, 37,115, 37,
+    115, 42, 39, 41, 10, 32, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 32,109, 91,109, 46,110, 93, 10, 32, 32,115,101,
+    108,102, 46,109,111,100, 32, 61, 32, 99,111,110, 99, 97,116,
+     40,109, 44, 49, 44,109, 46,110, 45, 49, 41, 10, 32,101,110,
+    100, 10, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,
+    112,108,105,116, 40,115,101,108,102, 46,110, 97,109,101, 44,
+     39, 61, 39, 41, 10, 32,105,102, 32,116, 46,110, 61, 61, 50,
+     32,116,104,101,110, 10, 32, 32,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,116, 91, 49, 93, 10, 32, 32,115,101,108,
+    102, 46,100,101,102, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,116, 91,116, 46,110, 93, 41, 10,
+     32,101,110,100, 10, 10, 32,108,111, 99, 97,108, 32, 98, 44,
+    101, 44,100, 32, 61, 32,115,116,114,102,105,110,100, 40,115,
+    101,108,102, 46,110, 97,109,101, 44, 34, 37, 91, 40, 46, 45,
+     41, 37, 93, 34, 41, 10, 32,105,102, 32, 98, 32,116,104,101,
+    110, 10, 32, 32,115,101,108,102, 46,110, 97,109,101, 32, 61,
+     32,115,116,114,115,117, 98, 40,115,101,108,102, 46,110, 97,
+    109,101, 44, 49, 44, 98, 45, 49, 41, 10, 32, 32,115,101,108,
+    102, 46,100,105,109, 32, 61, 32,102,105,110,100, 95,101,110,
+    117,109, 95,118, 97,114, 40,100, 41, 10, 32,101,110,100, 10,
+     10, 10, 32,105,102, 32,115,101,108,102, 46,116,121,112,101,
+     32,126, 61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102,
+     46,116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39,
+     32, 97,110,100, 32,115,101,108,102, 46,110, 97,109,101, 32,
+     61, 61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,115,101,
+    108,102, 46,110, 97,109,101, 32, 61, 32, 99,114,101, 97,116,
+    101, 95,118, 97,114,110, 97,109,101, 40, 41, 10, 32,101,108,
+    115,101,105,102, 32,115,101,108,102, 46,107,105,110,100, 61,
+     61, 39,118, 97,114, 39, 32,116,104,101,110, 10, 32, 32,105,
+    102, 32,115,101,108,102, 46,116,121,112,101, 61, 61, 39, 39,
+     32, 97,110,100, 32,115,101,108,102, 46,110, 97,109,101,126,
+     61, 39, 39, 32,116,104,101,110, 10, 32, 32, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 32,115,101,108,102, 46,116,
+    121,112,101, 46, 46,115,101,108,102, 46,110, 97,109,101, 10,
+     32, 32, 32,115,101,108,102, 46,110, 97,109,101, 32, 61, 32,
+     99,114,101, 97,116,101, 95,118, 97,114,110, 97,109,101, 40,
+     41, 10, 32, 32,101,108,115,101,105,102, 32,102,105,110,100,
+    116,121,112,101, 40,115,101,108,102, 46,110, 97,109,101, 41,
+     32,116,104,101,110, 10, 32, 32, 32,105,102, 32,115,101,108,
+    102, 46,116,121,112,101, 61, 61, 39, 39, 32,116,104,101,110,
+     32,115,101,108,102, 46,116,121,112,101, 32, 61, 32,115,101,
+    108,102, 46,110, 97,109,101, 10, 32, 32, 32,101,108,115,101,
+     32,115,101,108,102, 46,116,121,112,101, 32, 61, 32,115,101,
+    108,102, 46,116,121,112,101, 46, 46, 39, 32, 39, 46, 46,115,
+    101,108,102, 46,110, 97,109,101, 32,101,110,100, 10, 32, 32,
+     32,115,101,108,102, 46,110, 97,109,101, 32, 61, 32, 99,114,
+    101, 97,116,101, 95,118, 97,114,110, 97,109,101, 40, 41, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32, 97,100,106,117,115,116, 32,116,121,112,101, 32,111,102,
+     32,115,116,114,105,110,103, 10, 32,105,102, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 61, 32, 39, 99,104, 97,114,
+     39, 32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,
+    126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9, 32,115,101,
+    108,102, 46,116,121,112,101, 32, 61, 32, 39, 99,104, 97,114,
+     42, 39, 10, 32,101,110,100, 10, 10,  9,105,102, 32,115,101,
+    108,102, 46,107,105,110,100, 32, 97,110,100, 32,115,101,108,
+    102, 46,107,105,110,100, 32, 61, 61, 32, 39,118, 97,114, 39,
+     32,116,104,101,110, 10,  9,  9,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115,101,108,102, 46,110, 97,109,101, 44, 32, 34, 58,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 32, 45, 45, 32, 63, 63,
+     63, 10,  9,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     67,104,101, 99,107, 32,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 32,116,121,112,101, 10, 45, 45, 32, 83,117, 98,115,
+    116,105,116,117,116,101,115, 32,116,121,112,101,100,101,102,
+     39,115, 46, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,
+     99,104,101, 99,107,116,121,112,101, 32, 40, 41, 10, 10, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,116,104,101,
+    114,101, 32,105,115, 32, 97, 32,112,111,105,110,116,101,114,
+     32,116,111, 32, 98, 97,115,105, 99, 32,116,121,112,101, 10,
+     32,108,111, 99, 97,108, 32, 98, 97,115,105, 99, 32, 61, 32,
+    105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,
+    112,101, 41, 10, 32,105,102, 32,115,101,108,102, 46,107,105,
+    110,100, 32, 61, 61, 32, 39,102,117,110, 99, 39, 32, 97,110,
+    100, 32, 98, 97,115,105, 99, 61, 61, 39,110,117,109, 98,101,
+    114, 39, 32, 97,110,100, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,101,108,102, 46,112,116,114, 44, 32, 34,
+     37, 42, 34, 41, 32,116,104,101,110, 10, 32,  9,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 32, 39, 95,117,115,101,114,
+    100, 97,116, 97, 39, 10, 32,  9,115,101,108,102, 46,112,116,
+    114, 32, 61, 32, 34, 34, 10, 32,101,110,100, 10, 32,105,102,
+     32, 98, 97,115,105, 99, 32, 97,110,100, 32,115,101,108,102,
+     46,112,116,114,126, 61, 39, 39, 32,116,104,101,110, 10, 32,
+     32,115,101,108,102, 46,114,101,116, 32, 61, 32,115,101,108,
+    102, 46,112,116,114, 10, 32, 32,115,101,108,102, 46,112,116,
+    114, 32, 61, 32,110,105,108, 10, 32, 32,105,102, 32,105,115,
+     98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101,
+     41, 32, 61, 61, 32, 39,110,117,109, 98,101,114, 39, 32,116,
+    104,101,110, 10, 32, 32,  9,115,101,108,102, 46,114,101,116,
+    117,114,110, 95,117,115,101,114,100, 97,116, 97, 32, 61, 32,
+    116,114,117,101, 10, 32, 32,101,110,100, 10, 32,101,110,100,
+     10, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    116,104,101,114,101, 32,105,115, 32, 97,114,114, 97,121, 32,
+    116,111, 32, 98,101, 32,114,101,116,117,114,110,101,100, 10,
+     32,105,102, 32,115,101,108,102, 46,100,105,109,126, 61, 39,
+     39, 32, 97,110,100, 32,115,101,108,102, 46,114,101,116,126,
+     61, 39, 39, 32,116,104,101,110, 10, 32, 32, 32,101,114,114,
+    111,114, 40, 39, 35,105,110,118, 97,108,105,100, 32,112, 97,
+    114, 97,109,101,116,101,114, 58, 32, 99, 97,110,110,111,116,
+     32,114,101,116,117,114,110, 32, 97,110, 32, 97,114,114, 97,
+    121, 32,111,102, 32,118, 97,108,117,101,115, 39, 41, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32,114,101,115,116,111,114,101,
+     32, 39,118,111,105,100, 42, 39, 32, 97,110,100, 32, 39,115,
+    116,114,105,110,103, 42, 39, 10, 32,105,102, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 61, 32, 39, 95,117,115,101,
+    114,100, 97,116, 97, 39, 32,116,104,101,110, 32,115,101,108,
+    102, 46,116,121,112,101, 32, 61, 32, 39,118,111,105,100, 42,
+     39, 10, 32,101,108,115,101,105,102, 32,115,101,108,102, 46,
+    116,121,112,101, 32, 61, 61, 32, 39, 95, 99,115,116,114,105,
+    110,103, 39, 32,116,104,101,110, 32,115,101,108,102, 46,116,
+    121,112,101, 32, 61, 32, 39, 99,104, 97,114, 42, 39, 10, 32,
+    101,108,115,101,105,102, 32,115,101,108,102, 46,116,121,112,
+    101, 32, 61, 61, 32, 39, 95,108,115,116, 97,116,101, 39, 32,
+    116,104,101,110, 32,115,101,108,102, 46,116,121,112,101, 32,
+     61, 32, 39,108,117, 97, 95, 83,116, 97,116,101, 42, 39, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,114,101,115,111,108,
+    118,101, 32,116,121,112,101,115, 32,105,110,115,105,100,101,
+     32,116,104,101, 32,116,101,109,112,108, 97,116,101,115, 10,
+     32,105,102, 32,115,101,108,102, 46,116,121,112,101, 32,116,
+    104,101,110, 10,  9, 32,115,101,108,102, 46,116,121,112,101,
+     32, 61, 32,114,101,115,111,108,118,101, 95,116,101,109,112,
+    108, 97,116,101, 95,116,121,112,101,115, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32,101,110,100, 10, 10, 45, 45,
+     10, 45, 45, 32, 45, 45, 32,105,102, 32,114,101,116,117,114,
+    110,105,110,103, 32,118, 97,108,117,101, 44, 32, 97,117,116,
+    111,109, 97,116,105, 99, 97,108,108,121, 32,115,101,116, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 10, 45,
+     45, 32,105,102, 32,115,101,108,102, 46,114,101,116, 32,126,
+     61, 32, 39, 39, 32, 97,110,100, 32,115,101,108,102, 46,100,
+    101,102, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10, 45,
+     45, 32, 32,115,101,108,102, 46,100,101,102, 32, 61, 32, 39,
+     48, 39, 10, 45, 45, 32,101,110,100, 10, 45, 45, 10, 10,101,
+    110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,114,101,
+    115,111,108,118,101, 95,116,101,109,112,108, 97,116,101, 95,
+    116,121,112,101,115, 40,116,121,112,101, 41, 10, 10,  9,105,
+    102, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101, 41,
+     32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,
+    116,121,112,101, 10,  9,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32, 98, 44, 95, 44,109, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,116,121,112,101, 44, 32, 34, 40,
+     37, 98, 60, 62, 41, 34, 41, 10,  9,105,102, 32, 98, 32,116,
+    104,101,110, 10, 10,  9,  9,109, 32, 61, 32,115,112,108,105,
+    116, 95, 99, 95,116,111,107,101,110,115, 40,115,116,114,105,
+    110,103, 46,115,117, 98, 40,109, 44, 32, 50, 44, 32, 45, 50,
+     41, 44, 32, 34, 44, 34, 41, 10,  9,  9,102,111,114, 32,105,
+     61, 49, 44, 32,116, 97, 98,108,101, 46,103,101,116,110, 40,
+    109, 41, 32,100,111, 10,  9,  9,  9,109, 91,105, 93, 32, 61,
+     32,115,116,114,105,110,103, 46,103,115,117, 98, 40,109, 91,
+    105, 93, 44, 34, 37,115, 42, 40, 91, 37, 42, 38, 93, 41, 34,
+     44, 32, 34, 37, 49, 34, 41, 10,  9,  9,  9,109, 91,105, 93,
+     32, 61, 32,102,105,110,100,116,121,112,101, 40,109, 91,105,
+     93, 41, 32,111,114, 32,109, 91,105, 93, 10,  9,  9,  9,109,
+     91,105, 93, 32, 61, 32,114,101,115,111,108,118,101, 95,116,
+    101,109,112,108, 97,116,101, 95,116,121,112,101,115, 40,109,
+     91,105, 93, 41, 10,  9,  9,101,110,100, 10, 10,  9,  9,108,
+    111, 99, 97,108, 32, 98, 44,105, 10,  9,  9,116,121,112,101,
+     44, 98, 44,105, 32, 61, 32, 98,114,101, 97,107, 95,116,101,
+    109,112,108, 97,116,101, 40,116,121,112,101, 41, 10,  9,  9,
+    108,111, 99, 97,108, 32,116,101,109,112,108, 97,116,101, 95,
+    112, 97,114,116, 32, 61, 32, 34, 60, 34, 46, 46,115,116,114,
+    105,110,103, 46,103,115,117, 98, 40, 99,111,110, 99, 97,116,
+     40,109, 44, 32, 49, 44, 32,109, 46,110, 41, 44, 32, 34, 32,
+     34, 44, 32, 34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9,
+    116,121,112,101, 32, 61, 32,114,101, 98,117,105,108,100, 95,
+    116,101,109,112,108, 97,116,101, 40,116,121,112,101, 44, 32,
+     98, 44, 32,116,101,109,112,108, 97,116,101, 95,112, 97,114,
+    116, 41, 10,  9,  9,116,121,112,101, 32, 61, 32,115,116,114,
+    105,110,103, 46,103,115,117, 98, 40,116,121,112,101, 44, 32,
+     34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,101,
+    110,100, 10,  9,114,101,116,117,114,110, 32,116,121,112,101,
+     10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110, 32,
+     98,114,101, 97,107, 95,116,101,109,112,108, 97,116,101, 40,
+    115, 41, 10,  9,108,111, 99, 97,108, 32, 98, 44,101, 44,116,
+    105,109,112,108, 32, 61, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115, 44, 32, 34, 40, 37, 98, 60, 62, 41, 34,
+     41, 10,  9,105,102, 32,116,105,109,112,108, 32,116,104,101,
+    110, 10,  9,  9,115, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,115, 44, 32, 34, 37, 98, 60, 62, 34, 44,
+     32, 34, 34, 41, 10,  9,  9,114,101,116,117,114,110, 32,115,
+     44, 32, 98, 44, 32,116,105,109,112,108, 10,  9,101,108,115,
+    101, 10,  9,  9,114,101,116,117,114,110, 32,115, 44, 32, 48,
+     44, 32,110,105,108, 10,  9,101,110,100, 10,101,110,100, 10,
+     10,102,117,110, 99,116,105,111,110, 32,114,101, 98,117,105,
+    108,100, 95,116,101,109,112,108, 97,116,101, 40,115, 44, 32,
+     98, 44, 32,116,105,109,112,108, 41, 10, 10,  9,105,102, 32,
+     98, 32, 61, 61, 32, 48, 32,116,104,101,110, 10,  9,  9,114,
+    101,116,117,114,110, 32,115, 10,  9,101,110,100, 10, 10,  9,
+    114,101,116,117,114,110, 32,115,116,114,105,110,103, 46,115,
+    117, 98, 40,115, 44, 32, 49, 44, 32, 98, 45, 49, 41, 46, 46,
+    116,105,109,112,108, 46, 46,115,116,114,105,110,103, 46,115,
+    117, 98, 40,115, 44, 32, 98, 44, 32, 45, 49, 41, 10,101,110,
+    100, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,109,101,116,
+    104,111,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 68,101, 99,108, 97,114, 97,116,105,111,
+    110,123, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44,
+     34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116,
+     46, 46, 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,
+    115,101,108,102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    100,105,109, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,100,105,109, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,100,101,
+    102, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,
+    101,102, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34, 32,114,101,116, 32,
+     32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,114,101,116,
+     46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34,125, 34, 46, 46, 99,108,111,
+    115,101, 41, 10,101,110,100, 10, 10, 45, 45, 32, 99,104,101,
+     99,107, 32,105,102, 32, 97,114,114, 97,121, 32,111,102, 32,
+    118, 97,108,117,101,115, 32, 97,114,101, 32,114,101,116,117,
+    114,110,101,100, 32,116,111, 32, 76,117, 97, 10,102,117,110,
+     99,116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108,
+     97,114, 97,116,105,111,110, 58,114,101,113,117,105,114,101,
+     99,111,108,108,101, 99,116,105,111,110, 32, 40,116, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,109,111,100, 32,126, 61,
+     32, 39, 99,111,110,115,116, 39, 32, 97,110,100, 10,  9, 32,
+     32, 32, 32,115,101,108,102, 46,100,105,109, 32, 97,110,100,
+     32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39,
+     32, 97,110,100, 10,  9,  9,  9,  9, 32,110,111,116, 32,105,
+    115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,121,112,
+    101, 41, 32, 97,110,100, 10,  9,  9,  9,  9, 32,115,101,108,
+    102, 46,112,116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,
+    110, 10,  9,  9,108,111, 99, 97,108, 32,116,121,112,101, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,116,121,112,
+    101, 44, 34, 37,115, 42, 99,111,110,115,116, 37,115, 43, 34,
+     44, 34, 34, 41, 10,  9,  9,116, 91,116,121,112,101, 93, 32,
+     61, 32, 34,116,111,108,117, 97, 95, 99,111,108,108,101, 99,
+    116, 95, 34, 32, 46, 46, 32, 99,108,101, 97,110, 95,116,101,
+    109,112,108, 97,116,101, 40,116,121,112,101, 41, 10,  9,  9,
+    114,101,116,117,114,110, 32,116,114,117,101, 10,  9,101,110,
+    100, 10,  9,114,101,116,117,114,110, 32,102, 97,108,115,101,
+     10,101,110,100, 10, 10, 45, 45, 32,100,101, 99,108, 97,114,
+    101, 32,116, 97,103, 10,102,117,110, 99,116,105,111,110, 32,
+     99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,
+    110, 58,100,101, 99,108,116,121,112,101, 32, 40, 41, 10, 10,
+      9,115,101,108,102, 46,116,121,112,101, 32, 61, 32,116,121,
+    112,101,118, 97,114, 40,115,101,108,102, 46,116,121,112,101,
+     41, 10,  9,105,102, 32,115,116,114,102,105,110,100, 40,115,
+    101,108,102, 46,109,111,100, 44, 39, 99,111,110,115,116, 39,
+     41, 32,116,104,101,110, 10,  9,  9,115,101,108,102, 46,116,
+    121,112,101, 32, 61, 32, 39, 99,111,110,115,116, 32, 39, 46,
+     46,115,101,108,102, 46,116,121,112,101, 10,  9,  9,115,101,
+    108,102, 46,109,111,100, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46,109,111,100, 44, 39, 99,111,110,115,116, 37,
+    115, 42, 39, 44, 39, 39, 41, 10,  9,101,110,100, 10,101,110,
+    100, 10, 10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116,
+    121,112,101, 32, 99,104,101, 99,107,105,110,103, 10,102,117,
+    110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,
+    108, 97,114, 97,116,105,111,110, 58,111,117,116, 99,104,101,
+     99,107,116,121,112,101, 32, 40,110, 97,114,103, 41, 10, 32,
+    108,111, 99, 97,108, 32,100,101,102, 10, 32,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 10, 32,105,102, 32,115,
+    101,108,102, 46,100,101,102,126, 61, 39, 39, 32,116,104,101,
+    110, 10, 32, 32,100,101,102, 32, 61, 32, 49, 10, 32,101,108,
+    115,101, 10, 32, 32,100,101,102, 32, 61, 32, 48, 10, 32,101,
+    110,100, 10, 32,105,102, 32,115,101,108,102, 46,100,105,109,
+     32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,  9, 45, 45,
+    105,102, 32,116, 61, 61, 39,115,116,114,105,110,103, 39, 32,
+    116,104,101,110, 10,  9, 45, 45,  9,114,101,116,117,114,110,
+     32, 39,116,111,108,117, 97, 95,105,115,115,116,114,105,110,
+    103, 97,114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44,
+     39, 46, 46,110, 97,114,103, 46, 46, 39, 44, 39, 46, 46,100,
+    101,102, 46, 46, 39, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 39, 10,  9, 45, 45,101,108,115,101, 10,  9,114,101,
+    116,117,114,110, 32, 39,116,111,108,117, 97, 95,105,115,116,
+     97, 98,108,101, 40,116,111,108,117, 97, 95, 83, 44, 39, 46,
+     46,110, 97,114,103, 46, 46, 39, 44, 48, 44, 38,116,111,108,
+    117, 97, 95,101,114,114, 41, 39, 10, 32,  9, 45, 45,101,110,
+    100, 10, 32,101,108,115,101,105,102, 32,116, 32,116,104,101,
+    110, 10,  9,114,101,116,117,114,110, 32, 39,116,111,108,117,
+     97, 95,105,115, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,
+    117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39,
+     44, 39, 46, 46,100,101,102, 46, 46, 39, 44, 38,116,111,108,
+    117, 97, 95,101,114,114, 41, 39, 10, 32,101,108,115,101, 10,
+     32, 32,114,101,116,117,114,110, 32, 39,116,111,108,117, 97,
+     95,105,115,117,115,101,114,116,121,112,101, 40,116,111,108,
+    117, 97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39,
+     44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,101, 46,
+     46, 39, 34, 44, 39, 46, 46,100,101,102, 46, 46, 39, 44, 38,
+    116,111,108,117, 97, 95,101,114,114, 41, 39, 10, 32,101,110,
+    100, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,105,
+    111,110, 58, 98,117,105,108,100,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 32, 40,110, 97,114,103, 44, 32, 99,112,108,
+    117,115,112,108,117,115, 41, 10, 32,108,111, 99, 97,108, 32,
+     97,114,114, 97,121, 32, 61, 32,115,101,108,102, 46,100,105,
+    109, 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,116,111,110,
+    117,109, 98,101,114, 40,115,101,108,102, 46,100,105,109, 41,
+     61, 61,110,105,108, 10,  9,108,111, 99, 97,108, 32,108,105,
+    110,101, 32, 61, 32, 34, 34, 10, 32,108,111, 99, 97,108, 32,
+    112,116,114, 32, 61, 32, 39, 39, 10,  9,108,111, 99, 97,108,
+     32,109,111,100, 10,  9,108,111, 99, 97,108, 32,116,121,112,
+    101, 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10, 32,
+    105,102, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32,
+     39, 39, 32,116,104,101,110, 10,  9, 32,116,121,112,101, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,116,121,112,
+    101, 44, 39, 99,111,110,115,116, 37,115, 43, 39, 44, 39, 39,
+     41, 32, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+    115, 32, 99,111,110,115,116, 32,109,111,100,105,102,105,101,
+    114, 32,102,111,114, 32, 97,114,114, 97,121,115, 10, 32,101,
+    110,100, 10, 32,105,102, 32,115,101,108,102, 46,112,116,114,
+    126, 61, 39, 39, 32, 97,110,100, 32,110,111,116, 32,105,115,
+     98, 97,115,105, 99, 40,116,121,112,101, 41, 32,116,104,101,
+    110, 32,112,116,114, 32, 61, 32, 39, 42, 39, 32,101,110,100,
+     10, 32,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+    112, 97,114, 97,109, 40,108,105,110,101, 44, 34, 32, 34, 44,
+    115,101,108,102, 46,109,111,100, 44,116,121,112,101, 44,112,
+    116,114, 41, 10, 32,105,102, 32, 97,114,114, 97,121, 32,116,
+    104,101,110, 10, 32, 32,108,105,110,101, 32, 61, 32, 99,111,
+    110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44,
+     39, 42, 39, 41, 10, 32,101,110,100, 10, 32,108,105,110,101,
+     32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,
+    108,105,110,101, 44,115,101,108,102, 46,110, 97,109,101, 41,
+     10, 32,105,102, 32,115,101,108,102, 46,100,105,109, 32,126,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32,105,102, 32,
+    116,111,110,117,109, 98,101,114, 40,115,101,108,102, 46,100,
+    105,109, 41,126, 61,110,105,108, 32,116,104,101,110, 10, 32,
+     32, 32,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+    112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 91, 39, 44,
+    115,101,108,102, 46,100,105,109, 44, 39, 93, 59, 39, 41, 10,
+     32, 32,101,108,115,101, 10,  9,105,102, 32, 99,112,108,117,
+    115,112,108,117,115, 32,116,104,101,110, 10,  9,  9,108,105,
+    110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,
+    109, 40,108,105,110,101, 44, 39, 32, 61, 32,110,101,119, 39,
+     44,116,121,112,101, 44,112,116,114, 44, 39, 91, 39, 46, 46,
+    115,101,108,102, 46,100,105,109, 46, 46, 39, 93, 59, 39, 41,
+     10,  9,101,108,115,101, 10,  9,  9,108,105,110,101, 32, 61,
+     32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,
+    110,101, 44, 39, 32, 61, 32, 40, 39, 44,116,121,112,101, 44,
+    112,116,114, 44, 39, 42, 41, 39, 44, 10,  9,  9, 39,109, 97,
+    108,108,111, 99, 40, 40, 39, 44,115,101,108,102, 46,100,105,
+    109, 44, 39, 41, 42,115,105,122,101,111,102, 40, 39, 44,116,
+    121,112,101, 44,112,116,114, 44, 39, 41, 41, 59, 39, 41, 10,
+      9,101,110,100, 10, 32, 32,101,110,100, 10, 32,101,108,115,
+    101, 10, 32, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,105,
+    115, 98, 97,115,105, 99, 40,116,121,112,101, 41, 10, 32, 32,
+    108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,
+    114, 97,109, 40,108,105,110,101, 44, 39, 32, 61, 32, 39, 41,
+     10, 32, 32,105,102, 32,116, 32, 61, 61, 32, 39,115,116, 97,
+    116,101, 39, 32,116,104,101,110, 10, 32, 32,  9,108,105,110,
+    101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109,
+     40,108,105,110,101, 44, 32, 39,116,111,108,117, 97, 95, 83,
+     59, 39, 41, 10, 32, 32,101,108,115,101, 10, 32, 32,  9, 45,
+     45,112,114,105,110,116, 40, 34,116, 32,105,115, 32, 34, 46,
+     46,116,111,115,116,114,105,110,103, 40,116, 41, 46, 46, 34,
+     44, 32,112,116,114, 32,105,115, 32, 34, 46, 46,116,111,115,
+    116,114,105,110,103, 40,115,101,108,102, 46,112,116,114, 41,
+     41, 10, 32, 32,  9,105,102, 32,116, 32, 61, 61, 32, 39,110,
+    117,109, 98,101,114, 39, 32, 97,110,100, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115,101,108,102, 46,112,116,
+    114, 44, 32, 34, 37, 42, 34, 41, 32,116,104,101,110, 10, 32,
+     32,  9,  9,116, 32, 61, 32, 39,117,115,101,114,100, 97,116,
+     97, 39, 10, 32, 32,  9,101,110,100, 10,  9,105,102, 32,110,
+    111,116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61, 39,
+     39, 32,116,104,101,110, 32,108,105,110,101, 32, 61, 32, 99,
+    111,110, 99, 97,116,112, 97,114, 97,109, 40,108,105,110,101,
+     44, 39, 42, 39, 41, 32,101,110,100, 10,  9,108,105,110,101,
+     32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109, 40,
+    108,105,110,101, 44, 39, 40, 40, 39, 44,115,101,108,102, 46,
+    109,111,100, 44,116,121,112,101, 41, 10,  9,105,102, 32,110,
+    111,116, 32,116, 32,116,104,101,110, 10,  9,  9,108,105,110,
+    101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114, 97,109,
+     40,108,105,110,101, 44, 39, 42, 39, 41, 10,  9,101,110,100,
+     10,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,
+    112, 97,114, 97,109, 40,108,105,110,101, 44, 39, 41, 32, 39,
+     41, 10,  9,  9,  9,105,102, 32,105,115,101,110,117,109, 40,
+    116,121,112,101, 41, 32,116,104,101,110, 10,  9,  9,  9,108,
+    105,110,101, 32, 61, 32, 99,111,110, 99, 97,116,112, 97,114,
+     97,109, 40,108,105,110,101, 44, 39, 40,105,110,116, 41, 32,
+     39, 41, 10,  9,  9,  9,101,110,100, 10,  9,108,111, 99, 97,
+    108, 32,100,101,102, 32, 61, 32, 48, 10,  9,105,102, 32,115,
+    101,108,102, 46,100,101,102, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 10,  9,  9,100,101,102, 32, 61, 32,115,101,108,
+    102, 46,100,101,102, 10,  9,  9,105,102, 32, 40,112,116,114,
+     32, 61, 61, 32, 39, 39, 32,111,114, 32,115,101,108,102, 46,
+    112,116,114, 32, 61, 61, 32, 39, 38, 39, 41, 32, 97,110,100,
+     32,110,111,116, 32,116, 32,116,104,101,110, 10,  9,  9,  9,
+    100,101,102, 32, 61, 32, 34, 40,118,111,105,100, 42, 41, 38,
+     40, 99,111,110,115,116, 32, 34, 46, 46,116,121,112,101, 46,
+     46, 34, 41, 34, 46, 46,100,101,102, 10,  9,  9,101,110,100,
+     10,  9,101,110,100, 10,  9,105,102, 32,116, 32,116,104,101,
+    110, 10,  9,108,105,110,101, 32, 61, 32, 99,111,110, 99, 97,
+    116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39,116,111,
+    108,117, 97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,111,
+    108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,
+     39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,  9,101,
+    108,115,101, 10,  9,108,105,110,101, 32, 61, 32, 99,111,110,
+     99, 97,116,112, 97,114, 97,109, 40,108,105,110,101, 44, 39,
+    116,111,108,117, 97, 95,116,111,117,115,101,114,116,121,112,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,
+    103, 44, 39, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39,
+     41, 10,  9,101,110,100, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10,  9,114,101,116,117,114,110, 32,108,105,110,101,
+     10,101,110,100, 10, 10, 45, 45, 32, 68,101, 99,108, 97,114,
+    101, 32,118, 97,114,105, 97, 98,108,101, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 58,100,101, 99,108, 97,114,101, 32,
+     40,110, 97,114,103, 41, 10, 32,105,102, 32,115,101,108,102,
+     46,100,105,109, 32,126, 61, 32, 39, 39, 32, 97,110,100, 32,
+    116,111,110,117,109, 98,101,114, 40,115,101,108,102, 46,100,
+    105,109, 41, 61, 61,110,105,108, 32,116,104,101,110, 10,  9,
+     32,111,117,116,112,117,116, 40, 39, 35,105,102,100,101,102,
+     32, 95, 95, 99,112,108,117,115,112,108,117,115, 92,110, 39,
+     41, 10,  9,  9,111,117,116,112,117,116, 40,115,101,108,102,
+     58, 98,117,105,108,100,100,101, 99,108, 97,114, 97,116,105,
+    111,110, 40,110, 97,114,103, 44,116,114,117,101, 41, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,101,108,115,101,
+     92,110, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40,115,
+    101,108,102, 58, 98,117,105,108,100,100,101, 99,108, 97,114,
+     97,116,105,111,110, 40,110, 97,114,103, 44,102, 97,108,115,
+    101, 41, 41, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10,  9,101,108,115,101,
+     10,  9,  9,111,117,116,112,117,116, 40,115,101,108,102, 58,
+     98,117,105,108,100,100,101, 99,108, 97,114, 97,116,105,111,
+    110, 40,110, 97,114,103, 44,102, 97,108,115,101, 41, 41, 10,
+      9,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32, 71,101,
+    116, 32,112, 97,114, 97,109,101,116,101,114, 32,118, 97,108,
+    117,101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,103,
+    101,116, 97,114,114, 97,121, 32, 40,110, 97,114,103, 41, 10,
+     32,105,102, 32,115,101,108,102, 46,100,105,109, 32,126, 61,
+     32, 39, 39, 32,116,104,101,110, 10,  9, 32,108,111, 99, 97,
+    108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,
+    101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,116,
+     32, 39, 44, 39, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,123, 39, 41, 10,  9, 32,111,117,116,112,117,
+    116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85,
+     65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10, 32,
+     32,108,111, 99, 97,108, 32,100,101,102, 59, 32,105,102, 32,
+    115,101,108,102, 46,100,101,102,126, 61, 39, 39, 32,116,104,
+    101,110, 32,100,101,102, 61, 49, 32,101,108,115,101, 32,100,
+    101,102, 61, 48, 32,101,110,100, 10,  9,  9,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,116,
+    121,112,101, 41, 10,  9,  9,105,102, 32, 40,116, 41, 32,116,
+    104,101,110, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,105,
+    115, 39, 46, 46,116, 46, 46, 39, 97,114,114, 97,121, 40,116,
+    111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39,
+     44, 39, 44,115,101,108,102, 46,100,105,109, 44, 39, 44, 39,
+     44,100,101,102, 44, 39, 44, 38,116,111,108,117, 97, 95,101,
+    114,114, 41, 41, 39, 41, 10,  9,  9,101,108,115,101, 10, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,105,102,
+     32, 40, 33,116,111,108,117, 97, 95,105,115,117,115,101,114,
+    116,121,112,101, 97,114,114, 97,121, 40,116,111,108,117, 97,
+     95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44, 34, 39, 44,
+    116,121,112,101, 44, 39, 34, 44, 39, 44,115,101,108,102, 46,
+    100,105,109, 44, 39, 44, 39, 44,100,101,102, 44, 39, 44, 38,
+    116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,  9,
+      9,101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32, 32,103,111,116,111, 32,116,111,108,117, 97, 95,
+    108,101,114,114,111,114, 59, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32,101,108,115,101, 92,110, 39,
+     41, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32,123, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 32,105,110,116, 32,105, 59,
+     39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32, 32,102,111,114, 40,105, 61, 48, 59, 32,105, 60, 39, 46,
+     46,115,101,108,102, 46,100,105,109, 46, 46, 39, 59,105, 43,
+     43, 41, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,116, 32,
+     61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101, 41,
+     10, 32, 32,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32,
+     39, 39, 10, 32, 32,105,102, 32,115,101,108,102, 46,112,116,
+    114,126, 61, 39, 39, 32,116,104,101,110, 32,112,116,114, 32,
+     61, 32, 39, 42, 39, 32,101,110,100, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 39, 44,115,101,108,102, 46,
+    110, 97,109,101, 46, 46, 39, 91,105, 93, 32, 61, 32, 39, 41,
+     10, 32, 32,105,102, 32,110,111,116, 32,116, 32, 97,110,100,
+     32,112,116,114, 61, 61, 39, 39, 32,116,104,101,110, 32,111,
+    117,116,112,117,116, 40, 39, 42, 39, 41, 32,101,110,100, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 40, 40, 39, 44,116,
+    121,112,101, 41, 10, 32, 32,105,102, 32,110,111,116, 32,116,
+     32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 42, 39, 41, 10, 32, 32,101,110,100, 10, 32, 32,111,
+    117,116,112,117,116, 40, 39, 41, 32, 39, 41, 10, 32, 32,108,
+    111, 99, 97,108, 32,100,101,102, 32, 61, 32, 48, 10, 32, 32,
+    105,102, 32,115,101,108,102, 46,100,101,102, 32,126, 61, 32,
+     39, 39, 32,116,104,101,110, 32,100,101,102, 32, 61, 32,115,
+    101,108,102, 46,100,101,102, 32,101,110,100, 10, 32, 32,105,
+    102, 32,116, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,102,105,
+    101,108,100, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43,
+     49, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10,
+     32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39,116,111,108,117, 97, 95,116,111,102,105,101,108,
+    100,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
+     95, 83, 44, 39, 44,110, 97,114,103, 44, 39, 44,105, 43, 49,
+     44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39, 41, 10, 32,
+     32,101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 32, 32,125, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,125, 39, 41, 10, 32,101,110,100, 10,101,110,
+    100, 10, 10, 45, 45, 32, 71,101,116, 32,112, 97,114, 97,109,
+    101,116,101,114, 32,118, 97,108,117,101, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 58,115,101,116, 97,114,114, 97,121,
+     32, 40,110, 97,114,103, 41, 10, 32,105,102, 32,110,111,116,
+     32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,116,
+    121,112,101, 44, 39, 99,111,110,115,116, 37,115, 43, 39, 41,
+     32, 97,110,100, 32,115,101,108,102, 46,100,105,109, 32,126,
+     61, 32, 39, 39, 32,116,104,101,110, 10,  9, 32,108,111, 99,
+     97,108, 32,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,
+    115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,
+    116, 32, 39, 44, 39, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32,123, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32,105,110,116, 32,105, 59, 39, 41,
+     10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,102,
+    111,114, 40,105, 61, 48, 59, 32,105, 60, 39, 46, 46,115,101,
+    108,102, 46,100,105,109, 46, 46, 39, 59,105, 43, 43, 41, 39,
+     41, 10, 32, 32,108,111, 99, 97,108, 32,116, 44, 99,116, 32,
+     61, 32,105,115, 98, 97,115,105, 99, 40,116,121,112,101, 41,
+     10, 32, 32,105,102, 32,116, 32,116,104,101,110, 10, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104,102,105,101,108,100, 39, 46,
+     46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 39,
+     44,110, 97,114,103, 44, 39, 44,105, 43, 49, 44, 40, 39, 44,
+     99,116, 44, 39, 41, 39, 44,115,101,108,102, 46,110, 97,109,
+    101, 44, 39, 91,105, 93, 41, 59, 39, 41, 10, 32, 32,101,108,
+    115,101, 10, 32, 32, 32,105,102, 32,115,101,108,102, 46,112,
+    116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10, 32,
+     32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,
+    123, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,
+    115,112,108,117,115, 92,110, 39, 41, 10, 32, 32, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,
+    100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,
+    110,101,119, 39, 44,116,121,112,101, 44, 39, 40, 39, 44,115,
+    101,108,102, 46,110, 97,109,101, 44, 39, 91,105, 93, 41, 59,
+     39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104,
+    102,105,101,108,100,117,115,101,114,116,121,112,101, 95, 97,
+    110,100, 95,116, 97,107,101,111,119,110,101,114,115,104,105,
+    112, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,
+    103, 44, 39, 44,105, 43, 49, 44,116,111,108,117, 97, 95,111,
+     98,106, 44, 34, 39, 44,116,121,112,101, 44, 39, 34, 41, 59,
+     39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40,
+     39, 35,101,108,115,101, 92,110, 39, 41, 10, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,
+    105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61,
+     32,116,111,108,117, 97, 95, 99,111,112,121, 40,116,111,108,
+    117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38, 39, 44,
+    115,101,108,102, 46,110, 97,109,101, 44, 39, 91,105, 93, 44,
+    115,105,122,101,111,102, 40, 39, 44,116,121,112,101, 44, 39,
+     41, 41, 59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97, 95,112,
+    117,115,104,102,105,101,108,100,117,115,101,114,116,121,112,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110, 97,114,
+    103, 44, 39, 44,105, 43, 49, 44,116,111,108,117, 97, 95,111,
+     98,106, 44, 34, 39, 44,116,121,112,101, 44, 39, 34, 41, 59,
+     39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,125, 39,
+     41, 10, 32, 32, 32,101,108,115,101, 10, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,117, 97,
+     95,112,117,115,104,102,105,101,108,100,117,115,101,114,116,
+    121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 39, 44,110,
+     97,114,103, 44, 39, 44,105, 43, 49, 44, 40,118,111,105,100,
+     42, 41, 39, 44,115,101,108,102, 46,110, 97,109,101, 44, 39,
+     91,105, 93, 44, 34, 39, 44,116,121,112,101, 44, 39, 34, 41,
+     59, 39, 41, 10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,
+    100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,125,
+     39, 41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
+     32, 70,114,101,101, 32,100,121,110, 97,109,105, 99, 97,108,
+    108,121, 32, 97,108,108,111, 99, 97,116,101,100, 32, 97,114,
+    114, 97,121, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 68,101, 99,108, 97,114, 97,116,105,111,110, 58,
+    102,114,101,101, 97,114,114, 97,121, 32, 40, 41, 10, 32,105,
+    102, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32, 39,
+     39, 32, 97,110,100, 32,116,111,110,117,109, 98,101,114, 40,
+    115,101,108,102, 46,100,105,109, 41, 61, 61,110,105,108, 32,
+    116,104,101,110, 10,  9, 32,111,117,116,112,117,116, 40, 39,
+     35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32,100,101,108,101,116,101, 32, 91, 93, 39,
+     44,115,101,108,102, 46,110, 97,109,101, 44, 39, 59, 39, 41,
+     10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,108,115,
+    101, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32,102,114,101,101, 40, 39, 44,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 41, 59, 39, 41, 10,  9, 32,111,117,
+    116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     80, 97,115,115, 32,112, 97,114, 97,109,101,116,101,114, 10,
+    102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115, 68,
+    101, 99,108, 97,114, 97,116,105,111,110, 58,112, 97,115,115,
+    112, 97,114, 32, 40, 41, 10, 32,105,102, 32,115,101,108,102,
+     46,112,116,114, 61, 61, 39, 38, 39, 32, 97,110,100, 32,110,
+    111,116, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,102,
+     46,116,121,112,101, 41, 32,116,104,101,110, 10, 32, 32,111,
+    117,116,112,117,116, 40, 39, 42, 39, 46, 46,115,101,108,102,
+     46,110, 97,109,101, 41, 10, 32,101,108,115,101,105,102, 32,
+    115,101,108,102, 46,114,101,116, 61, 61, 39, 42, 39, 32,116,
+    104,101,110, 10, 32, 32,111,117,116,112,117,116, 40, 39, 38,
+     39, 46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10, 32,
+    101,108,115,101, 10, 32, 32,111,117,116,112,117,116, 40,115,
+    101,108,102, 46,110, 97,109,101, 41, 10, 32,101,110,100, 10,
+    101,110,100, 10, 10, 45, 45, 32, 82,101,116,117,114,110, 32,
+    112, 97,114, 97,109,101,116,101,114, 32,118, 97,108,117,101,
+     10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,115,
+     68,101, 99,108, 97,114, 97,116,105,111,110, 58,114,101,116,
+    118, 97,108,117,101, 32, 40, 41, 10, 32,105,102, 32,115,101,
+    108,102, 46,114,101,116, 32,126, 61, 32, 39, 39, 32,116,104,
+    101,110, 10, 32, 32,108,111, 99, 97,108, 32,116, 44, 99,116,
+     32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32, 32,105,102, 32,116, 32, 97,
+    110,100, 32,116,126, 61, 39, 39, 32,116,104,101,110, 10, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39,
+     40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44,
+     39, 41, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46,
+     46, 39, 41, 59, 39, 41, 10, 32, 32,101,108,115,101, 10, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100,
+     42, 41, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46,
+     46, 39, 44, 34, 39, 44,115,101,108,102, 46,116,121,112,101,
+     44, 39, 34, 41, 59, 39, 41, 10, 32, 32,101,110,100, 10, 32,
+     32,114,101,116,117,114,110, 32, 49, 10, 32,101,110,100, 10,
+     32,114,101,116,117,114,110, 32, 48, 10,101,110,100, 10, 10,
+     45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,110,
+    115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,105,
+    111,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     32, 40,116, 41, 10, 10, 32,115,101,116,109,101,116, 97,116,
+     97, 98,108,101, 40,116, 44, 99,108, 97,115,115, 68,101, 99,
+    108, 97,114, 97,116,105,111,110, 41, 10, 32,116, 58, 98,117,
+    105,108,100,110, 97,109,101,115, 40, 41, 10, 32,116, 58, 99,
+    104,101, 99,107,110, 97,109,101, 40, 41, 10, 32,116, 58, 99,
+    104,101, 99,107,116,121,112,101, 40, 41, 10, 32,108,111, 99,
+     97,108, 32,102,116, 32, 61, 32,102,105,110,100,116,121,112,
+    101, 40,116, 46,116,121,112,101, 41, 32,111,114, 32,116, 46,
+    116,121,112,101, 10, 32,105,102, 32,110,111,116, 32,105,115,
+    101,110,117,109, 40,102,116, 41, 32,116,104,101,110, 10,  9,
+    116, 46,109,111,100, 44, 32,116, 46,116,121,112,101, 32, 61,
+     32, 97,112,112,108,121,116,121,112,101,100,101,102, 40,116,
+     46,109,111,100, 44, 32,102,116, 41, 10, 32,101,110,100, 10,
+     10, 32,105,102, 32,116, 46,107,105,110,100, 61, 61, 34,118,
+     97,114, 34, 32, 97,110,100, 32, 40,115,116,114,105,110,103,
+     46,102,105,110,100, 40,116, 46,109,111,100, 44, 32, 34,116,
+    111,108,117, 97, 95,112,114,111,112,101,114,116,121, 37,115,
+     34, 41, 32,111,114, 32,115,116,114,105,110,103, 46,102,105,
+    110,100, 40,116, 46,109,111,100, 44, 32, 34,116,111,108,117,
+     97, 95,112,114,111,112,101,114,116,121, 36, 34, 41, 41, 32,
+    116,104,101,110, 10, 32,  9,116, 46,109,111,100, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,116, 46,109,
+    111,100, 44, 32, 34,116,111,108,117, 97, 95,112,114,111,112,
+    101,114,116,121, 34, 44, 32, 34,116,111,108,117, 97, 95,112,
+    114,111,112,101,114,116,121, 95, 95, 34, 46, 46,103,101,116,
+     95,112,114,111,112,101,114,116,121, 95,116,121,112,101, 40,
+     41, 41, 10, 32,101,110,100, 10, 10, 32,114,101,116,117,114,
+    110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,
+    115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,
+    101, 99,116,115, 32,116,104,101, 32,115,116,114,105,110,103,
+     32,100,101, 99,108, 97,114, 97,116,105,111,110, 46, 10, 45,
+     45, 32, 84,104,101, 32,107,105,110,100, 32,111,102, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110, 32, 99, 97,110, 32,
+     98,101, 32, 34,118, 97,114, 34, 32,111,114, 32, 34,102,117,
+    110, 99, 34, 46, 10,102,117,110, 99,116,105,111,110, 32, 68,
+    101, 99,108, 97,114, 97,116,105,111,110, 32, 40,115, 44,107,
+    105,110,100, 44,105,115, 95,112, 97,114, 97,109,101,116,101,
+    114, 41, 10, 10, 32, 45, 45, 32,101,108,105,109,105,110, 97,
+    116,101, 32,115,112, 97, 99,101,115, 32,105,102, 32,100,101,
+    102, 97,117,108,116, 32,118, 97,108,117,101, 32,105,115, 32,
+    112,114,111,118,105,100,101,100, 10, 32,115, 32, 61, 32,103,
+    115,117, 98, 40,115, 44, 34, 37,115, 42, 61, 37,115, 42, 34,
+     44, 34, 61, 34, 41, 10, 32,115, 32, 61, 32,103,115,117, 98,
+     40,115, 44, 32, 34, 37,115, 42, 60, 34, 44, 32, 34, 60, 34,
+     41, 10, 10, 32,108,111, 99, 97,108, 32,100,101,102, 98, 44,
+    116,109,112,100,101,102, 10, 32,100,101,102, 98, 44, 95, 44,
+    116,109,112,100,101,102, 32, 61, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,115, 44, 32, 34, 40, 61, 46, 42, 41,
+     36, 34, 41, 10, 32,105,102, 32,100,101,102, 98, 32,116,104,
+    101,110, 10, 32,  9,115, 32, 61, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,115, 44, 32, 34, 61, 46, 42, 36, 34,
+     44, 32, 34, 34, 41, 10, 32,101,108,115,101, 10, 32,  9,116,
+    109,112,100,101,102, 32, 61, 32, 39, 39, 10, 32,101,110,100,
+     10, 32,105,102, 32,107,105,110,100, 32, 61, 61, 32, 34,118,
+     97,114, 34, 32,116,104,101,110, 10, 32, 32, 45, 45, 32, 99,
+    104,101, 99,107, 32,116,104,101, 32,102,111,114,109, 58, 32,
+    118,111,105,100, 10, 32, 32,105,102, 32,115, 32, 61, 61, 32,
+     39, 39, 32,111,114, 32,115, 32, 61, 61, 32, 39,118,111,105,
+    100, 39, 32,116,104,101,110, 10, 32, 32, 32,114,101,116,117,
+    114,110, 32, 95, 68,101, 99,108, 97,114, 97,116,105,111,110,
+    123,116,121,112,101, 32, 61, 32, 39,118,111,105,100, 39, 44,
+     32,107,105,110,100, 32, 61, 32,107,105,110,100, 44, 32,105,
+    115, 95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,
+    115, 95,112, 97,114, 97,109,101,116,101,114,125, 10, 32, 32,
+    101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45, 32, 99,
+    104,101, 99,107, 32,116,104,101, 32,102,111,114,109, 58, 32,
+    109,111,100, 32,116,121,112,101, 42, 38, 32,110, 97,109,101,
+     10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,108,
+    105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44, 39,
+     37, 42, 37,115, 42, 38, 39, 41, 10, 32,105,102, 32,116, 46,
+    110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10, 32, 32,105,
+    102, 32,107,105,110,100, 32, 61, 61, 32, 39,102,117,110, 99,
+     39, 32,116,104,101,110, 10, 32, 32, 32,101,114,114,111,114,
+     40, 34, 35,105,110,118, 97,108,105,100, 32,102,117,110, 99,
+    116,105,111,110, 32,114,101,116,117,114,110, 32,116,121,112,
+    101, 58, 32, 34, 46, 46,115, 41, 10, 32, 32,101,110,100, 10,
+     32, 32, 45, 45,108,111, 99, 97,108, 32,109, 32, 61, 32,115,
+    112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,115, 37,115,
+     42, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,109, 32, 61,
+     32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115,
+     40,116, 91, 49, 93, 44, 39, 37,115, 43, 39, 41, 10, 32, 32,
+    114,101,116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,
+    116,105,111,110,123, 10, 32, 32, 32,110, 97,109,101, 32, 61,
+     32,116, 91, 50, 93, 46, 46,116,109,112,100,101,102, 44, 10,
+     32, 32, 32,112,116,114, 32, 61, 32, 39, 42, 39, 44, 10, 32,
+     32, 32,114,101,116, 32, 61, 32, 39, 38, 39, 44, 10, 32, 32,
+     32, 45, 45,116,121,112,101, 32, 61, 32,114,101, 98,117,105,
+    108,100, 95,116,101,109,112,108, 97,116,101, 40,109, 91,109,
+     46,110, 93, 44, 32,116, 98, 44, 32,116,105,109,112,108, 41,
+     44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,109, 91,109,
+     46,110, 93, 44, 10, 32, 32, 32,109,111,100, 32, 61, 32, 99,
+    111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,110, 45, 49,
+     41, 44, 10, 32, 32, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114, 44, 10, 32, 32, 32,107,105,110,100, 32, 61, 32,
+    107,105,110,100, 10, 32, 32,125, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,
+    111,114,109, 58, 32,109,111,100, 32,116,121,112,101, 42, 42,
+     32,110, 97,109,101, 10, 32,116, 32, 61, 32,115,112,108,105,
+    116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44, 39, 37,
+     42, 37,115, 42, 37, 42, 39, 41, 10, 32,105,102, 32,116, 46,
+    110, 32, 61, 61, 32, 50, 32,116,104,101,110, 10, 32, 32,105,
+    102, 32,107,105,110,100, 32, 61, 61, 32, 39,102,117,110, 99,
+     39, 32,116,104,101,110, 10, 32, 32, 32,101,114,114,111,114,
+     40, 34, 35,105,110,118, 97,108,105,100, 32,102,117,110, 99,
+    116,105,111,110, 32,114,101,116,117,114,110, 32,116,121,112,
+    101, 58, 32, 34, 46, 46,115, 41, 10, 32, 32,101,110,100, 10,
+     32, 32, 45, 45,108,111, 99, 97,108, 32,109, 32, 61, 32,115,
+    112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,115, 37,115,
+     42, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,109, 32, 61,
+     32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,115,
+     40,116, 91, 49, 93, 44, 39, 37,115, 43, 39, 41, 10, 32, 32,
+    114,101,116,117,114,110, 32, 95, 68,101, 99,108, 97,114, 97,
+    116,105,111,110,123, 10, 32, 32, 32,110, 97,109,101, 32, 61,
+     32,116, 91, 50, 93, 46, 46,116,109,112,100,101,102, 44, 10,
+     32, 32, 32,112,116,114, 32, 61, 32, 39, 42, 39, 44, 10, 32,
+     32, 32,114,101,116, 32, 61, 32, 39, 42, 39, 44, 10, 32, 32,
+     32, 45, 45,116,121,112,101, 32, 61, 32,114,101, 98,117,105,
+    108,100, 95,116,101,109,112,108, 97,116,101, 40,109, 91,109,
+     46,110, 93, 44, 32,116, 98, 44, 32,116,105,109,112,108, 41,
+     44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,109, 91,109,
+     46,110, 93, 44, 10, 32, 32, 32,109,111,100, 32, 61, 32, 99,
+    111,110, 99, 97,116, 40,109, 44, 49, 44,109, 46,110, 45, 49,
+     41, 44, 10, 32, 32, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,101,
+    116,101,114, 44, 10, 32, 32, 32,107,105,110,100, 32, 61, 32,
+    107,105,110,100, 10, 32, 32,125, 10, 32,101,110,100, 10, 10,
+     32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101, 32,102,
+    111,114,109, 58, 32,109,111,100, 32,116,121,112,101, 38, 32,
+    110, 97,109,101, 10, 32,116, 32, 61, 32,115,112,108,105,116,
+     95, 99, 95,116,111,107,101,110,115, 40,115, 44, 39, 38, 39,
+     41, 10, 32,105,102, 32,116, 46,110, 32, 61, 61, 32, 50, 32,
+    116,104,101,110, 10, 32, 32, 45, 45,108,111, 99, 97,108, 32,
+    109, 32, 61, 32,115,112,108,105,116, 40,116, 91, 49, 93, 44,
+     39, 37,115, 37,115, 42, 39, 41, 10, 32, 32,108,111, 99, 97,
+    108, 32,109, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,
+    111,107,101,110,115, 40,116, 91, 49, 93, 44, 39, 37,115, 43,
+     39, 41, 10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101,
+     99,108, 97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110,
+     97,109,101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,109,112,
+    100,101,102, 44, 10, 32, 32, 32,112,116,114, 32, 61, 32, 39,
+     38, 39, 44, 10, 32, 32, 32, 45, 45,116,121,112,101, 32, 61,
+     32,114,101, 98,117,105,108,100, 95,116,101,109,112,108, 97,
+    116,101, 40,109, 91,109, 46,110, 93, 44, 32,116, 98, 44, 32,
+    116,105,109,112,108, 41, 44, 10, 32, 32, 32,116,121,112,101,
+     32, 61, 32,109, 91,109, 46,110, 93, 44, 10, 32, 32, 32,109,
+    111,100, 32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49,
+     44,109, 46,110, 45, 49, 41, 44, 10, 32, 32, 32,105,115, 95,
+    112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,115, 95,
+    112, 97,114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,107,
+    105,110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,125, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107,
+     32,116,104,101, 32,102,111,114,109, 58, 32,109,111,100, 32,
+    116,121,112,101, 42, 32,110, 97,109,101, 10, 32,108,111, 99,
+     97,108, 32,115, 49, 32, 61, 32,103,115,117, 98, 40,115, 44,
+     34, 40, 37, 98, 92, 91, 92, 93, 41, 34, 44,102,117,110, 99,
+    116,105,111,110, 32, 40,110, 41, 32,114,101,116,117,114,110,
+     32,103,115,117, 98, 40,110, 44, 39, 37, 42, 39, 44, 39, 92,
+     49, 39, 41, 32,101,110,100, 41, 10, 32,116, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115,
+     49, 44, 39, 37, 42, 39, 41, 10, 32,105,102, 32,116, 46,110,
+     32, 61, 61, 32, 50, 32,116,104,101,110, 10, 32, 32,116, 91,
+     50, 93, 32, 61, 32,103,115,117, 98, 40,116, 91, 50, 93, 44,
+     39, 92, 49, 39, 44, 39, 37, 42, 39, 41, 32, 45, 45, 32,114,
+    101,115,116,111,114,101, 32, 42, 32,105,110, 32,100,105,109,
+    101,110,115,105,111,110, 32,101,120,112,114,101,115,115,105,
+    111,110, 10, 32, 32, 45, 45,108,111, 99, 97,108, 32,109, 32,
+     61, 32,115,112,108,105,116, 40,116, 91, 49, 93, 44, 39, 37,
+    115, 37,115, 42, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    109, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,
+    101,110,115, 40,116, 91, 49, 93, 44, 39, 37,115, 43, 39, 41,
+     10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
+     97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110, 97,109,
+    101, 32, 61, 32,116, 91, 50, 93, 46, 46,116,109,112,100,101,
+    102, 44, 10, 32, 32, 32,112,116,114, 32, 61, 32, 39, 42, 39,
+     44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,109, 91,109,
+     46,110, 93, 44, 10, 32, 32, 32, 45, 45,116,121,112,101, 32,
+     61, 32,114,101, 98,117,105,108,100, 95,116,101,109,112,108,
+     97,116,101, 40,109, 91,109, 46,110, 93, 44, 32,116, 98, 44,
+     32,116,105,109,112,108, 41, 44, 10, 32, 32, 32,109,111,100,
+     32, 61, 32, 99,111,110, 99, 97,116, 40,109, 44, 49, 44,109,
+     46,110, 45, 49, 41, 32, 32, 32, 44, 10, 32, 32, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 32, 61, 32,105,115,
+     95,112, 97,114, 97,109,101,116,101,114, 44, 10, 32, 32, 32,
+    107,105,110,100, 32, 61, 32,107,105,110,100, 10, 32, 32,125,
+     10, 32,101,110,100, 10, 10, 32,105,102, 32,107,105,110,100,
+     32, 61, 61, 32, 39,118, 97,114, 39, 32,116,104,101,110, 10,
+     32, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,104,101, 32,
+    102,111,114,109, 58, 32,109,111,100, 32,116,121,112,101, 32,
+    110, 97,109,101, 10, 32, 32, 45, 45,116, 32, 61, 32,115,112,
+    108,105,116, 40,115, 44, 39, 37,115, 37,115, 42, 39, 41, 10,
+     32, 32,116, 32, 61, 32,115,112,108,105,116, 95, 99, 95,116,
+    111,107,101,110,115, 40,115, 44, 39, 37,115, 43, 39, 41, 10,
+     32, 32,108,111, 99, 97,108, 32,118, 10, 32, 32,105,102, 32,
+    102,105,110,100,116,121,112,101, 40,116, 91,116, 46,110, 93,
+     41, 32,116,104,101,110, 32,118, 32, 61, 32, 99,114,101, 97,
+    116,101, 95,118, 97,114,110, 97,109,101, 40, 41, 32,101,108,
+    115,101, 32,118, 32, 61, 32,116, 91,116, 46,110, 93, 59, 32,
+    116, 46,110, 32, 61, 32,116, 46,110, 45, 49, 32,101,110,100,
+     10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
+     97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110, 97,109,
+    101, 32, 61, 32,118, 46, 46,116,109,112,100,101,102, 44, 10,
+     32, 32, 32, 45, 45,116,121,112,101, 32, 61, 32,114,101, 98,
+    117,105,108,100, 95,116,101,109,112,108, 97,116,101, 40,116,
+     91,116, 46,110, 93, 44, 32,116, 98, 44, 32,116,105,109,112,
+    108, 41, 44, 10, 32, 32, 32,116,121,112,101, 32, 61, 32,116,
+     91,116, 46,110, 93, 44, 10, 32, 32, 32,109,111,100, 32, 61,
+     32, 99,111,110, 99, 97,116, 40,116, 44, 49, 44,116, 46,110,
+     45, 49, 41, 44, 10, 32, 32, 32,105,115, 95,112, 97,114, 97,
+    109,101,116,101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,
+    109,101,116,101,114, 44, 10, 32, 32, 32,107,105,110,100, 32,
+     61, 32,107,105,110,100, 10, 32, 32,125, 10, 10, 32,101,108,
+    115,101, 32, 45, 45, 32,107,105,110,100, 32, 61, 61, 32, 34,
+    102,117,110, 99, 34, 10, 10, 32, 32, 45, 45, 32, 99,104,101,
+     99,107, 32,116,104,101, 32,102,111,114,109, 58, 32,109,111,
+    100, 32,116,121,112,101, 32,110, 97,109,101, 10, 32, 32, 45,
+     45,116, 32, 61, 32,115,112,108,105,116, 40,115, 44, 39, 37,
+    115, 37,115, 42, 39, 41, 10, 32, 32,116, 32, 61, 32,115,112,
+    108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115, 44,
+     39, 37,115, 43, 39, 41, 10, 32, 32,108,111, 99, 97,108, 32,
+    118, 32, 61, 32,116, 91,116, 46,110, 93, 32, 32, 45, 45, 32,
+    108, 97,115,116, 32,119,111,114,100, 32,105,115, 32,116,104,
+    101, 32,102,117,110, 99,116,105,111,110, 32,110, 97,109,101,
+     10, 32, 32,108,111, 99, 97,108, 32,116,112, 44,109,100, 10,
+     32, 32,105,102, 32,116, 46,110, 62, 49, 32,116,104,101,110,
+     10, 32, 32, 32,116,112, 32, 61, 32,116, 91,116, 46,110, 45,
+     49, 93, 10, 32, 32, 32,109,100, 32, 61, 32, 99,111,110, 99,
+     97,116, 40,116, 44, 49, 44,116, 46,110, 45, 50, 41, 10, 32,
+     32,101,110,100, 10, 32, 32, 45, 45,105,102, 32,116,112, 32,
+    116,104,101,110, 32,116,112, 32, 61, 32,114,101, 98,117,105,
+    108,100, 95,116,101,109,112,108, 97,116,101, 40,116,112, 44,
+     32,116, 98, 44, 32,116,105,109,112,108, 41, 32,101,110,100,
+     10, 32, 32,114,101,116,117,114,110, 32, 95, 68,101, 99,108,
+     97,114, 97,116,105,111,110,123, 10, 32, 32, 32,110, 97,109,
+    101, 32, 61, 32,118, 44, 10, 32, 32, 32,116,121,112,101, 32,
+     61, 32,116,112, 44, 10, 32, 32, 32,109,111,100, 32, 61, 32,
+    109,100, 44, 10, 32, 32, 32,105,115, 95,112, 97,114, 97,109,
+    101,116,101,114, 32, 61, 32,105,115, 95,112, 97,114, 97,109,
+    101,116,101,114, 44, 10, 32, 32, 32,107,105,110,100, 32, 61,
+     32,107,105,110,100, 10, 32, 32,125, 10, 32,101,110,100, 10,
+     10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/declaration.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,118, 97,114,105, 97,
+     98,108,101, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 86, 97,114,105, 97, 98,108,101, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97, 32,101,120,116,101,114,110, 32,118, 97,114,105, 97, 98,
+    108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99, 32,
+    109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108, 97,
+    115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32, 97,
+    108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,101,
+    110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114, 97,
+    116,105,111,110, 46, 10, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 32, 61, 32,123, 10, 32, 95,103,101,116, 32,
+     61, 32,123,125, 44, 32, 32, 32, 45, 45, 32,109, 97,112,112,
+    101,100, 32,103,101,116, 32,102,117,110, 99,116,105,111,110,
+    115, 10, 32, 95,115,101,116, 32, 61, 32,123,125, 44, 32, 32,
+     32, 45, 45, 32,109, 97,112,112,101,100, 32,115,101,116, 32,
+    102,117,110, 99,116,105,111,110,115, 10,125, 10, 99,108, 97,
+    115,115, 86, 97,114,105, 97, 98,108,101, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 44, 99,108, 97,115,115, 68,101, 99,108, 97,114, 97,116,
+    105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 86, 97,114,105, 97, 98,108,101,123, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,
+    109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110,
+     97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,105,102, 32,
+    115,101,108,102, 46,100,105,109, 32,116,104,101,110, 32,112,
+    114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,100,
+    105,109, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,100,
+    105,109, 46, 46, 34, 39, 44, 34, 41, 32,101,110,100, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    100,101,102, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,100,101,102, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,114,101,
+    116, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,114,
+    101,116, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46, 99,
+    108,111,115,101, 41, 10,101,110,100, 10, 10, 45, 45, 32, 71,
+    101,110,101,114, 97,116,101,115, 32, 67, 32,102,117,110, 99,
+    116,105,111,110, 32,110, 97,109,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58, 99,102,117,110, 99,110, 97,109,101, 32, 40,112,
+    114,101,102,105,120, 41, 10, 32,108,111, 99, 97,108, 32,112,
+     97,114,101,110,116, 32, 61, 32, 34, 34, 10, 32,108,111, 99,
+     97,108, 32,117,110,115,105,103,110,101,100, 32, 61, 32, 34,
+     34, 10, 32,108,111, 99, 97,108, 32,112,116,114, 32, 61, 32,
+     34, 34, 10, 10, 32,108,111, 99, 97,108, 32,112, 32, 61, 32,
+    115,101,108,102, 58,105,110,109,111,100,117,108,101, 40, 41,
+     32,111,114, 32,115,101,108,102, 58,105,110,110, 97,109,101,
+    115,112, 97, 99,101, 40, 41, 32,111,114, 32,115,101,108,102,
+     58,105,110, 99,108, 97,115,115, 40, 41, 10, 10, 32,105,102,
+     32,112, 32,116,104,101,110, 10, 32,  9,105,102, 32,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46, 99,108, 97,115,115,
+    116,121,112,101, 32, 61, 61, 32, 39, 99,108, 97,115,115, 39,
+     32,116,104,101,110, 10,  9,  9,112, 97,114,101,110,116, 32,
+     61, 32, 34, 95, 34, 32, 46, 46, 32,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 10,  9,101,108,115,
+    101, 10,  9, 32, 32,112, 97,114,101,110,116, 32, 61, 32, 34,
+     95, 34, 32, 46, 46, 32,112, 10,  9,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32,105,102, 32,115,116,114,102,105,110,100,
+     40,115,101,108,102, 46,109,111,100, 44, 34, 40,117,110,115,
+    105,103,110,101,100, 41, 34, 41, 32,116,104,101,110, 10, 32,
+     32,117,110,115,105,103,110,101,100, 32, 61, 32, 34, 95,117,
+    110,115,105,103,110,101,100, 34, 10, 32,101,110,100, 10, 10,
+     32,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61, 61,
+     32, 34, 42, 34, 32,116,104,101,110, 32,112,116,114, 32, 61,
+     32, 34, 95,112,116,114, 34, 10, 32,101,108,115,101,105,102,
+     32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 34, 38,
+     34, 32,116,104,101,110, 32,112,116,114, 32, 61, 32, 34, 95,
+    114,101,102, 34, 10, 32,101,110,100, 10, 10, 32,108,111, 99,
+     97,108, 32,110, 97,109,101, 32, 61, 32, 32,112,114,101,102,
+    105,120, 32, 46, 46, 32,112, 97,114,101,110,116, 32, 46, 46,
+     32,117,110,115,105,103,110,101,100, 32, 46, 46, 32, 34, 95,
+     34, 32, 46, 46, 32,103,115,117, 98, 40,115,101,108,102, 46,
+    108,110, 97,109,101, 32,111,114, 32,115,101,108,102, 46,110,
+     97,109,101, 44, 34, 46, 42, 58, 58, 34, 44, 34, 34, 41, 32,
+     46, 46, 32,112,116,114, 10, 10,  9,110, 97,109,101, 32, 61,
+     32, 99,108,101, 97,110, 95,116,101,109,112,108, 97,116,101,
+     40,110, 97,109,101, 41, 10, 32,114,101,116,117,114,110, 32,
+    110, 97,109,101, 10, 10,101,110,100, 10, 10, 45, 45, 32, 99,
+    104,101, 99,107, 32,105,102, 32,105,116, 32,105,115, 32, 97,
+     32,118, 97,114,105, 97, 98,108,101, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58,105,115,118, 97,114,105, 97, 98,108,101, 32, 40,
+     41, 10, 32,114,101,116,117,114,110, 32,116,114,117,101, 10,
+    101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,118, 97,114,
+    105, 97, 98,108,101, 32,118, 97,108,117,101, 10,102,117,110,
+     99,116,105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105,
+     97, 98,108,101, 58,103,101,116,118, 97,108,117,101, 32, 40,
+     99,108, 97,115,115, 44,115,116, 97,116,105, 99, 44, 32,112,
+    114,111,112, 95,103,101,116, 41, 10, 10,  9,108,111, 99, 97,
+    108, 32,110, 97,109,101, 10,  9,105,102, 32,112,114,111,112,
+     95,103,101,116, 32,116,104,101,110, 10, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,112,114,111,112, 95,103,101,116, 46, 46,
+     34, 40, 41, 34, 10,  9,101,108,115,101, 10,  9,  9,110, 97,
+    109,101, 32, 61, 32,115,101,108,102, 46,110, 97,109,101, 10,
+      9,101,110,100, 10, 10,  9,105,102, 32, 99,108, 97,115,115,
+     32, 97,110,100, 32,115,116, 97,116,105, 99, 32,116,104,101,
+    110, 10,  9, 32,114,101,116,117,114,110, 32,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 46, 46, 39,
+     58, 58, 39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,  9,
+     32,114,101,116,117,114,110, 32, 39,115,101,108,102, 45, 62,
+     39, 46, 46,110, 97,109,101, 10,  9,101,108,115,101, 10,  9,
+     32,114,101,116,117,114,110, 32,110, 97,109,101, 10,  9,101,
+    110,100, 10,101,110,100, 10, 10, 45, 45, 32,103,101,116, 32,
+    118, 97,114,105, 97, 98,108,101, 32,112,111,105,110,116,101,
+    114, 32,118, 97,108,117,101, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101,
+     58,103,101,116,112,111,105,110,116,101,114,118, 97,108,117,
+    101, 32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99,
+     41, 10, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
+     32,115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32,
+    114,101,116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39,
+     58, 58,112, 39, 10, 32,101,108,115,101,105,102, 32, 99,108,
+     97,115,115, 32,116,104,101,110, 10, 32, 32,114,101,116,117,
+    114,110, 32, 39,115,101,108,102, 45, 62,112, 39, 10, 32,101,
+    108,115,101, 10, 32, 32,114,101,116,117,114,110, 32, 39,112,
+     39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,102,
+    117,110, 99,116,105,111,110,115, 10,102,117,110, 99,116,105,
+    111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 58,115,117,112, 99,111,100,101, 32, 40, 41, 10, 10, 32,
+    108,111, 99, 97,108, 32, 99,108, 97,115,115, 32, 61, 32,115,
+    101,108,102, 58,105,110, 99,108, 97,115,115, 40, 41, 10, 10,
+      9,108,111, 99, 97,108, 32,112,114,111,112, 95,103,101,116,
+     44,112,114,111,112, 95,115,101,116, 10,  9,105,102, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40,115,101,108,102,
+     46,109,111,100, 44, 32, 39,116,111,108,117, 97, 95,112,114,
+    111,112,101,114,116,121, 39, 41, 32,116,104,101,110, 10, 10,
+      9,  9, 95, 44, 95, 44,116,121,112,101, 32, 61, 32,115,116,
+    114,105,110,103, 46,102,105,110,100, 40,115,101,108,102, 46,
+    109,111,100, 44, 32, 34,116,111,108,117, 97, 95,112,114,111,
+    112,101,114,116,121, 95, 95, 40, 91, 94, 37,115, 93, 42, 41,
+     34, 41, 10,  9,  9,116,121,112,101, 32, 61, 32,116,121,112,
+    101, 32,111,114, 32, 34,100,101,102, 97,117,108,116, 34, 10,
+      9,  9,112,114,111,112, 95,103,101,116, 44,112,114,111,112,
+     95,115,101,116, 32, 61, 32,103,101,116, 95,112,114,111,112,
+    101,114,116,121, 95,109,101,116,104,111,100,115, 40,116,121,
+    112,101, 44, 32,115,101,108,102, 46,110, 97,109,101, 41, 10,
+      9,  9,115,101,108,102, 46,109,111,100, 32, 61, 32,115,116,
+    114,105,110,103, 46,103,115,117, 98, 40,115,101,108,102, 46,
+    109,111,100, 44, 32, 34,116,111,108,117, 97, 95,112,114,111,
+    112,101,114,116,121, 91, 94, 37,115, 93, 42, 34, 44, 32, 34,
+     34, 41, 10,  9,101,110,100, 10, 10, 32, 45, 45, 32,103,101,
+    116, 32,102,117,110, 99,116,105,111,110, 32, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10,
+     32,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,
+     32, 32,111,117,116,112,117,116, 40, 34, 47, 42, 32,103,101,
+    116, 32,102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,
+    108,102, 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,108,
+     97,115,115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42,
+     47, 34, 41, 10, 32,101,108,115,101, 10, 32, 32,111,117,116,
+    112,117,116, 40, 34, 47, 42, 32,103,101,116, 32,102,117,110,
+     99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,110, 97,
+    109,101, 44, 34, 32, 42, 47, 34, 41, 10, 32,101,110,100, 10,
+     32,115,101,108,102, 46, 99,103,101,116,110, 97,109,101, 32,
+     61, 32,115,101,108,102, 58, 99,102,117,110, 99,110, 97,109,
+    101, 40, 34,116,111,108,117, 97, 95,103,101,116, 34, 41, 10,
+     32,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,103,101,116,110, 97,
+    109,101, 41, 10, 32,111,117,116,112,117,116, 40, 34, 92,110,
+    115,116, 97,116,105, 99, 32,105,110,116, 34, 44,115,101,108,
+    102, 46, 99,103,101,116,110, 97,109,101, 44, 34, 40,108,117,
+     97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95,
+     83, 41, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,123,
+     34, 41, 10, 10, 32, 45, 45, 32,100,101, 99,108, 97,114,101,
+     32,115,101,108,102, 44, 32,105,102, 32,116,104,101, 32, 99,
+     97,115,101, 10, 32,108,111, 99, 97,108, 32, 95, 44, 95, 44,
+    115,116, 97,116,105, 99, 32, 61, 32,115,116,114,102,105,110,
+    100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,115,
+     42, 40,115,116, 97,116,105, 99, 41, 39, 41, 10, 32,105,102,
+     32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,
+    105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 44, 39, 42,
+     39, 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 44, 39, 42,
+     41, 32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+    116,111,108,117, 97, 95,116,111,117,115,101,114,116,121,112,
+    101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 48, 41, 59,
+     39, 41, 10, 32,101,108,115,101,105,102, 32,115,116, 97,116,
+    105, 99, 32,116,104,101,110, 10, 32, 32, 95, 44, 95, 44,115,
+    101,108,102, 46,109,111,100, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,
+    115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46,
+     42, 41, 39, 41, 10, 32,101,110,100, 10, 10, 10, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,115,101,108,102, 32,118, 97,108,
+    117,101, 10, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,
+    100, 32,115,116, 97,116,105, 99, 61, 61,110,105,108, 32,116,
+    104,101,110, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69,
+     76, 69, 65, 83, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32,105,102, 32, 40, 33,115,101,108,
+    102, 41, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,
+    116,111,108,117, 97, 95, 83, 44, 34,105,110,118, 97,108,105,
+    100, 32, 92, 39,115,101,108,102, 92, 39, 32,105,110, 32, 97,
+     99, 99,101,115,115,105,110,103, 32,118, 97,114,105, 97, 98,
+    108,101, 32, 92, 39, 39, 46, 46,115,101,108,102, 46,110, 97,
+    109,101, 46, 46, 39, 92, 39, 34, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 59, 10,  9,  9,111,117,116,112,117,116, 40, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10, 32,101,110,100, 10,
+     10, 32, 45, 45, 32,114,101,116,117,114,110, 32,118, 97,108,
+    117,101, 10, 32,105,102, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 32, 39,
+    116,111,108,117, 97, 95,105,110,104,101,114,105,116,115, 39,
+     41, 32,116,104,101,110, 10, 32,  9,111,117,116,112,117,116,
+     40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,
+    115,112,108,117,115, 92,110, 39, 41, 10,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32,116,111,108,117, 97, 95,112,117,115,
+    104,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
+     95, 83, 44, 40,118,111,105,100, 42, 41,115,116, 97,116,105,
+     99, 95, 99, 97,115,116, 60, 39, 46, 46,115,101,108,102, 46,
+    116,121,112,101, 46, 46, 39, 42, 62, 40,115,101,108,102, 41,
+     44, 32, 34, 39, 44,115,101,108,102, 46,116,121,112,101, 44,
+     39, 34, 41, 59, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,101,108,115,101, 92,110, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32,116,111,108,117, 97, 95,112,117,
+    115,104,117,115,101,114,116,121,112,101, 40,116,111,108,117,
+     97, 95, 83, 44, 40,118,111,105,100, 42, 41, 40, 40, 39, 46,
+     46,115,101,108,102, 46,116,121,112,101, 46, 46, 39, 42, 41,
+    115,101,108,102, 41, 44, 32, 34, 39, 44,115,101,108,102, 46,
+    116,121,112,101, 44, 39, 34, 41, 59, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39,
+     41, 10, 32,101,108,115,101, 10,  9,108,111, 99, 97,108, 32,
+    116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,
+    115,101,108,102, 46,116,121,112,101, 41, 10,  9,105,102, 32,
+    116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 32,116,111,108,117, 97, 95,112,117,115,104, 39,
+     46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44,
+     40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,115,101,108,102,
+     58,103,101,116,118, 97,108,117,101, 40, 99,108, 97,115,115,
+     44,115,116, 97,116,105, 99, 44,112,114,111,112, 95,103,101,
+    116, 41, 46, 46, 39, 41, 59, 39, 41, 10,  9,101,108,115,101,
+     10,  9,  9,116, 32, 61, 32,115,101,108,102, 46,116,121,112,
+    101, 10,  9,  9,105,102, 32,115,101,108,102, 46,112,116,114,
+     32, 61, 61, 32, 39, 38, 39, 32,111,114, 32,115,101,108,102,
+     46,112,116,114, 32, 61, 61, 32, 39, 39, 32,116,104,101,110,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 32,116,
+    111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,
+    112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,
+    100, 42, 41, 38, 39, 46, 46,115,101,108,102, 58,103,101,116,
+    118, 97,108,117,101, 40, 99,108, 97,115,115, 44,115,116, 97,
+    116,105, 99, 44,112,114,111,112, 95,103,101,116, 41, 46, 46,
+     39, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,
+      9,101,108,115,101, 10,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 32,116,111,108,117, 97, 95,112,117,115,104,117,
+    115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95, 83,
+     44, 40,118,111,105,100, 42, 41, 39, 46, 46,115,101,108,102,
+     58,103,101,116,118, 97,108,117,101, 40, 99,108, 97,115,115,
+     44,115,116, 97,116,105, 99, 44,112,114,111,112, 95,103,101,
+    116, 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39, 34, 41, 59,
+     39, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10, 32,
+    101,110,100, 10, 32,111,117,116,112,117,116, 40, 39, 32,114,
+    101,116,117,114,110, 32, 49, 59, 39, 41, 10, 32,111,117,116,
+    112,117,116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 92,110, 39, 41, 10, 32,111,117,116,112,117,116,
+     40, 39, 92,110, 39, 41, 10, 10, 32, 45, 45, 32,115,101,116,
+     32,102,117,110, 99,116,105,111,110, 32, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 32,
+    105,102, 32,110,111,116, 32, 40,115,116,114,102,105,110,100,
+     40,115,101,108,102, 46,116,121,112,101, 44, 39, 99,111,110,
+    115,116, 37,115, 43, 39, 41, 32,111,114, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,115,101,108,102, 46,109,111,
+    100, 44, 32, 39,116,111,108,117, 97, 95,114,101, 97,100,111,
+    110,108,121, 39, 41, 32,111,114, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44,
+     32, 39,116,111,108,117, 97, 95,105,110,104,101,114,105,116,
+    115, 39, 41, 41, 32, 32,116,104,101,110, 10, 32, 32,105,102,
+     32, 99,108, 97,115,115, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 34, 47, 42, 32,115,101,116, 32,
+    102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102,
+     46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,108, 97,115,
+    115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47, 34,
+     41, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 34, 47, 42, 32,115,101,116, 32,102,117,110,
+     99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,110, 97,
+    109,101, 44, 34, 32, 42, 47, 34, 41, 10, 32, 32,101,110,100,
+     10, 32, 32,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+    101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,110,
+     97,109,101, 40, 34,116,111,108,117, 97, 95,115,101,116, 34,
+     41, 10, 32, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46, 99,115,101,
+    116,110, 97,109,101, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 34, 92,110,115,116, 97,116,105, 99, 32,105,110,116, 34,
+     44,115,101,108,102, 46, 99,115,101,116,110, 97,109,101, 44,
+     34, 40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,
+    108,117, 97, 95, 83, 41, 34, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 34,123, 34, 41, 10, 10, 32, 32, 45, 45, 32,100,
+    101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,102,
+     32,116,104,101, 32, 99, 97,115,101, 10, 32, 32,105,102, 32,
+     99,108, 97,115,115, 32, 97,110,100, 32,115,116, 97,116,105,
+     99, 61, 61,110,105,108, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,108,102,
+     46,112, 97,114,101,110,116, 46,116,121,112,101, 44, 39, 42,
+     39, 44, 39,115,101,108,102, 32, 61, 32, 39, 41, 10, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 40, 39, 44,115,101,108,
+    102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 44, 39,
+     42, 41, 32, 39, 41, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39,116,111,108,117, 97, 95,116,111,117,115,101,114,116,
+    121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 48,
+     41, 59, 39, 41, 10, 32, 32, 32, 45, 45, 32, 99,104,101, 99,
+    107, 32,115,101,108,102, 32,118, 97,108,117,101, 10,  9,  9,
+    101,110,100, 10, 32, 32, 45, 45, 32, 99,104,101, 99,107, 32,
+    116,121,112,101,115, 10,  9,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32,116,111,108,117, 97, 95,
+     69,114,114,111,114, 32,116,111,108,117, 97, 95,101,114,114,
+     59, 39, 41, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 32,
+     97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,105,108,
+     32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,105,102, 32, 40, 33,115,101,108,102, 41, 32,
+    116,111,108,117, 97, 95,101,114,114,111,114, 40,116,111,108,
+    117, 97, 95, 83, 44, 34,105,110,118, 97,108,105,100, 32, 92,
+     39,115,101,108,102, 92, 39, 32,105,110, 32, 97, 99, 99,101,
+    115,115,105,110,103, 32,118, 97,114,105, 97, 98,108,101, 32,
+     92, 39, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46,
+     46, 39, 92, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 59,
+     10, 32, 32,101,108,115,101,105,102, 32,115,116, 97,116,105,
+     99, 32,116,104,101,110, 10, 32, 32, 32, 95, 44, 95, 44,115,
+    101,108,102, 46,109,111,100, 32, 61, 32,115,116,114,102,105,
+    110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94, 37,
+    115, 42,115,116, 97,116,105, 99, 37,115, 37,115, 42, 40, 46,
+     42, 41, 39, 41, 10, 32, 32,101,110,100, 10, 10, 32, 32, 45,
+     45, 32, 99,104,101, 99,107, 32,118, 97,114,105, 97, 98,108,
+    101, 32,116,121,112,101, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,105,102, 32, 40, 33, 39, 46, 46,115,101,108,
+    102, 58,111,117,116, 99,104,101, 99,107,116,121,112,101, 40,
+     50, 41, 46, 46, 39, 41, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32,116,111,108,117, 97, 95,101,114,
+    114,111,114, 40,116,111,108,117, 97, 95, 83, 44, 34, 35,118,
+    105,110,118, 97,108,105,100, 32,116,121,112,101, 32,105,110,
+     32,118, 97,114,105, 97, 98,108,101, 32, 97,115,115,105,103,
+    110,109,101,110,116, 46, 34, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 10,
+     32, 32, 45, 45, 32, 97,115,115,105,103,110, 32,118, 97,108,
+    117,101, 10,  9,  9,108,111, 99, 97,108, 32,100,101,102, 32,
+     61, 32, 48, 10,  9,  9,105,102, 32,115,101,108,102, 46,100,
+    101,102, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 32,100,
+    101,102, 32, 61, 32,115,101,108,102, 46,100,101,102, 32,101,
+    110,100, 10,  9,  9,105,102, 32,115,101,108,102, 46,116,121,
+    112,101, 32, 61, 61, 32, 39, 99,104, 97,114, 42, 39, 32, 97,
+    110,100, 32,115,101,108,102, 46,100,105,109, 32,126, 61, 32,
+     39, 39, 32,116,104,101,110, 32, 45, 45, 32,105,115, 32,115,
+    116,114,105,110,103, 10,  9,  9, 32,111,117,116,112,117,116,
+     40, 39, 32,115,116,114,110, 99,112,121, 40, 39, 41, 10,  9,
+      9,  9,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
+    115,116, 97,116,105, 99, 32,116,104,101,110, 10,  9,  9,  9,
+      9,111,117,116,112,117,116, 40,115,101,108,102, 46,112, 97,
+    114,101,110,116, 46,116,121,112,101, 46, 46, 39, 58, 58, 39,
+     46, 46,115,101,108,102, 46,110, 97,109,101, 41, 10,  9,  9,
+      9,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,116,
+    104,101,110, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40,
+     39,115,101,108,102, 45, 62, 39, 46, 46,115,101,108,102, 46,
+    110, 97,109,101, 41, 10,  9,  9,  9,101,108,115,101, 10,  9,
+      9,  9,  9,111,117,116,112,117,116, 40,115,101,108,102, 46,
+    110, 97,109,101, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 44,116,111,108,117, 97,
+     95,116,111,115,116,114,105,110,103, 40,116,111,108,117, 97,
+     95, 83, 44, 50, 44, 39, 44,100,101,102, 44, 39, 41, 44, 39,
+     44,115,101,108,102, 46,100,105,109, 44, 39, 45, 49, 41, 59,
+     39, 41, 10,  9,  9,101,108,115,101, 10,  9,  9,  9,108,111,
+     99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10,  9,  9,
+      9,105,102, 32,115,101,108,102, 46,112,116,114,126, 61, 39,
+     39, 32,116,104,101,110, 32,112,116,114, 32, 61, 32, 39, 42,
+     39, 32,101,110,100, 10,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 39, 41, 10,  9,  9,  9,108,111, 99, 97,108, 32,
+    110, 97,109,101, 32, 61, 32,112,114,111,112, 95,115,101,116,
+     32,111,114, 32,115,101,108,102, 46,110, 97,109,101, 10,  9,
+      9,  9,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
+    115,116, 97,116,105, 99, 32,116,104,101,110, 10,  9,  9,  9,
+      9,111,117,116,112,117,116, 40,115,101,108,102, 46,112, 97,
+    114,101,110,116, 46,116,121,112,101, 46, 46, 39, 58, 58, 39,
+     46, 46,110, 97,109,101, 41, 10,  9,  9,  9,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 10,  9,
+      9,  9,  9,111,117,116,112,117,116, 40, 39,115,101,108,102,
+     45, 62, 39, 46, 46,110, 97,109,101, 41, 10,  9,  9,  9,101,
+    108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116, 40,
+    110, 97,109,101, 41, 10,  9,  9,  9,101,110,100, 10,  9,  9,
+      9,108,111, 99, 97,108, 32,116, 32, 61, 32,105,115, 98, 97,
+    115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10,
+      9,  9,  9,105,102, 32,112,114,111,112, 95,115,101,116, 32,
+    116,104,101,110, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 40, 39, 41, 10,  9,  9,  9,101,108,115,101, 10,  9,
+      9,  9,  9,111,117,116,112,117,116, 40, 39, 32, 61, 32, 39,
+     41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,105,102, 32,
+    110,111,116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61,
+     39, 39, 32,116,104,101,110, 32,111,117,116,112,117,116, 40,
+     39, 42, 39, 41, 32,101,110,100, 10,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39, 40, 40, 39, 44,115,101,108,102, 46,109,
+    111,100, 44,115,101,108,102, 46,116,121,112,101, 41, 10,  9,
+      9,  9,105,102, 32,110,111,116, 32,116, 32,116,104,101,110,
+     10,  9,  9,  9,  9,111,117,116,112,117,116, 40, 39, 42, 39,
+     41, 10,  9,  9,  9,101,110,100, 10,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39, 41, 32, 39, 41, 10,  9,  9,  9,105,102,
+     32,116, 32,116,104,101,110, 10,  9,  9,  9,  9,105,102, 32,
+    105,115,101,110,117,109, 40,115,101,108,102, 46,116,121,112,
+    101, 41, 32,116,104,101,110, 10,  9,  9,  9,  9,  9,111,117,
+    116,112,117,116, 40, 39, 40,105,110,116, 41, 32, 39, 41, 10,
+      9,  9,  9,  9,101,110,100, 10,  9,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39,116,111,108,117, 97, 95,116,111, 39, 46,
+     46,116, 44, 39, 40,116,111,108,117, 97, 95, 83, 44, 50, 44,
+     39, 44,100,101,102, 44, 39, 41, 41, 39, 41, 10,  9,  9,  9,
+    101,108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,116,
+     40, 39,116,111,108,117, 97, 95,116,111,117,115,101,114,116,
+    121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 39,
+     44,100,101,102, 44, 39, 41, 41, 39, 41, 10,  9,  9,  9,101,
+    110,100, 10,  9,  9,  9,105,102, 32,112,114,111,112, 95,115,
+    101,116, 32,116,104,101,110, 10,  9,  9,  9,  9,111,117,116,
+    112,117,116, 40, 34, 41, 34, 41, 10,  9,  9,  9,101,110,100,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 34, 59, 34, 41,
+     10,  9,  9,101,110,100, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32,114,101,116,117,114,110, 32, 48, 59, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39,125, 39, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,102,
+     32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85,
+     65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10, 32,
+    101,110,100, 10, 10,101,110,100, 10, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,
+    108,101, 58,114,101,103,105,115,116,101,114, 32, 40,112,114,
+    101, 41, 10, 10,  9,105,102, 32,110,111,116, 32,115,101,108,
+    102, 58, 99,104,101, 99,107, 95,112,117, 98,108,105, 99, 95,
+     97, 99, 99,101,115,115, 40, 41, 32,116,104,101,110, 10,  9,
+      9,114,101,116,117,114,110, 10,  9,101,110,100, 10, 32,112,
+    114,101, 32, 61, 32,112,114,101, 32,111,114, 32, 39, 39, 10,
+     32,108,111, 99, 97,108, 32,112, 97,114,101,110,116, 32, 61,
+     32,115,101,108,102, 58,105,110,109,111,100,117,108,101, 40,
+     41, 32,111,114, 32,115,101,108,102, 58,105,110,110, 97,109,
+    101,115,112, 97, 99,101, 40, 41, 32,111,114, 32,115,101,108,
+    102, 58,105,110, 99,108, 97,115,115, 40, 41, 10, 32,105,102,
+     32,110,111,116, 32,112, 97,114,101,110,116, 32,116,104,101,
+    110, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 86, 97,114,
+    105, 97, 98,108,101, 46, 95,119, 97,114,110,105,110,103, 61,
+     61,110,105,108, 32,116,104,101,110, 10, 32, 32, 32,119, 97,
+    114,110,105,110,103, 40, 34, 77, 97,112,112,105,110,103, 32,
+    118, 97,114,105, 97, 98,108,101, 32,116,111, 32,103,108,111,
+     98, 97,108, 32,109, 97,121, 32,100,101,103,114, 97,100,101,
+     32,112,101,114,102,111,114,109, 97,110, 99,101, 34, 41, 10,
+     32, 32, 32, 99,108, 97,115,115, 86, 97,114,105, 97, 98,108,
+    101, 46, 95,119, 97,114,110,105,110,103, 32, 61, 32, 49, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 32,105,102, 32,
+    115,101,108,102, 46, 99,115,101,116,110, 97,109,101, 32,116,
+    104,101,110, 10, 32, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39,116,111,108,117, 97, 95,118, 97,114,105, 97,
+     98,108,101, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46,
+     46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34,
+     44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,110, 97,
+    109,101, 46, 46, 39, 44, 39, 46, 46,115,101,108,102, 46, 99,
+    115,101,116,110, 97,109,101, 46, 46, 39, 41, 59, 39, 41, 10,
+     32,101,108,115,101, 10, 32, 32,111,117,116,112,117,116, 40,
+    112,114,101, 46, 46, 39,116,111,108,117, 97, 95,118, 97,114,
+    105, 97, 98,108,101, 40,116,111,108,117, 97, 95, 83, 44, 34,
+     39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46,
+     39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,116,
+    110, 97,109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59, 39,
+     41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45, 32,
+     73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110, 32,
+     95, 86, 97,114,105, 97, 98,108,101, 32, 40,116, 41, 10, 32,
+    115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44,
+     99,108, 97,115,115, 86, 97,114,105, 97, 98,108,101, 41, 10,
+     32, 97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,
+    117,114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,
+    111,110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,
+    120,112,101, 99,116,115, 32, 97, 32,115,116,114,105,110,103,
+     32,114,101,112,114,101,115,101,110,116,105,110,103, 32,116,
+    104,101, 32,118, 97,114,105, 97, 98,108,101, 32,100,101, 99,
+    108, 97,114, 97,116,105,111,110, 46, 10,102,117,110, 99,116,
+    105,111,110, 32, 86, 97,114,105, 97, 98,108,101, 32, 40,115,
+     41, 10, 32,114,101,116,117,114,110, 32, 95, 86, 97,114,105,
+     97, 98,108,101, 32, 40, 68,101, 99,108, 97,114, 97,116,105,
+    111,110, 40,115, 44, 39,118, 97,114, 39, 41, 41, 10,101,110,
+    100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/variable.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 97,114,114, 97,121,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 57, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     97,114,114, 97,121, 46,108,117, 97, 44,118, 32, 49, 46, 49,
+     32, 50, 48, 48, 48, 47, 49, 49, 47, 48, 54, 32, 50, 50, 58,
+     48, 51, 58, 53, 55, 32, 99,101,108,101,115, 32, 69,120,112,
+     32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,
+    101, 32,105,115, 32,102,114,101,101, 32,115,111,102,116,119,
+     97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,
+    100,105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,
+    110,100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116,
+     46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,
+    114,101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,
+    101,117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110,
+     32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44,
+     32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,
+    104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,
+    103, 97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,
+    100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44,
+     32,115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,
+    101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,
+    101,110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105,
+     99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 65,
+    114,114, 97,121, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,
+    101,112,114,101,115,101,110,116,115, 32, 97, 32,101,120,116,
+    101,114,110, 32, 97,114,114, 97,121, 32,118, 97,114,105, 97,
+     98,108,101, 32,111,114, 32, 97, 32,112,117, 98,108,105, 99,
+     32,109,101,109, 98,101,114, 32,111,102, 32, 97, 32, 99,108,
+     97,115,115, 46, 10, 45, 45, 32, 83,116,111,114,101,115, 32,
+     97,108,108, 32,102,105,101,108,100,115, 32,112,114,101,115,
+    101,110,116, 32,105,110, 32, 97, 32,100,101, 99,108, 97,114,
+     97,116,105,111,110, 46, 10, 99,108, 97,115,115, 65,114,114,
+     97,121, 32, 61, 32,123, 10,125, 10, 99,108, 97,115,115, 65,
+    114,114, 97,121, 46, 95, 95,105,110,100,101,120, 32, 61, 32,
+     99,108, 97,115,115, 65,114,114, 97,121, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 65,
+    114,114, 97,121, 44, 99,108, 97,115,115, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 41, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 65,114,114, 97,121,123, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,116,121,
+    112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,116,
+    121,112,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,112,116,114,
+     32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,112,116,
+    114, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116,
+     40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32,
+     61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,100,101,102, 32, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,100,101,102, 46, 46,
+     34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,
+    101,110,116, 46, 46, 34, 32,100,105,109, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,100,105,109, 46, 46, 34, 39,
+     44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,
+    116, 46, 46, 34, 32,114,101,116, 32, 32, 61, 32, 39, 34, 46,
+     46,115,101,108,102, 46,114,101,116, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,
+    100, 10, 10, 45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,
+    105,116, 32,105,115, 32, 97, 32,118, 97,114,105, 97, 98,108,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 65,114,114, 97,121, 58,105,115,118, 97,114,105, 97, 98,
+    108,101, 32, 40, 41, 10, 32,114,101,116,117,114,110, 32,116,
+    114,117,101, 10,101,110,100, 10, 10, 10, 45, 45, 32,103,101,
+    116, 32,118, 97,114,105, 97, 98,108,101, 32,118, 97,108,117,
+    101, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 65,114,114, 97,121, 58,103,101,116,118, 97,108,117,101,
+     32, 40, 99,108, 97,115,115, 44,115,116, 97,116,105, 99, 41,
+     10, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,
+    115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32,114,
+    101,116,117,114,110, 32, 99,108, 97,115,115, 46, 46, 39, 58,
+     58, 39, 46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46,
+     39, 91,116,111,108,117, 97, 95,105,110,100,101,120, 93, 39,
+     10, 32,101,108,115,101,105,102, 32, 99,108, 97,115,115, 32,
+    116,104,101,110, 10, 32, 32,114,101,116,117,114,110, 32, 39,
+    115,101,108,102, 45, 62, 39, 46, 46,115,101,108,102, 46,110,
+     97,109,101, 46, 46, 39, 91,116,111,108,117, 97, 95,105,110,
+    100,101,120, 93, 39, 10, 32,101,108,115,101, 10, 32, 32,114,
+    101,116,117,114,110, 32,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 39, 91,116,111,108,117, 97, 95,105,110,100,101,120,
+     93, 39, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
+     32, 87,114,105,116,101, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110,115, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121, 58,
+    115,117,112, 99,111,100,101, 32, 40, 41, 10, 32,108,111, 99,
+     97,108, 32, 99,108, 97,115,115, 32, 61, 32,115,101,108,102,
+     58,105,110, 99,108, 97,115,115, 40, 41, 10, 10, 32, 45, 45,
+     32,103,101,116, 32,102,117,110, 99,116,105,111,110, 32, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 10, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,
+    101,110, 10, 32, 32,111,117,116,112,117,116, 40, 34, 47, 42,
+     32,103,101,116, 32,102,117,110, 99,116,105,111,110, 58, 34,
+     44,115,101,108,102, 46,110, 97,109,101, 44, 34, 32,111,102,
+     32, 99,108, 97,115,115, 32, 34, 44, 99,108, 97,115,115, 44,
+     34, 32, 42, 47, 34, 41, 10, 32,101,108,115,101, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 47, 42, 32,103,101,116, 32,
+    102,117,110, 99,116,105,111,110, 58, 34, 44,115,101,108,102,
+     46,110, 97,109,101, 44, 34, 32, 42, 47, 34, 41, 10, 32,101,
+    110,100, 10, 32,115,101,108,102, 46, 99,103,101,116,110, 97,
+    109,101, 32, 61, 32,115,101,108,102, 58, 99,102,117,110, 99,
+    110, 97,109,101, 40, 34,116,111,108,117, 97, 95,103,101,116,
+     34, 41, 10, 32,111,117,116,112,117,116, 40, 34, 35,105,102,
+    110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65,
+     66, 76, 69, 95, 34, 46, 46,115,101,108,102, 46, 99,103,101,
+    116,110, 97,109,101, 41, 10, 32,111,117,116,112,117,116, 40,
+     34, 92,110,115,116, 97,116,105, 99, 32,105,110,116, 34, 44,
+    115,101,108,102, 46, 99,103,101,116,110, 97,109,101, 44, 34,
+     40,108,117, 97, 95, 83,116, 97,116,101, 42, 32,116,111,108,
+    117, 97, 95, 83, 41, 34, 41, 10, 32,111,117,116,112,117,116,
+     40, 34,123, 34, 41, 10, 32,111,117,116,112,117,116, 40, 34,
+     32,105,110,116, 32,116,111,108,117, 97, 95,105,110,100,101,
+    120, 59, 34, 41, 10, 10, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,115,101,108,102, 44, 32,105,102, 32,116,104,101,
+     32, 99, 97,115,101, 10, 32,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,115,116, 97,116,105, 99, 32, 61, 32,115,116,114,102,
+    105,110,100, 40,115,101,108,102, 46,109,111,100, 44, 39, 94,
+     37,115, 42, 40,115,116, 97,116,105, 99, 41, 39, 41, 10, 32,
+    105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116,
+     97,116,105, 99, 61, 61,110,105,108, 32,116,104,101,110, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 39, 44,115,101,
+    108,102, 46,112, 97,114,101,110,116, 46,116,121,112,101, 44,
+     39, 42, 39, 44, 39,115,101,108,102, 59, 39, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,112,117,
+    115,104,115,116,114,105,110,103, 40,116,111,108,117, 97, 95,
+     83, 44, 34, 46,115,101,108,102, 34, 41, 59, 39, 41, 10, 32,
+     32,111,117,116,112,117,116, 40, 39, 32,108,117, 97, 95,114,
+     97,119,103,101,116, 40,116,111,108,117, 97, 95, 83, 44, 49,
+     41, 59, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,115,101,108,102, 32, 61, 32, 39, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,116,121,112,101, 44, 39, 42, 41, 32,
+     39, 41, 10, 32, 32,111,117,116,112,117,116, 40, 39,108,117,
+     97, 95,116,111,117,115,101,114,100, 97,116, 97, 40,116,111,
+    108,117, 97, 95, 83, 44, 45, 49, 41, 59, 39, 41, 10, 32,101,
+    108,115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,
+    101,110, 10, 32, 32, 95, 44, 95, 44,115,101,108,102, 46,109,
+    111,100, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,
+    108,102, 46,109,111,100, 44, 39, 94, 37,115, 42,115,116, 97,
+    116,105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 39, 41, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32, 99,104,101, 99,107,
+     32,105,110,100,101,120, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32,123, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32,116,111,108,117, 97, 95, 69,114,
+    114,111,114, 32,116,111,108,117, 97, 95,101,114,114, 59, 39,
+     41, 10, 32,111,117,116,112,117,116, 40, 39, 32, 32,105,102,
+     32, 40, 33,116,111,108,117, 97, 95,105,115,110,117,109, 98,
+    101,114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 41, 39, 41, 10,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,
+    117, 97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95,
+     83, 44, 34, 35,118,105,110,118, 97,108,105,100, 32,116,121,
+    112,101, 32,105,110, 32, 97,114,114, 97,121, 32,105,110,100,
+    101,120,105,110,103, 46, 34, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,125, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10,  9,105,102,
+     32,102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,104,101,
+    110, 32, 45, 45, 32,102,111,114, 32, 99,111,109,112, 97,116,
+    105, 98,105,108,105,116,121, 32,119,105,116,104, 32,116,111,
+    108,117, 97, 53, 32, 63, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32,116,111,108,117, 97, 95,105,110,100,101,120, 32,
+     61, 32, 40,105,110,116, 41,116,111,108,117, 97, 95,116,111,
+    110,117,109, 98,101,114, 40,116,111,108,117, 97, 95, 83, 44,
+     50, 44, 48, 41, 45, 49, 59, 39, 41, 10,  9,101,108,115,101,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,108,
+    117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,116,
+     41,116,111,108,117, 97, 95,116,111,110,117,109, 98,101,114,
+     40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 41, 59, 39,
+     41, 10,  9,101,110,100, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102,
+     32,115,101,108,102, 46,100,105,109, 32, 97,110,100, 32,115,
+    101,108,102, 46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,
+    104,101,110, 10,  9, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,105,102, 32, 40,116,111,108,117, 97, 95,105,110,100,101,
+    120, 60, 48, 32,124,124, 32,116,111,108,117, 97, 95,105,110,
+    100,101,120, 62, 61, 39, 46, 46,115,101,108,102, 46,100,105,
+    109, 46, 46, 39, 41, 39, 41, 10,  9,101,108,115,101, 10,  9,
+     32, 32,111,117,116,112,117,116, 40, 39, 32,105,102, 32, 40,
+    116,111,108,117, 97, 95,105,110,100,101,120, 60, 48, 41, 39,
+     41, 10,  9,101,110,100, 10, 32,111,117,116,112,117,116, 40,
+     39, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,
+    116,111,108,117, 97, 95, 83, 44, 34, 97,114,114, 97,121, 32,
+    105,110,100,101,120,105,110,103, 32,111,117,116, 32,111,102,
+     32,114, 97,110,103,101, 46, 34, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10, 10, 32, 45, 45, 32,114,101,
+    116,117,114,110, 32,118, 97,108,117,101, 10, 32,108,111, 99,
+     97,108, 32,116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,
+    105, 99, 40,115,101,108,102, 46,116,121,112,101, 41, 10, 32,
+    105,102, 32,116, 32,116,104,101,110, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,
+    104, 39, 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95,
+     83, 44, 40, 39, 44, 99,116, 44, 39, 41, 39, 46, 46,115,101,
+    108,102, 58,103,101,116,118, 97,108,117,101, 40, 99,108, 97,
+    115,115, 44,115,116, 97,116,105, 99, 41, 46, 46, 39, 41, 59,
+     39, 41, 10, 32,101,108,115,101, 10,  9,  9,116, 32, 61, 32,
+    115,101,108,102, 46,116,121,112,101, 10, 32, 32,105,102, 32,
+    115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38, 39,
+     32,111,114, 32,115,101,108,102, 46,112,116,114, 32, 61, 61,
+     32, 39, 39, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32,116,111,108,117, 97, 95,112,117,115,
+    104,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
+     95, 83, 44, 40,118,111,105,100, 42, 41, 38, 39, 46, 46,115,
+    101,108,102, 58,103,101,116,118, 97,108,117,101, 40, 99,108,
+     97,115,115, 44,115,116, 97,116,105, 99, 41, 46, 46, 39, 44,
+     34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10, 32, 32,101,
+    108,115,101, 10, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     32,116,111,108,117, 97, 95,112,117,115,104,117,115,101,114,
+    116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
+    111,105,100, 42, 41, 39, 46, 46,115,101,108,102, 58,103,101,
+    116,118, 97,108,117,101, 40, 99,108, 97,115,115, 44,115,116,
+     97,116,105, 99, 41, 46, 46, 39, 44, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10, 32, 32,101,110,100, 10, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 39, 32,114,101,116,
+    117,114,110, 32, 49, 59, 39, 41, 10, 32,111,117,116,112,117,
+    116, 40, 39,125, 39, 41, 10, 32,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 32, 47, 47, 35,105,102,110,100,
+    101,102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76,
+     69, 92,110, 39, 41, 10, 32,111,117,116,112,117,116, 40, 39,
+     92,110, 39, 41, 10, 10, 32, 45, 45, 32,115,101,116, 32,102,
+    117,110, 99,116,105,111,110, 32, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+     45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 10, 32,105,102,
+     32,110,111,116, 32,115,116,114,102,105,110,100, 40,115,101,
+    108,102, 46,116,121,112,101, 44, 39, 99,111,110,115,116, 39,
+     41, 32,116,104,101,110, 10, 32, 32,105,102, 32, 99,108, 97,
+    115,115, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,
+    117,116, 40, 34, 47, 42, 32,115,101,116, 32,102,117,110, 99,
+    116,105,111,110, 58, 34, 44,115,101,108,102, 46,110, 97,109,
+    101, 44, 34, 32,111,102, 32, 99,108, 97,115,115, 32, 34, 44,
+     99,108, 97,115,115, 44, 34, 32, 42, 47, 34, 41, 10, 32, 32,
+    101,108,115,101, 10, 32, 32, 32,111,117,116,112,117,116, 40,
+     34, 47, 42, 32,115,101,116, 32,102,117,110, 99,116,105,111,
+    110, 58, 34, 44,115,101,108,102, 46,110, 97,109,101, 44, 34,
+     32, 42, 47, 34, 41, 10, 32, 32,101,110,100, 10, 32, 32,115,
+    101,108,102, 46, 99,115,101,116,110, 97,109,101, 32, 61, 32,
+    115,101,108,102, 58, 99,102,117,110, 99,110, 97,109,101, 40,
+     34,116,111,108,117, 97, 95,115,101,116, 34, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,102,
+     32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95,
+     34, 46, 46,115,101,108,102, 46, 99,115,101,116,110, 97,109,
+    101, 41, 10, 32, 32,111,117,116,112,117,116, 40, 34, 92,110,
+    115,116, 97,116,105, 99, 32,105,110,116, 34, 44,115,101,108,
+    102, 46, 99,115,101,116,110, 97,109,101, 44, 34, 40,108,117,
+     97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95,
+     83, 41, 34, 41, 10, 32, 32,111,117,116,112,117,116, 40, 34,
+    123, 34, 41, 10, 10, 32, 32, 45, 45, 32,100,101, 99,108, 97,
+    114,101, 32,105,110,100,101,120, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,110,116, 32,116,111,108,117, 97, 95,
+    105,110,100,101,120, 59, 39, 41, 10, 10, 32, 32, 45, 45, 32,
+    100,101, 99,108, 97,114,101, 32,115,101,108,102, 44, 32,105,
+    102, 32,116,104,101, 32, 99, 97,115,101, 10, 32, 32,108,111,
+     99, 97,108, 32, 95, 44, 95, 44,115,116, 97,116,105, 99, 32,
+     61, 32,115,116,114,102,105,110,100, 40,115,101,108,102, 46,
+    109,111,100, 44, 39, 94, 37,115, 42, 40,115,116, 97,116,105,
+     99, 41, 39, 41, 10, 32, 32,105,102, 32, 99,108, 97,115,115,
+     32, 97,110,100, 32,115,116, 97,116,105, 99, 61, 61,110,105,
+    108, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,
+    108,102, 59, 39, 41, 10, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 32,108,117, 97, 95,112,117,115,104,115,116,114,105,
+    110,103, 40,116,111,108,117, 97, 95, 83, 44, 34, 46,115,101,
+    108,102, 34, 41, 59, 39, 41, 10, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32,108,117, 97, 95,114, 97,119,103,101,116,
+     40,116,111,108,117, 97, 95, 83, 44, 49, 41, 59, 39, 41, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32,115,101,108,
+    102, 32, 61, 32, 39, 41, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 40, 39, 44,115,101,108,102, 46,112, 97,114,101,
+    110,116, 46,116,121,112,101, 44, 39, 42, 41, 32, 39, 41, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39,108,117, 97, 95,
+    116,111,117,115,101,114,100, 97,116, 97, 40,116,111,108,117,
+     97, 95, 83, 44, 45, 49, 41, 59, 39, 41, 10, 32, 32,101,108,
+    115,101,105,102, 32,115,116, 97,116,105, 99, 32,116,104,101,
+    110, 10, 32, 32, 32, 95, 44, 95, 44,115,101,108,102, 46,109,
+    111,100, 32, 61, 32,115,116,114,102,105,110,100, 40,115,101,
+    108,102, 46,109,111,100, 44, 39, 94, 37,115, 42,115,116, 97,
+    116,105, 99, 37,115, 37,115, 42, 40, 46, 42, 41, 39, 41, 10,
+     32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32, 99,104,101,
+     99,107, 32,105,110,100,101,120, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32,123, 39, 41, 10,
+      9, 32,111,117,116,112,117,116, 40, 39, 32, 32,116,111,108,
+    117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97, 95,
+    101,114,114, 59, 39, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 32,105,102, 32, 40, 33,116,111,108,117, 97, 95,
+    105,115,110,117,109, 98,101,114, 40,116,111,108,117, 97, 95,
+     83, 44, 50, 44, 48, 44, 38,116,111,108,117, 97, 95,101,114,
+    114, 41, 41, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 32, 32, 32,116,111,108,117, 97, 95,101,114,114,111,114,
+     40,116,111,108,117, 97, 95, 83, 44, 34, 35,118,105,110,118,
+     97,108,105,100, 32,116,121,112,101, 32,105,110, 32, 97,114,
+    114, 97,121, 32,105,110,100,101,120,105,110,103, 46, 34, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 32,125, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,
+    102, 92,110, 39, 41, 10, 10,  9,105,102, 32,102,108, 97,103,
+    115, 91, 39, 49, 39, 93, 32,116,104,101,110, 32, 45, 45, 32,
+    102,111,114, 32, 99,111,109,112, 97,116,105, 98,105,108,105,
+    116,121, 32,119,105,116,104, 32,116,111,108,117, 97, 53, 32,
+     63, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95,105,110,100,101,120, 32, 61, 32, 40,105,110,
+    116, 41,116,111,108,117, 97, 95,116,111,110,117,109, 98,101,
+    114, 40,116,111,108,117, 97, 95, 83, 44, 50, 44, 48, 41, 45,
+     49, 59, 39, 41, 10,  9,101,108,115,101, 10,  9,  9,111,117,
+    116,112,117,116, 40, 39, 32,116,111,108,117, 97, 95,105,110,
+    100,101,120, 32, 61, 32, 40,105,110,116, 41,116,111,108,117,
+     97, 95,116,111,110,117,109, 98,101,114, 40,116,111,108,117,
+     97, 95, 83, 44, 50, 44, 48, 41, 59, 39, 41, 10,  9,101,110,
+    100, 10, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,105,
+    102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76,
+     69, 65, 83, 69, 92,110, 39, 41, 10,  9,105,102, 32,115,101,
+    108,102, 46,100,105,109, 32, 97,110,100, 32,115,101,108,102,
+     46,100,105,109, 32,126, 61, 32, 39, 39, 32,116,104,101,110,
+     10,  9, 32, 32,111,117,116,112,117,116, 40, 39, 32,105,102,
+     32, 40,116,111,108,117, 97, 95,105,110,100,101,120, 60, 48,
+     32,124,124, 32,116,111,108,117, 97, 95,105,110,100,101,120,
+     62, 61, 39, 46, 46,115,101,108,102, 46,100,105,109, 46, 46,
+     39, 41, 39, 41, 10,  9,101,108,115,101, 10,  9, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32,105,102, 32, 40,116,111,108,
+    117, 97, 95,105,110,100,101,120, 60, 48, 41, 39, 41, 10,  9,
+    101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 32,
+     32,116,111,108,117, 97, 95,101,114,114,111,114, 40,116,111,
+    108,117, 97, 95, 83, 44, 34, 97,114,114, 97,121, 32,105,110,
+    100,101,120,105,110,103, 32,111,117,116, 32,111,102, 32,114,
+     97,110,103,101, 46, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41,
+     10,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,100,
+    105,102, 92,110, 39, 41, 10, 10, 32, 32, 45, 45, 32, 97,115,
+    115,105,103,110, 32,118, 97,108,117,101, 10, 32, 32,108,111,
+     99, 97,108, 32,112,116,114, 32, 61, 32, 39, 39, 10, 32, 32,
+    105,102, 32,115,101,108,102, 46,112,116,114,126, 61, 39, 39,
+     32,116,104,101,110, 32,112,116,114, 32, 61, 32, 39, 42, 39,
+     32,101,110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39,
+     32, 39, 41, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 32,
+     97,110,100, 32,115,116, 97,116,105, 99, 32,116,104,101,110,
+     10, 32, 32, 32,111,117,116,112,117,116, 40, 99,108, 97,115,
+    115, 46, 46, 39, 58, 58, 39, 46, 46,115,101,108,102, 46,110,
+     97,109,101, 46, 46, 39, 91,116,111,108,117, 97, 95,105,110,
+    100,101,120, 93, 39, 41, 10, 32, 32,101,108,115,101,105,102,
+     32, 99,108, 97,115,115, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39,115,101,108,102, 45, 62, 39,
+     46, 46,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,
+    116,111,108,117, 97, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,112,117,
+    116, 40,115,101,108,102, 46,110, 97,109,101, 46, 46, 39, 91,
+    116,111,108,117, 97, 95,105,110,100,101,120, 93, 39, 41, 10,
+     32, 32,101,110,100, 10, 32, 32,108,111, 99, 97,108, 32,116,
+     32, 61, 32,105,115, 98, 97,115,105, 99, 40,115,101,108,102,
+     46,116,121,112,101, 41, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 32, 61, 32, 39, 41, 10, 32, 32,105,102, 32,110,111,
+    116, 32,116, 32, 97,110,100, 32,112,116,114, 61, 61, 39, 39,
+     32,116,104,101,110, 32,111,117,116,112,117,116, 40, 39, 42,
+     39, 41, 32,101,110,100, 10, 32, 32,111,117,116,112,117,116,
+     40, 39, 40, 40, 39, 44,115,101,108,102, 46,109,111,100, 44,
+    115,101,108,102, 46,116,121,112,101, 41, 10, 32, 32,105,102,
+     32,110,111,116, 32,116, 32,116,104,101,110, 10, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 42, 39, 41, 10, 32, 32,101,
+    110,100, 10, 32, 32,111,117,116,112,117,116, 40, 39, 41, 32,
+     39, 41, 10, 32, 32,108,111, 99, 97,108, 32,100,101,102, 32,
+     61, 32, 48, 10, 32, 32,105,102, 32,115,101,108,102, 46,100,
+    101,102, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 32,100,
+    101,102, 32, 61, 32,115,101,108,102, 46,100,101,102, 32,101,
+    110,100, 10, 32, 32,105,102, 32,116, 32,116,104,101,110, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39,116,111,108,117,
+     97, 95,116,111, 39, 46, 46,116, 44, 39, 40,116,111,108,117,
+     97, 95, 83, 44, 51, 44, 39, 44,100,101,102, 44, 39, 41, 41,
+     59, 39, 41, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39,116,111,108,117, 97, 95,116,111,
+    117,115,101,114,116,121,112,101, 40,116,111,108,117, 97, 95,
+     83, 44, 51, 44, 39, 44,100,101,102, 44, 39, 41, 41, 59, 39,
+     41, 10, 32, 32,101,110,100, 10, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32,114,101,116,117,114,110, 32, 48, 59, 39, 41,
+     10, 32, 32,111,117,116,112,117,116, 40, 39,125, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 35,101,110,100,105,
+    102, 32, 47, 47, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10,
+     32, 32,111,117,116,112,117,116, 40, 39, 92,110, 39, 41, 10,
+     32,101,110,100, 10, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 65,114,114, 97,121,
+     58,114,101,103,105,115,116,101,114, 32, 40,112,114,101, 41,
+     10, 32,112,114,101, 32, 61, 32,112,114,101, 32,111,114, 32,
+     39, 39, 10, 32,105,102, 32,115,101,108,102, 46, 99,115,101,
+    116,110, 97,109,101, 32,116,104,101,110, 10, 32, 32,111,117,
+    116,112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117,
+     97, 95, 97,114,114, 97,121, 40,116,111,108,117, 97, 95, 83,
+     44, 34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101,
+     46, 46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,
+    101,116,110, 97,109,101, 46, 46, 39, 44, 39, 46, 46,115,101,
+    108,102, 46, 99,115,101,116,110, 97,109,101, 46, 46, 39, 41,
+     59, 39, 41, 10, 32,101,108,115,101, 10, 32, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95, 97,114,114, 97,121, 40,116,111,108,117, 97, 95, 83, 44,
+     34, 39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46,
+     46, 39, 34, 44, 39, 46, 46,115,101,108,102, 46, 99,103,101,
+    116,110, 97,109,101, 46, 46, 39, 44, 78, 85, 76, 76, 41, 59,
+     39, 41, 10, 32,101,110,100, 10,101,110,100, 10, 10, 45, 45,
+     32, 73,110,116,101,114,110, 97,108, 32, 99,111,110,115,116,
+    114,117, 99,116,111,114, 10,102,117,110, 99,116,105,111,110,
+     32, 95, 65,114,114, 97,121, 32, 40,116, 41, 10, 32,115,101,
+    116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+     97,115,115, 65,114,114, 97,121, 41, 10, 32, 97,112,112,101,
+    110,100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,116,
+     10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,114,
+    117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,116,
+    115, 32, 97, 32,115,116,114,105,110,103, 32,114,101,112,114,
+    101,115,101,110,116,105,110,103, 32,116,104,101, 32,118, 97,
+    114,105, 97, 98,108,101, 32,100,101, 99,108, 97,114, 97,116,
+    105,111,110, 46, 10,102,117,110, 99,116,105,111,110, 32, 65,
+    114,114, 97,121, 32, 40,115, 41, 10, 32,114,101,116,117,114,
+    110, 32, 95, 65,114,114, 97,121, 32, 40, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 40,115, 44, 39,118, 97,114, 39, 41,
+     41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/array.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 10, 45,
+     45, 32, 70,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115,
+     32, 97, 32,102,117,110, 99,116,105,111,110, 32,111,114, 32,
+     97, 32, 99,108, 97,115,115, 32,109,101,116,104,111,100, 46,
+     10, 45, 45, 32, 84,104,101, 32,102,111,108,108,111,119,105,
+    110,103, 32,102,105,101,108,100,115, 32, 97,114,101, 32,115,
+    116,111,114,101,100, 58, 10, 45, 45, 32, 32,109,111,100, 32,
+     32, 61, 32,116,121,112,101, 32,109,111,100,105,102,105,101,
+    114,115, 10, 45, 45, 32, 32,116,121,112,101, 32, 61, 32,116,
+    121,112,101, 10, 45, 45, 32, 32,112,116,114, 32, 32, 61, 32,
+     34, 42, 34, 32,111,114, 32, 34, 38, 34, 44, 32,105,102, 32,
+    114,101,112,114,101,115,101,110,116,105,110,103, 32, 97, 32,
+    112,111,105,110,116,101,114, 32,111,114, 32, 97, 32,114,101,
+    102,101,114,101,110, 99,101, 10, 45, 45, 32, 32,110, 97,109,
+    101, 32, 61, 32,110, 97,109,101, 10, 45, 45, 32, 32,108,110,
+     97,109,101, 32, 61, 32,108,117, 97, 32,110, 97,109,101, 10,
+     45, 45, 32, 32, 97,114,103,115, 32, 32, 61, 32,108,105,115,
+    116, 32,111,102, 32, 97,114,103,117,109,101,110,116, 32,100,
+    101, 99,108, 97,114, 97,116,105,111,110,115, 10, 45, 45, 32,
+     32, 99,111,110,115,116, 32, 61, 32,105,102, 32,105,116, 32,
+    105,115, 32, 97, 32,109,101,116,104,111,100, 32,114,101, 99,
+    101,105,118,105,110,103, 32, 97, 32, 99,111,110,115,116, 32,
+     34,116,104,105,115, 34, 46, 10, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 32, 61, 32,123, 10, 32,109,111,100,
+     32, 61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32,
+     39, 39, 44, 10, 32,112,116,114, 32, 61, 32, 39, 39, 44, 10,
+     32,110, 97,109,101, 32, 61, 32, 39, 39, 44, 10, 32, 97,114,
+    103,115, 32, 61, 32,123,110, 61, 48,125, 44, 10, 32, 99,111,
+    110,115,116, 32, 61, 32, 39, 39, 44, 10,125, 10, 99,108, 97,
+    115,115, 70,117,110, 99,116,105,111,110, 46, 95, 95,105,110,
+    100,101,120, 32, 61, 32, 99,108, 97,115,115, 70,117,110, 99,
+    116,105,111,110, 10,115,101,116,109,101,116, 97,116, 97, 98,
+    108,101, 40, 99,108, 97,115,115, 70,117,110, 99,116,105,111,
+    110, 44, 99,108, 97,115,115, 70,101, 97,116,117,114,101, 41,
+     10, 10, 45, 45, 32,100,101, 99,108, 97,114,101, 32,116, 97,
+    103,115, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 70,117,110, 99,116,105,111,110, 58,100,101, 99,108,
+    116,121,112,101, 32, 40, 41, 10, 32,115,101,108,102, 46,116,
+    121,112,101, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,
+    101,108,102, 46,116,121,112,101, 41, 10, 32,105,102, 32,115,
+    116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,100,
+     44, 39, 99,111,110,115,116, 39, 41, 32,116,104,101,110, 10,
+      9, 32,115,101,108,102, 46,116,121,112,101, 32, 61, 32, 39,
+     99,111,110,115,116, 32, 39, 46, 46,115,101,108,102, 46,116,
+    121,112,101, 10,  9,  9,115,101,108,102, 46,109,111,100, 32,
+     61, 32,103,115,117, 98, 40,115,101,108,102, 46,109,111,100,
+     44, 39, 99,111,110,115,116, 39, 44, 39, 39, 41, 10,  9,101,
+    110,100, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 46, 97,
+    114,103,115, 91,105, 93, 58,100,101, 99,108,116,121,112,101,
+     40, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,
+    110,100, 10,101,110,100, 10, 10, 10, 45, 45, 32, 87,114,105,
+    116,101, 32, 98,105,110,100,105,110,103, 32,102,117,110, 99,
+    116,105,111,110, 10, 45, 45, 32, 79,117,116,112,117,116,115,
+     32, 67, 47, 67, 43, 43, 32, 98,105,110,100,105,110,103, 32,
+    102,117,110, 99,116,105,111,110, 46, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,
+    111,110, 58,115,117,112, 99,111,100,101, 32, 40,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 41,
+     10, 10, 32,108,111, 99, 97,108, 32,111,118,101,114,108,111,
+     97,100, 32, 61, 32,115,116,114,115,117, 98, 40,115,101,108,
+    102, 46, 99,110, 97,109,101, 44, 45, 50, 44, 45, 49, 41, 32,
+     45, 32, 49, 32, 32, 45, 45, 32,105,110,100,105, 99, 97,116,
+    101, 32,111,118,101,114,108,111, 97,100,101,100, 32,102,117,
+    110, 99, 10, 32,108,111, 99, 97,108, 32,110,114,101,116, 32,
+     61, 32, 48, 32, 32, 32, 32, 32, 32, 45, 45, 32,110,117,109,
+     98,101,114, 32,111,102, 32,114,101,116,117,114,110,101,100,
+     32,118, 97,108,117,101,115, 10, 32,108,111, 99, 97,108, 32,
+     99,108, 97,115,115, 32, 61, 32,115,101,108,102, 58,105,110,
+     99,108, 97,115,115, 40, 41, 10, 32,108,111, 99, 97,108, 32,
+     95, 44, 95, 44,115,116, 97,116,105, 99, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115,101,108,102, 46,109,111,100, 44,
+     39, 94, 37,115, 42, 40,115,116, 97,116,105, 99, 41, 39, 41,
+     10, 32,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110,
+     10, 10, 32,  9,105,102, 32,115,101,108,102, 46,110, 97,109,
+    101, 32, 61, 61, 32, 39,110,101,119, 39, 32, 97,110,100, 32,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,102,108, 97,
+    103,115, 46,112,117,114,101, 95,118,105,114,116,117, 97,108,
+     32,116,104,101,110, 10, 32,  9,  9, 45, 45, 32,110,111, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32,102,111,114,
+     32, 99,108, 97,115,115,101,115, 32,119,105,116,104, 32,112,
+    117,114,101, 32,118,105,114,116,117, 97,108, 32,109,101,116,
+    104,111,100,115, 10, 32,  9,  9,114,101,116,117,114,110, 10,
+     32,  9,101,110,100, 10, 10, 32,  9,105,102, 32,108,111, 99,
+     97,108, 95, 99,111,110,115,116,114,117, 99,116,111,114, 32,
+    116,104,101,110, 10,  9,  9,111,117,116,112,117,116, 40, 34,
+     47, 42, 32,109,101,116,104,111,100, 58, 32,110,101,119, 95,
+    108,111, 99, 97,108, 32,111,102, 32, 99,108, 97,115,115, 32,
+     34, 44, 99,108, 97,115,115, 44, 34, 32, 42, 47, 34, 41, 10,
+      9,101,108,115,101, 10,  9,  9,111,117,116,112,117,116, 40,
+     34, 47, 42, 32,109,101,116,104,111,100, 58, 34, 44,115,101,
+    108,102, 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,108,
+     97,115,115, 32, 34, 44, 99,108, 97,115,115, 44, 34, 32, 42,
+     47, 34, 41, 10,  9,101,110,100, 10, 32,101,108,115,101, 10,
+     32, 32,111,117,116,112,117,116, 40, 34, 47, 42, 32,102,117,
+    110, 99,116,105,111,110, 58, 34, 44,115,101,108,102, 46,110,
+     97,109,101, 44, 34, 32, 42, 47, 34, 41, 10, 32,101,110,100,
+     10, 10, 32,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,
+    115,116,114,117, 99,116,111,114, 32,116,104,101,110, 10, 32,
+     32,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 46,
+     46, 34, 95,108,111, 99, 97,108, 34, 41, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 92,110,115,116, 97,116,105, 99, 32,
+    105,110,116, 34, 44,115,101,108,102, 46, 99,110, 97,109,101,
+     46, 46, 34, 95,108,111, 99, 97,108, 34, 44, 34, 40,108,117,
+     97, 95, 83,116, 97,116,101, 42, 32,116,111,108,117, 97, 95,
+     83, 41, 34, 41, 10, 32,101,108,115,101, 10, 32, 32,111,117,
+    116,112,117,116, 40, 34, 35,105,102,110,100,101,102, 32, 84,
+     79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69, 95, 34, 46,
+     46,115,101,108,102, 46, 99,110, 97,109,101, 41, 10, 32, 32,
+    111,117,116,112,117,116, 40, 34, 92,110,115,116, 97,116,105,
+     99, 32,105,110,116, 34, 44,115,101,108,102, 46, 99,110, 97,
+    109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,101, 42,
+     32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10, 32,101,110,
+    100, 10, 32,111,117,116,112,117,116, 40, 34,123, 34, 41, 10,
+     10, 32, 45, 45, 32, 99,104,101, 99,107, 32,116,121,112,101,
+    115, 10,  9,105,102, 32,111,118,101,114,108,111, 97,100, 32,
+     60, 32, 48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76,
+     85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,
+      9,101,110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,
+    116,111,108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,
+    117, 97, 95,101,114,114, 59, 39, 41, 10, 32,111,117,116,112,
+    117,116, 40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10, 32,
+     45, 45, 32, 99,104,101, 99,107, 32,115,101,108,102, 10, 32,
+    108,111, 99, 97,108, 32,110, 97,114,103, 10, 32,105,102, 32,
+     99,108, 97,115,115, 32,116,104,101,110, 32,110, 97,114,103,
+     61, 50, 32,101,108,115,101, 32,110, 97,114,103, 61, 49, 32,
+    101,110,100, 10, 32,105,102, 32, 99,108, 97,115,115, 32,116,
+    104,101,110, 10,  9,  9,108,111, 99, 97,108, 32,102,117,110,
+     99, 32, 61, 32, 39,116,111,108,117, 97, 95,105,115,117,115,
+    101,114,116,121,112,101, 39, 10,  9,  9,108,111, 99, 97,108,
+     32,116,121,112,101, 32, 61, 32,115,101,108,102, 46,112, 97,
+    114,101,110,116, 46,116,121,112,101, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46,110, 97,109,101, 61, 61, 39,110,101,119,
+     39, 32,111,114, 32,115,116, 97,116,105, 99,126, 61,110,105,
+    108, 32,116,104,101,110, 10,  9,  9,  9,102,117,110, 99, 32,
+     61, 32, 39,116,111,108,117, 97, 95,105,115,117,115,101,114,
+    116, 97, 98,108,101, 39, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 10,  9,  9,101,110,100, 10,  9,  9,105,102, 32,
+    115,101,108,102, 46, 99,111,110,115,116, 32,126, 61, 32, 39,
+     39, 32,116,104,101,110, 10,  9,  9,  9,116,121,112,101, 32,
+     61, 32, 34, 99,111,110,115,116, 32, 34, 46, 46,116,121,112,
+    101, 10,  9,  9,101,110,100, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32, 32, 32, 33, 39, 46, 46,102,117,110,
+     99, 46, 46, 39, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
+     34, 39, 46, 46,116,121,112,101, 46, 46, 39, 34, 44, 48, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 32,124,124, 92,
+    110, 39, 41, 10, 32,101,110,100, 10, 32, 45, 45, 32, 99,104,
+    101, 99,107, 32, 97,114,103,115, 10, 32,105,102, 32,115,101,
+    108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,121,112,101,
+     32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,101,110,
+     10, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,
+    119,104,105,108,101, 32,115,101,108,102, 46, 97,114,103,115,
+     91,105, 93, 32,100,111, 10, 32, 32, 32,108,111, 99, 97,108,
+     32, 98,116,121,112,101, 32, 61, 32,105,115, 98, 97,115,105,
+     99, 40,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 46,
+    116,121,112,101, 41, 10, 32, 32, 32,105,102, 32, 98,116,121,
+    112,101, 32,126, 61, 32, 39,118, 97,108,117,101, 39, 32, 97,
+    110,100, 32, 98,116,121,112,101, 32,126, 61, 32, 39,115,116,
+     97,116,101, 39, 32,116,104,101,110, 10, 32, 32, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33, 39, 46,
+     46,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,111,
+    117,116, 99,104,101, 99,107,116,121,112,101, 40,110, 97,114,
+    103, 41, 46, 46, 39, 32,124,124, 92,110, 39, 41, 10, 32, 32,
+     32,101,110,100, 10, 32, 32, 32,105,102, 32, 98,116,121,112,
+    101, 32,126, 61, 32, 39,115,116, 97,116,101, 39, 32,116,104,
+    101,110, 10,  9, 32, 32, 32,110, 97,114,103, 32, 61, 32,110,
+     97,114,103, 43, 49, 10, 32, 32, 32,101,110,100, 10, 32, 32,
+     32,105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10,
+     32,101,110,100, 10, 32, 45, 45, 32, 99,104,101, 99,107, 32,
+    101,110,100, 32,111,102, 32,108,105,115,116, 10, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33,116,111,108,
+    117, 97, 95,105,115,110,111,111, 98,106, 40,116,111,108,117,
+     97, 95, 83, 44, 39, 46, 46,110, 97,114,103, 46, 46, 39, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 92,110, 32, 41,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 32, 32,103,
+    111,116,111, 32,116,111,108,117, 97, 95,108,101,114,114,111,
+    114, 59, 39, 41, 10, 10, 32,111,117,116,112,117,116, 40, 39,
+     32,101,108,115,101, 92,110, 39, 41, 10,  9,105,102, 32,111,
+    118,101,114,108,111, 97,100, 32, 60, 32, 48, 32,116,104,101,
+    110, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10,  9,101,110,100, 10,  9,111,
+    117,116,112,117,116, 40, 39, 32,123, 39, 41, 10, 10, 32, 45,
+     45, 32,100,101, 99,108, 97,114,101, 32,115,101,108,102, 44,
+     32,105,102, 32,116,104,101, 32, 99, 97,115,101, 10, 32,108,
+    111, 99, 97,108, 32,110, 97,114,103, 10, 32,105,102, 32, 99,
+    108, 97,115,115, 32,116,104,101,110, 32,110, 97,114,103, 61,
+     50, 32,101,108,115,101, 32,110, 97,114,103, 61, 49, 32,101,
+    110,100, 10, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,
+    100, 32,115,101,108,102, 46,110, 97,109,101,126, 61, 39,110,
+    101,119, 39, 32, 97,110,100, 32,115,116, 97,116,105, 99, 61,
+     61,110,105,108, 32,116,104,101,110, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,111,
+    110,115,116, 44,115,101,108,102, 46,112, 97,114,101,110,116,
+     46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,102,
+     32, 61, 32, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,
+     39, 40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 44, 39, 42, 41, 32, 39, 41, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39,116,111,108,117, 97, 95,116,111,117,115,101,
+    114,116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 49,
+     44, 48, 41, 59, 39, 41, 10, 32,101,108,115,101,105,102, 32,
+    115,116, 97,116,105, 99, 32,116,104,101,110, 10, 32, 32, 95,
+     44, 95, 44,115,101,108,102, 46,109,111,100, 32, 61, 32,115,
+    116,114,102,105,110,100, 40,115,101,108,102, 46,109,111,100,
+     44, 39, 94, 37,115, 42,115,116, 97,116,105, 99, 37,115, 37,
+    115, 42, 40, 46, 42, 41, 39, 41, 10, 32,101,110,100, 10, 32,
+     45, 45, 32,100,101, 99,108, 97,114,101, 32,112, 97,114, 97,
+    109,101,116,101,114,115, 10, 32,105,102, 32,115,101,108,102,
+     46, 97,114,103,115, 91, 49, 93, 46,116,121,112,101, 32,126,
+     61, 32, 39,118,111,105,100, 39, 32,116,104,101,110, 10, 32,
+     32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32, 32,119,104,
+    105,108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 32,100,111, 10, 32, 32, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 58,100,101, 99,108, 97,114,101, 40,110,
+     97,114,103, 41, 10, 32, 32, 32,105,102, 32,105,115, 98, 97,
+    115,105, 99, 40,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 46,116,121,112,101, 41, 32,126, 61, 32, 34,115,116, 97,
+    116,101, 34, 32,116,104,101,110, 10,  9, 32, 32, 32,110, 97,
+    114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10, 32, 32, 32,
+    101,110,100, 10, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32, 32,101,110,100, 10, 32,101,110,100, 10, 10, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,115,101,108,102, 10, 32,105,102,
+     32, 99,108, 97,115,115, 32, 97,110,100, 32,115,101,108,102,
+     46,110, 97,109,101,126, 61, 39,110,101,119, 39, 32, 97,110,
+    100, 32,115,116, 97,116,105, 99, 61, 61,110,105,108, 32,116,
+    104,101,110, 10,  9, 32,111,117,116,112,117,116, 40, 39, 35,
+    105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69,
+     76, 69, 65, 83, 69, 92,110, 39, 41, 10, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32,105,102, 32, 40, 33,115,101,108,
+    102, 41, 32,116,111,108,117, 97, 95,101,114,114,111,114, 40,
+    116,111,108,117, 97, 95, 83, 44, 34,105,110,118, 97,108,105,
+    100, 32, 92, 39,115,101,108,102, 92, 39, 32,105,110, 32,102,
+    117,110, 99,116,105,111,110, 32, 92, 39, 39, 46, 46,115,101,
+    108,102, 46,110, 97,109,101, 46, 46, 39, 92, 39, 34, 44, 78,
+     85, 76, 76, 41, 59, 39, 41, 59, 10,  9, 32,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,
+     32,101,110,100, 10, 10, 32, 45, 45, 32,103,101,116, 32, 97,
+    114,114, 97,121, 32,101,108,101,109,101,110,116, 32,118, 97,
+    108,117,101,115, 10, 32,105,102, 32, 99,108, 97,115,115, 32,
+    116,104,101,110, 32,110, 97,114,103, 61, 50, 32,101,108,115,
+    101, 32,110, 97,114,103, 61, 49, 32,101,110,100, 10, 32,105,
+    102, 32,115,101,108,102, 46, 97,114,103,115, 91, 49, 93, 46,
+    116,121,112,101, 32,126, 61, 32, 39,118,111,105,100, 39, 32,
+    116,104,101,110, 10, 32, 32,108,111, 99, 97,108, 32,105, 61,
+     49, 10, 32, 32,119,104,105,108,101, 32,115,101,108,102, 46,
+     97,114,103,115, 91,105, 93, 32,100,111, 10, 32, 32, 32,115,
+    101,108,102, 46, 97,114,103,115, 91,105, 93, 58,103,101,116,
+     97,114,114, 97,121, 40,110, 97,114,103, 41, 10, 32, 32, 32,
+    110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10, 32,
+     32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32,101,110,100,
+     10, 32,101,110,100, 10, 10, 32,108,111, 99, 97,108, 32,111,
+    117,116, 32, 61, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,115,101,108,102, 46,109,111,100, 44, 32, 34,116,111,
+    108,117, 97, 95,111,117,116,115,105,100,101, 34, 41, 10, 32,
+     45, 45, 32, 99, 97,108,108, 32,102,117,110, 99,116,105,111,
+    110, 10, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
+     32,115,101,108,102, 46,110, 97,109,101, 61, 61, 39,100,101,
+    108,101,116,101, 39, 32,116,104,101,110, 10, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32,100,101,108,101,116,101, 32,
+    115,101,108,102, 59, 39, 41, 10, 32,101,108,115,101,105,102,
+     32, 99,108, 97,115,115, 32, 97,110,100, 32,115,101,108,102,
+     46,110, 97,109,101, 32, 61, 61, 32, 39,111,112,101,114, 97,
+    116,111,114, 38, 91, 93, 39, 32,116,104,101,110, 10, 32, 32,
+    105,102, 32,102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,
+    104,101,110, 32, 45, 45, 32,102,111,114, 32, 99,111,109,112,
+     97,116,105, 98,105,108,105,116,121, 32,119,105,116,104, 32,
+    116,111,108,117, 97, 53, 32, 63, 10,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32,115,101,108,102, 45, 62,111,112,101,114,
+     97,116,111,114, 91, 93, 40, 39, 44,115,101,108,102, 46, 97,
+    114,103,115, 91, 49, 93, 46,110, 97,109,101, 44, 39, 45, 49,
+     41, 32, 61, 32, 39, 44,115,101,108,102, 46, 97,114,103,115,
+     91, 50, 93, 46,110, 97,109,101, 44, 39, 59, 39, 41, 10, 32,
+     32,101,108,115,101, 10, 32, 32, 32, 32,111,117,116,112,117,
+    116, 40, 39, 32, 32,115,101,108,102, 45, 62,111,112,101,114,
+     97,116,111,114, 91, 93, 40, 39, 44,115,101,108,102, 46, 97,
+    114,103,115, 91, 49, 93, 46,110, 97,109,101, 44, 39, 41, 32,
+     61, 32, 39, 44,115,101,108,102, 46, 97,114,103,115, 91, 50,
+     93, 46,110, 97,109,101, 44, 39, 59, 39, 41, 10, 32, 32,101,
+    110,100, 10, 32,101,108,115,101, 10, 32, 32,111,117,116,112,
+    117,116, 40, 39, 32, 32,123, 39, 41, 10, 32, 32,105,102, 32,
+    115,101,108,102, 46,116,121,112,101, 32,126, 61, 32, 39, 39,
+     32, 97,110,100, 32,115,101,108,102, 46,116,121,112,101, 32,
+    126, 61, 32, 39,118,111,105,100, 39, 32,116,104,101,110, 10,
+     32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 39, 44,
+    115,101,108,102, 46,109,111,100, 44,115,101,108,102, 46,116,
+    121,112,101, 44,115,101,108,102, 46,112,116,114, 44, 39,116,
+    111,108,117, 97, 95,114,101,116, 32, 61, 32, 39, 41, 10, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 40, 39, 44,115,101,
+    108,102, 46,109,111,100, 44,115,101,108,102, 46,116,121,112,
+    101, 44,115,101,108,102, 46,112,116,114, 44, 39, 41, 32, 39,
+     41, 10, 32, 32,101,108,115,101, 10, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 39, 41, 10, 32, 32,101,110,100,
+     10, 32, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,100,
+     32,115,101,108,102, 46,110, 97,109,101, 61, 61, 39,110,101,
+    119, 39, 32,116,104,101,110, 10, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39,110,101,119, 39, 44,115,101,108,102, 46,116,
+    121,112,101, 44, 39, 40, 39, 41, 10, 32, 32,101,108,115,101,
+    105,102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,116,
+     97,116,105, 99, 32,116,104,101,110, 10,  9,105,102, 32,111,
+    117,116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,117,
+    116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39, 40, 39,
+     41, 10,  9,101,108,115,101, 10,  9,  9,111,117,116,112,117,
+    116, 40, 99,108, 97,115,115, 46, 46, 39, 58, 58, 39, 46, 46,
+    115,101,108,102, 46,110, 97,109,101, 44, 39, 40, 39, 41, 10,
+      9,101,110,100, 10, 32, 32,101,108,115,101,105,102, 32, 99,
+    108, 97,115,115, 32,116,104,101,110, 10,  9,105,102, 32,111,
+    117,116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,117,
+    116, 40,115,101,108,102, 46,110, 97,109,101, 44, 39, 40, 39,
+     41, 10,  9,101,108,115,101, 10,  9, 32, 32,105,102, 32,115,
+    101,108,102, 46, 99, 97,115,116, 95,111,112,101,114, 97,116,
+    111,114, 32,116,104,101,110, 10,  9, 32, 32,  9,111,117,116,
+    112,117,116, 40, 39,115,116, 97,116,105, 99, 95, 99, 97,115,
+    116, 60, 39, 44,115,101,108,102, 46,109,111,100, 44,115,101,
+    108,102, 46,116,121,112,101, 44,115,101,108,102, 46,112,116,
+    114, 44, 39, 62, 40, 42,115,101,108,102, 39, 41, 10,  9, 32,
+     32,101,108,115,101, 10,  9,  9,111,117,116,112,117,116, 40,
+     39,115,101,108,102, 45, 62, 39, 46, 46,115,101,108,102, 46,
+    110, 97,109,101, 44, 39, 40, 39, 41, 10,  9, 32, 32,101,110,
+    100, 10,  9,101,110,100, 10, 32, 32,101,108,115,101, 10, 32,
+     32, 32,111,117,116,112,117,116, 40,115,101,108,102, 46,110,
+     97,109,101, 44, 39, 40, 39, 41, 10, 32, 32,101,110,100, 10,
+     10, 32, 32,105,102, 32,111,117,116, 32, 97,110,100, 32,110,
+    111,116, 32,115,116, 97,116,105, 99, 32,116,104,101,110, 10,
+     32, 32,  9,111,117,116,112,117,116, 40, 39,115,101,108,102,
+     39, 41, 10,  9,105,102, 32,115,101,108,102, 46, 97,114,103,
+    115, 91, 49, 93, 32, 97,110,100, 32,115,101,108,102, 46, 97,
+    114,103,115, 91, 49, 93, 46,110, 97,109,101, 32,126, 61, 32,
+     39, 39, 32,116,104,101,110, 10,  9,  9,111,117,116,112,117,
+    116, 40, 39, 44, 39, 41, 10,  9,101,110,100, 10, 32, 32,101,
+    110,100, 10, 32, 32, 45, 45, 32,119,114,105,116,101, 32,112,
+     97,114, 97,109,101,116,101,114,115, 10, 32, 32,108,111, 99,
+     97,108, 32,105, 61, 49, 10, 32, 32,119,104,105,108,101, 32,
+    115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
+     10, 32, 32, 32,115,101,108,102, 46, 97,114,103,115, 91,105,
+     93, 58,112, 97,115,115,112, 97,114, 40, 41, 10, 32, 32, 32,
+    105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,105,102, 32,115,
+    101,108,102, 46, 97,114,103,115, 91,105, 93, 32,116,104,101,
+    110, 10, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 44,
+     39, 41, 10, 32, 32, 32,101,110,100, 10, 32, 32,101,110,100,
+     10, 10, 32, 32,105,102, 32, 99,108, 97,115,115, 32, 97,110,
+    100, 32,115,101,108,102, 46,110, 97,109,101, 32, 61, 61, 32,
+     39,111,112,101,114, 97,116,111,114, 91, 93, 39, 32, 97,110,
+    100, 32,102,108, 97,103,115, 91, 39, 49, 39, 93, 32,116,104,
+    101,110, 10,  9,111,117,116,112,117,116, 40, 39, 45, 49, 41,
+     59, 39, 41, 10, 32, 32,101,108,115,101, 10,  9,111,117,116,
+    112,117,116, 40, 39, 41, 59, 39, 41, 10, 32, 32,101,110,100,
+     10, 10, 32, 32, 45, 45, 32,114,101,116,117,114,110, 32,118,
+     97,108,117,101,115, 10, 32, 32,105,102, 32,115,101,108,102,
+     46,116,121,112,101, 32,126, 61, 32, 39, 39, 32, 97,110,100,
+     32,115,101,108,102, 46,116,121,112,101, 32,126, 61, 32, 39,
+    118,111,105,100, 39, 32,116,104,101,110, 10, 32, 32, 32,110,
+    114,101,116, 32, 61, 32,110,114,101,116, 32, 43, 32, 49, 10,
+     32, 32, 32,108,111, 99, 97,108, 32,116, 44, 99,116, 32, 61,
+     32,105,115, 98, 97,115,105, 99, 40,115,101,108,102, 46,116,
+    121,112,101, 41, 10, 32, 32, 32,105,102, 32,116, 32,116,104,
+    101,110, 10, 32, 32, 32,  9,105,102, 32,115,101,108,102, 46,
+     99, 97,115,116, 95,111,112,101,114, 97,116,111,114, 32, 97,
+    110,100, 32, 95, 98, 97,115,105, 99, 95,114, 97,119, 95,112,
+    117,115,104, 91,116, 93, 32,116,104,101,110, 10,  9,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 39, 44, 95, 98, 97,
+    115,105, 99, 95,114, 97,119, 95,112,117,115,104, 91,116, 93,
+     44, 39, 40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,
+    116, 44, 39, 41,116,111,108,117, 97, 95,114,101,116, 41, 59,
+     39, 41, 10, 32, 32, 32,  9,101,108,115,101, 10,  9, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104, 39, 46, 46,116, 46, 46, 39,
+     40,116,111,108,117, 97, 95, 83, 44, 40, 39, 44, 99,116, 44,
+     39, 41,116,111,108,117, 97, 95,114,101,116, 41, 59, 39, 41,
+     10,  9,101,110,100, 10, 32, 32, 32,101,108,115,101, 10,  9,
+      9,  9, 32,116, 32, 61, 32,115,101,108,102, 46,116,121,112,
+    101, 10,  9,  9,  9, 32,110,101,119, 95,116, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,116, 44, 32, 34,
+     99,111,110,115,116, 37,115, 43, 34, 44, 32, 34, 34, 41, 10,
+     32, 32, 32, 32,105,102, 32,115,101,108,102, 46,112,116,114,
+     32, 61, 61, 32, 39, 39, 32,116,104,101,110, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,123, 39,
+     41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39,
+     35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10, 32, 32, 32, 32, 32,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,100, 42,
+     32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,110,101,
+    119, 39, 44,110,101,119, 95,116, 44, 39, 40,116,111,108,117,
+     97, 95,114,101,116, 41, 59, 39, 41, 10, 32, 32, 32, 32, 32,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,108,
+    117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101,
+     95, 97,110,100, 95,116, 97,107,101,111,119,110,101,114,115,
+    104,105,112, 40,116,111,108,117, 97, 95, 83, 44,116,111,108,
+    117, 97, 95,111, 98,106, 44, 34, 39, 44,116, 44, 39, 34, 41,
+     59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,117,116,
+     40, 39, 35,101,108,115,101, 92,110, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,
+    111,105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32,
+     61, 32,116,111,108,117, 97, 95, 99,111,112,121, 40,116,111,
+    108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,
+    111,108,117, 97, 95,114,101,116, 44,115,105,122,101,111,102,
+     40, 39, 44,116, 44, 39, 41, 41, 59, 39, 41, 10, 32, 32, 32,
+     32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,
+    111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,
+    112,101, 95, 97,110,100, 95,116, 97,107,101,111,119,110,101,
+    114,115,104,105,112, 40,116,111,108,117, 97, 95, 83, 44,116,
+    111,108,117, 97, 95,111, 98,106, 44, 34, 39, 44,116, 44, 39,
+     34, 41, 59, 39, 41, 10, 32, 32, 32, 32, 32,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,
+     32, 32, 32, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32,
+     32,125, 39, 41, 10, 32, 32, 32, 32,101,108,115,101,105,102,
+     32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 38,
+     39, 32,116,104,101,110, 10, 32, 32, 32, 32, 32,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32,116,111,108,117, 97, 95,112,
+    117,115,104,117,115,101,114,116,121,112,101, 40,116,111,108,
+    117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,111,
+    108,117, 97, 95,114,101,116, 44, 34, 39, 44,116, 44, 39, 34,
+     41, 59, 39, 41, 10, 32, 32, 32, 32,101,108,115,101, 10, 32,
+     32, 32, 32,  9,105,102, 32,108,111, 99, 97,108, 95, 99,111,
+    110,115,116,114,117, 99,116,111,114, 32,116,104,101,110, 10,
+      9, 32, 32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,
+    111,108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,
+    112,101, 95, 97,110,100, 95,116, 97,107,101,111,119,110,101,
+    114,115,104,105,112, 40,116,111,108,117, 97, 95, 83, 44, 40,
+    118,111,105,100, 32, 42, 41,116,111,108,117, 97, 95,114,101,
+    116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10, 32,
+     32, 32, 32,  9,101,108,115,101, 10,  9,  9, 32, 32, 32, 32,
+     32,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,
+    117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,101,
+     40,116,111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 42,
+     41,116,111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,116,
+     44, 39, 34, 41, 59, 39, 41, 10,  9, 32, 32, 32, 32,101,110,
+    100, 10, 32, 32, 32, 32,101,110,100, 10, 32, 32, 32,101,110,
+    100, 10, 32, 32,101,110,100, 10, 32, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32, 32,119,104,105,108,101, 32,115,101,
+    108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111, 10, 32,
+     32, 32,110,114,101,116, 32, 61, 32,110,114,101,116, 32, 43,
+     32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,114,
+    101,116,118, 97,108,117,101, 40, 41, 10, 32, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32, 32,101,110,100, 10, 32, 32,111,
+    117,116,112,117,116, 40, 39, 32, 32,125, 39, 41, 10, 10, 32,
+     32, 45, 45, 32,115,101,116, 32, 97,114,114, 97,121, 32,101,
+    108,101,109,101,110,116, 32,118, 97,108,117,101,115, 10, 32,
+     32,105,102, 32, 99,108, 97,115,115, 32,116,104,101,110, 32,
+    110, 97,114,103, 61, 50, 32,101,108,115,101, 32,110, 97,114,
+    103, 61, 49, 32,101,110,100, 10, 32, 32,105,102, 32,115,101,
+    108,102, 46, 97,114,103,115, 91, 49, 93, 46,116,121,112,101,
+     32,126, 61, 32, 39,118,111,105,100, 39, 32,116,104,101,110,
+     10, 32, 32, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,
+     32, 32,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 32,100,111, 10, 32, 32, 32, 32,115,101,
+    108,102, 46, 97,114,103,115, 91,105, 93, 58,115,101,116, 97,
+    114,114, 97,121, 40,110, 97,114,103, 41, 10, 32, 32, 32, 32,
+    110, 97,114,103, 32, 61, 32,110, 97,114,103, 43, 49, 10, 32,
+     32, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32, 32, 32,101,
+    110,100, 10, 32, 32,101,110,100, 10, 10, 32, 32, 45, 45, 32,
+    102,114,101,101, 32,100,121,110, 97,109,105, 99, 97,108,108,
+    121, 32, 97,108,108,111, 99, 97,116,101,100, 32, 97,114,114,
+     97,121, 10, 32, 32,105,102, 32,115,101,108,102, 46, 97,114,
+    103,115, 91, 49, 93, 46,116,121,112,101, 32,126, 61, 32, 39,
+    118,111,105,100, 39, 32,116,104,101,110, 10, 32, 32, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32, 32, 32,119,104,105,
+    108,101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93,
+     32,100,111, 10, 32, 32, 32, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 58,102,114,101,101, 97,114,114, 97,121,
+     40, 41, 10, 32, 32, 32, 32,105, 32, 61, 32,105, 43, 49, 10,
+     32, 32, 32,101,110,100, 10, 32, 32,101,110,100, 10, 32,101,
+    110,100, 10, 10, 32,111,117,116,112,117,116, 40, 39, 32,125,
+     39, 41, 10, 32,111,117,116,112,117,116, 40, 39, 32,114,101,
+    116,117,114,110, 32, 39, 46, 46,110,114,101,116, 46, 46, 39,
+     59, 39, 41, 10, 10, 32, 45, 45, 32, 99, 97,108,108, 32,111,
+    118,101,114,108,111, 97,100,101,100, 32,102,117,110, 99,116,
+    105,111,110, 32,111,114, 32,103,101,110,101,114, 97,116,101,
+     32,101,114,114,111,114, 10,  9,105,102, 32,111,118,101,114,
+    108,111, 97,100, 32, 60, 32, 48, 32,116,104,101,110, 10, 10,
+      9,  9,111,117,116,112,117,116, 40, 39, 35,105,102,110,100,
+    101,102, 32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83,
+     69, 92,110, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40,
+     39,116,111,108,117, 97, 95,108,101,114,114,111,114, 58, 92,
+    110, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+    116,111,108,117, 97, 95,101,114,114,111,114, 40,116,111,108,
+    117, 97, 95, 83, 44, 34, 35,102,101,114,114,111,114, 32,105,
+    110, 32,102,117,110, 99,116,105,111,110, 32, 92, 39, 39, 46,
+     46,115,101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 92,
+     39, 46, 34, 44, 38,116,111,108,117, 97, 95,101,114,114, 41,
+     59, 39, 41, 10,  9,  9,111,117,116,112,117,116, 40, 39, 32,
+    114,101,116,117,114,110, 32, 48, 59, 39, 41, 10,  9,  9,111,
+    117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 92,110,
+     39, 41, 10,  9,101,108,115,101, 10,  9,  9,108,111, 99, 97,
+    108, 32, 95,108,111, 99, 97,108, 32, 61, 32, 34, 34, 10,  9,
+      9,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,115,116,
+    114,117, 99,116,111,114, 32,116,104,101,110, 10,  9,  9,  9,
+     95,108,111, 99, 97,108, 32, 61, 32, 34, 95,108,111, 99, 97,
+    108, 34, 10,  9,  9,101,110,100, 10,  9,  9,111,117,116,112,
+    117,116, 40, 39,116,111,108,117, 97, 95,108,101,114,114,111,
+    114, 58, 92,110, 39, 41, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32,114,101,116,117,114,110, 32, 39, 46, 46,115,116,
+    114,115,117, 98, 40,115,101,108,102, 46, 99,110, 97,109,101,
+     44, 49, 44, 45, 51, 41, 46, 46,102,111,114,109, 97,116, 40,
+     34, 37, 48, 50,100, 34, 44,111,118,101,114,108,111, 97,100,
+     41, 46, 46, 95,108,111, 99, 97,108, 46, 46, 39, 40,116,111,
+    108,117, 97, 95, 83, 41, 59, 39, 41, 10,  9,101,110,100, 10,
+     32,111,117,116,112,117,116, 40, 39,125, 39, 41, 10, 32,111,
+    117,116,112,117,116, 40, 39, 35,101,110,100,105,102, 32, 47,
+     47, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     68, 73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10, 32,111,117,
+    116,112,117,116, 40, 39, 92,110, 39, 41, 10, 10,  9, 45, 45,
+     32,114,101, 99,117,114,115,105,118,101, 32, 99, 97,108,108,
+     32,116,111, 32,119,114,105,116,101, 32,108,111, 99, 97,108,
+     32, 99,111,110,115,116,114,117, 99,116,111,114, 10,  9,105,
+    102, 32, 99,108, 97,115,115, 32, 97,110,100, 32,115,101,108,
+    102, 46,110, 97,109,101, 61, 61, 39,110,101,119, 39, 32, 97,
+    110,100, 32,110,111,116, 32,108,111, 99, 97,108, 95, 99,111,
+    110,115,116,114,117, 99,116,111,114, 32,116,104,101,110, 10,
+     10,  9,  9,115,101,108,102, 58,115,117,112, 99,111,100,101,
+     40, 49, 41, 10,  9,101,110,100, 10, 10,101,110,100, 10, 10,
+     10, 45, 45, 32,114,101,103,105,115,116,101,114, 32,102,117,
+    110, 99,116,105,111,110, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,
+    114,101,103,105,115,116,101,114, 32, 40,112,114,101, 41, 10,
+     10,  9,105,102, 32,110,111,116, 32,115,101,108,102, 58, 99,
+    104,101, 99,107, 95,112,117, 98,108,105, 99, 95, 97, 99, 99,
+    101,115,115, 40, 41, 32,116,104,101,110, 10,  9,  9,114,101,
+    116,117,114,110, 10,  9,101,110,100, 10, 10, 32,  9,105,102,
+     32,115,101,108,102, 46,110, 97,109,101, 32, 61, 61, 32, 39,
+    110,101,119, 39, 32, 97,110,100, 32,115,101,108,102, 46,112,
+     97,114,101,110,116, 46,102,108, 97,103,115, 46,112,117,114,
+    101, 95,118,105,114,116,117, 97,108, 32,116,104,101,110, 10,
+     32,  9,  9, 45, 45, 32,110,111, 32, 99,111,110,115,116,114,
+    117, 99,116,111,114, 32,102,111,114, 32, 99,108, 97,115,115,
+    101,115, 32,119,105,116,104, 32,112,117,114,101, 32,118,105,
+    114,116,117, 97,108, 32,109,101,116,104,111,100,115, 10, 32,
+      9,  9,114,101,116,117,114,110, 10, 32,  9,101,110,100, 10,
+     10, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39,
+    116,111,108,117, 97, 95,102,117,110, 99,116,105,111,110, 40,
+    116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,
+    102, 46,108,110, 97,109,101, 46, 46, 39, 34, 44, 39, 46, 46,
+    115,101,108,102, 46, 99,110, 97,109,101, 46, 46, 39, 41, 59,
+     39, 41, 10, 32, 32,105,102, 32,115,101,108,102, 46,110, 97,
+    109,101, 32, 61, 61, 32, 39,110,101,119, 39, 32,116,104,101,
+    110, 10,  9, 32, 32,111,117,116,112,117,116, 40,112,114,101,
+     46, 46, 39,116,111,108,117, 97, 95,102,117,110, 99,116,105,
+    111,110, 40,116,111,108,117, 97, 95, 83, 44, 34,110,101,119,
+     95,108,111, 99, 97,108, 34, 44, 39, 46, 46,115,101,108,102,
+     46, 99,110, 97,109,101, 46, 46, 39, 95,108,111, 99, 97,108,
+     41, 59, 39, 41, 10,  9, 32, 32,111,117,116,112,117,116, 40,
+    112,114,101, 46, 46, 39,116,111,108,117, 97, 95,102,117,110,
+     99,116,105,111,110, 40,116,111,108,117, 97, 95, 83, 44, 34,
+     46, 99, 97,108,108, 34, 44, 39, 46, 46,115,101,108,102, 46,
+     99,110, 97,109,101, 46, 46, 39, 95,108,111, 99, 97,108, 41,
+     59, 39, 41, 10,  9, 32, 32, 45, 45,111,117,116,112,117,116,
+     40, 39, 32,116,111,108,117, 97, 95,115,101,116, 95, 99, 97,
+    108,108, 95,101,118,101,110,116, 40,116,111,108,117, 97, 95,
+     83, 44, 39, 46, 46,115,101,108,102, 46, 99,110, 97,109,101,
+     46, 46, 39, 95,108,111, 99, 97,108, 44, 32, 34, 39, 46, 46,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 46, 46, 39, 34, 41, 59, 39, 41, 10, 32, 32,101,110,100,
+     10,101,110,100, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,
+    109,101,116,104,111,100, 10,102,117,110, 99,116,105,111,110,
+     32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110, 58,
+    112,114,105,110,116, 32, 40,105,100,101,110,116, 44, 99,108,
+    111,115,101, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 70,117,110, 99,116,105,111,110,123, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,109,111,100, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,110, 97,
+    109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,110,
+     97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,108,110, 97,
+    109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,108,
+    110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,
+    105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 99,111,
+    110,115,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,102, 46,
+     99,111,110,115,116, 46, 46, 34, 39, 44, 34, 41, 10, 32,112,
+    114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32, 99,
+    110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,102,
+     46, 99,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+    108,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,108,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 97,114,103,115, 32, 61, 32,123, 34, 41, 10, 32,108,111,
+     99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101, 32,
+    115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,100,111,
+     10, 32, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93,
+     58,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32, 61, 32,
+    105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,110,116,
+     40,105,100,101,110,116, 46, 46, 34, 32,125, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,125,
+     34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100, 10, 10,
+     45, 45, 32, 99,104,101, 99,107, 32,105,102, 32,105,116, 32,
+    114,101,116,117,114,110,115, 32, 97,110, 32,111, 98,106,101,
+     99,116, 32, 98,121, 32,118, 97,108,117,101, 10,102,117,110,
+     99,116,105,111,110, 32, 99,108, 97,115,115, 70,117,110, 99,
+    116,105,111,110, 58,114,101,113,117,105,114,101, 99,111,108,
+    108,101, 99,116,105,111,110, 32, 40,116, 41, 10,  9,108,111,
+     99, 97,108, 32,114, 32, 61, 32,102, 97,108,115,101, 10,  9,
+    105,102, 32,115,101,108,102, 46,116,121,112,101, 32,126, 61,
+     32, 39, 39, 32, 97,110,100, 32,110,111,116, 32,105,115, 98,
+     97,115,105, 99, 40,115,101,108,102, 46,116,121,112,101, 41,
+     32, 97,110,100, 32,115,101,108,102, 46,112,116,114, 61, 61,
+     39, 39, 32,116,104,101,110, 10,  9,  9,108,111, 99, 97,108,
+     32,116,121,112,101, 32, 61, 32,103,115,117, 98, 40,115,101,
+    108,102, 46,116,121,112,101, 44, 34, 37,115, 42, 99,111,110,
+    115,116, 37,115, 43, 34, 44, 34, 34, 41, 10,  9, 32,116, 91,
+    116,121,112,101, 93, 32, 61, 32, 34,116,111,108,117, 97, 95,
+     99,111,108,108,101, 99,116, 95, 34, 32, 46, 46, 32, 99,108,
+    101, 97,110, 95,116,101,109,112,108, 97,116,101, 40,116,121,
+    112,101, 41, 10,  9, 32,114, 32, 61, 32,116,114,117,101, 10,
+      9,101,110,100, 10,  9,108,111, 99, 97,108, 32,105, 61, 49,
+     10,  9,119,104,105,108,101, 32,115,101,108,102, 46, 97,114,
+    103,115, 91,105, 93, 32,100,111, 10,  9,  9,114, 32, 61, 32,
+    115,101,108,102, 46, 97,114,103,115, 91,105, 93, 58,114,101,
+    113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,110,
+     40,116, 41, 32,111,114, 32,114, 10,  9,  9,105, 32, 61, 32,
+    105, 43, 49, 10,  9,101,110,100, 10,  9,114,101,116,117,114,
+    110, 32,114, 10,101,110,100, 10, 10, 45, 45, 32,100,101,116,
+    101,114,109,105,110,101, 32,108,117, 97, 32,102,117,110, 99,
+    116,105,111,110, 32,110, 97,109,101, 32,111,118,101,114,108,
+    111, 97,100, 10,102,117,110, 99,116,105,111,110, 32, 99,108,
+     97,115,115, 70,117,110, 99,116,105,111,110, 58,111,118,101,
+    114,108,111, 97,100, 32, 40, 41, 10, 32,114,101,116,117,114,
+    110, 32,115,101,108,102, 46,112, 97,114,101,110,116, 58,111,
+    118,101,114,108,111, 97,100, 40,115,101,108,102, 46,108,110,
+     97,109,101, 41, 10,101,110,100, 10, 10, 10,102,117,110, 99,
+    116,105,111,110, 32,112, 97,114, 97,109, 95,111, 98,106,101,
+     99,116, 40,112, 97,114, 41, 32, 45, 45, 32,114,101,116,117,
+    114,110,115, 32,116,114,117,101, 32,105,102, 32,116,104,101,
+     32,112, 97,114, 97,109,101,116,101,114, 32,104, 97,115, 32,
+     97,110, 32,111, 98,106,101, 99,116, 32, 97,115, 32,105,116,
+    115, 32,100,101,102, 97,117,108,116, 32,118, 97,108,117,101,
+     10, 10,  9,105,102, 32,110,111,116, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 39, 61, 39,
+     41, 32,116,104,101,110, 32,114,101,116,117,114,110, 32,102,
+     97,108,115,101, 32,101,110,100, 32, 45, 45, 32,105,116, 32,
+    104, 97,115, 32,110,111, 32,100,101,102, 97,117,108,116, 32,
+    118, 97,108,117,101, 10, 10,  9,108,111, 99, 97,108, 32, 95,
+     44, 95, 44,100,101,102, 32, 61, 32,115,116,114,105,110,103,
+     46,102,105,110,100, 40,112, 97,114, 44, 32, 34, 61, 40, 46,
+     42, 41, 36, 34, 41, 10, 10,  9,105,102, 32,115,116,114,105,
+    110,103, 46,102,105,110,100, 40,112, 97,114, 44, 32, 34,124,
+     34, 41, 32,116,104,101,110, 32, 45, 45, 32, 97, 32,108,105,
+    115,116, 32,111,102, 32,102,108, 97,103,115, 10, 10,  9,  9,
+    114,101,116,117,114,110, 32,116,114,117,101, 10,  9,101,110,
+    100, 10, 10,  9,105,102, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,112, 97,114, 44, 32, 34, 37, 42, 34, 41, 32,
+    116,104,101,110, 32, 45, 45, 32,105,116, 39,115, 32, 97, 32,
+    112,111,105,110,116,101,114, 32,119,105,116,104, 32, 97, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 10, 10,
+      9,  9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,112, 97,114, 44, 32, 39, 61, 37,115, 42,110,101,119,
+     39, 41, 32,116,104,101,110, 32, 45, 45, 32,105,116, 39,115,
+     32, 97, 32,112,111,105,110,116,101,114, 32,119,105,116,104,
+     32, 97,110, 32,105,110,115,116, 97,110, 99,101, 32, 97,115,
+     32,100,101,102, 97,117,108,116, 32,112, 97,114, 97,109,101,
+    116,101,114, 46, 46, 32,105,115, 32,116,104, 97,116, 32,118,
+     97,108,105,100, 63, 10,  9,  9,  9,114,101,116,117,114,110,
+     32,116,114,117,101, 10,  9,  9,101,110,100, 10,  9,  9,114,
+    101,116,117,114,110, 32,102, 97,108,115,101, 32, 45, 45, 32,
+    100,101,102, 97,117,108,116, 32,118, 97,108,117,101, 32,105,
+    115, 32, 39, 78, 85, 76, 76, 39, 32,111,114, 32,115,111,109,
+    101,116,104,105,110,103, 10,  9,101,110,100, 10, 10, 10,  9,
+    105,102, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,
+    112, 97,114, 44, 32, 34, 91, 37, 40, 38, 93, 34, 41, 32,116,
+    104,101,110, 10,  9,  9,114,101,116,117,114,110, 32,116,114,
+    117,101, 10,  9,101,110,100, 32, 45, 45, 32,100,101,102, 97,
+    117,108,116, 32,118, 97,108,117,101, 32,105,115, 32, 97, 32,
+     99,111,110,115,116,114,117, 99,116,111,114, 32, 99, 97,108,
+    108, 32, 40,109,111,115,116, 32,108,105,107,101,108,121, 32,
+    102,111,114, 32, 97, 32, 99,111,110,115,116, 32,114,101,102,
+    101,114,101,110, 99,101, 41, 10, 10,  9, 45, 45,105,102, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,112, 97,114,
+     44, 32, 34, 38, 34, 41, 32,116,104,101,110, 10, 10,  9, 45,
+     45,  9,105,102, 32,115,116,114,105,110,103, 46,102,105,110,
+    100, 40,100,101,102, 44, 32, 34, 58, 34, 41, 32,111,114, 32,
+    115,116,114,105,110,103, 46,102,105,110,100, 40,100,101,102,
+     44, 32, 34, 94, 37,115, 42,110,101,119, 37,115, 43, 34, 41,
+     32,116,104,101,110, 10, 10,  9, 45, 45,  9,  9, 45, 45, 32,
+    105,116, 39,115, 32, 97, 32,114,101,102,101,114,101,110, 99,
+    101, 32,119,105,116,104, 32,100,101,102, 97,117,108,116, 32,
+    116,111, 32,115,111,109,101,116,104,105,110,103, 32,108,105,
+    107,101, 32, 67,108, 97,115,115, 58, 58,109,101,109, 98,101,
+    114, 44, 32,111,114, 32, 39,110,101,119, 32, 67,108, 97,115,
+    115, 39, 10,  9, 45, 45,  9,  9,114,101,116,117,114,110, 32,
+    116,114,117,101, 10,  9, 45, 45,  9,101,110,100, 10,  9, 45,
+     45,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,102,
+     97,108,115,101, 32, 45, 45, 32, 63, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,115,116,114,105,112, 95,
+    108, 97,115,116, 95, 97,114,103, 40, 97,108,108, 95, 97,114,
+    103,115, 44, 32,108, 97,115,116, 95, 97,114,103, 41, 32, 45,
+     45, 32,115,116,114,105,112,115, 32,116,104,101, 32,100,101,
+    102, 97,117,108,116, 32,118, 97,108,117,101, 32,102,114,111,
+    109, 32,116,104,101, 32,108, 97,115,116, 32, 97,114,103,117,
+    109,101,110,116, 10, 10,  9,108,111, 99, 97,108, 32, 95, 44,
+     95, 44,115, 95, 97,114,103, 32, 61, 32,115,116,114,105,110,
+    103, 46,102,105,110,100, 40,108, 97,115,116, 95, 97,114,103,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 43, 41, 34, 41, 10,  9,
+    108, 97,115,116, 95, 97,114,103, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,108, 97,115,116, 95, 97,114,
+    103, 44, 32, 34, 40, 91, 37, 37, 37, 40, 37, 41, 93, 41, 34,
+     44, 32, 34, 37, 37, 37, 49, 34, 41, 59, 10,  9, 97,108,108,
+     95, 97,114,103,115, 32, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40, 97,108,108, 95, 97,114,103,115, 44, 32,
+     34, 37,115, 42, 44, 37,115, 42, 34, 46, 46,108, 97,115,116,
+     95, 97,114,103, 46, 46, 34, 37,115, 42, 37, 41, 37,115, 42,
+     36, 34, 44, 32, 34, 41, 34, 41, 10,  9,114,101,116,117,114,
+    110, 32, 97,108,108, 95, 97,114,103,115, 44, 32,115, 95, 97,
+    114,103, 10,101,110,100, 10, 10, 10, 10, 45, 45, 32, 73,110,
+    116,101,114,110, 97,108, 32, 99,111,110,115,116,114,117, 99,
+    116,111,114, 10,102,117,110, 99,116,105,111,110, 32, 95, 70,
+    117,110, 99,116,105,111,110, 32, 40,116, 41, 10, 32,115,101,
+    116,109,101,116, 97,116, 97, 98,108,101, 40,116, 44, 99,108,
+     97,115,115, 70,117,110, 99,116,105,111,110, 41, 10, 10, 32,
+    105,102, 32,116, 46, 99,111,110,115,116, 32,126, 61, 32, 39,
+     99,111,110,115,116, 39, 32, 97,110,100, 32,116, 46, 99,111,
+    110,115,116, 32,126, 61, 32, 39, 39, 32,116,104,101,110, 10,
+     32, 32,101,114,114,111,114, 40, 34, 35,105,110,118, 97,108,
+    105,100, 32, 39, 99,111,110,115,116, 39, 32,115,112,101, 99,
+    105,102,105, 99, 97,116,105,111,110, 34, 41, 10, 32,101,110,
+    100, 10, 10, 32, 97,112,112,101,110,100, 40,116, 41, 10, 32,
+    105,102, 32,116, 58,105,110, 99,108, 97,115,115, 40, 41, 32,
+    116,104,101,110, 10, 32, 45, 45,112,114,105,110,116, 32, 40,
+     39,116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116,
+     46,110, 97,109,101, 46, 46, 39, 44, 32,112, 97,114,101,110,
+    116, 46,110, 97,109,101, 32,105,115, 32, 39, 46, 46,116, 46,
+    112, 97,114,101,110,116, 46,110, 97,109,101, 41, 10, 32, 32,
+    105,102, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    116, 46,110, 97,109,101, 44, 32, 34, 37, 98, 60, 62, 34, 44,
+     32, 34, 34, 41, 32, 61, 61, 32,115,116,114,105,110,103, 46,
+    103,115,117, 98, 40,116, 46,112, 97,114,101,110,116, 46,111,
+    114,105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,114,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 44,
+     32, 34, 37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,
+    101,110, 10, 32, 32, 32,116, 46,110, 97,109,101, 32, 61, 32,
+     39,110,101,119, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,
+    101, 32, 61, 32, 39,110,101,119, 39, 10, 32, 32, 32,116, 46,
+    112, 97,114,101,110,116, 46, 95,110,101,119, 32, 61, 32,116,
+    114,117,101, 10, 32, 32, 32,116, 46,116,121,112,101, 32, 61,
+     32,116, 46,112, 97,114,101,110,116, 46,110, 97,109,101, 10,
+     32, 32, 32,116, 46,112,116,114, 32, 61, 32, 39, 42, 39, 10,
+     32, 32,101,108,115,101,105,102, 32,115,116,114,105,110,103,
+     46,103,115,117, 98, 40,116, 46,110, 97,109,101, 44, 32, 34,
+     37, 98, 60, 62, 34, 44, 32, 34, 34, 41, 32, 61, 61, 32, 39,
+    126, 39, 46, 46,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,116, 46,112, 97,114,101,110,116, 46,111,114,105,103,105,
+    110, 97,108, 95,110, 97,109,101, 32,111,114, 32,116, 46,112,
+     97,114,101,110,116, 46,110, 97,109,101, 44, 32, 34, 37, 98,
+     60, 62, 34, 44, 32, 34, 34, 41, 32,116,104,101,110, 10, 32,
+     32, 32,116, 46,110, 97,109,101, 32, 61, 32, 39,100,101,108,
+    101,116,101, 39, 10, 32, 32, 32,116, 46,108,110, 97,109,101,
+     32, 61, 32, 39,100,101,108,101,116,101, 39, 10, 32, 32, 32,
+    116, 46,112, 97,114,101,110,116, 46, 95,100,101,108,101,116,
+    101, 32, 61, 32,116,114,117,101, 10, 32, 32,101,110,100, 10,
+     32,101,110,100, 10, 32,116, 46, 99,110, 97,109,101, 32, 61,
+     32,116, 58, 99,102,117,110, 99,110, 97,109,101, 40, 34,116,
+    111,108,117, 97, 34, 41, 46, 46,116, 58,111,118,101,114,108,
+    111, 97,100, 40,116, 41, 10, 32,114,101,116,117,114,110, 32,
+    116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,110,115,116,
+    114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,112,101, 99,
+    116,115, 32,116,104,114,101,101, 32,115,116,114,105,110,103,
+    115, 58, 32,111,110,101, 32,114,101,112,114,101,115,101,110,
+    116,105,110,103, 32,116,104,101, 32,102,117,110, 99,116,105,
+    111,110, 32,100,101, 99,108, 97,114, 97,116,105,111,110, 44,
+     10, 45, 45, 32, 97,110,111,116,104,101,114, 32,114,101,112,
+    114,101,115,101,110,116,105,110,103, 32,116,104,101, 32, 97,
+    114,103,117,109,101,110,116, 32,108,105,115,116, 44, 32, 97,
+    110,100, 32,116,104,101, 32,116,104,105,114,100, 32,114,101,
+    112,114,101,115,101,110,116,105,110,103, 10, 45, 45, 32,116,
+    104,101, 32, 34, 99,111,110,115,116, 34, 32,111,114, 32,101,
+    109,112,116,121, 32,115,116,114,105,110,103, 46, 10,102,117,
+    110, 99,116,105,111,110, 32, 70,117,110, 99,116,105,111,110,
+     32, 40,100, 44, 97, 44, 99, 41, 10, 32, 45, 45,108,111, 99,
+     97,108, 32,116, 32, 61, 32,115,112,108,105,116, 40,115,116,
+    114,115,117, 98, 40, 97, 44, 50, 44, 45, 50, 41, 44, 39, 44,
+     39, 41, 32, 45, 45, 32,101,108,105,109,105,110, 97,116,101,
+     32, 98,114, 97, 99,101,115, 10, 32, 45, 45,108,111, 99, 97,
+    108, 32,116, 32, 61, 32,115,112,108,105,116, 95,112, 97,114,
+     97,109,115, 40,115,116,114,115,117, 98, 40, 97, 44, 50, 44,
+     45, 50, 41, 41, 10, 10,  9,105,102, 32,110,111,116, 32,102,
+    108, 97,103,115, 91, 39, 87, 39, 93, 32, 97,110,100, 32,115,
+    116,114,105,110,103, 46,102,105,110,100, 40, 97, 44, 32, 34,
+     37, 46, 37, 46, 37, 46, 37,115, 42, 37, 41, 34, 41, 32,116,
+    104,101,110, 10, 10,  9,  9,119, 97,114,110,105,110,103, 40,
+     34, 70,117,110, 99,116,105,111,110,115, 32,119,105,116,104,
+     32,118, 97,114,105, 97, 98,108,101, 32, 97,114,103,117,109,
+    101,110,116,115, 32, 40, 96, 46, 46, 46, 39, 41, 32, 97,114,
+    101, 32,110,111,116, 32,115,117,112,112,111,114,116,101,100,
+     46, 32, 73,103,110,111,114,105,110,103, 32, 34, 46, 46,100,
+     46, 46, 97, 46, 46, 99, 41, 10,  9,  9,114,101,116,117,114,
+    110, 32,110,105,108, 10,  9,101,110,100, 10, 10, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,108,111, 99, 97,108,
+     32,108, 32, 61, 32,123,110, 61, 48,125, 10, 10, 32,  9, 97,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+     97, 44, 32, 34, 37,115, 42, 40, 91, 37, 40, 37, 41, 93, 41,
+     37,115, 42, 34, 44, 32, 34, 37, 49, 34, 41, 10,  9,108,111,
+     99, 97,108, 32,116, 44,115,116,114,105,112, 44,108, 97,115,
+    116, 32, 61, 32,115,116,114,105,112, 95,112, 97,114,115, 40,
+    115,116,114,115,117, 98, 40, 97, 44, 50, 44, 45, 50, 41, 41,
+     59, 10,  9,105,102, 32,115,116,114,105,112, 32,116,104,101,
+    110, 10,  9,  9, 45, 45,108,111, 99, 97,108, 32,110,115, 32,
+     61, 32,115,116,114,105,110,103, 46,115,117, 98, 40,115,116,
+    114,115,117, 98, 40, 97, 44, 49, 44, 45, 50, 41, 44, 32, 49,
+     44, 32, 45, 40,115,116,114,105,110,103, 46,108,101,110, 40,
+    108, 97,115,116, 41, 43, 49, 41, 41, 10,  9,  9,108,111, 99,
+     97,108, 32,110,115, 32, 61, 32,106,111,105,110, 40,116, 44,
+     32, 34, 44, 34, 44, 32, 49, 44, 32,108, 97,115,116, 45, 49,
+     41, 10, 10,  9,  9,110,115, 32, 61, 32, 34, 40, 34, 46, 46,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,110,115, 44,
+     32, 34, 37,115, 42, 44, 37,115, 42, 36, 34, 44, 32, 34, 34,
+     41, 46, 46, 39, 41, 39, 10,  9,  9, 45, 45,110,115, 32, 61,
+     32,115,116,114,105,112, 95,100,101,102, 97,117,108,116,115,
+     40,110,115, 41, 10, 10,  9,  9, 70,117,110, 99,116,105,111,
+    110, 40,100, 44, 32,110,115, 44, 32, 99, 41, 10,  9,  9,102,
+    111,114, 32,105, 61, 49, 44,108, 97,115,116, 32,100,111, 10,
+      9,  9,  9,116, 91,105, 93, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,116, 91,105, 93, 44, 32, 34, 61,
+     46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,  9,101,110,100,
+     10,  9,101,110,100, 10, 10, 32,119,104,105,108,101, 32,116,
+     91,105, 93, 32,100,111, 10, 32, 32,108, 46,110, 32, 61, 32,
+    108, 46,110, 43, 49, 10, 32, 32,108, 91,108, 46,110, 93, 32,
+     61, 32, 68,101, 99,108, 97,114, 97,116,105,111,110, 40,116,
+     91,105, 93, 44, 39,118, 97,114, 39, 44,116,114,117,101, 41,
+     10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100,
+     10, 32,108,111, 99, 97,108, 32,102, 32, 61, 32, 68,101, 99,
+    108, 97,114, 97,116,105,111,110, 40,100, 44, 39,102,117,110,
+     99, 39, 41, 10, 32,102, 46, 97,114,103,115, 32, 61, 32,108,
+     10, 32,102, 46, 99,111,110,115,116, 32, 61, 32, 99, 10, 32,
+    114,101,116,117,114,110, 32, 95, 70,117,110, 99,116,105,111,
+    110, 40,102, 41, 10,101,110,100, 10, 10,102,117,110, 99,116,
+    105,111,110, 32,106,111,105,110, 40,116, 44, 32,115,101,112,
+     44, 32,102,105,114,115,116, 44, 32,108, 97,115,116, 41, 10,
+     10,  9,102,105,114,115,116, 32, 61, 32,102,105,114,115,116,
+     32,111,114, 32, 49, 10,  9,108, 97,115,116, 32, 61, 32,108,
+     97,115,116, 32,111,114, 32,116, 97, 98,108,101, 46,103,101,
+    116,110, 40,116, 41, 10,  9,108,111, 99, 97,108, 32,108,115,
+    101,112, 32, 61, 32, 34, 34, 10,  9,108,111, 99, 97,108, 32,
+    114,101,116, 32, 61, 32, 34, 34, 10,  9,108,111, 99, 97,108,
+     32,108,111,111,112, 32, 61, 32,102, 97,108,115,101, 10,  9,
+    102,111,114, 32,105, 32, 61, 32,102,105,114,115,116, 44,108,
+     97,115,116, 32,100,111, 10, 10,  9,  9,114,101,116, 32, 61,
+     32,114,101,116, 46, 46,108,115,101,112, 46, 46,116, 91,105,
+     93, 10,  9,  9,108,115,101,112, 32, 61, 32,115,101,112, 10,
+      9,  9,108,111,111,112, 32, 61, 32,116,114,117,101, 10,  9,
+    101,110,100, 10,  9,105,102, 32,110,111,116, 32,108,111,111,
+    112, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,110,
+     32, 34, 34, 10,  9,101,110,100, 10, 10,  9,114,101,116,117,
+    114,110, 32,114,101,116, 10,101,110,100, 10, 10,102,117,110,
+     99,116,105,111,110, 32,115,116,114,105,112, 95,112, 97,114,
+    115, 40,115, 41, 10, 10,  9,108,111, 99, 97,108, 32,116, 32,
+     61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,110,
+    115, 40,115, 44, 32, 39, 44, 39, 41, 10,  9,108,111, 99, 97,
+    108, 32,115,116,114,105,112, 32, 61, 32,102, 97,108,115,101,
+     10,  9,108,111, 99, 97,108, 32,108, 97,115,116, 10, 10,  9,
+    102,111,114, 32,105, 61,116, 46,110, 44, 49, 44, 45, 49, 32,
+    100,111, 10, 10,  9,  9,105,102, 32,110,111,116, 32,115,116,
+    114,105,112, 32, 97,110,100, 32,112, 97,114, 97,109, 95,111,
+     98,106,101, 99,116, 40,116, 91,105, 93, 41, 32,116,104,101,
+    110, 10,  9,  9,  9,108, 97,115,116, 32, 61, 32,105, 10,  9,
+      9,  9,115,116,114,105,112, 32, 61, 32,116,114,117,101, 10,
+      9,  9,101,110,100, 10,  9,  9, 45, 45,105,102, 32,115,116,
+    114,105,112, 32,116,104,101,110, 10,  9,  9, 45, 45,  9,116,
+     91,105, 93, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,116, 91,105, 93, 44, 32, 34, 61, 46, 42, 36, 34,
+     44, 32, 34, 34, 41, 10,  9,  9, 45, 45,101,110,100, 10,  9,
+    101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,116, 44,
+    115,116,114,105,112, 44,108, 97,115,116, 10, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32,115,116,114,105,
+    112, 95,100,101,102, 97,117,108,116,115, 40,115, 41, 10, 10,
+      9,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117,
+     98, 40,115, 44, 32, 34, 94, 37, 40, 34, 44, 32, 34, 34, 41,
+     10,  9,115, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40,115, 44, 32, 34, 37, 41, 36, 34, 44, 32, 34, 34,
+     41, 10, 10,  9,108,111, 99, 97,108, 32,116, 32, 61, 32,115,
+    112,108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115,
+     44, 32, 34, 44, 34, 41, 10,  9,108,111, 99, 97,108, 32,115,
+    101,112, 44, 32,114,101,116, 32, 61, 32, 34, 34, 44, 34, 34,
+     10,  9,102,111,114, 32,105, 61, 49, 44,116, 46,110, 32,100,
+    111, 10,  9,  9,116, 91,105, 93, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40,116, 91,105, 93, 44, 32, 34,
+     61, 46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,  9,114,101,
+    116, 32, 61, 32,114,101,116, 46, 46,115,101,112, 46, 46,116,
+     91,105, 93, 10,  9,  9,115,101,112, 32, 61, 32, 34, 44, 34,
+     10,  9,101,110,100, 10, 10,  9,114,101,116,117,114,110, 32,
+     34, 40, 34, 46, 46,114,101,116, 46, 46, 34, 41, 34, 10,101,
+    110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/function.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32,111,112,101,114, 97,
+    116,111,114, 32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,
+    100, 58, 32, 36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,
+    111,100,101, 32,105,115, 32,102,114,101,101, 32,115,111,102,
+    116,119, 97,114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,
+    114,101,100,105,115,116,114,105, 98,117,116,101, 32,105,116,
+     32, 97,110,100, 47,111,114, 32,109,111,100,105,102,121, 32,
+    105,116, 46, 10, 45, 45, 32, 84,104,101, 32,115,111,102,116,
+    119, 97,114,101, 32,112,114,111,118,105,100,101,100, 32,104,
+    101,114,101,117,110,100,101,114, 32,105,115, 32,111,110, 32,
+     97,110, 32, 34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,
+    115, 44, 32, 97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,
+    117,116,104,111,114, 32,104, 97,115, 32,110,111, 32,111, 98,
+    108,105,103, 97,116,105,111,110, 32,116,111, 32,112,114,111,
+    118,105,100,101, 32,109, 97,105,110,116,101,110, 97,110, 99,
+    101, 44, 32,115,117,112,112,111,114,116, 44, 32,117,112,100,
+     97,116,101,115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,
+    101,109,101,110,116,115, 44, 32,111,114, 32,109,111,100,105,
+    102,105, 99, 97,116,105,111,110,115, 46, 10, 10, 10, 45, 45,
+     32, 79,112,101,114, 97,116,111,114, 32, 99,108, 97,115,115,
+     10, 45, 45, 32, 82,101,112,114,101,115,101,110,116,115, 32,
+     97,110, 32,111,112,101,114, 97,116,111,114, 32,102,117,110,
+     99,116,105,111,110, 32,111,114, 32, 97, 32, 99,108, 97,115,
+    115, 32,111,112,101,114, 97,116,111,114, 32,109,101,116,104,
+    111,100, 46, 10, 45, 45, 32, 73,116, 32,115,116,111,114,101,
+    115, 32,116,104,101, 32,115, 97,109,101, 32,102,105,101,108,
+    100,115, 32, 97,115, 32,102,117,110, 99,116,105,111,110,115,
+     32,100,111, 32,112,108,117,115, 58, 10, 45, 45, 32, 32,107,
+    105,110,100, 32, 61, 32,115,101,116, 32,111,102, 32, 99,104,
+     97,114, 97, 99,116,101,114, 32,114,101,112,114,101,115,101,
+    110,116,105,110,103, 32,116,104,101, 32,111,112,101,114, 97,
+    116,111,114, 32, 40, 97,115, 32,105,116, 32, 97,112,112,101,
+    114,115, 32,105,110, 32, 67, 43, 43, 32, 99,111,100,101, 41,
+     10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,114, 32,
+     61, 32,123, 10, 32,107,105,110,100, 32, 61, 32, 39, 39, 44,
+     10,125, 10, 99,108, 97,115,115, 79,112,101,114, 97,116,111,
+    114, 46, 95, 95,105,110,100,101,120, 32, 61, 32, 99,108, 97,
+    115,115, 79,112,101,114, 97,116,111,114, 10,115,101,116,109,
+    101,116, 97,116, 97, 98,108,101, 40, 99,108, 97,115,115, 79,
+    112,101,114, 97,116,111,114, 44, 99,108, 97,115,115, 70,117,
+    110, 99,116,105,111,110, 41, 10, 10, 45, 45, 32,116, 97, 98,
+    108,101, 32,116,111, 32,116,114, 97,110,115,102,111,114,109,
+     32,111,112,101,114, 97,116,111,114, 32,107,105,110,100, 32,
+    105,110,116,111, 32,116,104,101, 32, 97,112,112,114,111,112,
+    114,105, 97,116,101, 32,116, 97,103, 32,109,101,116,104,111,
+    100, 32,110, 97,109,101, 10, 95, 84, 77, 32, 61, 32,123, 91,
+     39, 43, 39, 93, 32, 61, 32, 39, 97,100,100, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 91, 39, 45, 39, 93, 32, 61, 32, 39,
+    115,117, 98, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39,
+     42, 39, 93, 32, 61, 32, 39,109,117,108, 39, 44, 10, 32, 32,
+     32, 32, 32, 32, 32, 91, 39, 47, 39, 93, 32, 61, 32, 39,100,
+    105,118, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 60,
+     39, 93, 32, 61, 32, 39,108,116, 39, 44, 10, 32, 32, 32, 32,
+     32, 32, 32, 91, 39, 60, 61, 39, 93, 32, 61, 32, 39,108,101,
+     39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 61, 61, 39,
+     93, 32, 61, 32, 39,101,113, 39, 44, 10, 32, 32, 32, 32, 32,
+     32, 32, 91, 39, 91, 93, 39, 93, 32, 61, 32, 39,103,101,116,
+    105, 39, 44, 10, 32, 32, 32, 32, 32, 32, 32, 91, 39, 38, 91,
+     93, 39, 93, 32, 61, 32, 39,115,101,116,105, 39, 44, 10, 32,
+     32, 32, 32, 32, 32, 32, 45, 45, 91, 39, 45, 62, 39, 93, 32,
+     61, 32, 39,102,108,101, 99,104,105,116, 97, 39, 44, 10, 32,
+     32, 32, 32, 32, 32,125, 10, 10, 10, 45, 45, 32, 80,114,105,
+    110,116, 32,109,101,116,104,111,100, 10,102,117,110, 99,116,
+    105,111,110, 32, 99,108, 97,115,115, 79,112,101,114, 97,116,
+    111,114, 58,112,114,105,110,116, 32, 40,105,100,101,110,116,
+     44, 99,108,111,115,101, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 79,112,101,114, 97,116,111,
+    114,123, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,107,105,110,100, 32, 32, 61, 32, 39,
+     34, 46, 46,115,101,108,102, 46,107,105,110,100, 46, 46, 34,
+     39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,
+    110,116, 46, 46, 34, 32,109,111,100, 32, 32, 61, 32, 39, 34,
+     46, 46,115,101,108,102, 46,109,111,100, 46, 46, 34, 39, 44,
+     34, 41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116,
+     46, 46, 34, 32,116,121,112,101, 32, 61, 32, 39, 34, 46, 46,
+    115,101,108,102, 46,116,121,112,101, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32,112,116,114, 32, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,112,116,114, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41, 10, 32,
+    112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34, 32,
+     99,111,110,115,116, 32, 61, 32, 39, 34, 46, 46,115,101,108,
+    102, 46, 99,111,110,115,116, 46, 46, 34, 39, 44, 34, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     32, 99,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,101,
+    108,102, 46, 99,110, 97,109,101, 46, 46, 34, 39, 44, 34, 41,
+     10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+     34, 32,108,110, 97,109,101, 32, 61, 32, 39, 34, 46, 46,115,
+    101,108,102, 46,108,110, 97,109,101, 46, 46, 34, 39, 44, 34,
+     41, 10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32, 97,114,103,115, 32, 61, 32,123, 34, 41, 10, 32,
+    108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,
+    101, 32,115,101,108,102, 46, 97,114,103,115, 91,105, 93, 32,
+    100,111, 10, 32, 32,115,101,108,102, 46, 97,114,103,115, 91,
+    105, 93, 58,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,
+    110,116, 40,105,100,101,110,116, 46, 46, 34, 32,125, 34, 41,
+     10, 32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46,
+     34,125, 34, 46, 46, 99,108,111,115,101, 41, 10,101,110,100,
+     10, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,115,
+    115, 79,112,101,114, 97,116,111,114, 58,115,117,112, 99,111,
+    100,101, 95,116,109,112, 40, 41, 10, 10,  9,105,102, 32,110,
+    111,116, 32, 95, 84, 77, 91,115,101,108,102, 46,107,105,110,
+    100, 93, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32, 99,108, 97,115,115, 70,117,110, 99,116,105,111,110,
+     46,115,117,112, 99,111,100,101, 40,115,101,108,102, 41, 10,
+      9,101,110,100, 10, 10,  9, 45, 45, 32,110,111, 32,111,118,
+    101,114,108,111, 97,100, 44, 32,110,111, 32,112, 97,114, 97,
+    109,101,116,101,114,115, 44, 32, 97,108,119, 97,121,115, 32,
+    105,110, 99,108, 97,115,115, 10,  9,111,117,116,112,117,116,
+     40, 34, 47, 42, 32,109,101,116,104,111,100, 58, 34, 44,115,
+    101,108,102, 46,110, 97,109,101, 44, 34, 32,111,102, 32, 99,
+    108, 97,115,115, 32, 34, 44,115,101,108,102, 58,105,110, 99,
+    108, 97,115,115, 40, 41, 44, 34, 32, 42, 47, 34, 41, 10, 10,
+      9,111,117,116,112,117,116, 40, 34, 35,105,102,110,100,101,
+    102, 32, 84, 79, 76, 85, 65, 95, 68, 73, 83, 65, 66, 76, 69,
+     95, 34, 46, 46,115,101,108,102, 46, 99,110, 97,109,101, 41,
+     10,  9,111,117,116,112,117,116, 40, 34, 92,110,115,116, 97,
+    116,105, 99, 32,105,110,116, 34, 44,115,101,108,102, 46, 99,
+    110, 97,109,101, 44, 34, 40,108,117, 97, 95, 83,116, 97,116,
+    101, 42, 32,116,111,108,117, 97, 95, 83, 41, 34, 41, 10, 10,
+      9,105,102, 32,111,118,101,114,108,111, 97,100, 32, 60, 32,
+     48, 32,116,104,101,110, 10,  9, 32,111,117,116,112,117,116,
+     40, 39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65,
+     95, 82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,101,
+    110,100, 10,  9,111,117,116,112,117,116, 40, 39, 32,116,111,
+    108,117, 97, 95, 69,114,114,111,114, 32,116,111,108,117, 97,
+     95,101,114,114, 59, 39, 41, 10,  9,111,117,116,112,117,116,
+     40, 39, 32,105,102, 32, 40, 92,110, 39, 41, 10,  9, 45, 45,
+     32, 99,104,101, 99,107, 32,115,101,108,102, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33, 39, 46, 46,
+     39,116,111,108,117, 97, 95,105,115,117,115,101,114,116,121,
+    112,101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44, 34, 39,
+     46, 46,115,101,108,102, 46,112, 97,114,101,110,116, 46,116,
+    121,112,101, 46, 46, 39, 34, 44, 48, 44, 38,116,111,108,117,
+     97, 95,101,114,114, 41, 32,124,124, 92,110, 39, 41, 10,  9,
+    111,117,116,112,117,116, 40, 39, 32, 32, 32, 32, 32, 33,116,
+    111,108,117, 97, 95,105,115,110,111,111, 98,106, 40,116,111,
+    108,117, 97, 95, 83, 44, 50, 44, 38,116,111,108,117, 97, 95,
+    101,114,114, 41, 92,110, 32, 41, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32,103,111,116,111, 32,116,111,108,
+    117, 97, 95,108,101,114,114,111,114, 59, 39, 41, 10, 10,  9,
+    111,117,116,112,117,116, 40, 39, 32,101,108,115,101, 92,110,
+     39, 41, 10,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 32, 45, 45, 32,116,111,108,117,
+     97, 95,114,101,108,101, 97,115,101, 10,  9,111,117,116,112,
+    117,116, 40, 39, 32,123, 39, 41, 10, 10,  9, 45, 45, 32,100,
+    101, 99,108, 97,114,101, 32,115,101,108,102, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32, 39, 44,115,101,108,102, 46, 99,
+    111,110,115,116, 44,115,101,108,102, 46,112, 97,114,101,110,
+    116, 46,116,121,112,101, 44, 39, 42, 39, 44, 39,115,101,108,
+    102, 32, 61, 32, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 40, 39, 44,115,101,108,102, 46, 99,111,110,115,116, 44,
+    115,101,108,102, 46,112, 97,114,101,110,116, 46,116,121,112,
+    101, 44, 39, 42, 41, 32, 39, 41, 10,  9,111,117,116,112,117,
+    116, 40, 39,116,111,108,117, 97, 95,116,111,117,115,101,114,
+    116,121,112,101, 40,116,111,108,117, 97, 95, 83, 44, 49, 44,
+     48, 41, 59, 39, 41, 10, 10,  9, 45, 45, 32, 99,104,101, 99,
+    107, 32,115,101,108,102, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95,
+     82, 69, 76, 69, 65, 83, 69, 92,110, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 32, 32,105,102, 32, 40, 33,115,101,
+    108,102, 41, 32,116,111,108,117, 97, 95,101,114,114,111,114,
+     40,116,111,108,117, 97, 95, 83, 44, 34,105,110,118, 97,108,
+    105,100, 32, 92, 39,115,101,108,102, 92, 39, 32,105,110, 32,
+    102,117,110, 99,116,105,111,110, 32, 92, 39, 39, 46, 46,115,
+    101,108,102, 46,110, 97,109,101, 46, 46, 39, 92, 39, 34, 44,
+     78, 85, 76, 76, 41, 59, 39, 41, 59, 10,  9,111,117,116,112,
+    117,116, 40, 39, 35,101,110,100,105,102, 92,110, 39, 41, 10,
+     10,  9, 45, 45, 32, 99, 97,115,116, 32,115,101,108,102, 10,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 39, 44,115,101,
+    108,102, 46,109,111,100, 44,115,101,108,102, 46,116,121,112,
+    101, 44,115,101,108,102, 46,112,116,114, 44, 39,116,111,108,
+    117, 97, 95,114,101,116, 32, 61, 32, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 40, 39, 44,115,101,108,102, 46,109,
+    111,100, 44,115,101,108,102, 46,116,121,112,101, 44,115,101,
+    108,102, 46,112,116,114, 44, 39, 41, 40, 42,115,101,108,102,
+     41, 59, 39, 41, 10, 10,  9, 45, 45, 32,114,101,116,117,114,
+    110, 32,118, 97,108,117,101, 10,  9,108,111, 99, 97,108, 32,
+    116, 44, 99,116, 32, 61, 32,105,115, 98, 97,115,105, 99, 40,
+    115,101,108,102, 46,116,121,112,101, 41, 10,  9,105,102, 32,
+    116, 32,116,104,101,110, 10,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,104,
+     39, 46, 46,116, 46, 46, 39, 40,116,111,108,117, 97, 95, 83,
+     44, 40, 39, 44, 99,116, 44, 39, 41,116,111,108,117, 97, 95,
+    114,101,116, 41, 59, 39, 41, 10,  9,101,108,115,101, 10,  9,
+      9,116, 32, 61, 32,115,101,108,102, 46,116,121,112,101, 10,
+      9,  9,110,101,119, 95,116, 32, 61, 32,115,116,114,105,110,
+    103, 46,103,115,117, 98, 40,116, 44, 32, 34, 99,111,110,115,
+    116, 37,115, 43, 34, 44, 32, 34, 34, 41, 10,  9,  9,105,102,
+     32,115,101,108,102, 46,112,116,114, 32, 61, 61, 32, 39, 39,
+     32,116,104,101,110, 10,  9,  9,  9,111,117,116,112,117,116,
+     40, 39, 32, 32, 32,123, 39, 41, 10,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39, 35,105,102,100,101,102, 32, 95, 95, 99,
+    112,108,117,115,112,108,117,115, 92,110, 39, 41, 10,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,
+    105,100, 42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61,
+     32,110,101,119, 39, 44,110,101,119, 95,116, 44, 39, 40,116,
+    111,108,117, 97, 95,114,101,116, 41, 59, 39, 41, 10,  9,  9,
+      9,111,117,116,112,117,116, 40, 39, 32, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,
+    101, 95, 97,110,100, 95,116, 97,107,101,111,119,110,101,114,
+    115,104,105,112, 40,116,111,108,117, 97, 95, 83, 44,116,111,
+    108,117, 97, 95,111, 98,106, 44, 34, 39, 44,116, 44, 39, 34,
+     41, 59, 39, 41, 10,  9,  9,  9,111,117,116,112,117,116, 40,
+     39, 35,101,108,115,101, 92,110, 39, 41, 10,  9,  9,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32, 32,118,111,105,100,
+     42, 32,116,111,108,117, 97, 95,111, 98,106, 32, 61, 32,116,
+    111,108,117, 97, 95, 99,111,112,121, 40,116,111,108,117, 97,
+     95, 83, 44, 40,118,111,105,100, 42, 41, 38,116,111,108,117,
+     97, 95,114,101,116, 44,115,105,122,101,111,102, 40, 39, 44,
+    116, 44, 39, 41, 41, 59, 39, 41, 10,  9,  9,  9,111,117,116,
+    112,117,116, 40, 39, 32, 32, 32, 32,116,111,108,117, 97, 95,
+    112,117,115,104,117,115,101,114,116,121,112,101, 95, 97,110,
+    100, 95,116, 97,107,101,111,119,110,101,114,115,104,105,112,
+     40,116,111,108,117, 97, 95, 83, 44,116,111,108,117, 97, 95,
+    111, 98,106, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41,
+     10,  9,  9,  9,111,117,116,112,117,116, 40, 39, 35,101,110,
+    100,105,102, 92,110, 39, 41, 10,  9,  9,  9,111,117,116,112,
+    117,116, 40, 39, 32, 32, 32,125, 39, 41, 10,  9,  9,101,108,
+    115,101,105,102, 32,115,101,108,102, 46,112,116,114, 32, 61,
+     61, 32, 39, 38, 39, 32,116,104,101,110, 10,  9,  9,  9,111,
+    117,116,112,117,116, 40, 39, 32, 32, 32,116,111,108,117, 97,
+     95,112,117,115,104,117,115,101,114,116,121,112,101, 40,116,
+    111,108,117, 97, 95, 83, 44, 40,118,111,105,100, 42, 41, 38,
+    116,111,108,117, 97, 95,114,101,116, 44, 34, 39, 44,116, 44,
+     39, 34, 41, 59, 39, 41, 10,  9,  9,101,108,115,101, 10,  9,
+      9,  9,105,102, 32,108,111, 99, 97,108, 95, 99,111,110,115,
+    116,114,117, 99,116,111,114, 32,116,104,101,110, 10,  9,  9,
+      9,  9,111,117,116,112,117,116, 40, 39, 32, 32, 32,116,111,
+    108,117, 97, 95,112,117,115,104,117,115,101,114,116,121,112,
+    101, 95, 97,110,100, 95,116, 97,107,101,111,119,110,101,114,
+    115,104,105,112, 40,116,111,108,117, 97, 95, 83, 44, 40,118,
+    111,105,100, 32, 42, 41,116,111,108,117, 97, 95,114,101,116,
+     44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39, 41, 10,  9,  9,
+      9,101,108,115,101, 10,  9,  9,  9,  9,111,117,116,112,117,
+    116, 40, 39, 32, 32, 32,116,111,108,117, 97, 95,112,117,115,
+    104,117,115,101,114,116,121,112,101, 40,116,111,108,117, 97,
+     95, 83, 44, 40,118,111,105,100, 42, 41,116,111,108,117, 97,
+     95,114,101,116, 44, 34, 39, 44,116, 44, 39, 34, 41, 59, 39,
+     41, 10,  9,  9,  9,101,110,100, 10,  9,  9,101,110,100, 10,
+      9,101,110,100, 10, 10,  9,111,117,116,112,117,116, 40, 39,
+     32, 32,125, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39,
+     32,114,101,116,117,114,110, 32, 49, 59, 39, 41, 10, 10,  9,
+    111,117,116,112,117,116, 40, 39, 35,105,102,110,100,101,102,
+     32, 84, 79, 76, 85, 65, 95, 82, 69, 76, 69, 65, 83, 69, 92,
+    110, 39, 41, 10,  9,111,117,116,112,117,116, 40, 39,116,111,
+    108,117, 97, 95,108,101,114,114,111,114, 58, 92,110, 39, 41,
+     10,  9,111,117,116,112,117,116, 40, 39, 32,116,111,108,117,
+     97, 95,101,114,114,111,114, 40,116,111,108,117, 97, 95, 83,
+     44, 34, 35,102,101,114,114,111,114, 32,105,110, 32,102,117,
+    110, 99,116,105,111,110, 32, 92, 39, 39, 46, 46,115,101,108,
+    102, 46,108,110, 97,109,101, 46, 46, 39, 92, 39, 46, 34, 44,
+     38,116,111,108,117, 97, 95,101,114,114, 41, 59, 39, 41, 10,
+      9,111,117,116,112,117,116, 40, 39, 32,114,101,116,117,114,
+    110, 32, 48, 59, 39, 41, 10,  9,111,117,116,112,117,116, 40,
+     39, 35,101,110,100,105,102, 92,110, 39, 41, 10, 10, 10,  9,
+    111,117,116,112,117,116, 40, 39,125, 39, 41, 10,  9,111,117,
+    116,112,117,116, 40, 39, 35,101,110,100,105,102, 32, 47, 47,
+     35,105,102,110,100,101,102, 32, 84, 79, 76, 85, 65, 95, 68,
+     73, 83, 65, 66, 76, 69, 92,110, 39, 41, 10,  9,111,117,116,
+    112,117,116, 40, 39, 92,110, 39, 41, 10,101,110,100, 10, 10,
+     45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,110,
+    115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,105,
+    111,110, 32, 95, 79,112,101,114, 97,116,111,114, 32, 40,116,
+     41, 10, 32,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40,116, 44, 99,108, 97,115,115, 79,112,101,114, 97,116,111,
+    114, 41, 10, 10, 32,105,102, 32,116, 46, 99,111,110,115,116,
+     32,126, 61, 32, 39, 99,111,110,115,116, 39, 32, 97,110,100,
+     32,116, 46, 99,111,110,115,116, 32,126, 61, 32, 39, 39, 32,
+    116,104,101,110, 10, 32, 32,101,114,114,111,114, 40, 34, 35,
+    105,110,118, 97,108,105,100, 32, 39, 99,111,110,115,116, 39,
+     32,115,112,101, 99,105,102,105, 99, 97,116,105,111,110, 34,
+     41, 10, 32,101,110,100, 10, 10, 32, 97,112,112,101,110,100,
+     40,116, 41, 10, 32,105,102, 32,110,111,116, 32,116, 58,105,
+    110, 99,108, 97,115,115, 40, 41, 32,116,104,101,110, 10, 32,
+     32,101,114,114,111,114, 40, 34, 35,111,112,101,114, 97,116,
+    111,114, 32, 99, 97,110, 32,111,110,108,121, 32, 98,101, 32,
+    100,101,102,105,110,101,100, 32, 97,115, 32, 99,108, 97,115,
+    115, 32,109,101,109, 98,101,114, 34, 41, 10, 32,101,110,100,
+     10, 10, 32, 45, 45,116, 46,110, 97,109,101, 32, 61, 32,116,
+     46,110, 97,109,101, 32, 46, 46, 32, 34, 95, 34, 32, 46, 46,
+     32, 40, 95, 84, 77, 91,116, 46,107,105,110,100, 93, 32,111,
+    114, 32,116, 46,107,105,110,100, 41, 10, 32,116, 46, 99,110,
+     97,109,101, 32, 61, 32,116, 58, 99,102,117,110, 99,110, 97,
+    109,101, 40, 34,116,111,108,117, 97, 34, 41, 46, 46,116, 58,
+    111,118,101,114,108,111, 97,100, 40,116, 41, 10, 32,116, 46,
+    110, 97,109,101, 32, 61, 32, 34,111,112,101,114, 97,116,111,
+    114, 34, 32, 46, 46, 32,116, 46,107,105,110,100, 32, 32, 45,
+     45, 32,115,101,116, 32, 97,112,112,114,111,112,114,105, 97,
+    116,101, 32, 99, 97,108,108,105,110,103, 32,110, 97,109,101,
+     10, 32,114,101,116,117,114,110, 32,116, 10,101,110,100, 10,
+     10, 45, 45, 32, 67,111,110,115,116,114,117, 99,116,111,114,
+     10,102,117,110, 99,116,105,111,110, 32, 79,112,101,114, 97,
+    116,111,114, 32, 40,100, 44,107, 44, 97, 44, 99, 41, 10, 10,
+      9,108,111, 99, 97,108, 32,111,112, 95,107, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40,107, 44, 32, 34,
+     94, 37,115, 42, 34, 44, 32, 34, 34, 41, 10,  9,111,112, 95,
+    107, 32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98,
+     40,107, 44, 32, 34, 37,115, 42, 36, 34, 44, 32, 34, 34, 41,
+     10,  9, 45, 45,105,102, 32,115,116,114,105,110,103, 46,102,
+    105,110,100, 40,107, 44, 32, 34, 94, 91, 37,119, 95, 58, 37,
+    100, 60, 62, 37, 42, 37, 38, 93, 43, 36, 34, 41, 32,116,104,
+    101,110, 10,  9,105,102, 32,100, 32, 61, 61, 32, 34,111,112,
+    101,114, 97,116,111,114, 34, 32, 97,110,100, 32,107, 32,126,
+     61, 32, 39, 39, 32,116,104,101,110, 10, 10,  9,  9,100, 32,
+     61, 32,107, 46, 46, 34, 32,111,112,101,114, 97,116,111,114,
+     34, 10,  9,101,108,115,101,105,102, 32,110,111,116, 32, 95,
+     84, 77, 91,111,112, 95,107, 93, 32,116,104,101,110, 10, 10,
+      9,  9,105,102, 32,102,108, 97,103,115, 91, 39, 87, 39, 93,
+     32,116,104,101,110, 10,  9,  9,  9,101,114,114,111,114, 40,
+     34,116,111,108,117, 97, 58, 32,110,111, 32,115,117,112,112,
+    111,114,116, 32,102,111,114, 32,111,112,101,114, 97,116,111,
+    114, 34, 32, 46, 46, 32,102, 46,107,105,110,100, 41, 10,  9,
+      9,101,108,115,101, 10,  9,  9,  9,119, 97,114,110,105,110,
+    103, 40, 34, 78,111, 32,115,117,112,112,111,114,116, 32,102,
+    111,114, 32,111,112,101,114, 97,116,111,114, 32, 34, 46, 46,
+    111,112, 95,107, 46, 46, 34, 44, 32,105,103,110,111,114,105,
+    110,103, 34, 41, 10,  9,  9,  9,114,101,116,117,114,110, 32,
+    110,105,108, 10,  9,  9,101,110,100, 10,  9,101,110,100, 10,
+     10,  9,108,111, 99, 97,108, 32,114,101,102, 32, 61, 32, 39,
+     39, 10, 32,108,111, 99, 97,108, 32,116, 32, 61, 32,115,112,
+    108,105,116, 95, 99, 95,116,111,107,101,110,115, 40,115,116,
+    114,115,117, 98, 40, 97, 44, 50, 44,115,116,114,108,101,110,
+     40, 97, 41, 45, 49, 41, 44, 39, 44, 39, 41, 32, 45, 45, 32,
+    101,108,105,109,105,110, 97,116,101, 32, 98,114, 97, 99,101,
+    115, 10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,108,
+    111, 99, 97,108, 32,108, 32, 61, 32,123,110, 61, 48,125, 10,
+     32,119,104,105,108,101, 32,116, 91,105, 93, 32,100,111, 10,
+     32, 32,108, 46,110, 32, 61, 32,108, 46,110, 43, 49, 10, 32,
+     32,108, 91,108, 46,110, 93, 32, 61, 32, 68,101, 99,108, 97,
+    114, 97,116,105,111,110, 40,116, 91,105, 93, 44, 39,118, 97,
+    114, 39, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49, 10, 32,
+    101,110,100, 10, 32,105,102, 32,107, 32, 61, 61, 32, 39, 91,
+     93, 39, 32,116,104,101,110, 10,  9, 32,108,111, 99, 97,108,
+     32, 95, 10,  9, 32, 95, 44, 32, 95, 44, 32,114,101,102, 32,
+     61, 32,115,116,114,102,105,110,100, 40,100, 44, 39, 40, 38,
+     41, 39, 41, 10, 32, 32,100, 32, 61, 32,103,115,117, 98, 40,
+    100, 44, 39, 38, 39, 44, 39, 39, 41, 10, 32,101,108,115,101,
+    105,102, 32,107, 61, 61, 39, 38, 91, 93, 39, 32,116,104,101,
+    110, 10, 32, 32,108, 46,110, 32, 61, 32,108, 46,110, 43, 49,
+     10, 32, 32,108, 91,108, 46,110, 93, 32, 61, 32, 68,101, 99,
+    108, 97,114, 97,116,105,111,110, 40,100, 44, 39,118, 97,114,
+     39, 41, 10, 32, 32,108, 91,108, 46,110, 93, 46,110, 97,109,
+    101, 32, 61, 32, 39,116,111,108,117, 97, 95,118, 97,108,117,
+    101, 39, 10, 32,101,110,100, 10, 32,108,111, 99, 97,108, 32,
+    102, 32, 61, 32, 68,101, 99,108, 97,114, 97,116,105,111,110,
+     40,100, 44, 39,102,117,110, 99, 39, 41, 10, 32,105,102, 32,
+    107, 32, 61, 61, 32, 39, 91, 93, 39, 32, 97,110,100, 32, 40,
+    108, 91, 49, 93, 61, 61,110,105,108, 32,111,114, 32,105,115,
+     98, 97,115,105, 99, 40,108, 91, 49, 93, 46,116,121,112,101,
+     41,126, 61, 39,110,117,109, 98,101,114, 39, 41, 32,116,104,
+    101,110, 10, 32, 32,101,114,114,111,114, 40, 39,111,112,101,
+    114, 97,116,111,114, 91, 93, 32, 99, 97,110, 32,111,110,108,
+    121, 32, 98,101, 32,100,101,102,105,110,101,100, 32,102,111,
+    114, 32,110,117,109,101,114,105, 99, 32,105,110,100,101,120,
+     46, 39, 41, 10, 32,101,110,100, 10, 32,102, 46, 97,114,103,
+    115, 32, 61, 32,108, 10, 32,102, 46, 99,111,110,115,116, 32,
+     61, 32, 99, 10, 32,102, 46,107,105,110,100, 32, 61, 32,111,
+    112, 95,107, 10, 32,102, 46,108,110, 97,109,101, 32, 61, 32,
+     34, 46, 34, 46, 46, 40, 95, 84, 77, 91,102, 46,107,105,110,
+    100, 93, 32,111,114, 32,102, 46,107,105,110,100, 41, 10, 32,
+    105,102, 32,110,111,116, 32, 95, 84, 77, 91,102, 46,107,105,
+    110,100, 93, 32,116,104,101,110, 10, 32,  9,102, 46, 99, 97,
+    115,116, 95,111,112,101,114, 97,116,111,114, 32, 61, 32,116,
+    114,117,101, 10, 32,101,110,100, 10, 32,105,102, 32,102, 46,
+    107,105,110,100, 32, 61, 61, 32, 39, 91, 93, 39, 32, 97,110,
+    100, 32,114,101,102, 61, 61, 39, 38, 39, 32, 97,110,100, 32,
+    102, 46, 99,111,110,115,116,126, 61, 39, 99,111,110,115,116,
+     39, 32,116,104,101,110, 10, 32, 32, 79,112,101,114, 97,116,
+    111,114, 40,100, 44, 39, 38, 39, 46, 46,107, 44, 97, 44, 99,
+     41, 32,  9, 45, 45, 32, 99,114,101, 97,116,101, 32, 99,111,
+    114,114,101,115,112,111,100,105,110,103, 32,115,101,116, 32,
+    111,112,101,114, 97,116,111,114, 10, 32,101,110,100, 10, 32,
+    114,101,116,117,114,110, 32, 95, 79,112,101,114, 97,116,111,
+    114, 40,102, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/operator.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,116,111,108,117, 97, 58, 32, 99,108, 97,115,115,
+     32, 99,108, 97,115,115, 10, 45, 45, 32, 87,114,105,116,116,
+    101,110, 32, 98,121, 32, 87, 97,108,100,101,109, 97,114, 32,
+     67,101,108,101,115, 10, 45, 45, 32, 84,101, 67, 71,114, 97,
+    102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45, 32, 74,117,
+    108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 36, 73,100, 58, 32,
+     36, 10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101,
+     32,105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,
+    114,101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,
+    105,115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,
+    100, 47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46,
+     10, 45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,
+    101, 32,112,114,111,118,105,100,101,100, 32,104,101,114,101,
+    117,110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32,
+     34, 97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32,
+     97,110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,
+    111,114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103,
+     97,116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,
+    101, 32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,
+    115,117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,
+    115, 44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,
+    110,116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99,
+     97,116,105,111,110,115, 46, 10, 10, 10, 45, 45, 32, 67,108,
+     97,115,115, 32, 99,108, 97,115,115, 10, 45, 45, 32, 82,101,
+    112,114,101,115,101,110,116,115, 32, 97, 32, 99,108, 97,115,
+    115, 32,100,101,102,105,110,105,116,105,111,110, 46, 10, 45,
+     45, 32, 83,116,111,114,101,115, 32,116,104,101, 32,102,111,
+    108,108,111,119,105,110,103, 32,102,105,101,108,100,115, 58,
+     10, 45, 45, 32, 32, 32, 32,110, 97,109,101, 32, 61, 32, 99,
+    108, 97,115,115, 32,110, 97,109,101, 10, 45, 45, 32, 32, 32,
+     32, 98, 97,115,101, 32, 61, 32, 99,108, 97,115,115, 32, 98,
+     97,115,101, 44, 32,105,102, 32, 97,110,121, 32, 40,111,110,
+    108,121, 32,115,105,110,103,108,101, 32,105,110,104,101,114,
+    105,116, 97,110, 99,101, 32,105,115, 32,115,117,112,112,111,
+    114,116,101,100, 41, 10, 45, 45, 32, 32, 32, 32,123,105,125,
+     32, 32, 61, 32,108,105,115,116, 32,111,102, 32,109,101,109,
+     98,101,114,115, 10, 99,108, 97,115,115, 67,108, 97,115,115,
+     32, 61, 32,123, 10, 32, 99,108, 97,115,115,116,121,112,101,
+     32, 61, 32, 39, 99,108, 97,115,115, 39, 44, 10, 32,110, 97,
+    109,101, 32, 61, 32, 39, 39, 44, 10, 32, 98, 97,115,101, 32,
+     61, 32, 39, 39, 44, 10, 32,116,121,112,101, 32, 61, 32, 39,
+     39, 44, 10, 32, 98,116,121,112,101, 32, 61, 32, 39, 39, 44,
+     10, 32, 99,116,121,112,101, 32, 61, 32, 39, 39, 44, 10,125,
+     10, 99,108, 97,115,115, 67,108, 97,115,115, 46, 95, 95,105,
+    110,100,101,120, 32, 61, 32, 99,108, 97,115,115, 67,108, 97,
+    115,115, 10,115,101,116,109,101,116, 97,116, 97, 98,108,101,
+     40, 99,108, 97,115,115, 67,108, 97,115,115, 44, 99,108, 97,
+    115,115, 67,111,110,116, 97,105,110,101,114, 41, 10, 10, 10,
+     45, 45, 32,114,101,103,105,115,116,101,114, 32, 99,108, 97,
+    115,115, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,108, 97,115,115, 58,114,101,103,105,115,116,101,
+    114, 32, 40,112,114,101, 41, 10,  9,105,102, 32,110,111,116,
+     32,115,101,108,102, 58, 99,104,101, 99,107, 95,112,117, 98,
+    108,105, 99, 95, 97, 99, 99,101,115,115, 40, 41, 32,116,104,
+    101,110, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,110,
+    100, 10, 10, 32,112,114,101, 32, 61, 32,112,114,101, 32,111,
+    114, 32, 39, 39, 10, 32,112,117,115,104, 40,115,101,108,102,
+     41, 10,  9,105,102, 32, 95, 99,111,108,108,101, 99,116, 91,
+    115,101,108,102, 46,116,121,112,101, 93, 32,116,104,101,110,
+     10,  9,  9,111,117,116,112,117,116, 40,112,114,101, 44, 39,
+     35,105,102,100,101,102, 32, 95, 95, 99,112,108,117,115,112,
+    108,117,115, 92,110, 39, 41, 10, 32, 32,111,117,116,112,117,
+    116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97, 95, 99,
+     99,108, 97,115,115, 40,116,111,108,117, 97, 95, 83, 44, 34,
+     39, 46, 46,115,101,108,102, 46,108,110, 97,109,101, 46, 46,
+     39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,116,121,112,
+    101, 46, 46, 39, 34, 44, 34, 39, 46, 46,115,101,108,102, 46,
+     98,116,121,112,101, 46, 46, 39, 34, 44, 39, 46, 46, 95, 99,
+    111,108,108,101, 99,116, 91,115,101,108,102, 46,116,121,112,
+    101, 93, 46, 46, 39, 41, 59, 39, 41, 10,  9,  9,111,117,116,
+    112,117,116, 40,112,114,101, 44, 39, 35,101,108,115,101, 92,
+    110, 39, 41, 10, 32, 32,111,117,116,112,117,116, 40,112,114,
+    101, 46, 46, 39,116,111,108,117, 97, 95, 99, 99,108, 97,115,
+    115, 40,116,111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,
+    101,108,102, 46,108,110, 97,109,101, 46, 46, 39, 34, 44, 34,
+     39, 46, 46,115,101,108,102, 46,116,121,112,101, 46, 46, 39,
+     34, 44, 34, 39, 46, 46,115,101,108,102, 46, 98,116,121,112,
+    101, 46, 46, 39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,
+      9,  9,111,117,116,112,117,116, 40,112,114,101, 44, 39, 35,
+    101,110,100,105,102, 92,110, 39, 41, 10,  9,101,108,115,101,
+     10, 32, 32,111,117,116,112,117,116, 40,112,114,101, 46, 46,
+     39,116,111,108,117, 97, 95, 99, 99,108, 97,115,115, 40,116,
+    111,108,117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102,
+     46,108,110, 97,109,101, 46, 46, 39, 34, 44, 34, 39, 46, 46,
+    115,101,108,102, 46,116,121,112,101, 46, 46, 39, 34, 44, 34,
+     39, 46, 46,115,101,108,102, 46, 98,116,121,112,101, 46, 46,
+     39, 34, 44, 78, 85, 76, 76, 41, 59, 39, 41, 10,  9,101,110,
+    100, 10,  9,105,102, 32,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 32,116,104,101,110, 10,  9,  9,
+    102,111,114, 32,107, 44, 98, 97,115,101, 32,105,110, 32,105,
+    112, 97,105,114,115, 40,115,101,108,102, 46,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 41, 32,100,111, 10,  9,  9,  9,
+     45, 45, 32,110,111,116, 32,110,111,119, 10, 32, 32, 32, 45,
+     45,111,117,116,112,117,116, 40,112,114,101, 46, 46, 39, 32,
+    116,111,108,117, 97, 95, 97,100,100, 98, 97,115,101, 40,116,
+    111,108,117, 97, 95, 83, 44, 32, 34, 39, 46, 46,115,101,108,
+    102, 46,116,121,112,101, 46, 46, 39, 34, 44, 32, 34, 39, 46,
+     46, 98, 97,115,101, 46, 46, 39, 34, 41, 59, 39, 41, 10,  9,
+      9,101,110,100, 10,  9,101,110,100, 10, 32,111,117,116,112,
+    117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97, 95,
+     98,101,103,105,110,109,111,100,117,108,101, 40,116,111,108,
+    117, 97, 95, 83, 44, 34, 39, 46, 46,115,101,108,102, 46,108,
+    110, 97,109,101, 46, 46, 39, 34, 41, 59, 39, 41, 10, 32,108,
+    111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,105,108,101,
+     32,115,101,108,102, 91,105, 93, 32,100,111, 10, 32, 32,115,
+    101,108,102, 91,105, 93, 58,114,101,103,105,115,116,101,114,
+     40,112,114,101, 46, 46, 39, 32, 39, 41, 10, 32, 32,105, 32,
+     61, 32,105, 43, 49, 10, 32,101,110,100, 10, 32,111,117,116,
+    112,117,116, 40,112,114,101, 46, 46, 39,116,111,108,117, 97,
+     95,101,110,100,109,111,100,117,108,101, 40,116,111,108,117,
+     97, 95, 83, 41, 59, 39, 41, 10,  9,112,111,112, 40, 41, 10,
+    101,110,100, 10, 10, 45, 45, 32,114,101,116,117,114,110, 32,
+     99,111,108,108,101, 99,116,105,111,110, 32,114,101,113,117,
+    105,114,101,109,101,110,116, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108, 97,115,115, 67,108, 97,115,115, 58,114,101,
+    113,117,105,114,101, 99,111,108,108,101, 99,116,105,111,110,
+     32, 40,116, 41, 10,  9,105,102, 32,115,101,108,102, 46,102,
+    108, 97,103,115, 46,112,114,111,116,101, 99,116,101,100, 95,
+    100,101,115,116,114,117, 99,116,111,114, 32,116,104,101,110,
+     10,  9,  9,114,101,116,117,114,110, 32,102, 97,108,115,101,
+     10,  9,101,110,100, 10, 32,112,117,115,104, 40,115,101,108,
+    102, 41, 10,  9,108,111, 99, 97,108, 32,114, 32, 61, 32,102,
+     97,108,115,101, 10, 32,108,111, 99, 97,108, 32,105, 61, 49,
+     10, 32,119,104,105,108,101, 32,115,101,108,102, 91,105, 93,
+     32,100,111, 10, 32, 32,114, 32, 61, 32,115,101,108,102, 91,
+    105, 93, 58,114,101,113,117,105,114,101, 99,111,108,108,101,
+     99,116,105,111,110, 40,116, 41, 32,111,114, 32,114, 10, 32,
+     32,105, 32, 61, 32,105, 43, 49, 10, 32,101,110,100, 10,  9,
+    112,111,112, 40, 41, 10,  9, 45, 45, 32,111,110,108,121, 32,
+     99,108, 97,115,115, 32,116,104, 97,116, 32,101,120,112,111,
+    114,116,115, 32,100,101,115,116,114,117, 99,116,111,114, 32,
+     99, 97,110, 32, 98,101, 32, 97,112,112,114,111,112,114,105,
+     97,116,101,108,121, 32, 99,111,108,108,101, 99,116,101,100,
+     10,  9, 45, 45, 32, 99,108, 97,115,115,101,115, 32,116,104,
+     97,116, 32,101,120,112,111,114,116, 32, 99,111,110,115,116,
+    114,117, 99,116,111,114,115, 32,110,101,101,100, 32,116,111,
+     32,104, 97,118,101, 32, 97, 32, 99,111,108,108,101, 99,116,
+    111,114, 32, 40,111,118,101,114,114,105,100,101,100, 32, 98,
+    121, 32, 45, 68, 32,102,108, 97,103, 32,111,110, 32, 99,111,
+    109,109, 97,110,100, 32,108,105,110,101, 41, 10,  9,105,102,
+     32,115,101,108,102, 46, 95,100,101,108,101,116,101, 32,111,
+    114, 32, 40, 40,110,111,116, 32,102,108, 97,103,115, 91, 39,
+     68, 39, 93, 41, 32, 97,110,100, 32,115,101,108,102, 46, 95,
+    110,101,119, 41, 32,116,104,101,110, 10,  9,  9, 45, 45,116,
+     91,115,101,108,102, 46,116,121,112,101, 93, 32, 61, 32, 34,
+    116,111,108,117, 97, 95, 99,111,108,108,101, 99,116, 95, 34,
+     32, 46, 46, 32,103,115,117, 98, 40,115,101,108,102, 46,116,
+    121,112,101, 44, 34, 58, 58, 34, 44, 34, 95, 34, 41, 10,  9,
+      9,116, 91,115,101,108,102, 46,116,121,112,101, 93, 32, 61,
+     32, 34,116,111,108,117, 97, 95, 99,111,108,108,101, 99,116,
+     95, 34, 32, 46, 46, 32, 99,108,101, 97,110, 95,116,101,109,
+    112,108, 97,116,101, 40,115,101,108,102, 46,116,121,112,101,
+     41, 10,  9,  9,114, 32, 61, 32,116,114,117,101, 10,  9,101,
+    110,100, 10, 32,114,101,116,117,114,110, 32,114, 10,101,110,
+    100, 10, 10, 45, 45, 32,111,117,116,112,117,116, 32,116, 97,
+    103,115, 10,102,117,110, 99,116,105,111,110, 32, 99,108, 97,
+    115,115, 67,108, 97,115,115, 58,100,101, 99,108,116,121,112,
+    101, 32, 40, 41, 10, 32,112,117,115,104, 40,115,101,108,102,
+     41, 10,  9,115,101,108,102, 46,116,121,112,101, 32, 61, 32,
+    114,101,103,116,121,112,101, 40,115,101,108,102, 46,111,114,
+    105,103,105,110, 97,108, 95,110, 97,109,101, 32,111,114, 32,
+    115,101,108,102, 46,110, 97,109,101, 41, 10,  9,115,101,108,
+    102, 46, 98,116,121,112,101, 32, 61, 32,116,121,112,101,118,
+     97,114, 40,115,101,108,102, 46, 98, 97,115,101, 41, 10,  9,
+    115,101,108,102, 46, 99,116,121,112,101, 32, 61, 32, 39, 99,
+    111,110,115,116, 32, 39, 46, 46,115,101,108,102, 46,116,121,
+    112,101, 10,  9,105,102, 32,115,101,108,102, 46,101,120,116,
+    114, 97, 95, 98, 97,115,101,115, 32,116,104,101,110, 10,  9,
+      9,102,111,114, 32,105, 61, 49, 44,116, 97, 98,108,101, 46,
+    103,101,116,110, 40,115,101,108,102, 46,101,120,116,114, 97,
+     95, 98, 97,115,101,115, 41, 32,100,111, 10,  9,  9,  9,115,
+    101,108,102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115,
+     91,105, 93, 32, 61, 32,116,121,112,101,118, 97,114, 40,115,
+    101,108,102, 46,101,120,116,114, 97, 95, 98, 97,115,101,115,
+     91,105, 93, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10, 32,108,111, 99, 97,108, 32,105, 61, 49, 10, 32,119,104,
+    105,108,101, 32,115,101,108,102, 91,105, 93, 32,100,111, 10,
+     32, 32,115,101,108,102, 91,105, 93, 58,100,101, 99,108,116,
+    121,112,101, 40, 41, 10, 32, 32,105, 32, 61, 32,105, 43, 49,
+     10, 32,101,110,100, 10,  9,112,111,112, 40, 41, 10,101,110,
+    100, 10, 10, 10, 45, 45, 32, 80,114,105,110,116, 32,109,101,
+    116,104,111,100, 10,102,117,110, 99,116,105,111,110, 32, 99,
+    108, 97,115,115, 67,108, 97,115,115, 58,112,114,105,110,116,
+     32, 40,105,100,101,110,116, 44, 99,108,111,115,101, 41, 10,
+     32,112,114,105,110,116, 40,105,100,101,110,116, 46, 46, 34,
+     67,108, 97,115,115,123, 34, 41, 10, 32,112,114,105,110,116,
+     40,105,100,101,110,116, 46, 46, 34, 32,110, 97,109,101, 32,
+     61, 32, 39, 34, 46, 46,115,101,108,102, 46,110, 97,109,101,
+     46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32, 98, 97,115,101, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46, 98, 97,115,101, 46,
+     46, 34, 39, 59, 34, 41, 10, 32,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 32,108,110, 97,109,101, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,108,110, 97,109,101,
+     46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32,116,121,112,101, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46,116,121,112,101, 46,
+     46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,105,
+    100,101,110,116, 46, 46, 34, 32, 98,116,121,112,101, 32, 61,
+     32, 39, 34, 46, 46,115,101,108,102, 46, 98,116,121,112,101,
+     46, 46, 34, 39, 44, 34, 41, 10, 32,112,114,105,110,116, 40,
+    105,100,101,110,116, 46, 46, 34, 32, 99,116,121,112,101, 32,
+     61, 32, 39, 34, 46, 46,115,101,108,102, 46, 99,116,121,112,
+    101, 46, 46, 34, 39, 44, 34, 41, 10, 32,108,111, 99, 97,108,
+     32,105, 61, 49, 10, 32,119,104,105,108,101, 32,115,101,108,
+    102, 91,105, 93, 32,100,111, 10, 32, 32,115,101,108,102, 91,
+    105, 93, 58,112,114,105,110,116, 40,105,100,101,110,116, 46,
+     46, 34, 32, 34, 44, 34, 44, 34, 41, 10, 32, 32,105, 32, 61,
+     32,105, 43, 49, 10, 32,101,110,100, 10, 32,112,114,105,110,
+    116, 40,105,100,101,110,116, 46, 46, 34,125, 34, 46, 46, 99,
+    108,111,115,101, 41, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32, 99,108, 97,115,115, 67,108, 97,115,115,
+     58,115,101,116, 95,112,114,111,116,101, 99,116,101,100, 95,
+    100,101,115,116,114,117, 99,116,111,114, 40,112, 41, 10,  9,
+    115,101,108,102, 46,102,108, 97,103,115, 46,112,114,111,116,
+    101, 99,116,101,100, 95,100,101,115,116,114,117, 99,116,111,
+    114, 32, 61, 32,115,101,108,102, 46,102,108, 97,103,115, 46,
+    112,114,111,116,101, 99,116,101,100, 95,100,101,115,116,114,
+    117, 99,116,111,114, 32,111,114, 32,112, 10,101,110,100, 10,
+     10, 45, 45, 32, 73,110,116,101,114,110, 97,108, 32, 99,111,
+    110,115,116,114,117, 99,116,111,114, 10,102,117,110, 99,116,
+    105,111,110, 32, 95, 67,108, 97,115,115, 32, 40,116, 41, 10,
+     32,115,101,116,109,101,116, 97,116, 97, 98,108,101, 40,116,
+     44, 99,108, 97,115,115, 67,108, 97,115,115, 41, 10, 32,116,
+     58, 98,117,105,108,100,110, 97,109,101,115, 40, 41, 10, 32,
+     97,112,112,101,110,100, 40,116, 41, 10, 32,114,101,116,117,
+    114,110, 32,116, 10,101,110,100, 10, 10, 45, 45, 32, 67,111,
+    110,115,116,114,117, 99,116,111,114, 10, 45, 45, 32, 69,120,
+    112,101, 99,116,115, 32,116,104,101, 32,110, 97,109,101, 44,
+     32,116,104,101, 32, 98, 97,115,101, 32, 40, 97,114,114, 97,
+    121, 41, 32, 97,110,100, 32,116,104,101, 32, 98,111,100,121,
+     32,111,102, 32,116,104,101, 32, 99,108, 97,115,115, 46, 10,
+    102,117,110, 99,116,105,111,110, 32, 67,108, 97,115,115, 32,
+     40,110, 44,112, 44, 98, 41, 10, 10,  9,105,102, 32,116, 97,
+     98,108,101, 46,103,101,116,110, 40,112, 41, 32, 62, 32, 49,
+     32,116,104,101,110, 10,  9,  9, 98, 32, 61, 32,115,116,114,
+    105,110,103, 46,115,117, 98, 40, 98, 44, 32, 49, 44, 32, 45,
+     50, 41, 10,  9,  9,102,111,114, 32,105, 61, 50, 44,116, 97,
+     98,108,101, 46,103,101,116,110, 40,112, 41, 44, 49, 32,100,
+    111, 10,  9,  9,  9, 98, 32, 61, 32, 98, 46, 46, 34, 92,110,
+     32,116,111,108,117, 97, 95,105,110,104,101,114,105,116,115,
+     32, 34, 46, 46,112, 91,105, 93, 46, 46, 34, 32, 95, 95, 34,
+     46, 46,112, 91,105, 93, 46, 46, 34, 95, 95, 59, 92,110, 34,
+     10,  9,  9,101,110,100, 10,  9,  9, 98, 32, 61, 32, 98, 46,
+     46, 34, 92,110,125, 34, 10,  9,101,110,100, 10, 10,  9, 45,
+     45, 32, 99,104,101, 99,107, 32,102,111,114, 32,116,101,109,
+    112,108, 97,116,101, 10,  9, 98, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40, 98, 44, 32, 34, 94,123, 37,
+    115, 42, 84, 69, 77, 80, 76, 65, 84, 69, 95, 66, 73, 78, 68,
+     34, 44, 32, 34,123, 92,110, 84, 79, 76, 85, 65, 95, 84, 69,
+     77, 80, 76, 65, 84, 69, 95, 66, 73, 78, 68, 34, 41, 10,  9,
+    108,111, 99, 97,108, 32,116, 44, 95, 44, 84, 44, 73, 32, 61,
+     32,115,116,114,105,110,103, 46,102,105,110,100, 40, 98, 44,
+     32, 34, 94,123, 37,115, 42, 84, 79, 76, 85, 65, 95, 84, 69,
+     77, 80, 76, 65, 84, 69, 95, 66, 73, 78, 68, 37,115, 42, 37,
+     40, 43, 37,115, 42, 92, 34, 63, 40, 91, 94, 92, 34, 44, 93,
+     42, 41, 92, 34, 63, 37,115, 42, 44, 37,115, 42, 40, 91, 94,
+     37, 41, 93, 42, 41, 37,115, 42, 37, 41, 43, 34, 41, 10,  9,
+    105,102, 32,116, 32,116,104,101,110, 10, 10,  9,  9, 45, 45,
+     32,114,101,109,111,118,101, 32,113,117,111,116,101,115, 10,
+      9,  9, 73, 32, 61, 32,115,116,114,105,110,103, 46,103,115,
+    117, 98, 40, 73, 44, 32, 34, 92, 34, 34, 44, 32, 34, 34, 41,
+     10,  9,  9, 84, 32, 61, 32,115,116,114,105,110,103, 46,103,
+    115,117, 98, 40, 84, 44, 32, 34, 92, 34, 34, 44, 32, 34, 34,
+     41, 10,  9,  9, 45, 45, 32,103,101,116, 32,116,121,112,101,
+     32,108,105,115,116, 10,  9,  9,108,111, 99, 97,108, 32,116,
+    121,112,101,115, 32, 61, 32,115,112,108,105,116, 95, 99, 95,
+    116,111,107,101,110,115, 40, 73, 44, 32, 34, 44, 34, 41, 10,
+      9,  9, 45, 45, 32,114,101,109,111,118,101, 32, 84, 69, 77,
+     80, 76, 65, 84, 69, 95, 66, 73, 78, 68, 32,108,105,110,101,
+     10,  9,  9,108,111, 99, 97,108, 32, 98,115, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 98, 44, 32, 34,
+     94,123, 37,115, 42, 84, 79, 76, 85, 65, 95, 84, 69, 77, 80,
+     76, 65, 84, 69, 95, 66, 73, 78, 68, 91, 94, 92,110, 93, 42,
+     92,110, 34, 44, 32, 34,123, 92,110, 34, 41, 10, 10,  9,  9,
+     45, 45, 32,114,101,112,108, 97, 99,101, 10,  9,  9,102,111,
+    114, 32,105, 32, 61, 49, 32, 44, 32,116,121,112,101,115, 46,
+    110, 32,100,111, 10, 10,  9,  9,  9,108,111, 99, 97,108, 32,
+     84,108, 32, 61, 32,115,112,108,105,116, 40, 84, 44, 32, 34,
+     32, 34, 41, 10,  9,  9,  9,108,111, 99, 97,108, 32, 73,108,
+     32, 61, 32,115,112,108,105,116, 95, 99, 95,116,111,107,101,
+    110,115, 40,116,121,112,101,115, 91,105, 93, 44, 32, 34, 32,
+     34, 41, 10,  9,  9,  9,108,111, 99, 97,108, 32, 98, 73, 32,
+     61, 32, 98,115, 10,  9,  9,  9,108,111, 99, 97,108, 32,112,
+     73, 32, 61, 32,123,125, 10,  9,  9,  9,102,111,114, 32,106,
+     32, 61, 32, 49, 44, 84,108, 46,110, 32,100,111, 10,  9,  9,
+      9,  9, 84,108, 91,106, 93, 32, 61, 32,102,105,110,100,116,
+    121,112,101, 40, 84,108, 91,106, 93, 41, 32,111,114, 32, 84,
+    108, 91,106, 93, 10,  9,  9,  9,  9, 98, 73, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 98, 73, 44, 32,
+     34, 40, 91, 94, 95, 37,119, 93, 41, 34, 46, 46, 84,108, 91,
+    106, 93, 46, 46, 34, 40, 91, 94, 95, 37,119, 93, 41, 34, 44,
+     32, 34, 37, 49, 34, 46, 46, 73,108, 91,106, 93, 46, 46, 34,
+     37, 50, 34, 41, 10,  9,  9,  9,  9,105,102, 32,112, 32,116,
+    104,101,110, 10,  9,  9,  9,  9,  9,102,111,114, 32,105, 61,
+     49, 44,116, 97, 98,108,101, 46,103,101,116,110, 40,112, 41,
+     32,100,111, 10,  9,  9,  9,  9,  9,  9,112, 73, 91,105, 93,
+     32, 61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,
+    112, 91,105, 93, 44, 32, 34, 40, 91, 94, 95, 37,119, 93, 63,
+     41, 34, 46, 46, 84,108, 91,106, 93, 46, 46, 34, 40, 91, 94,
+     95, 37,119, 93, 63, 41, 34, 44, 32, 34, 37, 49, 34, 46, 46,
+     73,108, 91,106, 93, 46, 46, 34, 37, 50, 34, 41, 10,  9,  9,
+      9,  9,  9,101,110,100, 10,  9,  9,  9,  9,101,110,100, 10,
+      9,  9,  9,101,110,100, 10,  9,  9,  9, 45, 45,108,111, 99,
+     97,108, 32, 97,112,112,101,110,100, 32, 61, 32, 34, 60, 34,
+     46, 46,115,116,114,105,110,103, 46,103,115,117, 98, 40,116,
+    121,112,101,115, 91,105, 93, 44, 32, 34, 37,115, 43, 34, 44,
+     32, 34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,  9,  9,108,
+    111, 99, 97,108, 32, 97,112,112,101,110,100, 32, 61, 32, 34,
+     60, 34, 46, 46, 99,111,110, 99, 97,116, 40, 73,108, 44, 32,
+     49, 44, 32,116, 97, 98,108,101, 46,103,101,116,110, 40, 73,
+    108, 41, 44, 32, 34, 44, 34, 41, 46, 46, 34, 62, 34, 10,  9,
+      9,  9, 97,112,112,101,110,100, 32, 61, 32,115,116,114,105,
+    110,103, 46,103,115,117, 98, 40, 97,112,112,101,110,100, 44,
+     32, 34, 37,115, 42, 44, 37,115, 42, 34, 44, 32, 34, 44, 34,
+     41, 10,  9,  9,  9, 97,112,112,101,110,100, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 97,112,112,101,
+    110,100, 44, 32, 34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34,
+     41, 10,  9,  9,  9,102,111,114, 32,105, 61, 49, 44,116, 97,
+     98,108,101, 46,103,101,116,110, 40,112, 73, 41, 32,100,111,
+     10,  9,  9,  9,  9, 45, 45,112, 73, 91,105, 93, 32, 61, 32,
+    115,116,114,105,110,103, 46,103,115,117, 98, 40,112, 73, 91,
+    105, 93, 44, 32, 34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34,
+     41, 10,  9,  9,  9,  9,112, 73, 91,105, 93, 32, 61, 32,114,
+    101,115,111,108,118,101, 95,116,101,109,112,108, 97,116,101,
+     95,116,121,112,101,115, 40,112, 73, 91,105, 93, 41, 10,  9,
+      9,  9,101,110,100, 10,  9,  9,  9, 98, 73, 32, 61, 32,115,
+    116,114,105,110,103, 46,103,115,117, 98, 40, 98, 73, 44, 32,
+     34, 62, 62, 34, 44, 32, 34, 62, 32, 62, 34, 41, 10,  9,  9,
+      9, 67,108, 97,115,115, 40,110, 46, 46, 97,112,112,101,110,
+    100, 44, 32,112, 73, 44, 32, 98, 73, 41, 10,  9,  9,101,110,
+    100, 10,  9,  9,114,101,116,117,114,110, 10,  9,101,110,100,
+     10, 10,  9,108,111, 99, 97,108, 32,109, 98, 97,115,101, 10,
+     10,  9,105,102, 32,112, 32,116,104,101,110, 10,  9,  9,109,
+     98, 97,115,101, 32, 61, 32,116, 97, 98,108,101, 46,114,101,
+    109,111,118,101, 40,112, 44, 32, 49, 41, 10,  9,  9,105,102,
+     32,110,111,116, 32,112, 91, 49, 93, 32,116,104,101,110, 32,
+    112, 32, 61, 32,110,105,108, 32,101,110,100, 10,  9,101,110,
+    100, 10, 10,  9,109, 98, 97,115,101, 32, 61, 32,109, 98, 97,
+    115,101, 32, 97,110,100, 32,114,101,115,111,108,118,101, 95,
+    116,101,109,112,108, 97,116,101, 95,116,121,112,101,115, 40,
+    109, 98, 97,115,101, 41, 10, 10,  9,108,111, 99, 97,108, 32,
+     99, 10,  9,108,111, 99, 97,108, 32,111,110, 97,109,101, 32,
+     61, 32,115,116,114,105,110,103, 46,103,115,117, 98, 40,110,
+     44, 32, 34, 64, 46, 42, 36, 34, 44, 32, 34, 34, 41, 10,  9,
+    111,110, 97,109,101, 32, 61, 32,103,101,116,110, 97,109,101,
+    115,112, 97, 99,101, 40, 99,108, 97,115,115, 67,111,110,116,
+     97,105,110,101,114, 46, 99,117,114,114, 41, 46, 46,111,110,
+     97,109,101, 10, 10,  9,105,102, 32, 95,103,108,111, 98, 97,
+    108, 95, 99,108, 97,115,115,101,115, 91,111,110, 97,109,101,
+     93, 32,116,104,101,110, 10,  9,  9, 99, 32, 61, 32, 95,103,
+    108,111, 98, 97,108, 95, 99,108, 97,115,115,101,115, 91,111,
+    110, 97,109,101, 93, 10,  9,  9,105,102, 32,109, 98, 97,115,
+    101, 32, 97,110,100, 32, 40, 40,110,111,116, 32, 99, 46, 98,
+     97,115,101, 41, 32,111,114, 32, 99, 46, 98, 97,115,101, 32,
+     61, 61, 32, 34, 34, 41, 32,116,104,101,110, 10,  9,  9,  9,
+     99, 46, 98, 97,115,101, 32, 61, 32,109, 98, 97,115,101, 10,
+      9,  9,101,110,100, 10,  9,101,108,115,101, 10,  9,  9, 99,
+     32, 61, 32, 95, 67,108, 97,115,115, 40, 95, 67,111,110,116,
+     97,105,110,101,114,123,110, 97,109,101, 61,110, 44, 32, 98,
+     97,115,101, 61,109, 98, 97,115,101, 44, 32,101,120,116,114,
+     97, 95, 98, 97,115,101,115, 61,112,125, 41, 10, 10,  9,  9,
+    108,111, 99, 97,108, 32,102,116, 32, 61, 32,103,101,116,110,
+     97,109,101,115,112, 97, 99,101, 40, 99, 46,112, 97,114,101,
+    110,116, 41, 46, 46, 99, 46,111,114,105,103,105,110, 97,108,
+     95,110, 97,109,101, 10,  9,  9, 97,112,112,101,110,100, 95,
+    103,108,111, 98, 97,108, 95,116,121,112,101, 40,102,116, 44,
+     32, 99, 41, 10,  9,101,110,100, 10, 10,  9,112,117,115,104,
+     40, 99, 41, 10,  9, 99, 58,112, 97,114,115,101, 40,115,116,
+    114,115,117, 98, 40, 98, 44, 50, 44,115,116,114,108,101,110,
+     40, 98, 41, 45, 49, 41, 41, 32, 45, 45, 32,101,108,105,109,
+    105,110, 97,116,101, 32, 98,114, 97, 99,101,115, 10,  9,112,
+    111,112, 40, 41, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/class.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32,109, 97,114,107, 32,117,112, 32, 99,111,109,109,
+    101,110,116,115, 32, 97,110,100, 32,115,116,114,105,110,103,
+    115, 10, 83, 84, 82, 49, 32, 61, 32, 34, 92, 48, 48, 49, 34,
+     10, 83, 84, 82, 50, 32, 61, 32, 34, 92, 48, 48, 50, 34, 10,
+     83, 84, 82, 51, 32, 61, 32, 34, 92, 48, 48, 51, 34, 10, 83,
+     84, 82, 52, 32, 61, 32, 34, 92, 48, 48, 52, 34, 10, 82, 69,
+     77, 32, 32, 61, 32, 34, 92, 48, 48, 53, 34, 10, 65, 78, 89,
+     32, 32, 61, 32, 34, 40, 91, 92, 48, 48, 49, 45, 92, 48, 48,
+     53, 93, 41, 34, 10, 69, 83, 67, 49, 32, 61, 32, 34, 92, 48,
+     48, 54, 34, 10, 69, 83, 67, 50, 32, 61, 32, 34, 92, 48, 48,
+     55, 34, 10, 10, 77, 65, 83, 75, 32, 61, 32,123, 32, 45, 45,
+     32,116,104,101, 32,115,117, 98,115,116,105,116,117,116,105,
+    111,110, 32,111,114,100,101,114, 32,105,115, 32,105,109,112,
+    111,114,116, 97,110,116, 10, 32,123, 69, 83, 67, 49, 44, 32,
+     34, 92, 92, 39, 34,125, 44, 10, 32,123, 69, 83, 67, 50, 44,
+     32, 39, 92, 92, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 49,
+     44, 32, 34, 39, 34,125, 44, 10, 32,123, 83, 84, 82, 50, 44,
+     32, 39, 34, 39,125, 44, 10, 32,123, 83, 84, 82, 51, 44, 32,
+     34, 37, 91, 37, 91, 34,125, 44, 10, 32,123, 83, 84, 82, 52,
+     44, 32, 34, 37, 93, 37, 93, 34,125, 44, 10, 32,123, 82, 69,
+     77, 32, 44, 32, 34, 37, 45, 37, 45, 34,125, 44, 10,125, 10,
+     10,102,117,110, 99,116,105,111,110, 32,109, 97,115,107, 32,
+     40,115, 41, 10, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,
+    103,101,116,110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10,
+     32, 32,115, 32, 61, 32,103,115,117, 98, 40,115, 44, 77, 65,
+     83, 75, 91,105, 93, 91, 50, 93, 44, 77, 65, 83, 75, 91,105,
+     93, 91, 49, 93, 41, 10, 32,101,110,100, 10, 32,114,101,116,
+    117,114,110, 32,115, 10,101,110,100, 10, 10,102,117,110, 99,
+    116,105,111,110, 32,117,110,109, 97,115,107, 32, 40,115, 41,
+     10, 32,102,111,114, 32,105, 32, 61, 32, 49, 44,103,101,116,
+    110, 40, 77, 65, 83, 75, 41, 32, 32,100,111, 10, 32, 32,115,
+     32, 61, 32,103,115,117, 98, 40,115, 44, 77, 65, 83, 75, 91,
+    105, 93, 91, 49, 93, 44, 77, 65, 83, 75, 91,105, 93, 91, 50,
+     93, 41, 10, 32,101,110,100, 10, 32,114,101,116,117,114,110,
+     32,115, 10,101,110,100, 10, 10,102,117,110, 99,116,105,111,
+    110, 32, 99,108,101, 97,110, 32, 40,115, 41, 10, 32, 45, 45,
+     32, 99,104,101, 99,107, 32,102,111,114, 32, 99,111,109,112,
+    105,108, 97,116,105,111,110, 32,101,114,114,111,114, 10, 32,
+    108,111, 99, 97,108, 32, 99,111,100,101, 32, 61, 32, 34,114,
+    101,116,117,114,110, 32,102,117,110, 99,116,105,111,110, 32,
+     40, 41, 92,110, 34, 32, 46, 46, 32,115, 32, 46, 46, 32, 34,
+     92,110, 32,101,110,100, 34, 10, 32,105,102, 32,110,111,116,
+     32,100,111,115,116,114,105,110,103, 40, 99,111,100,101, 41,
+     32,116,104,101,110, 10, 32, 32,114,101,116,117,114,110, 32,
+    110,105,108, 10, 32,101,110,100, 10, 10, 32,105,102, 32,102,
+    108, 97,103,115, 91, 39, 67, 39, 93, 32,116,104,101,110, 10,
+     32,  9,114,101,116,117,114,110, 32,115, 10, 32,101,110,100,
+     10, 10, 32,108,111, 99, 97,108, 32, 83, 32, 61, 32, 34, 34,
+     32, 45, 45, 32,115, 97,118,101,100, 32,115,116,114,105,110,
+    103, 10, 10, 32,115, 32, 61, 32,109, 97,115,107, 40,115, 41,
+     10, 10, 32, 45, 45, 32,114,101,109,111,118,101, 32, 98,108,
+     97,110,107,115, 32, 97,110,100, 32, 99,111,109,109,101,110,
+    116,115, 10, 32,119,104,105,108,101, 32, 49, 32,100,111, 10,
+     32, 32,108,111, 99, 97,108, 32, 98, 44,101, 44,100, 32, 61,
+     32,115,116,114,102,105,110,100, 40,115, 44, 65, 78, 89, 41,
+     10, 32, 32,105,102, 32, 98, 32,116,104,101,110, 10, 32, 32,
+     32, 83, 32, 61, 32, 83, 46, 46,115,116,114,115,117, 98, 40,
+    115, 44, 49, 44, 98, 45, 49, 41, 10, 32, 32, 32,115, 32, 61,
+     32,115,116,114,115,117, 98, 40,115, 44, 98, 43, 49, 41, 10,
+     32, 32, 32,105,102, 32,100, 61, 61, 83, 84, 82, 49, 32,111,
+    114, 32,100, 61, 61, 83, 84, 82, 50, 32,116,104,101,110, 10,
+     32, 32, 32, 32,101, 32, 61, 32,115,116,114,102,105,110,100,
+     40,115, 44,100, 41, 10, 32, 32, 32, 32, 83, 32, 61, 32, 83,
+     32, 46, 46,100, 46, 46,115,116,114,115,117, 98, 40,115, 44,
+     49, 44,101, 41, 10, 32, 32, 32, 32,115, 32, 61, 32,115,116,
+    114,115,117, 98, 40,115, 44,101, 43, 49, 41, 10, 32, 32, 32,
+    101,108,115,101,105,102, 32,100, 61, 61, 83, 84, 82, 51, 32,
+    116,104,101,110, 10, 32, 32, 32, 32,101, 32, 61, 32,115,116,
+    114,102,105,110,100, 40,115, 44, 83, 84, 82, 52, 41, 10, 32,
+     32, 32, 32, 83, 32, 61, 32, 83, 46, 46,100, 46, 46,115,116,
+    114,115,117, 98, 40,115, 44, 49, 44,101, 41, 10, 32, 32, 32,
+     32,115, 32, 61, 32,115,116,114,115,117, 98, 40,115, 44,101,
+     43, 49, 41, 10, 32, 32, 32,101,108,115,101,105,102, 32,100,
+     61, 61, 82, 69, 77, 32,116,104,101,110, 10, 32, 32, 32, 32,
+    115, 32, 61, 32,103,115,117, 98, 40,115, 44, 34, 91, 94, 92,
+    110, 93, 42, 40, 92,110, 63, 41, 34, 44, 34, 37, 49, 34, 44,
+     49, 41, 10, 32, 32, 32,101,110,100, 10, 32, 32,101,108,115,
+    101, 10, 32, 32, 32, 83, 32, 61, 32, 83, 46, 46,115, 10, 32,
+     32, 32, 98,114,101, 97,107, 10, 32, 32,101,110,100, 10, 32,
+    101,110,100, 10, 32, 45, 45, 32,101,108,105,109,105,110, 97,
+    116,101, 32,117,110,101, 99,101,115,115, 97,114,121, 32,115,
+    112, 97, 99,101,115, 10, 32, 83, 32, 61, 32,103,115,117, 98,
+     40, 83, 44, 34, 91, 32, 92,116, 93, 43, 34, 44, 34, 32, 34,
+     41, 10, 32, 83, 32, 61, 32,103,115,117, 98, 40, 83, 44, 34,
+     91, 32, 92,116, 93, 42, 92,110, 91, 32, 92,116, 93, 42, 34,
+     44, 34, 92,110, 34, 41, 10,  9, 83, 32, 61, 32,103,115,117,
+     98, 40, 83, 44, 34, 92,110, 43, 34, 44, 34, 92,110, 34, 41,
+     10, 32, 83, 32, 61, 32,117,110,109, 97,115,107, 40, 83, 41,
+     10, 32,114,101,116,117,114,110, 32, 83, 10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/clean.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    45, 45, 32, 71,101,110,101,114, 97,116,101, 32, 98,105,110,
+    100,105,110,103, 32, 99,111,100,101, 10, 45, 45, 32, 87,114,
+    105,116,116,101,110, 32, 98,121, 32, 87, 97,108,100,101,109,
+     97,114, 32, 67,101,108,101,115, 10, 45, 45, 32, 84,101, 67,
+     71,114, 97,102, 47, 80, 85, 67, 45, 82,105,111, 10, 45, 45,
+     32, 74,117,108, 32, 49, 57, 57, 56, 10, 45, 45, 32, 76, 97,
+    115,116, 32,117,112,100, 97,116,101, 58, 32, 65,112,114, 32,
+     50, 48, 48, 51, 10, 45, 45, 32, 36, 73,100, 58, 32, 36, 10,
+     10, 10, 45, 45, 32, 84,104,105,115, 32, 99,111,100,101, 32,
+    105,115, 32,102,114,101,101, 32,115,111,102,116,119, 97,114,
+    101, 59, 32,121,111,117, 32, 99, 97,110, 32,114,101,100,105,
+    115,116,114,105, 98,117,116,101, 32,105,116, 32, 97,110,100,
+     47,111,114, 32,109,111,100,105,102,121, 32,105,116, 46, 10,
+     45, 45, 32, 84,104,101, 32,115,111,102,116,119, 97,114,101,
+     32,112,114,111,118,105,100,101,100, 32,104,101,114,101,117,
+    110,100,101,114, 32,105,115, 32,111,110, 32, 97,110, 32, 34,
+     97,115, 32,105,115, 34, 32, 98, 97,115,105,115, 44, 32, 97,
+    110,100, 10, 45, 45, 32,116,104,101, 32, 97,117,116,104,111,
+    114, 32,104, 97,115, 32,110,111, 32,111, 98,108,105,103, 97,
+    116,105,111,110, 32,116,111, 32,112,114,111,118,105,100,101,
+     32,109, 97,105,110,116,101,110, 97,110, 99,101, 44, 32,115,
+    117,112,112,111,114,116, 44, 32,117,112,100, 97,116,101,115,
+     44, 10, 45, 45, 32,101,110,104, 97,110, 99,101,109,101,110,
+    116,115, 44, 32,111,114, 32,109,111,100,105,102,105, 99, 97,
+    116,105,111,110,115, 46, 10, 10,102,117,110, 99,116,105,111,
+    110, 32,112, 97,114,115,101, 95,101,120,116,114, 97, 40, 41,
+     10, 10,  9,102,111,114, 32,107, 44,118, 32,105,110, 32,105,
+    112, 97,105,114,115, 40, 95,101,120,116,114, 97, 95,112, 97,
+    114, 97,109,101,116,101,114,115, 32,111,114, 32,123,125, 41,
+     32,100,111, 10,  9,  9, 10,  9,  9,108,111, 99, 97,108, 32,
+     98, 44,101, 44,110, 97,109,101, 44,118, 97,108,117,101, 32,
+     61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,118,
+     44, 32, 34, 94, 40, 91, 94, 61, 93, 41, 61, 40, 46, 42, 41,
+     36, 34, 41, 10,  9,  9,105,102, 32, 98, 32,116,104,101,110,
+     10,  9,  9,  9, 95,101,120,116,114, 97, 95,112, 97,114, 97,
+    109,101,116,101,114,115, 91,110, 97,109,101, 93, 32, 61, 32,
+    118, 97,108,117,101, 10,  9,  9,101,108,115,101, 10,  9,  9,
+      9, 95,101,120,116,114, 97, 95,112, 97,114, 97,109,101,116,
+    101,114,115, 91,118, 93, 32, 61, 32,116,114,117,101, 10,  9,
+      9,101,110,100, 10,  9,101,110,100, 10,101,110,100, 10, 10,
+    102,117,110, 99,116,105,111,110, 32,100,111,105,116, 32, 40,
+     41, 10,  9, 45, 45, 32,100,101,102,105,110,101, 32,112, 97,
+     99,107, 97,103,101, 32,110, 97,109,101, 44, 32,105,102, 32,
+    110,111,116, 32,112,114,111,118,105,100,101,100, 10,  9,105,
+    102, 32,110,111,116, 32,102,108, 97,103,115, 46,110, 32,116,
+    104,101,110, 10,  9,  9,105,102, 32,102,108, 97,103,115, 46,
+    102, 32,116,104,101,110, 10,  9,  9,  9,102,108, 97,103,115,
+     46,110, 32, 61, 32,103,115,117, 98, 40,102,108, 97,103,115,
+     46,102, 44, 34, 37, 46, 46, 42, 36, 34, 44, 34, 34, 41, 10,
+      9,  9,  9, 95, 44, 95, 44,102,108, 97,103,115, 46,110, 32,
+     61, 32,115,116,114,105,110,103, 46,102,105,110,100, 40,102,
+    108, 97,103,115, 46,110, 44, 32, 34, 40, 91, 94, 47, 92, 92,
+     93, 42, 41, 36, 34, 41, 10,  9,  9,101,108,115,101, 10,  9,
+      9,  9,101,114,114,111,114, 40, 34, 35,110,111, 32,112, 97,
+     99,107, 97,103,101, 32,110, 97,109,101, 32,110,111,114, 32,
+    105,110,112,117,116, 32,102,105,108,101, 32,112,114,111,118,
+    105,100,101,100, 34, 41, 10,  9,  9,101,110,100, 10,  9,101,
+    110,100, 10, 10,  9, 45, 45, 32,112, 97,114,115,101, 32,116,
+     97, 98,108,101, 32,119,105,116,104, 32,101,120,116,114, 97,
+     32,112, 97,114, 97,109,116,101,114,115, 10,  9,112, 97,114,
+    115,101, 95,101,120,116,114, 97, 40, 41, 10, 10,  9, 45, 45,
+     32,100,111, 32,116,104,105,115, 32, 97,102,116,101,114, 32,
+    115,101,116,116,105,110,103, 32,116,104,101, 32,112, 97, 99,
+    107, 97,103,101, 32,110, 97,109,101, 10,  9,105,102, 32,102,
+    108, 97,103,115, 91, 39, 76, 39, 93, 32,116,104,101,110, 10,
+      9,  9,100,111,102,105,108,101, 40,102,108, 97,103,115, 91,
+     39, 76, 39, 93, 41, 10,  9,101,110,100, 10, 10,  9, 45, 45,
+     32, 97,100,100, 32, 99,112,112,115,116,114,105,110,103, 10,
+      9,105,102, 32,110,111,116, 32,102,108, 97,103,115, 91, 39,
+     83, 39, 93, 32,116,104,101,110, 10,  9,  9, 95, 98, 97,115,
+    105, 99, 91, 39,115,116,114,105,110,103, 39, 93, 32, 61, 32,
+     39, 99,112,112,115,116,114,105,110,103, 39, 10,  9,  9, 95,
+     98, 97,115,105, 99, 91, 39,115,116,100, 58, 58,115,116,114,
+    105,110,103, 39, 93, 32, 61, 32, 39, 99,112,112,115,116,114,
+    105,110,103, 39, 10,  9,  9, 95, 98, 97,115,105, 99, 95, 99,
+    116,121,112,101, 46, 99,112,112,115,116,114,105,110,103, 32,
+     61, 32, 39, 99,111,110,115,116, 32, 99,104, 97,114, 42, 39,
+     10,  9,101,110,100, 10, 10,  9, 45, 45, 32,112,114,111, 99,
+     99,101,115,115, 32,112, 97, 99,107, 97,103,101, 10,  9,108,
+    111, 99, 97,108, 32,112, 32, 32, 61, 32, 80, 97, 99,107, 97,
+    103,101, 40,102,108, 97,103,115, 46,110, 44,102,108, 97,103,
+    115, 46,102, 41, 10, 10,  9,105,102, 32,102,108, 97,103,115,
+     46,112, 32,116,104,101,110, 10,  9,  9,114,101,116,117,114,
+    110, 32, 32, 32, 32, 32, 32, 32, 32, 45, 45, 32,111,110,108,
+    121, 32,112, 97,114,115,101, 10,  9,101,110,100, 10, 10,  9,
+    105,102, 32,102,108, 97,103,115, 46,111, 32,116,104,101,110,
+     10,  9,  9,108,111, 99, 97,108, 32,115,116, 44,109,115,103,
+     32, 61, 32,119,114,105,116,101,116,111, 40,102,108, 97,103,
+    115, 46,111, 41, 10,  9,  9,105,102, 32,110,111,116, 32,115,
+    116, 32,116,104,101,110, 10,  9,  9,  9,101,114,114,111,114,
+     40, 39, 35, 39, 46, 46,109,115,103, 41, 10,  9,  9,101,110,
+    100, 10,  9,101,110,100, 10, 10,  9,112, 58,100,101, 99,108,
+    116,121,112,101, 40, 41, 10,  9,105,102, 32,102,108, 97,103,
+    115, 46, 80, 32,116,104,101,110, 10,  9,  9,112, 58,112,114,
+    105,110,116, 40, 41, 10,  9,101,108,115,101, 10,  9,  9,112,
+     58,112,114,101, 97,109, 98,108,101, 40, 41, 10,  9,  9,112,
+     58,115,117,112, 99,111,100,101, 40, 41, 10,  9,  9,112, 58,
+    114,101,103,105,115,116,101,114, 40, 41, 10,  9,  9,112,117,
+    115,104, 40,112, 41, 10,  9,  9,112,111,115,116, 95,111,117,
+    116,112,117,116, 95,104,111,111,107, 40,112, 41, 10,  9,  9,
+    112,111,112, 40, 41, 10,  9,101,110,100, 10, 10,  9,105,102,
+     32,102,108, 97,103,115, 46,111, 32,116,104,101,110, 10,  9,
+      9,119,114,105,116,101,116,111, 40, 41, 10,  9,101,110,100,
+     10, 10,  9, 45, 45, 32,119,114,105,116,101, 32,104,101, 97,
+    100,101,114, 32,102,105,108,101, 10,  9,105,102, 32,110,111,
+    116, 32,102,108, 97,103,115, 46, 80, 32,116,104,101,110, 10,
+      9,  9,105,102, 32,102,108, 97,103,115, 46, 72, 32,116,104,
+    101,110, 10,  9,  9,  9,108,111, 99, 97,108, 32,115,116, 44,
+    109,115,103, 32, 61, 32,119,114,105,116,101,116,111, 40,102,
+    108, 97,103,115, 46, 72, 41, 10,  9,  9,  9,105,102, 32,110,
+    111,116, 32,115,116, 32,116,104,101,110, 10,  9,  9,  9,  9,
+    101,114,114,111,114, 40, 39, 35, 39, 46, 46,109,115,103, 41,
+     10,  9,  9,  9,101,110,100, 10,  9,  9,  9,112, 58,104,101,
+     97,100,101,114, 40, 41, 10,  9,  9,  9,119,114,105,116,101,
+    116,111, 40, 41, 10,  9,  9,101,110,100, 10,  9,101,110,100,
+     10,101,110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua embedded: src/bin/lua/doit.lua");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+
+  { /* begin embedded lua code */
+   int top = lua_gettop(tolua_S);
+   static unsigned char B[] = {
+    10,108,111, 99, 97,108, 32,101,114,114, 44,109,115,103, 32,
+     61, 32,112, 99, 97,108,108, 40,100,111,105,116, 41, 10,105,
+    102, 32,110,111,116, 32,101,114,114, 32,116,104,101,110, 10,
+     32,108,111, 99, 97,108, 32, 95, 44, 95, 44,108, 97, 98,101,
+    108, 44,109,115,103, 32, 61, 32,115,116,114,102,105,110,100,
+     40,109,115,103, 44, 34, 40, 46, 45, 58, 46, 45, 58, 37,115,
+     42, 41, 40, 46, 42, 41, 34, 41, 10, 32,116,111,108,117, 97,
+     95,101,114,114,111,114, 40,109,115,103, 44,108, 97, 98,101,
+    108, 41, 10, 32,112,114,105,110,116, 40,100,101, 98,117,103,
+     46,116,114, 97, 99,101, 98, 97, 99,107, 40, 41, 41, 10,101,
+    110,100,32
+   };
+   tolua_dobuffer(tolua_S,(char*)B,sizeof(B),"tolua: embedded Lua code 22");
+   lua_settop(tolua_S, top);
+  } /* end of embedded lua code */
+
+ tolua_endmodule(tolua_S);
+ return 1;
+}
+
+
+#if defined(LUA_VERSION_NUM) && LUA_VERSION_NUM >= 501
+ TOLUA_API int luaopen_tolua (lua_State* tolua_S) {
+ return tolua_tolua_open(tolua_S);
+};
+#endif
+
Index: code/trunk/src/util/tolua/toluabind.h
===================================================================
--- code/trunk/src/util/tolua/toluabind.h	(revision 1021)
+++ code/trunk/src/util/tolua/toluabind.h	(revision 1021)
@@ -0,0 +1,8 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.91 on Wed Apr 26 22:30:15 2006.
+*/
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
Index: code/trunk/src/util/tolua/toluabind_default.h
===================================================================
--- code/trunk/src/util/tolua/toluabind_default.h	(revision 1021)
+++ code/trunk/src/util/tolua/toluabind_default.h	(revision 1021)
@@ -0,0 +1,8 @@
+/*
+** Lua binding: tolua
+** Generated automatically by tolua++-1.0.8pre2 on Tue Dec 13 01:43:55 2005.
+*/
+
+/* Exported function */
+TOLUA_API int  tolua_tolua_open (lua_State* tolua_S);
+
Index: code/trunk/visual_studio/base_properties.vsprops
===================================================================
--- code/trunk/visual_studio/base_properties.vsprops	(revision 1020)
+++ code/trunk/visual_studio/base_properties.vsprops	(revision 1021)
@@ -11,5 +11,5 @@
 		PreprocessorDefinitions="WIN32;__WIN32__;_WIN32;BOOST_ALL_DYN_LINK"
 		WarningLevel="3"
-		DisableSpecificWarnings="4267; 4244; 4251;4522"
+		DisableSpecificWarnings="4244;4251"
 	/>
 	<Tool
@@ -33,5 +33,5 @@
 	<UserMacro
 		Name="DependencyDir"
-		Value="$(RootDir)dependencies\"
+		Value="D:\orxonox\dependencies\orxonox\"
 	/>
 	<UserMacro
Index: code/trunk/visual_studio/network_properties.vsprops
===================================================================
--- code/trunk/visual_studio/network_properties.vsprops	(revision 1020)
+++ code/trunk/visual_studio/network_properties.vsprops	(revision 1021)
@@ -8,5 +8,5 @@
 	<Tool
 		Name="VCCLCompilerTool"
-		PreprocessorDefinitions="NETWORK_SHARED_BUILD; WIN32_LEAN_AND_MEAN; ZLIB_WINAPI "
+		PreprocessorDefinitions="NETWORK_SHARED_BUILD; ZLIB_WINAPI;WIN32_LEAN_AND_MEAN"
 	/>
 	<Tool
Index: code/trunk/visual_studio/orxonox_vc8.sln
===================================================================
--- code/trunk/visual_studio/orxonox_vc8.sln	(revision 1020)
+++ code/trunk/visual_studio/orxonox_vc8.sln	(revision 1021)
@@ -19,13 +19,4 @@
 		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
 		{F101C2F0-1CB9-4A57-827B-6C399A99B28F} = {F101C2F0-1CB9-4A57-827B-6C399A99B28F}
-	EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "loader", "vc8\loader.vcproj", "{E283910F-F911-40FB-A09D-D025CA821912}"
-	ProjectSection(WebsiteProperties) = preProject
-		Debug.AspNetCompiler.Debug = "True"
-		Release.AspNetCompiler.Debug = "False"
-	EndProjectSection
-	ProjectSection(ProjectDependencies) = postProject
-		{2240ECD7-2F48-4431-8E1B-25466A384CCC} = {2240ECD7-2F48-4431-8E1B-25466A384CCC}
 	EndProjectSection
 EndProject
@@ -89,8 +80,4 @@
 		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.ActiveCfg = Release|Win32
 		{271715F3-5B90-4110-A552-70C788084A86}.Release|Win32.Build.0 = Release|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Debug|Win32.ActiveCfg = Debug|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Release_SSE|Win32.ActiveCfg = Release_SSE|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Release_SSE2|Win32.ActiveCfg = Release_SSE2|Win32
-		{E283910F-F911-40FB-A09D-D025CA821912}.Release|Win32.ActiveCfg = Release|Win32
 		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.ActiveCfg = Debug|Win32
 		{35575B59-E1AE-40E8-89C4-2862B5B09B68}.Debug|Win32.Build.0 = Debug|Win32
Index: code/trunk/visual_studio/vc8/core.vcproj
===================================================================
--- code/trunk/visual_studio/vc8/core.vcproj	(revision 1020)
+++ code/trunk/visual_studio/vc8/core.vcproj	(revision 1021)
@@ -337,4 +337,8 @@
 			</File>
 			<File
+				RelativePath="..\..\src\orxonox\core\Tickable.cc"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\orxonox\core\XMLPort.cc"
 				>
@@ -447,4 +451,8 @@
 			</File>
 			<File
+				RelativePath="..\..\src\orxonox\core\Tickable.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\orxonox\core\XMLPort.h"
 				>
Index: code/trunk/visual_studio/vc8/orxonox.vcproj
===================================================================
--- code/trunk/visual_studio/vc8/orxonox.vcproj	(revision 1020)
+++ code/trunk/visual_studio/vc8/orxonox.vcproj	(revision 1021)
@@ -285,6 +285,22 @@
 			</File>
 			<File
+				RelativePath="..\..\src\orxonox\InputEventListener.cc"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\orxonox\InputHandler.cc"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\orxonox\InputManager.cc"
 				>
+				<FileConfiguration
+					Name="Debug|Win32"
+					ExcludedFromBuild="true"
+					>
+					<Tool
+						Name="VCCLCompilerTool"
+					/>
+				</FileConfiguration>
 			</File>
 			<File
@@ -572,8 +588,4 @@
 				</File>
 				<File
-					RelativePath="..\..\src\orxonox\objects\Tickable.cc"
-					>
-				</File>
-				<File
 					RelativePath="..\..\src\orxonox\objects\WorldEntity.cc"
 					>
@@ -633,12 +645,4 @@
 				<File
 					RelativePath="..\..\src\orxonox\tools\Timer.cc"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="loader"
-				>
-				<File
-					RelativePath="..\..\src\loader\LevelLoader.cc"
 					>
 				</File>
@@ -655,4 +659,16 @@
 			</File>
 			<File
+				RelativePath="..\..\src\orxonox\InputEvent.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\orxonox\InputEventListener.h"
+				>
+			</File>
+			<File
+				RelativePath="..\..\src\orxonox\InputHandler.h"
+				>
+			</File>
+			<File
 				RelativePath="..\..\src\orxonox\InputManager.h"
 				>
@@ -743,8 +759,4 @@
 				<File
 					RelativePath="..\..\src\orxonox\objects\test3.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\src\orxonox\objects\Tickable.h"
 					>
 				</File>
@@ -807,16 +819,4 @@
 				<File
 					RelativePath="..\..\src\orxonox\tools\Timer.h"
-					>
-				</File>
-			</Filter>
-			<Filter
-				Name="loader"
-				>
-				<File
-					RelativePath="..\..\src\loader\LevelLoader.h"
-					>
-				</File>
-				<File
-					RelativePath="..\..\src\loader\LoaderPrereqs.h"
 					>
 				</File>
