Permalink
Browse files

fix range guards and add L and UL integer types

  • Loading branch information...
1 parent bd60c9d commit a4772b7c9aba60ecb179231da854100efa74a68d @richardhundt committed Jun 7, 2012
Showing with 1,559 additions and 1,454 deletions.
  1. +5 −1 README.md
  2. +0 −3 TODO.md
  3. +1 −1 editor/lupa.vim
  4. +1,156 −1,145 src/compiler.h
  5. +36 −35 src/lupa.h
  6. +1 −1 src/lupa.lu
  7. +6 −3 src/lupa/compiler.lu
  8. +18 −1 src/lupa/predef.lua
  9. +262 −245 src/predef.h
  10. +57 −13 std/socket.lu
  11. +17 −6 test/range.lu
View
6 README.md
@@ -1,10 +1,14 @@
+[[https://github.com/richardhundt/lupa/wiki/lupa_logo.png]]
# NAME
Lupa - multi-paradigm object oriented, dynamic language
# SYNOPSIS
- lupa <file> [options]
+ lupa <file>
+ run the script
+ lupa <file> -l
+ list generated Lua
# INTRODUCTION
View
3 TODO.md
@@ -1,5 +1,4 @@
# FIXMEs
-* super calls
* import from some.path (static checks do not resolve)
# Must haves
@@ -11,8 +10,6 @@
* abstract filesystem (a la falconpl, or on top of libuv)
# Experimental
-* guard declarations
-* separate guard coercion from type matching
* half decent test suite
* actor/messaging primitives (zmq + llthreads)
* LJ2 ctypes as builtins
View
2 editor/lupa.vim
@@ -35,7 +35,7 @@ syn keyword lupaBranch break continue
syn keyword lupaOperator in is typeof like
syn keyword lupaType Array Table Boolean Error Function Number Object String Type Class Trait Range Fiber Pattern Any Void Nil Int8 Int16 Int32 Int64 UInt8 UInt16 UInt32 UInt64 Float Double int8 uint8 int16 uint16 int32 uint32 int64 uint64 float double
syn keyword lupaStatement return
-syn keyword lupaSpecial new is as does can init weak
+syn keyword lupaSpecial new is as does can init weak raise
syn keyword lupaBoolean true false
syn keyword lupaConstant nil
syn keyword lupaIdentifier var self super our
View
2,301 src/compiler.h
1,156 additions, 1,145 deletions not shown because the diff is too large. Please use a local Git client to view these changes.
View
71 src/lupa.h
@@ -1,4 +1,4 @@
-#define luaJIT_BC_lupa_SIZE 3002
+#define luaJIT_BC_lupa_SIZE 3026
static const char luaJIT_BC_lupa[] = {
27,76,74,1,0,17,64,46,47,98,117,105,108,100,47,108,117,112,97,46,108,117,97,
253,5,2,0,11,1,18,0,115,166,1,6,27,43,0,0,0,55,0,0,0,16,1,0,0,55,0,1,0,67,2,0,
@@ -34,40 +34,41 @@ static const char luaJIT_BC_lupa[] = {
1,2,16,3,0,0,62,2,2,0,61,1,0,1,43,1,0,0,55,1,2,1,55,1,3,1,39,2,1,0,16,3,2,0,
55,2,4,2,62,2,2,0,61,1,0,1,71,0,1,0,0,0,15,95,90,50,109,105,95,90,50,117,115,
9,101,120,105,116,7,111,115,13,116,111,115,116,114,105,110,103,10,112,114,105,
-110,116,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,95,95,101,110,118,0,101,0,0,17,0,181,
-1,0,1,6,1,9,0,21,34,76,3,43,1,0,0,55,1,0,1,55,1,1,1,16,2,1,0,55,1,2,1,43,3,0,
-0,55,3,3,3,55,3,4,3,43,4,0,0,55,4,5,4,16,5,0,0,62,4,2,0,61,3,0,2,37,4,6,0,62,
-1,4,1,43,1,0,0,55,1,7,1,55,1,8,1,39,2,1,0,64,1,2,0,71,0,1,0,0,0,9,101,120,105,
-116,7,111,115,6,10,13,116,111,115,116,114,105,110,103,14,116,114,97,99,101,98,
-97,99,107,10,100,101,98,117,103,10,119,114,105,116,101,11,115,116,100,101,114,
-114,7,105,111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,95,95,101,110,118,0,
-101,114,114,0,0,22,0,237,10,3,0,14,2,45,0,206,1,176,2,35,47,43,0,0,0,55,0,0,0,
-16,1,0,0,55,0,1,0,67,2,0,0,61,0,1,2,16,2,0,0,55,1,2,0,62,1,2,2,16,2,1,0,55,1,
-3,1,39,3,0,0,62,1,3,2,15,0,1,0,84,2,12,128,43,1,0,0,55,1,4,1,37,2,5,0,62,1,2,
-2,16,3,1,0,55,2,6,1,62,2,2,1,43,2,0,0,55,2,7,2,55,2,8,2,39,3,0,0,62,2,2,1,43,
-1,1,0,16,3,0,0,55,2,9,0,62,2,2,0,61,1,0,2,43,2,0,0,55,2,10,2,43,3,0,0,55,3,11,
-3,55,3,12,3,16,5,1,0,55,4,13,1,37,6,14,0,62,4,3,2,16,5,4,0,55,4,13,4,39,6,1,0,
-62,4,3,0,61,3,0,0,61,2,0,2,16,4,2,0,55,3,15,2,37,5,16,0,62,3,3,2,16,5,2,0,55,
-4,17,2,62,4,2,1,42,4,5,0,43,6,0,0,55,6,18,6,49,7,19,0,51,8,22,0,49,9,20,0,58,
-9,21,8,62,6,3,1,15,0,5,0,84,6,5,128,43,6,0,0,55,6,9,6,16,7,5,0,48,0,0,128,64,
-6,2,0,16,6,1,0,55,5,13,1,37,7,23,0,62,5,3,2,15,0,5,0,84,6,13,128,43,5,0,0,55,
-5,11,5,55,5,24,5,16,6,5,0,55,5,25,5,16,7,4,0,37,8,26,0,62,5,4,1,43,5,0,0,55,5,
-7,5,55,5,8,5,39,6,0,0,62,5,2,1,16,6,1,0,55,5,13,1,37,7,27,0,62,5,3,2,15,0,5,0,
-84,6,26,128,16,6,1,0,55,5,13,1,37,7,14,0,62,5,3,2,16,6,5,0,55,5,13,5,39,7,2,0,
-62,5,3,2,14,0,5,0,84,6,1,128,37,5,28,0,43,6,0,0,55,6,11,6,55,6,12,6,16,7,5,0,
-37,8,29,0,62,6,3,2,16,5,6,0,16,7,5,0,55,6,25,5,16,8,4,0,62,6,3,1,16,7,5,0,55,
-6,17,5,62,6,2,1,84,5,84,128,16,6,4,0,55,5,30,4,37,7,31,0,37,8,32,0,62,5,4,2,
-16,4,5,0,43,5,0,0,55,5,10,5,43,6,0,0,55,6,33,6,16,7,4,0,37,8,34,0,16,9,8,0,55,
-8,35,8,16,11,1,0,55,10,13,1,37,12,14,0,62,10,3,2,16,11,10,0,55,10,13,10,39,12,
-1,0,62,10,3,0,61,8,1,0,61,6,1,0,61,5,0,2,16,7,1,0,55,6,13,1,37,8,36,0,62,6,3,
-2,15,0,6,0,84,7,30,128,16,7,1,0,55,6,13,1,37,8,14,0,62,6,3,2,16,7,6,0,55,6,13,
-6,39,8,2,0,62,6,3,2,14,0,6,0,84,7,1,128,37,6,37,0,43,7,0,0,55,7,11,7,55,7,12,
-7,16,8,6,0,37,9,38,0,62,7,3,2,16,6,7,0,16,8,6,0,55,7,25,6,43,9,0,0,55,9,39,9,
-55,9,40,9,16,10,5,0,62,9,2,0,61,7,1,1,16,8,6,0,55,7,17,6,62,7,2,1,84,6,23,128,
-43,6,0,0,55,6,4,6,37,7,41,0,62,6,2,2,55,6,42,6,62,6,1,2,43,7,0,0,55,7,43,7,16,
-8,5,0,49,9,44,0,16,10,6,0,16,12,1,0,55,11,13,1,37,13,14,0,62,11,3,2,16,12,11,
-0,55,11,13,11,39,13,1,0,62,11,3,2,16,13,0,0,55,12,9,0,62,12,2,0,61,7,4,1,48,0,
-0,128,71,0,1,0,0,128,1,128,0,11,120,112,99,97,108,108,12,101,110,118,105,114,
+110,116,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,3,95,95,101,110,118,0,101,0,0,17,0,205,
+1,0,1,6,1,10,0,24,37,76,3,43,1,0,0,55,1,0,1,55,1,1,1,16,2,1,0,55,1,2,1,43,3,0,
+0,55,3,3,3,55,3,4,3,43,4,0,0,55,4,5,4,16,5,0,0,62,4,2,0,61,3,0,2,16,4,3,0,55,
+3,6,3,62,3,2,2,37,4,7,0,62,1,4,1,43,1,0,0,55,1,8,1,55,1,9,1,39,2,1,0,64,1,2,0,
+71,0,1,0,0,0,9,101,120,105,116,7,111,115,6,10,13,100,101,109,97,110,103,108,
+101,13,116,111,115,116,114,105,110,103,14,116,114,97,99,101,98,97,99,107,10,
+100,101,98,117,103,10,119,114,105,116,101,11,115,116,100,101,114,114,7,105,
+111,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,3,95,95,101,110,118,0,101,
+114,114,0,0,25,0,237,10,3,0,14,2,45,0,206,1,176,2,35,47,43,0,0,0,55,0,0,0,16,
+1,0,0,55,0,1,0,67,2,0,0,61,0,1,2,16,2,0,0,55,1,2,0,62,1,2,2,16,2,1,0,55,1,3,1,
+39,3,0,0,62,1,3,2,15,0,1,0,84,2,12,128,43,1,0,0,55,1,4,1,37,2,5,0,62,1,2,2,16,
+3,1,0,55,2,6,1,62,2,2,1,43,2,0,0,55,2,7,2,55,2,8,2,39,3,0,0,62,2,2,1,43,1,1,0,
+16,3,0,0,55,2,9,0,62,2,2,0,61,1,0,2,43,2,0,0,55,2,10,2,43,3,0,0,55,3,11,3,55,
+3,12,3,16,5,1,0,55,4,13,1,37,6,14,0,62,4,3,2,16,5,4,0,55,4,13,4,39,6,1,0,62,4,
+3,0,61,3,0,0,61,2,0,2,16,4,2,0,55,3,15,2,37,5,16,0,62,3,3,2,16,5,2,0,55,4,17,
+2,62,4,2,1,42,4,5,0,43,6,0,0,55,6,18,6,49,7,19,0,51,8,22,0,49,9,20,0,58,9,21,
+8,62,6,3,1,15,0,5,0,84,6,5,128,43,6,0,0,55,6,9,6,16,7,5,0,48,0,0,128,64,6,2,0,
+16,6,1,0,55,5,13,1,37,7,23,0,62,5,3,2,15,0,5,0,84,6,13,128,43,5,0,0,55,5,11,5,
+55,5,24,5,16,6,5,0,55,5,25,5,16,7,4,0,37,8,26,0,62,5,4,1,43,5,0,0,55,5,7,5,55,
+5,8,5,39,6,0,0,62,5,2,1,16,6,1,0,55,5,13,1,37,7,27,0,62,5,3,2,15,0,5,0,84,6,
+26,128,16,6,1,0,55,5,13,1,37,7,14,0,62,5,3,2,16,6,5,0,55,5,13,5,39,7,2,0,62,5,
+3,2,14,0,5,0,84,6,1,128,37,5,28,0,43,6,0,0,55,6,11,6,55,6,12,6,16,7,5,0,37,8,
+29,0,62,6,3,2,16,5,6,0,16,7,5,0,55,6,25,5,16,8,4,0,62,6,3,1,16,7,5,0,55,6,17,
+5,62,6,2,1,84,5,84,128,16,6,4,0,55,5,30,4,37,7,31,0,37,8,32,0,62,5,4,2,16,4,5,
+0,43,5,0,0,55,5,10,5,43,6,0,0,55,6,33,6,16,7,4,0,37,8,34,0,16,9,8,0,55,8,35,8,
+16,11,1,0,55,10,13,1,37,12,14,0,62,10,3,2,16,11,10,0,55,10,13,10,39,12,1,0,62,
+10,3,0,61,8,1,0,61,6,1,0,61,5,0,2,16,7,1,0,55,6,13,1,37,8,36,0,62,6,3,2,15,0,
+6,0,84,7,30,128,16,7,1,0,55,6,13,1,37,8,14,0,62,6,3,2,16,7,6,0,55,6,13,6,39,8,
+2,0,62,6,3,2,14,0,6,0,84,7,1,128,37,6,37,0,43,7,0,0,55,7,11,7,55,7,12,7,16,8,
+6,0,37,9,38,0,62,7,3,2,16,6,7,0,16,8,6,0,55,7,25,6,43,9,0,0,55,9,39,9,55,9,40,
+9,16,10,5,0,62,9,2,0,61,7,1,1,16,8,6,0,55,7,17,6,62,7,2,1,84,6,23,128,43,6,0,
+0,55,6,4,6,37,7,41,0,62,6,2,2,55,6,42,6,62,6,1,2,43,7,0,0,55,7,43,7,16,8,5,0,
+49,9,44,0,16,10,6,0,16,12,1,0,55,11,13,1,37,13,14,0,62,11,3,2,16,12,11,0,55,
+11,13,11,39,13,1,0,62,11,3,2,16,13,0,0,55,12,9,0,62,12,2,0,61,7,4,1,48,0,0,
+128,71,0,1,0,0,128,1,128,0,11,120,112,99,97,108,108,12,101,110,118,105,114,
111,110,16,108,117,112,97,46,112,114,101,100,101,102,9,100,117,109,112,11,115,
116,114,105,110,103,8,119,98,43,11,97,46,108,117,97,99,6,98,10,95,90,50,112,
108,6,61,15,108,111,97,100,115,116,114,105,110,103,5,16,94,37,115,42,35,33,91,
View
2 src/lupa.lu
@@ -74,7 +74,7 @@ var run = function(...a) {
else {
var main_env = require('lupa.predef')#environ()
xpcall(main, function(err) {
- io#stderr.write(debug#traceback(tostring(err)), "\n")
+ io#stderr.write(debug#traceback(tostring(err)).demangle, "\n")
os#exit(1)
}, main_env, opt['files'][1], ...a)
}
View
9 src/lupa/compiler.lu
@@ -1131,16 +1131,19 @@ object Grammar {
{~ "`" <opname> -> '"%1"' ~}
}
rule hexadec {
- "-"? "0x" %xdigit+
+ "-"? "0x" %xdigit+ ('UL' -> 'ULL' | 'L' -> 'LL')?
}
rule decimal {
- "-"? digits ("." digits)? (("e"|"E") "-"? digits)?
+ "-"? digits "." digits (("e"|"E") "-"? digits)?
+ }
+ rule integer {
+ "-"? digits ('UL' -> 'ULL' | 'L' -> 'LL')?
}
rule octal {
{~ { "-"? "0" [0-7]+ } -> function(s) { tostring(tonumber(s, 8)) } ~}
}
rule number {
- {~ <hexadec> | <octal> | <decimal> ~} -> '(%1)'
+ {~ <hexadec> | <octal> | <decimal> | <integer> ~} -> '(%1)'
}
rule string {
{~ (<qstring> | <astring>) ~} -> '(%1)'
View
19 src/lupa/predef.lua
@@ -894,7 +894,7 @@ Range.new = function(self, min, max, inc)
inc = assert(tonumber(inc or 1), "range inc is not a number")
return setmetatable({ min, max, inc }, self)
end
-Range.__slots.iter = function(self)
+Range.__each = function(self)
local inc = self[3]
local cur = self[1] - inc
local max = self[2]
@@ -905,11 +905,28 @@ Range.__slots.iter = function(self)
end
end
end
+Range.__slots.iter = Range.__each
Range.__slots.each = function(self, block)
for i in Range.__slots.iter(self) do
block(i)
end
end
+Range.__slots.check = function(self, val)
+ if type(val) ~= 'number' then return false end
+ if val < self[1] then return false end
+ if val > self[2] then return false end
+ if self[3] == 1 then return true end
+ for i=self[1],self[2],self[3] do
+ if val == i then return true end
+ end
+ return false
+end
+Range.__slots.coerce = function(self, val)
+ if not self:check(val) then
+ throw(TypeError:new(tostring(val).." is not in: "..tostring(self)))
+ end
+ return val
+end
Void = newtype"Void"
Void.check = function(self, ...)
View
507 src/predef.h
@@ -1,4 +1,4 @@
-#define luaJIT_BC_predef_SIZE 31847
+#define luaJIT_BC_predef_SIZE 32319
static const char luaJIT_BC_predef[] = {
27,76,74,1,0,19,64,46,47,98,117,105,108,100,47,112,114,101,100,101,102,46,108,
117,97,160,1,2,0,6,3,4,0,16,52,23,4,43,0,0,0,16,1,0,0,55,0,0,0,43,2,1,0,62,0,
@@ -591,73 +591,86 @@ static const char luaJIT_BC_predef[] = {
0,105,110,99,0,109,97,120,0,0,73,1,1,5,0,1,0,7,33,129,7,10,56,1,3,0,56,2,1,0,
31,2,1,2,56,3,2,0,49,4,0,0,48,0,0,128,72,4,2,0,0,1,2,2,3,9,9,9,115,101,108,
102,0,0,8,105,110,99,0,2,6,99,117,114,0,2,4,109,97,120,0,1,3,0,119,0,2,8,0,3,
-0,12,41,140,7,4,52,2,0,0,55,2,1,2,55,2,2,2,16,3,0,0,62,2,2,4,84,5,3,128,16,6,
+0,12,41,141,7,4,52,2,0,0,55,2,1,2,55,2,2,2,16,3,0,0,62,2,2,4,84,5,3,128,16,6,
1,0,16,7,5,0,62,6,2,1,65,5,3,2,78,5,251,127,71,0,1,0,9,105,116,101,114,12,95,
95,115,108,111,116,115,10,82,97,110,103,101,1,1,1,1,1,1,2,2,2,1,1,4,115,101,
-108,102,0,0,13,98,108,111,99,107,0,0,13,4,6,6,5,0,6,6,0,6,105,0,1,3,0,79,2,1,
-4,0,2,1,10,18,147,7,2,52,1,0,0,37,2,1,0,67,3,1,0,61,1,1,2,8,1,0,0,84,1,2,128,
-41,1,1,0,84,2,1,128,41,1,2,0,72,1,2,0,6,35,11,115,101,108,101,99,116,0,1,1,1,
-1,1,1,1,1,1,1,115,101,108,102,0,0,11,0,50,0,2,3,0,0,0,5,19,154,7,2,11,1,0,0,
-84,2,2,128,41,2,2,0,72,2,2,0,71,0,1,0,1,1,1,1,2,115,101,108,102,0,0,6,118,97,
-108,0,0,6,0,201,3,0,2,10,1,17,0,60,89,159,7,7,43,2,0,0,37,3,0,0,62,2,2,2,52,3,
-1,0,16,4,1,0,16,5,2,0,62,3,3,1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,3,0,62,5,2,2,
-52,6,4,0,37,7,5,0,16,8,2,0,37,9,6,0,36,7,9,7,37,8,7,0,62,6,3,0,61,3,2,1,52,3,
-2,0,16,4,1,0,43,5,0,0,37,6,8,0,62,5,2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,9,9,0,
-36,7,9,7,37,8,10,0,62,6,3,0,61,3,2,1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,11,0,62,
-5,2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,9,12,0,36,7,9,7,37,8,13,0,62,6,3,0,61,3,2,
-1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,14,0,62,5,2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,
-9,15,0,36,7,9,7,37,8,16,0,62,6,3,0,61,3,2,1,71,0,1,0,7,128,8,61,60,61,13,40,
-98,41,32,60,61,32,48,7,60,61,8,61,62,61,13,40,98,41,32,62,61,32,48,7,62,61,7,
-61,60,13,40,98,41,32,61,61,45,49,6,60,7,61,62,13,40,98,41,32,61,61,32,49,31,
+108,102,0,0,13,98,108,111,99,107,0,0,13,4,6,6,5,0,6,6,0,6,105,0,1,3,0,216,1,0,
+2,7,0,2,1,33,60,146,7,9,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,
+0,72,2,2,0,56,2,1,0,1,1,2,0,84,2,2,128,41,2,1,0,72,2,2,0,56,2,2,0,1,2,1,0,84,
+2,2,128,41,2,1,0,72,2,2,0,56,2,3,0,9,2,0,0,84,2,2,128,41,2,2,0,72,2,2,0,56,2,
+1,0,56,3,2,0,56,4,3,0,73,2,5,128,5,1,5,0,84,6,2,128,41,6,2,0,72,6,2,0,75,2,
+251,127,41,2,1,0,72,2,2,0,11,110,117,109,98,101,114,9,116,121,112,101,2,1,1,1,
+1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,5,5,5,5,6,6,6,6,5,8,8,115,101,108,102,0,
+0,34,118,97,108,0,0,34,1,26,6,2,0,6,3,0,6,105,0,1,4,0,178,1,0,2,9,0,6,0,21,35,
+156,7,5,16,3,0,0,55,2,0,0,16,4,1,0,62,2,3,2,14,0,2,0,84,2,14,128,52,2,1,0,52,
+3,2,0,16,4,3,0,55,3,3,3,52,5,4,0,16,6,1,0,62,5,2,2,37,6,5,0,52,7,4,0,16,8,0,0,
+62,7,2,2,36,5,7,5,62,3,3,0,61,2,0,1,72,1,2,0,17,32,105,115,32,110,111,116,32,
+105,110,58,32,13,116,111,115,116,114,105,110,103,8,110,101,119,14,84,121,112,
+101,69,114,114,111,114,10,116,104,114,111,119,10,99,104,101,99,107,1,1,1,1,1,
+1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,115,101,108,102,0,0,22,118,97,108,0,0,22,0,79,
+2,1,4,0,2,1,10,18,164,7,2,52,1,0,0,37,2,1,0,67,3,1,0,61,1,1,2,8,1,0,0,84,1,2,
+128,41,1,1,0,84,2,1,128,41,1,2,0,72,1,2,0,6,35,11,115,101,108,101,99,116,0,1,
+1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,11,0,50,0,2,3,0,0,0,5,19,171,7,2,11,1,0,
+0,84,2,2,128,41,2,2,0,72,2,2,0,71,0,1,0,1,1,1,1,2,115,101,108,102,0,0,6,118,
+97,108,0,0,6,0,201,3,0,2,10,1,17,0,60,89,176,7,7,43,2,0,0,37,3,0,0,62,2,2,2,
+52,3,1,0,16,4,1,0,16,5,2,0,62,3,3,1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,3,0,62,5,
+2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,9,6,0,36,7,9,7,37,8,7,0,62,6,3,0,61,3,2,1,
+52,3,2,0,16,4,1,0,43,5,0,0,37,6,8,0,62,5,2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,9,
+9,0,36,7,9,7,37,8,10,0,62,6,3,0,61,3,2,1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,11,0,
+62,5,2,2,52,6,4,0,37,7,5,0,16,8,2,0,37,9,12,0,36,7,9,7,37,8,13,0,62,6,3,0,61,
+3,2,1,52,3,2,0,16,4,1,0,43,5,0,0,37,6,14,0,62,5,2,2,52,6,4,0,37,7,5,0,16,8,2,
+0,37,9,15,0,36,7,9,7,37,8,16,0,62,6,3,0,61,3,2,1,71,0,1,0,7,128,8,61,60,61,13,
+40,98,41,32,60,61,32,48,7,60,61,8,61,62,61,13,40,98,41,32,62,61,32,48,7,62,61,
+7,61,60,13,40,98,41,32,61,61,45,49,6,60,7,61,62,13,40,98,41,32,61,61,32,49,31,
108,111,99,97,108,32,97,44,98,32,61,32,46,46,46,59,32,114,101,116,117,114,110,
32,97,58,15,108,111,97,100,115,116,114,105,110,103,6,62,11,109,101,116,104,
111,100,10,110,101,101,100,115,8,60,61,62,1,1,1,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,
3,3,4,4,4,4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,6,6,6,6,6,6,6,6,6,6,6,
6,6,7,109,97,110,103,108,101,0,95,95,101,110,118,0,0,61,115,101,108,102,0,0,
-61,99,109,112,0,4,57,0,85,0,2,4,0,2,0,9,23,169,7,2,52,2,0,0,16,3,1,0,62,2,2,2,
+61,99,109,112,0,4,57,0,85,0,2,4,0,2,0,9,23,186,7,2,52,2,0,0,16,3,1,0,62,2,2,2,
6,2,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,2,2,0,72,2,2,0,11,110,117,109,98,
101,114,12,114,97,119,116,121,112,101,1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,
-10,118,97,108,0,0,10,0,216,1,0,2,9,0,8,0,23,41,172,7,6,52,2,0,0,16,3,1,0,62,2,
+10,118,97,108,0,0,10,0,216,1,0,2,9,0,8,0,23,41,189,7,6,52,2,0,0,16,3,1,0,62,2,
2,2,16,4,0,0,55,3,1,0,16,5,2,0,62,3,3,2,14,0,3,0,84,3,13,128,52,3,2,0,52,4,3,
0,16,5,4,0,55,4,4,4,37,6,5,0,52,7,6,0,16,8,1,0,62,7,2,2,37,8,7,0,36,6,8,6,62,
4,3,2,39,5,2,0,62,3,3,1,72,2,2,0,16,39,32,116,111,32,78,117,109,98,101,114,13,
116,111,115,116,114,105,110,103,20,99,97,110,110,111,116,32,99,111,101,114,99,
101,32,39,8,110,101,119,14,84,121,112,101,69,114,114,111,114,10,116,104,114,
111,119,10,99,104,101,99,107,13,116,111,110,117,109,98,101,114,1,1,1,2,2,2,2,
2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,5,115,101,108,102,0,0,24,118,97,108,0,0,24,118,
-0,4,20,0,85,0,2,8,0,0,0,9,38,181,7,4,39,2,1,0,16,3,0,0,39,4,1,0,73,2,4,128,16,
+0,4,20,0,85,0,2,8,0,0,0,9,38,198,7,4,39,2,1,0,16,3,0,0,39,4,1,0,73,2,4,128,16,
6,1,0,16,7,5,0,62,6,2,1,75,2,252,127,71,0,1,0,1,1,1,1,2,2,2,1,4,115,101,108,
102,0,0,10,98,108,111,99,107,0,0,10,1,4,5,2,0,5,3,0,5,105,0,1,3,0,30,0,2,3,0,
-0,0,2,11,186,7,0,32,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,
-11,187,7,0,34,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,188,
-7,0,33,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,189,7,0,30,
-2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,190,7,0,31,2,1,0,
-72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,26,0,1,2,0,0,0,2,7,191,7,0,18,1,0,0,72,1,2,0,
-0,0,97,0,0,3,0,26,0,1,2,0,0,0,2,7,192,7,0,17,1,0,0,72,1,2,0,0,0,97,0,0,3,0,30,
-0,2,3,0,0,0,2,11,193,7,0,35,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,70,0,2,3,0,
-0,0,10,19,201,7,2,1,0,1,0,84,2,2,128,39,2,255,255,84,3,5,128,1,1,0,0,84,2,2,
+0,0,2,11,203,7,0,32,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,
+11,204,7,0,34,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,205,
+7,0,33,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,206,7,0,30,
+2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,30,0,2,3,0,0,0,2,11,207,7,0,31,2,1,0,
+72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,26,0,1,2,0,0,0,2,7,208,7,0,18,1,0,0,72,1,2,0,
+0,0,97,0,0,3,0,26,0,1,2,0,0,0,2,7,209,7,0,17,1,0,0,72,1,2,0,0,0,97,0,0,3,0,30,
+0,2,3,0,0,0,2,11,210,7,0,35,2,1,0,72,2,2,0,0,0,97,0,0,3,98,0,0,3,0,70,0,2,3,0,
+0,0,10,19,218,7,2,1,0,1,0,84,2,2,128,39,2,255,255,84,3,5,128,1,1,0,0,84,2,2,
128,39,2,1,0,84,3,1,128,39,2,0,0,72,2,2,0,1,1,1,1,1,1,1,1,1,1,97,0,0,11,98,0,
-0,11,0,86,0,2,4,0,2,0,9,24,209,7,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,
+0,11,0,86,0,2,4,0,2,0,9,24,226,7,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,
128,41,2,1,0,84,3,1,128,41,2,2,0,72,2,2,0,11,115,116,114,105,110,103,12,114,
97,119,116,121,112,101,1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,10,116,104,97,
-116,0,0,10,0,74,0,2,4,0,2,0,6,21,212,7,2,52,2,0,0,16,3,1,0,62,2,2,2,16,3,2,0,
+116,0,0,10,0,74,0,2,4,0,2,0,6,21,229,7,2,52,2,0,0,16,3,1,0,62,2,2,2,16,3,2,0,
55,2,1,2,64,2,2,0,13,100,101,109,97,110,103,108,101,13,116,111,115,116,114,
105,110,103,1,1,1,1,1,1,115,101,108,102,0,0,7,116,104,97,116,0,0,7,0,86,0,2,4,
-0,2,0,9,24,218,7,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,
+0,2,0,9,24,235,7,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,
3,1,128,41,2,2,0,72,2,2,0,11,115,116,114,105,110,103,12,114,97,119,116,121,
112,101,1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,10,116,104,97,116,0,0,10,0,50,0,
-2,4,0,1,0,3,18,221,7,2,52,2,0,0,16,3,1,0,64,2,2,0,13,116,111,115,116,114,105,
+2,4,0,1,0,3,18,238,7,2,52,2,0,0,16,3,1,0,64,2,2,0,13,116,111,115,116,114,105,
110,103,1,1,1,115,101,108,102,0,0,4,116,104,97,116,0,0,4,0,24,0,1,1,0,0,0,1,9,
-227,7,0,72,0,2,0,0,115,101,108,102,0,0,2,0,59,0,2,5,0,1,0,6,15,228,7,0,16,2,0,
+244,7,0,72,0,2,0,0,115,101,108,102,0,0,2,0,59,0,2,5,0,1,0,6,15,245,7,0,16,2,0,
0,52,3,0,0,16,4,1,0,62,3,2,2,36,2,3,2,72,2,2,0,13,116,111,115,116,114,105,110,
-103,0,0,0,0,0,0,97,0,0,7,98,0,0,7,0,135,1,0,2,5,0,4,0,18,27,231,7,6,52,2,0,0,
+103,0,0,0,0,0,0,97,0,0,7,98,0,0,7,0,135,1,0,2,5,0,4,0,18,27,248,7,6,52,2,0,0,
55,2,1,2,16,3,1,0,62,2,2,2,7,2,2,0,84,2,5,128,16,3,1,0,55,2,3,1,16,4,0,0,64,2,
3,0,84,2,6,128,4,0,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,2,2,0,72,2,2,0,71,0,
1,0,10,109,97,116,99,104,12,112,97,116,116,101,114,110,9,116,121,112,101,10,
95,112,97,116,116,1,1,1,1,1,1,2,2,2,2,2,4,4,4,4,4,4,6,97,0,0,19,98,0,0,19,0,
-55,0,2,6,0,1,1,5,19,238,7,2,16,3,0,0,55,2,0,0,16,4,1,0,20,5,0,1,64,2,4,0,8,
+55,0,2,6,0,1,1,5,19,255,7,2,16,3,0,0,55,2,0,0,16,4,1,0,20,5,0,1,64,2,4,0,8,
115,117,98,2,1,1,1,1,1,115,101,108,102,0,0,6,105,100,120,0,0,6,0,246,2,0,3,13,
-0,8,1,51,118,241,7,23,16,4,0,0,55,3,0,0,16,5,1,0,62,3,3,2,14,0,3,0,84,3,5,128,
+0,8,1,51,118,130,8,23,16,4,0,0,55,3,0,0,16,5,1,0,62,3,3,2,14,0,3,0,84,3,5,128,
52,3,1,0,16,4,3,0,55,3,2,3,16,5,0,0,64,3,3,0,10,2,0,0,84,3,3,128,39,3,1,0,1,2,
3,0,84,3,1,128,39,2,0,0,37,3,3,0,16,4,1,0,37,5,4,0,36,3,5,3,39,4,0,0,52,5,1,0,
16,6,5,0,55,5,2,5,62,5,2,2,41,6,0,0,52,7,5,0,16,9,0,0,55,8,6,0,16,10,3,0,62,8,
@@ -669,25 +682,25 @@ static const char luaJIT_BC_predef[] = {
11,11,11,11,11,11,12,13,14,15,15,16,11,11,19,19,20,20,20,20,20,20,22,115,116,
114,0,0,52,115,101,112,0,0,52,109,97,120,0,0,52,112,97,116,0,22,30,105,100,
120,0,1,29,108,105,115,116,0,4,25,108,97,115,116,0,1,24,4,6,9,5,0,9,6,0,9,112,
-97,114,116,0,1,6,112,111,115,0,0,6,0,29,0,1,2,0,0,0,2,10,137,8,2,19,1,0,0,72,
-1,2,0,1,1,115,101,108,102,0,0,3,0,70,0,2,3,0,0,0,10,19,140,8,2,1,0,1,0,84,2,2,
+97,114,116,0,1,6,112,111,115,0,0,6,0,29,0,1,2,0,0,0,2,10,154,8,2,19,1,0,0,72,
+1,2,0,1,1,115,101,108,102,0,0,3,0,70,0,2,3,0,0,0,10,19,157,8,2,1,0,1,0,84,2,2,
128,39,2,255,255,84,3,5,128,1,1,0,0,84,2,2,128,39,2,1,0,84,3,1,128,39,2,0,0,
-72,2,2,0,1,1,1,1,1,1,1,1,1,1,97,0,0,11,98,0,0,11,0,87,0,2,4,0,2,0,9,24,148,8,
+72,2,2,0,1,1,1,1,1,1,1,1,1,1,97,0,0,11,98,0,0,11,0,87,0,2,4,0,2,0,9,24,165,8,
2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,2,2,0,
72,2,2,0,12,98,111,111,108,101,97,110,12,114,97,119,116,121,112,101,1,1,1,1,1,
1,1,1,1,115,101,108,102,0,0,10,116,104,97,116,0,0,10,0,38,0,2,3,0,0,0,3,15,
-151,8,2,17,2,1,0,17,2,2,0,72,2,2,0,1,1,1,115,101,108,102,0,0,4,118,0,0,4,0,43,
-0,1,3,0,1,0,3,11,154,8,0,52,1,0,0,16,2,0,0,64,1,2,0,13,116,111,115,116,114,
-105,110,103,0,0,0,115,101,108,102,0,0,4,0,88,0,2,4,0,2,0,9,24,161,8,2,52,2,0,
+168,8,2,17,2,1,0,17,2,2,0,72,2,2,0,1,1,1,115,101,108,102,0,0,4,118,0,0,4,0,43,
+0,1,3,0,1,0,3,11,171,8,0,52,1,0,0,16,2,0,0,64,1,2,0,13,116,111,115,116,114,
+105,110,103,0,0,0,115,101,108,102,0,0,4,0,88,0,2,4,0,2,0,9,24,178,8,2,52,2,0,
0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,2,2,0,72,2,2,0,
13,102,117,110,99,116,105,111,110,12,114,97,119,116,121,112,101,1,1,1,1,1,1,1,
-1,1,115,101,108,102,0,0,10,116,104,97,116,0,0,10,0,43,0,1,3,0,1,0,3,11,165,8,
+1,1,115,101,108,102,0,0,10,116,104,97,116,0,0,10,0,43,0,1,3,0,1,0,3,11,182,8,
0,52,1,0,0,16,2,0,0,64,1,2,0,13,116,111,115,116,114,105,110,103,0,0,0,115,101,
-108,102,0,0,4,0,17,0,0,1,0,0,0,1,2,174,8,0,71,0,1,0,0,0,86,0,2,4,0,2,0,9,24,
-180,8,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,
+108,102,0,0,4,0,17,0,0,1,0,0,0,1,2,191,8,0,71,0,1,0,0,0,86,0,2,4,0,2,0,9,24,
+197,8,2,52,2,0,0,16,3,1,0,62,2,2,2,6,2,1,0,84,2,2,128,41,2,1,0,84,3,1,128,41,
2,2,0,72,2,2,0,11,116,104,114,101,97,100,12,114,97,119,116,121,112,101,1,1,1,
1,1,1,1,1,1,115,101,108,102,0,0,10,116,104,97,116,0,0,10,0,136,2,0,2,8,0,11,0,
-29,44,183,8,6,16,3,0,0,55,2,0,0,16,4,1,0,62,2,3,2,15,0,2,0,84,3,1,128,72,1,2,
+29,44,200,8,6,16,3,0,0,55,2,0,0,16,4,1,0,62,2,3,2,15,0,2,0,84,3,1,128,72,1,2,
0,52,2,1,0,16,3,1,0,62,2,2,2,6,2,2,0,84,2,13,128,52,2,3,0,52,3,4,0,16,4,3,0,
55,3,5,3,37,5,6,0,52,6,7,0,16,7,1,0,62,6,2,2,37,7,8,0,36,5,7,5,62,3,3,2,39,4,
2,0,62,2,3,1,52,2,9,0,55,2,10,2,16,3,1,0,64,2,2,0,9,119,114,97,112,14,99,111,
@@ -696,62 +709,62 @@ static const char luaJIT_BC_predef[] = {
8,110,101,119,14,84,121,112,101,69,114,114,111,114,10,116,104,114,111,119,13,
102,117,110,99,116,105,111,110,12,114,97,119,116,121,112,101,10,99,104,101,99,
107,1,1,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,3,3,3,5,5,5,5,115,101,108,102,
-0,0,30,99,111,100,101,0,0,30,0,41,2,1,3,0,1,0,3,11,190,8,2,55,1,0,0,67,2,1,0,
+0,0,30,99,111,100,101,0,0,30,0,41,2,1,3,0,1,0,3,11,207,8,2,55,1,0,0,67,2,1,0,
63,1,0,0,11,99,114,101,97,116,101,1,1,1,116,121,112,101,0,0,4,0,43,0,1,3,0,1,
-0,3,11,193,8,0,52,1,0,0,16,2,0,0,64,1,2,0,13,116,111,115,116,114,105,110,103,
-0,0,0,115,101,108,102,0,0,4,0,17,0,0,1,0,0,0,1,2,199,8,0,71,0,1,0,0,0,51,0,0,
-3,0,3,0,5,6,207,8,0,37,0,0,0,52,1,1,0,37,2,2,0,36,0,2,0,72,0,2,0,6,62,9,110,
-97,109,101,11,60,116,121,112,101,32,0,0,0,0,0,0,64,2,3,7,0,1,0,5,27,211,8,2,
+0,3,11,210,8,0,52,1,0,0,16,2,0,0,64,1,2,0,13,116,111,115,116,114,105,110,103,
+0,0,0,115,101,108,102,0,0,4,0,17,0,0,1,0,0,0,1,2,216,8,0,71,0,1,0,0,0,51,0,0,
+3,0,3,0,5,6,224,8,0,37,0,0,0,52,1,1,0,37,2,2,0,36,0,2,0,72,0,2,0,6,62,9,110,
+97,109,101,11,60,116,121,112,101,32,0,0,0,0,0,0,64,2,3,7,0,1,0,5,27,228,8,2,
16,4,0,0,55,3,0,0,16,5,2,0,67,6,3,0,63,3,2,0,10,109,97,116,99,104,1,1,1,1,1,
112,97,116,116,0,0,6,115,101,108,102,0,0,6,115,117,98,106,0,0,6,0,52,0,2,5,0,
-1,0,4,19,214,8,2,16,3,0,0,55,2,0,0,16,4,1,0,64,2,3,0,10,109,97,116,99,104,1,1,
-1,1,112,97,116,116,0,0,5,115,117,98,106,0,0,5,0,43,2,1,4,0,1,0,4,12,219,8,2,
+1,0,4,19,231,8,2,16,3,0,0,55,2,0,0,16,4,1,0,64,2,3,0,10,109,97,116,99,104,1,1,
+1,1,112,97,116,116,0,0,5,115,117,98,106,0,0,5,0,43,2,1,4,0,1,0,4,12,236,8,2,
16,2,0,0,55,1,0,0,67,3,1,0,63,1,1,0,8,110,101,119,1,1,1,1,115,101,108,102,0,0,
-5,0,81,1,2,7,0,3,0,8,24,218,8,4,52,2,0,0,16,3,1,0,37,4,1,0,49,5,2,0,41,6,2,0,
+5,0,81,1,2,7,0,3,0,8,24,235,8,4,52,2,0,0,16,3,1,0,37,4,1,0,49,5,2,0,41,6,2,0,
62,2,5,1,48,0,0,128,71,0,1,0,0,10,97,112,112,108,121,11,109,101,116,104,111,
100,1,1,1,3,3,1,4,4,95,95,101,110,118,0,0,9,115,101,108,102,0,0,9,0,24,0,1,1,
-0,0,0,1,9,225,8,0,71,0,1,0,0,115,101,108,102,0,0,2,0,166,1,0,3,9,2,3,1,17,59,
-226,8,3,14,0,2,0,84,3,1,128,39,2,1,0,43,3,0,0,37,4,0,0,62,3,2,2,54,3,3,0,16,4,
+0,0,0,1,9,242,8,0,71,0,1,0,0,115,101,108,102,0,0,2,0,166,1,0,3,9,2,3,1,17,59,
+243,8,3,14,0,2,0,84,3,1,128,39,2,1,0,43,3,0,0,37,4,0,0,62,3,2,2,54,3,3,0,16,4,
0,0,43,5,1,0,52,6,1,0,55,6,2,6,16,7,1,0,20,8,0,2,62,6,3,0,61,5,0,0,61,3,1,1,
71,0,1,0,0,0,1,0,14,116,114,97,99,101,98,97,99,107,10,100,101,98,117,103,11,
116,114,97,99,101,61,2,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,3,109,97,110,103,108,
101,0,100,101,109,97,110,103,108,101,0,115,101,108,102,0,0,18,109,101,115,115,
-97,103,101,0,0,18,108,101,118,101,108,0,0,18,0,108,0,3,8,0,2,1,12,38,230,8,3,
+97,103,101,0,0,18,108,101,118,101,108,0,0,18,0,108,0,3,8,0,2,1,12,38,247,8,3,
14,0,2,0,84,3,1,128,39,2,1,0,52,3,0,0,16,5,0,0,55,4,1,0,16,6,1,0,20,7,0,2,62,
4,4,2,20,5,0,2,62,3,3,1,71,0,1,0,8,110,101,119,10,101,114,114,111,114,2,1,1,1,
2,2,2,2,2,2,2,2,3,115,101,108,102,0,0,13,109,101,115,115,97,103,101,0,0,13,
-108,101,118,101,108,0,0,13,0,121,0,1,6,0,5,0,14,22,234,8,2,52,1,0,0,52,2,1,0,
+108,101,118,101,108,0,0,13,0,121,0,1,6,0,5,0,14,22,251,8,2,52,1,0,0,52,2,1,0,
16,3,0,0,62,2,2,2,55,2,2,2,62,1,2,2,37,2,3,0,52,3,0,0,16,5,0,0,55,4,4,0,62,4,
2,0,61,3,0,2,36,1,3,1,72,1,2,0,10,116,114,97,99,101,7,58,32,11,95,95,110,97,
109,101,11,116,121,112,101,111,102,13,116,111,115,116,114,105,110,103,1,1,1,1,
-1,1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,15,0,208,1,1,2,7,2,10,0,24,56,224,8,
+1,1,1,1,1,1,1,1,1,1,115,101,108,102,0,0,15,0,208,1,1,2,7,2,10,0,24,56,241,8,
13,52,2,0,0,16,3,1,0,37,4,1,0,41,5,0,0,49,6,2,0,62,2,5,1,52,2,3,0,16,3,1,0,37,
4,4,0,49,5,5,0,62,2,4,1,52,2,3,0,16,3,1,0,37,4,6,0,49,5,7,0,41,6,2,0,62,2,5,1,
52,2,3,0,16,3,1,0,37,4,8,0,49,5,9,0,62,2,4,1,48,0,0,128,71,0,1,0,7,128,8,128,
0,13,116,111,83,116,114,105,110,103,0,10,114,97,105,115,101,0,9,105,110,105,
116,11,109,101,116,104,111,100,0,10,116,114,97,99,101,8,104,97,115,1,1,1,1,1,
1,2,2,2,5,2,6,6,6,9,9,6,10,10,10,12,10,13,13,109,97,110,103,108,101,0,100,101,
109,97,110,103,108,101,0,95,95,101,110,118,0,0,25,115,101,108,102,0,0,25,0,17,
-0,0,1,0,0,0,1,2,239,8,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,240,8,0,71,0,1,0,0,0,
-17,0,0,1,0,0,0,1,2,241,8,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,242,8,0,71,0,1,0,0,
-0,17,0,0,1,0,0,0,1,2,243,8,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,244,8,0,71,0,1,0,
-0,0,129,1,2,1,5,1,5,0,14,30,251,8,3,52,1,0,0,52,2,1,0,55,2,2,2,43,3,0,0,16,4,
+0,0,1,0,0,0,1,2,128,9,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,129,9,0,71,0,1,0,0,0,
+17,0,0,1,0,0,0,1,2,130,9,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,131,9,0,71,0,1,0,0,
+0,17,0,0,1,0,0,0,1,2,132,9,0,71,0,1,0,0,0,17,0,0,1,0,0,0,1,2,133,9,0,71,0,1,0,
+0,0,129,1,2,1,5,1,5,0,14,30,140,9,3,52,1,0,0,52,2,1,0,55,2,2,2,43,3,0,0,16,4,
0,0,62,3,2,2,39,4,3,0,62,2,3,0,61,1,0,1,52,1,3,0,55,1,4,1,39,2,1,0,62,1,2,1,
71,0,1,0,1,0,9,101,120,105,116,7,111,115,14,116,114,97,99,101,98,97,99,107,10,
100,101,98,117,103,10,112,114,105,110,116,1,1,1,1,1,1,1,1,1,2,2,2,2,3,100,101,
-109,97,110,103,108,101,0,101,114,114,0,0,15,0,221,1,1,1,7,2,8,0,22,58,246,8,9,
+109,97,110,103,108,101,0,101,114,114,0,0,15,0,221,1,1,1,7,2,8,0,22,58,135,9,9,
52,1,0,0,52,2,1,0,16,3,0,0,62,2,2,0,61,1,0,2,52,2,2,0,50,3,0,0,50,4,0,8,43,5,
0,0,58,5,3,4,62,2,3,2,58,2,4,2,52,3,5,0,16,4,1,0,16,5,2,0,62,3,3,1,52,3,6,0,
16,4,1,0,49,5,7,0,43,6,0,0,48,0,0,128,64,3,4,0,0,128,8,128,0,11,120,112,99,97,
108,108,12,115,101,116,102,101,110,118,9,115,101,108,102,12,95,95,105,110,100,
101,120,17,115,101,116,109,101,116,97,116,97,98,108,101,15,108,111,97,100,115,
116,114,105,110,103,11,97,115,115,101,114,116,1,1,1,1,1,2,2,2,2,2,2,3,4,4,4,4,
5,5,8,8,8,8,95,95,101,110,118,0,100,101,109,97,110,103,108,101,0,108,117,97,0,
-0,23,109,97,105,110,0,6,17,102,101,110,118,0,6,11,0,99,0,0,3,0,5,0,12,17,139,
+0,23,109,97,105,110,0,6,17,102,101,110,118,0,6,11,0,99,0,0,3,0,5,0,12,17,156,
9,3,52,0,0,0,55,0,1,0,39,1,3,0,37,2,2,0,62,0,3,2,15,0,0,0,84,1,3,128,55,1,3,0,
14,0,1,0,84,2,1,128,37,1,4,0,72,1,2,0,6,67,9,119,104,97,116,6,83,12,103,101,
116,105,110,102,111,10,100,101,98,117,103,1,1,1,1,1,2,2,2,2,2,2,2,100,0,6,7,0,
-138,2,0,3,8,3,7,0,30,62,144,9,9,43,3,0,0,55,3,0,3,54,3,1,3,14,0,3,0,84,3,19,
+138,2,0,3,8,3,7,0,30,62,161,9,9,43,3,0,0,55,3,0,3,54,3,1,3,14,0,3,0,84,3,19,
128,43,3,1,0,62,3,1,2,6,3,1,0,84,4,11,128,6,3,2,0,84,4,9,128,52,4,3,0,37,5,4,
0,52,6,5,0,16,7,1,0,62,6,2,2,37,7,6,0,36,5,7,5,39,6,2,0,62,4,3,1,43,4,0,0,55,
4,0,4,41,5,2,0,57,5,1,4,43,3,2,0,16,4,0,0,16,5,1,0,16,6,2,0,62,3,4,1,71,0,1,0,
@@ -760,17 +773,17 @@ static const char luaJIT_BC_predef[] = {
97,98,108,101,32,39,10,101,114,114,111,114,6,67,9,109,97,105,110,15,95,95,100,
101,99,108,97,114,101,100,1,1,1,1,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,4,6,6,6,6,8,8,
8,8,8,9,109,116,0,119,104,97,116,0,114,97,119,115,101,116,0,116,0,0,31,110,0,
-0,31,118,0,0,31,119,0,8,17,0,208,1,0,2,6,3,6,0,22,46,155,9,5,43,2,0,0,55,2,0,
+0,31,118,0,0,31,119,0,8,17,0,208,1,0,2,6,3,6,0,22,46,172,9,5,43,2,0,0,55,2,0,
2,54,2,1,2,14,0,2,0,84,2,13,128,43,2,1,0,62,2,1,2,6,2,1,0,84,2,9,128,52,2,2,0,
37,3,3,0,52,4,4,0,16,5,1,0,62,4,2,2,37,5,5,0,36,3,5,3,39,4,2,0,62,2,3,1,43,2,
2,0,16,3,0,0,16,4,1,0,64,2,3,0,12,128,13,128,3,128,22,39,32,105,115,32,110,
111,116,32,100,101,99,108,97,114,101,100,13,116,111,115,116,114,105,110,103,
15,118,97,114,105,97,98,108,101,32,39,10,101,114,114,111,114,6,67,15,95,95,
100,101,99,108,97,114,101,100,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,4,4,4,4,109,
116,0,119,104,97,116,0,114,97,119,103,101,116,0,116,0,0,23,110,0,0,23,0,35,2,
-1,3,1,0,0,3,10,167,9,0,43,1,0,0,67,2,1,0,63,1,0,0,16,128,0,0,0,118,0,95,0,0,4,
-0,26,0,0,1,1,0,0,2,5,169,9,0,43,0,0,0,72,0,2,0,16,128,0,0,118,0,0,237,74,3,0,
-23,0,228,2,0,245,9,202,22,0,174,9,52,0,0,0,50,1,0,0,50,2,0,8,52,3,1,0,58,3,2,
+1,3,1,0,0,3,10,184,9,0,43,1,0,0,67,2,1,0,63,1,0,0,16,128,0,0,0,118,0,95,0,0,4,
+0,26,0,0,1,1,0,0,2,5,186,9,0,43,0,0,0,72,0,2,0,16,128,0,0,118,0,0,183,75,3,0,
+23,0,230,2,0,129,10,226,22,0,191,9,52,0,0,0,50,1,0,0,50,2,0,8,52,3,1,0,58,3,2,
2,62,0,3,2,52,1,3,0,55,1,4,1,58,0,5,1,52,1,6,0,39,2,1,0,16,3,0,0,62,1,3,1,52,
1,7,0,52,2,1,0,62,1,2,4,68,4,1,128,57,5,4,0,66,4,3,3,78,4,253,127,52,1,8,0,37,
2,9,0,62,1,2,2,52,2,8,0,37,3,10,0,62,2,2,2,52,3,3,0,37,4,12,0,52,5,3,0,55,5,
@@ -872,128 +885,130 @@ static const char luaJIT_BC_predef[] = {
251,127,52,12,7,0,52,13,221,0,55,13,224,13,62,12,2,4,68,15,10,128,58,15,236,
16,52,17,221,0,58,17,128,16,52,17,7,0,52,18,221,0,62,17,2,4,68,20,1,128,57,21,
20,16,66,20,3,3,78,20,253,127,66,15,3,3,78,15,244,127,16,12,11,0,37,13,237,0,
-62,12,2,2,53,12,237,0,52,12,237,0,49,13,238,0,58,13,149,12,52,12,237,0,55,12,
-132,12,49,13,240,0,58,13,239,12,52,12,237,0,55,12,132,12,49,13,241,0,58,13,
-201,12,16,12,11,0,37,13,242,0,62,12,2,2,53,12,242,0,52,12,242,0,49,13,243,0,
-58,13,121,12,16,12,11,0,37,13,244,0,62,12,2,2,53,12,244,0,52,12,244,0,41,13,0,
-0,58,13,35,12,52,12,244,0,41,13,0,0,58,13,33,12,52,12,244,0,49,13,245,0,58,13,
-121,12,52,12,246,0,55,12,0,12,41,13,0,0,52,14,244,0,62,12,3,1,52,12,44,0,16,
-13,0,0,37,14,247,0,50,15,0,0,39,16,0,0,49,17,248,0,62,12,6,2,53,12,247,0,16,
-12,11,0,37,13,249,0,62,12,2,2,53,12,249,0,52,12,249,0,49,13,250,0,58,13,121,
-12,52,12,249,0,49,13,251,0,58,13,119,12,52,12,249,0,41,13,0,0,58,13,35,12,52,
-12,249,0,55,12,132,12,52,13,252,0,58,13,123,12,52,12,249,0,55,12,132,12,49,13,
-254,0,58,13,253,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,255,0,62,13,2,2,
-49,14,0,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,1,1,62,13,2,2,
-49,14,2,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,3,1,62,13,2,2,
-49,14,4,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,194,0,62,13,2,
-2,49,14,5,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,6,1,62,13,2,
-2,49,14,7,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,8,1,62,13,2,
-2,49,14,9,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,10,1,62,13,2,
-2,49,14,11,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,12,1,62,13,
-2,2,49,14,13,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,14,1,62,
-13,2,2,37,14,15,1,54,14,14,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,
-37,14,157,0,62,13,2,2,37,14,16,1,54,14,14,1,57,14,13,12,52,12,249,0,55,12,132,
-12,16,13,7,0,37,14,17,1,62,13,2,2,37,14,18,1,54,14,14,1,57,14,13,12,52,12,249,
-0,55,12,132,12,16,13,7,0,37,14,19,1,62,13,2,2,37,14,20,1,54,14,14,1,57,14,13,
-12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,21,1,62,13,2,2,37,14,22,1,54,14,
-14,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,23,1,62,13,2,2,37,
-14,24,1,54,14,14,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,0,37,14,25,1,
-62,13,2,2,37,14,26,1,54,14,14,1,57,14,13,12,52,12,249,0,55,12,132,12,16,13,7,
-0,37,14,27,1,62,13,2,2,49,14,28,1,57,14,13,12,52,12,247,0,16,13,12,0,55,12,
-180,12,16,14,0,0,52,15,249,0,62,12,4,1,52,12,246,0,55,12,0,12,39,13,0,0,52,14,
-249,0,62,12,3,1,16,12,11,0,37,13,29,1,62,12,2,2,53,12,29,1,52,12,29,1,41,13,0,
-0,58,13,35,12,52,12,29,1,49,13,30,1,58,13,121,12,52,12,29,1,49,13,31,1,58,13,
-119,12,16,12,11,0,37,13,32,1,62,12,2,2,53,12,32,1,52,12,32,1,41,13,0,0,58,13,
-35,12,52,12,32,1,49,13,33,1,58,13,121,12,52,12,32,1,49,13,34,1,58,13,119,12,
-52,12,7,0,52,13,35,1,62,12,2,4,68,15,3,128,52,17,32,1,55,17,132,17,57,16,15,
-17,66,15,3,3,78,15,251,127,52,12,32,1,55,12,132,12,49,13,36,1,58,13,123,12,52,
-12,32,1,55,12,132,12,16,13,7,0,37,14,194,0,62,13,2,2,49,14,37,1,57,14,13,12,
-52,12,32,1,55,12,132,12,37,13,38,1,57,7,13,12,52,12,32,1,55,12,132,12,37,13,
-39,1,57,8,13,12,52,12,32,1,55,12,132,12,16,13,7,0,37,14,138,0,62,13,2,2,49,14,
-40,1,57,14,13,12,52,12,32,1,55,12,132,12,16,13,7,0,37,14,178,0,62,13,2,2,49,
-14,41,1,57,14,13,12,52,12,32,1,55,12,132,12,37,13,42,1,49,14,43,1,57,14,13,12,
-52,12,32,1,55,12,132,12,49,13,44,1,58,13,186,12,52,12,32,1,55,12,132,12,16,13,
-7,0,37,14,27,1,62,13,2,2,49,14,45,1,57,14,13,12,52,12,247,0,16,13,12,0,55,12,
-180,12,16,14,0,0,52,15,32,1,62,12,4,1,52,12,246,0,55,12,0,12,37,13,46,1,52,14,
-32,1,62,12,3,1,16,12,11,0,37,13,47,1,62,12,2,2,53,12,47,1,52,12,47,1,41,13,0,
-0,58,13,35,12,52,12,47,1,49,13,48,1,58,13,121,12,52,12,47,1,49,13,49,1,58,13,
-119,12,52,12,47,1,55,12,132,12,49,13,50,1,58,13,123,12,52,12,246,0,55,12,0,12,
-41,13,2,0,52,14,47,1,62,12,3,1,16,12,11,0,37,13,51,1,62,12,2,2,53,12,51,1,52,
-12,51,1,41,13,0,0,58,13,33,12,52,12,51,1,41,13,0,0,58,13,35,12,52,12,51,1,55,
-12,132,12,37,13,52,1,52,14,35,1,37,15,52,1,54,14,15,14,57,14,13,12,52,12,51,1,
-49,13,53,1,58,13,121,12,52,12,51,1,55,12,132,12,37,13,54,1,58,13,127,12,52,12,
-51,1,55,12,132,12,49,13,55,1,58,13,123,12,52,12,246,0,55,12,0,12,49,13,56,1,
-52,14,51,1,62,12,3,1,16,12,11,0,37,13,57,1,62,12,2,2,53,12,57,1,52,12,57,1,41,
-13,0,0,58,13,35,12,52,12,57,1,37,13,58,1,52,14,59,1,37,15,58,1,54,14,15,14,57,
-14,13,12,52,12,57,1,37,13,60,1,52,14,59,1,37,15,60,1,54,14,15,14,57,14,13,12,
-52,12,57,1,49,13,61,1,58,13,121,12,52,12,57,1,49,13,62,1,58,13,119,12,52,12,
-57,1,49,13,63,1,58,13,149,12,52,12,57,1,55,12,132,12,49,13,64,1,58,13,123,12,
-52,12,7,0,52,13,59,1,62,12,2,4,68,15,9,128,16,17,3,0,52,18,57,1,16,19,15,0,62,
-17,3,2,14,0,17,0,84,17,3,128,52,17,57,1,55,17,132,17,57,16,15,17,66,15,3,3,78,
-15,245,127,52,12,246,0,55,12,0,12,52,13,59,1,37,14,65,1,54,13,14,13,49,14,66,
-1,62,13,2,2,52,14,57,1,62,12,3,1,52,12,0,0,52,13,113,0,52,14,60,0,55,14,69,14,
-39,15,1,0,62,14,2,0,61,13,0,2,52,14,148,0,62,12,3,2,53,12,67,1,52,12,67,1,37,
-13,67,1,58,13,127,12,52,12,67,1,52,13,118,0,58,13,128,12,52,12,67,1,50,13,0,0,
-58,13,129,12,52,12,67,1,52,13,0,0,52,14,67,1,55,14,2,14,50,15,0,8,52,16,118,0,
-55,16,132,16,58,16,2,15,62,13,3,2,58,13,132,12,52,12,67,1,16,13,10,0,52,14,67,
-1,55,14,132,14,62,13,2,2,58,13,2,12,52,12,67,1,49,13,68,1,58,13,123,12,52,12,
-7,0,16,13,9,0,62,12,2,4,68,15,2,128,52,17,67,1,57,16,15,17,66,15,3,3,78,15,
-252,127,52,12,67,1,55,12,132,12,49,13,69,1,58,13,140,12,52,12,67,1,55,12,132,
-12,16,13,7,0,37,14,138,0,62,13,2,2,49,14,70,1,57,14,13,12,52,12,44,0,16,13,0,
-0,37,14,71,1,50,15,0,0,39,16,0,0,49,17,72,1,62,12,6,2,53,12,71,1,52,12,42,0,
-16,13,0,0,37,14,73,1,41,15,0,0,50,16,3,0,52,17,71,1,59,17,1,16,49,17,74,1,62,
-12,6,2,53,12,73,1,52,12,42,0,16,13,0,0,37,14,75,1,52,15,73,1,50,16,3,0,52,17,
-71,1,59,17,1,16,49,17,76,1,62,12,6,2,53,12,75,1,52,12,42,0,16,13,0,0,37,14,77,
-1,52,15,73,1,50,16,3,0,52,17,71,1,59,17,1,16,49,17,78,1,62,12,6,2,53,12,77,1,
-52,12,42,0,16,13,0,0,37,14,79,1,52,15,73,1,50,16,3,0,52,17,71,1,59,17,1,16,49,
-17,80,1,62,12,6,2,53,12,79,1,52,12,42,0,16,13,0,0,37,14,81,1,52,15,73,1,50,16,
-3,0,52,17,71,1,59,17,1,16,49,17,82,1,62,12,6,2,53,12,81,1,52,12,42,0,16,13,0,
-0,37,14,83,1,52,15,73,1,50,16,3,0,52,17,71,1,59,17,1,16,49,17,84,1,62,12,6,2,
-53,12,83,1,52,12,42,0,16,13,0,0,37,14,85,1,52,15,73,1,50,16,3,0,52,17,71,1,59,
-17,1,16,49,17,86,1,62,12,6,2,53,12,85,1,49,12,87,1,53,12,88,1,52,12,89,1,52,
+62,12,2,2,53,12,237,0,52,12,237,0,49,13,238,0,58,13,149,12,52,12,237,0,49,13,
+239,0,58,13,190,12,52,12,237,0,55,12,132,12,52,13,237,0,55,13,190,13,58,13,
+240,12,52,12,237,0,55,12,132,12,49,13,241,0,58,13,201,12,52,12,237,0,55,12,
+132,12,49,13,242,0,58,13,121,12,52,12,237,0,55,12,132,12,49,13,243,0,58,13,
+119,12,16,12,11,0,37,13,244,0,62,12,2,2,53,12,244,0,52,12,244,0,49,13,245,0,
+58,13,121,12,16,12,11,0,37,13,246,0,62,12,2,2,53,12,246,0,52,12,246,0,41,13,0,
+0,58,13,35,12,52,12,246,0,41,13,0,0,58,13,33,12,52,12,246,0,49,13,247,0,58,13,
+121,12,52,12,248,0,55,12,0,12,41,13,0,0,52,14,246,0,62,12,3,1,52,12,44,0,16,
+13,0,0,37,14,249,0,50,15,0,0,39,16,0,0,49,17,250,0,62,12,6,2,53,12,249,0,16,
+12,11,0,37,13,251,0,62,12,2,2,53,12,251,0,52,12,251,0,49,13,252,0,58,13,121,
+12,52,12,251,0,49,13,253,0,58,13,119,12,52,12,251,0,41,13,0,0,58,13,35,12,52,
+12,251,0,55,12,132,12,52,13,254,0,58,13,123,12,52,12,251,0,55,12,132,12,49,13,
+0,1,58,13,255,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,1,1,62,13,2,2,49,14,
+2,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,3,1,62,13,2,2,49,14,
+4,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,5,1,62,13,2,2,49,14,
+6,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,194,0,62,13,2,2,49,
+14,7,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,8,1,62,13,2,2,49,
+14,9,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,10,1,62,13,2,2,49,
+14,11,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,12,1,62,13,2,2,
+49,14,13,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,14,1,62,13,2,
+2,49,14,15,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,16,1,62,13,
+2,2,37,14,17,1,54,14,14,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,
+14,157,0,62,13,2,2,37,14,18,1,54,14,14,1,57,14,13,12,52,12,251,0,55,12,132,12,
+16,13,7,0,37,14,19,1,62,13,2,2,37,14,20,1,54,14,14,1,57,14,13,12,52,12,251,0,
+55,12,132,12,16,13,7,0,37,14,21,1,62,13,2,2,37,14,22,1,54,14,14,1,57,14,13,12,
+52,12,251,0,55,12,132,12,16,13,7,0,37,14,23,1,62,13,2,2,37,14,24,1,54,14,14,1,
+57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,25,1,62,13,2,2,37,14,26,
+1,54,14,14,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,14,27,1,62,13,
+2,2,37,14,28,1,54,14,14,1,57,14,13,12,52,12,251,0,55,12,132,12,16,13,7,0,37,
+14,29,1,62,13,2,2,49,14,30,1,57,14,13,12,52,12,249,0,16,13,12,0,55,12,180,12,
+16,14,0,0,52,15,251,0,62,12,4,1,52,12,248,0,55,12,0,12,39,13,0,0,52,14,251,0,
+62,12,3,1,16,12,11,0,37,13,31,1,62,12,2,2,53,12,31,1,52,12,31,1,41,13,0,0,58,
+13,35,12,52,12,31,1,49,13,32,1,58,13,121,12,52,12,31,1,49,13,33,1,58,13,119,
+12,16,12,11,0,37,13,34,1,62,12,2,2,53,12,34,1,52,12,34,1,41,13,0,0,58,13,35,
+12,52,12,34,1,49,13,35,1,58,13,121,12,52,12,34,1,49,13,36,1,58,13,119,12,52,
+12,7,0,52,13,37,1,62,12,2,4,68,15,3,128,52,17,34,1,55,17,132,17,57,16,15,17,
+66,15,3,3,78,15,251,127,52,12,34,1,55,12,132,12,49,13,38,1,58,13,123,12,52,12,
+34,1,55,12,132,12,16,13,7,0,37,14,194,0,62,13,2,2,49,14,39,1,57,14,13,12,52,
+12,34,1,55,12,132,12,37,13,40,1,57,7,13,12,52,12,34,1,55,12,132,12,37,13,41,1,
+57,8,13,12,52,12,34,1,55,12,132,12,16,13,7,0,37,14,138,0,62,13,2,2,49,14,42,1,
+57,14,13,12,52,12,34,1,55,12,132,12,16,13,7,0,37,14,178,0,62,13,2,2,49,14,43,
+1,57,14,13,12,52,12,34,1,55,12,132,12,37,13,44,1,49,14,45,1,57,14,13,12,52,12,
+34,1,55,12,132,12,49,13,46,1,58,13,186,12,52,12,34,1,55,12,132,12,16,13,7,0,
+37,14,29,1,62,13,2,2,49,14,47,1,57,14,13,12,52,12,249,0,16,13,12,0,55,12,180,
+12,16,14,0,0,52,15,34,1,62,12,4,1,52,12,248,0,55,12,0,12,37,13,48,1,52,14,34,
+1,62,12,3,1,16,12,11,0,37,13,49,1,62,12,2,2,53,12,49,1,52,12,49,1,41,13,0,0,
+58,13,35,12,52,12,49,1,49,13,50,1,58,13,121,12,52,12,49,1,49,13,51,1,58,13,
+119,12,52,12,49,1,55,12,132,12,49,13,52,1,58,13,123,12,52,12,248,0,55,12,0,12,
+41,13,2,0,52,14,49,1,62,12,3,1,16,12,11,0,37,13,53,1,62,12,2,2,53,12,53,1,52,
+12,53,1,41,13,0,0,58,13,33,12,52,12,53,1,41,13,0,0,58,13,35,12,52,12,53,1,55,
+12,132,12,37,13,54,1,52,14,37,1,37,15,54,1,54,14,15,14,57,14,13,12,52,12,53,1,
+49,13,55,1,58,13,121,12,52,12,53,1,55,12,132,12,37,13,56,1,58,13,127,12,52,12,
+53,1,55,12,132,12,49,13,57,1,58,13,123,12,52,12,248,0,55,12,0,12,49,13,58,1,
+52,14,53,1,62,12,3,1,16,12,11,0,37,13,59,1,62,12,2,2,53,12,59,1,52,12,59,1,41,
+13,0,0,58,13,35,12,52,12,59,1,37,13,60,1,52,14,61,1,37,15,60,1,54,14,15,14,57,
+14,13,12,52,12,59,1,37,13,62,1,52,14,61,1,37,15,62,1,54,14,15,14,57,14,13,12,
+52,12,59,1,49,13,63,1,58,13,121,12,52,12,59,1,49,13,64,1,58,13,119,12,52,12,
+59,1,49,13,65,1,58,13,149,12,52,12,59,1,55,12,132,12,49,13,66,1,58,13,123,12,
+52,12,7,0,52,13,61,1,62,12,2,4,68,15,9,128,16,17,3,0,52,18,59,1,16,19,15,0,62,
+17,3,2,14,0,17,0,84,17,3,128,52,17,59,1,55,17,132,17,57,16,15,17,66,15,3,3,78,
+15,245,127,52,12,248,0,55,12,0,12,52,13,61,1,37,14,67,1,54,13,14,13,49,14,68,
+1,62,13,2,2,52,14,59,1,62,12,3,1,52,12,0,0,52,13,113,0,52,14,60,0,55,14,69,14,
+39,15,1,0,62,14,2,0,61,13,0,2,52,14,148,0,62,12,3,2,53,12,69,1,52,12,69,1,37,
+13,69,1,58,13,127,12,52,12,69,1,52,13,118,0,58,13,128,12,52,12,69,1,50,13,0,0,
+58,13,129,12,52,12,69,1,52,13,0,0,52,14,69,1,55,14,2,14,50,15,0,8,52,16,118,0,
+55,16,132,16,58,16,2,15,62,13,3,2,58,13,132,12,52,12,69,1,16,13,10,0,52,14,69,
+1,55,14,132,14,62,13,2,2,58,13,2,12,52,12,69,1,49,13,70,1,58,13,123,12,52,12,
+7,0,16,13,9,0,62,12,2,4,68,15,2,128,52,17,69,1,57,16,15,17,66,15,3,3,78,15,
+252,127,52,12,69,1,55,12,132,12,49,13,71,1,58,13,140,12,52,12,69,1,55,12,132,
+12,16,13,7,0,37,14,138,0,62,13,2,2,49,14,72,1,57,14,13,12,52,12,44,0,16,13,0,
+0,37,14,73,1,50,15,0,0,39,16,0,0,49,17,74,1,62,12,6,2,53,12,73,1,52,12,42,0,
+16,13,0,0,37,14,75,1,41,15,0,0,50,16,3,0,52,17,73,1,59,17,1,16,49,17,76,1,62,
+12,6,2,53,12,75,1,52,12,42,0,16,13,0,0,37,14,77,1,52,15,75,1,50,16,3,0,52,17,
+73,1,59,17,1,16,49,17,78,1,62,12,6,2,53,12,77,1,52,12,42,0,16,13,0,0,37,14,79,
+1,52,15,75,1,50,16,3,0,52,17,73,1,59,17,1,16,49,17,80,1,62,12,6,2,53,12,79,1,
+52,12,42,0,16,13,0,0,37,14,81,1,52,15,75,1,50,16,3,0,52,17,73,1,59,17,1,16,49,
+17,82,1,62,12,6,2,53,12,81,1,52,12,42,0,16,13,0,0,37,14,83,1,52,15,75,1,50,16,
+3,0,52,17,73,1,59,17,1,16,49,17,84,1,62,12,6,2,53,12,83,1,52,12,42,0,16,13,0,
+0,37,14,85,1,52,15,75,1,50,16,3,0,52,17,73,1,59,17,1,16,49,17,86,1,62,12,6,2,
+53,12,85,1,52,12,42,0,16,13,0,0,37,14,87,1,52,15,75,1,50,16,3,0,52,17,73,1,59,
+17,1,16,49,17,88,1,62,12,6,2,53,12,87,1,49,12,89,1,53,12,90,1,52,12,91,1,52,
13,1,0,62,12,2,2,11,12,0,0,84,13,5,128,50,12,0,0,52,13,0,0,52,14,1,0,16,15,12,
-0,62,13,3,1,37,13,90,1,50,14,0,0,57,14,13,12,49,13,91,1,37,14,92,1,49,15,93,1,
-57,15,14,12,49,14,94,1,58,14,2,12,48,12,0,128,37,12,95,1,57,0,12,0,37,12,96,1,
+0,62,13,3,1,37,13,92,1,50,14,0,0,57,14,13,12,49,13,93,1,37,14,94,1,49,15,95,1,
+57,15,14,12,49,14,96,1,58,14,2,12,48,12,0,128,37,12,97,1,57,0,12,0,37,12,98,1,
52,13,0,0,50,14,0,0,50,15,0,8,16,16,10,0,50,17,0,0,62,16,2,2,58,16,2,15,62,13,
3,2,57,13,12,0,52,12,7,0,16,13,0,0,62,12,2,4,68,15,15,128,52,17,26,0,16,18,16,
-0,62,17,2,2,7,17,97,1,84,17,5,128,37,17,96,1,54,17,17,0,49,18,98,1,57,18,15,
-17,84,17,4,128,37,17,96,1,54,17,17,0,49,18,99,1,57,18,15,17,48,15,0,128,66,15,
-3,3,78,15,239,127,48,0,0,128,72,0,2,0,0,0,13,102,117,110,99,116,105,111,110,
-11,112,114,101,100,101,102,11,103,108,111,98,97,108,0,0,15,95,95,110,101,119,
-105,110,100,101,120,0,15,95,95,100,101,99,108,97,114,101,100,17,103,101,116,
-109,101,116,97,116,97,98,108,101,13,101,118,97,108,117,97,116,101,0,0,17,67,
-111,109,112,111,115,101,69,114,114,111,114,0,14,84,121,112,101,69,114,114,111,
-114,0,16,69,120,112,111,114,116,69,114,114,111,114,0,16,73,109,112,111,114,
-116,69,114,114,111,114,0,16,65,99,99,101,115,115,69,114,114,111,114,0,16,83,
-121,110,116,97,120,69,114,114,111,114,0,10,69,114,114,111,114,0,18,83,116,97,
-116,105,99,66,117,105,108,100,101,114,0,0,0,12,80,97,116,116,101,114,110,0,11,
-99,114,101,97,116,101,0,0,0,0,9,119,114,97,112,14,99,111,114,111,117,116,105,
-110,101,10,121,105,101,108,100,11,84,104,114,101,97,100,0,0,15,60,102,117,110,
-99,116,105,111,110,62,0,9,100,117,109,112,13,70,117,110,99,116,105,111,110,0,
-0,0,12,66,111,111,108,101,97,110,5,0,0,0,10,115,112,108,105,116,0,0,13,100,
-101,109,97,110,103,108,101,11,109,97,110,103,108,101,0,0,11,115,116,114,105,
-110,103,0,0,11,83,116,114,105,110,103,0,0,11,83,121,109,98,111,108,0,8,60,61,
-62,12,97,114,115,104,105,102,116,8,62,62,62,11,114,115,104,105,102,116,7,62,
-62,11,108,115,104,105,102,116,7,60,60,9,98,120,111,114,6,94,9,98,97,110,100,6,
-38,8,98,111,114,9,98,110,111,116,7,126,95,0,7,42,42,0,7,33,95,0,7,45,95,0,6,
-45,0,0,6,47,0,6,37,0,6,42,0,10,116,105,109,101,115,13,116,111,115,116,114,105,
-110,103,0,0,11,78,117,109,98,101,114,0,15,67,111,109,112,97,114,97,98,108,101,
-10,100,101,98,117,103,0,8,78,105,108,0,9,86,111,105,100,0,0,9,105,116,101,114,
-0,10,82,97,110,103,101,11,95,95,109,111,100,101,0,0,0,0,7,97,115,9,110,101,
-120,116,0,9,119,101,97,107,7,107,118,6,118,6,107,9,77,79,68,69,0,0,10,84,97,
-98,108,101,0,12,114,101,118,101,114,115,101,0,11,115,112,108,105,99,101,0,12,
-117,110,115,104,105,102,116,0,10,115,104,105,102,116,0,8,112,111,112,0,9,112,
-117,115,104,0,9,103,114,101,112,0,11,105,110,106,101,99,116,0,8,109,97,112,0,
-9,101,97,99,104,0,9,115,111,114,116,11,99,111,110,99,97,116,11,114,101,109,
-111,118,101,11,117,110,112,97,99,107,0,6,43,0,9,95,91,93,61,11,105,112,97,105,
-114,115,11,95,95,101,97,99,104,0,0,0,8,108,101,110,0,0,0,10,65,114,114,97,121,
-0,9,109,97,107,101,0,8,95,91,93,0,0,0,10,84,114,97,105,116,0,12,109,101,109,
-98,101,114,115,0,0,0,10,67,108,97,115,115,10,103,117,97,114,100,0,9,101,110,
-117,109,0,0,0,0,9,69,110,117,109,0,0,6,124,0,7,63,95,0,0,0,0,0,8,110,101,119,
-9,84,121,112,101,0,9,100,111,101,115,0,8,99,97,110,0,0,0,10,97,112,112,108,
-121,0,7,126,126,0,7,61,61,0,7,33,61,0,12,95,95,115,108,111,116,115,12,95,95,
-114,117,108,101,115,11,95,95,115,105,122,101,11,95,95,119,105,116,104,11,95,
-95,102,114,111,109,11,95,95,110,97,109,101,0,7,105,115,0,13,116,111,83,116,
+0,62,17,2,2,7,17,99,1,84,17,5,128,37,17,98,1,54,17,17,0,49,18,100,1,57,18,15,
+17,84,17,4,128,37,17,98,1,54,17,17,0,49,18,101,1,57,18,15,17,48,15,0,128,66,
+15,3,3,78,15,239,127,48,0,0,128,72,0,2,0,0,0,13,102,117,110,99,116,105,111,
+110,11,112,114,101,100,101,102,11,103,108,111,98,97,108,0,0,15,95,95,110,101,
+119,105,110,100,101,120,0,15,95,95,100,101,99,108,97,114,101,100,17,103,101,
+116,109,101,116,97,116,97,98,108,101,13,101,118,97,108,117,97,116,101,0,0,17,
+67,111,109,112,111,115,101,69,114,114,111,114,0,14,84,121,112,101,69,114,114,
+111,114,0,16,69,120,112,111,114,116,69,114,114,111,114,0,16,73,109,112,111,
+114,116,69,114,114,111,114,0,16,65,99,99,101,115,115,69,114,114,111,114,0,16,
+83,121,110,116,97,120,69,114,114,111,114,0,10,69,114,114,111,114,0,18,83,116,
+97,116,105,99,66,117,105,108,100,101,114,0,0,0,12,80,97,116,116,101,114,110,0,
+11,99,114,101,97,116,101,0,0,0,0,9,119,114,97,112,14,99,111,114,111,117,116,
+105,110,101,10,121,105,101,108,100,11,84,104,114,101,97,100,0,0,15,60,102,117,
+110,99,116,105,111,110,62,0,9,100,117,109,112,13,70,117,110,99,116,105,111,
+110,0,0,0,12,66,111,111,108,101,97,110,5,0,0,0,10,115,112,108,105,116,0,0,13,
+100,101,109,97,110,103,108,101,11,109,97,110,103,108,101,0,0,11,115,116,114,
+105,110,103,0,0,11,83,116,114,105,110,103,0,0,11,83,121,109,98,111,108,0,8,60,
+61,62,12,97,114,115,104,105,102,116,8,62,62,62,11,114,115,104,105,102,116,7,
+62,62,11,108,115,104,105,102,116,7,60,60,9,98,120,111,114,6,94,9,98,97,110,
+100,6,38,8,98,111,114,9,98,110,111,116,7,126,95,0,7,42,42,0,7,33,95,0,7,45,95,
+0,6,45,0,0,6,47,0,6,37,0,6,42,0,10,116,105,109,101,115,13,116,111,115,116,114,
+105,110,103,0,0,11,78,117,109,98,101,114,0,15,67,111,109,112,97,114,97,98,108,
+101,10,100,101,98,117,103,0,8,78,105,108,0,9,86,111,105,100,0,0,0,9,105,116,
+101,114,0,0,10,82,97,110,103,101,11,95,95,109,111,100,101,0,0,0,0,7,97,115,9,
+110,101,120,116,0,9,119,101,97,107,7,107,118,6,118,6,107,9,77,79,68,69,0,0,10,
+84,97,98,108,101,0,12,114,101,118,101,114,115,101,0,11,115,112,108,105,99,101,
+0,12,117,110,115,104,105,102,116,0,10,115,104,105,102,116,0,8,112,111,112,0,9,
+112,117,115,104,0,9,103,114,101,112,0,11,105,110,106,101,99,116,0,8,109,97,
+112,0,9,101,97,99,104,0,9,115,111,114,116,11,99,111,110,99,97,116,11,114,101,
+109,111,118,101,11,117,110,112,97,99,107,0,6,43,0,9,95,91,93,61,11,105,112,97,
+105,114,115,11,95,95,101,97,99,104,0,0,0,8,108,101,110,0,0,0,10,65,114,114,97,
+121,0,9,109,97,107,101,0,8,95,91,93,0,0,0,10,84,114,97,105,116,0,12,109,101,
+109,98,101,114,115,0,0,0,10,67,108,97,115,115,10,103,117,97,114,100,0,9,101,
+110,117,109,0,0,0,0,9,69,110,117,109,0,0,6,124,0,7,63,95,0,0,0,0,0,8,110,101,
+119,9,84,121,112,101,0,9,100,111,101,115,0,8,99,97,110,0,0,0,10,97,112,112,
+108,121,0,7,126,126,0,7,61,61,0,7,33,61,0,12,95,95,115,108,111,116,115,12,95,
+95,114,117,108,101,115,11,95,95,115,105,122,101,11,95,95,119,105,116,104,11,
+95,95,102,114,111,109,11,95,95,110,97,109,101,0,7,105,115,0,13,116,111,83,116,
114,105,110,103,0,10,99,104,101,99,107,0,11,99,111,101,114,99,101,8,65,110,
121,10,95,101,97,99,104,0,10,116,104,114,111,119,10,101,114,114,111,114,11,
116,121,112,101,111,102,0,11,95,95,108,111,97,100,0,11,101,120,112,111,114,
@@ -1076,60 +1091,62 @@ static const char luaJIT_BC_predef[] = {
3,110,3,110,3,111,3,111,3,111,3,111,3,111,3,111,3,113,3,113,3,113,3,113,3,113,
3,113,3,113,3,113,3,113,3,114,3,114,3,114,3,114,3,114,3,115,3,116,3,116,3,117,
3,117,3,117,3,117,3,118,3,117,3,117,3,114,3,114,3,122,3,122,3,122,3,122,3,123,
-3,128,3,128,3,129,3,129,3,139,3,139,3,140,3,140,3,144,3,144,3,146,3,146,3,146,
-3,146,3,147,3,149,3,149,3,151,3,151,3,151,3,151,3,152,3,152,3,152,3,153,3,153,
-3,153,3,154,3,156,3,156,3,157,3,157,3,157,3,157,3,157,3,159,3,159,3,159,3,159,
-3,159,3,166,3,159,3,166,3,168,3,168,3,168,3,168,3,169,3,171,3,171,3,172,3,178,
-3,178,3,179,3,179,3,179,3,180,3,180,3,180,3,180,3,181,3,181,3,185,3,185,3,186,
-3,186,3,186,3,186,3,186,3,186,3,186,3,187,3,187,3,187,3,187,3,187,3,187,3,187,
-3,188,3,188,3,188,3,188,3,188,3,188,3,188,3,189,3,189,3,189,3,189,3,189,3,189,
-3,189,3,190,3,190,3,190,3,190,3,190,3,190,3,190,3,191,3,191,3,191,3,191,3,191,
-3,191,3,191,3,192,3,192,3,192,3,192,3,192,3,192,3,192,3,193,3,193,3,193,3,193,
-3,193,3,193,3,193,3,194,3,194,3,194,3,194,3,194,3,194,3,194,3,194,3,195,3,195,
-3,195,3,195,3,195,3,195,3,195,3,195,3,196,3,196,3,196,3,196,3,196,3,196,3,196,
-3,196,3,197,3,197,3,197,3,197,3,197,3,197,3,197,3,197,3,198,3,198,3,198,3,198,
-3,198,3,198,3,198,3,198,3,199,3,199,3,199,3,199,3,199,3,199,3,199,3,199,3,200,
-3,200,3,200,3,200,3,200,3,200,3,200,3,200,3,201,3,201,3,201,3,201,3,201,3,203,
-3,203,3,204,3,204,3,204,3,204,3,204,3,204,3,205,3,205,3,205,3,205,3,205,3,207,
-3,207,3,207,3,207,3,208,3,208,3,208,3,209,3,211,3,211,3,212,3,214,3,214,3,216,
-3,216,3,216,3,216,3,217,3,217,3,217,3,218,3,220,3,220,3,221,3,223,3,223,3,224,
-3,224,3,224,3,224,3,225,3,225,3,225,3,224,3,224,3,227,3,227,3,227,3,227,3,228,
-3,228,3,228,3,228,3,228,3,228,3,228,3,229,3,229,3,229,3,229,3,230,3,230,3,230,
-3,230,3,231,3,231,3,231,3,231,3,231,3,237,3,237,3,238,3,238,3,238,3,238,3,238,
-3,240,3,240,3,241,3,241,3,241,3,8,4,8,4,9,4,9,4,11,4,11,4,12,4,12,4,12,4,12,4,
-12,4,14,4,14,4,15,4,15,4,15,4,15,4,15,4,15,4,16,4,16,4,16,4,16,4,16,4,18,4,18,
-4,18,4,18,4,19,4,19,4,19,4,20,4,22,4,22,4,23,4,25,4,25,4,26,4,26,4,26,4,26,4,
-27,4,27,4,27,4,27,4,27,4,29,4,29,4,29,4,29,4,30,4,30,4,30,4,31,4,31,4,31,4,32,
-4,32,4,32,4,32,4,32,4,32,4,32,4,33,4,35,4,35,4,36,4,36,4,36,4,36,4,37,4,37,4,
-37,4,37,4,46,4,46,4,46,4,46,4,46,4,48,4,48,4,48,4,48,4,49,4,49,4,49,4,50,4,50,
-4,50,4,50,4,50,4,50,4,51,4,51,4,51,4,51,4,51,4,51,4,52,4,54,4,54,4,55,4,61,4,
-61,4,62,4,64,4,64,4,65,4,65,4,65,4,65,4,66,4,66,4,66,4,66,4,67,4,67,4,67,4,67,
-4,67,4,67,4,68,4,68,4,68,4,66,4,66,4,71,4,71,4,71,4,71,4,71,4,71,4,71,4,71,4,
-71,4,73,4,73,4,73,4,73,4,73,4,73,4,73,4,73,4,73,4,73,4,74,4,74,4,74,4,75,4,75,
-4,75,4,76,4,76,4,76,4,77,4,77,4,77,4,77,4,77,4,77,4,77,4,77,4,77,4,77,4,78,4,
-78,4,78,4,78,4,78,4,78,4,79,4,79,4,79,4,80,4,80,4,80,4,80,4,81,4,81,4,80,4,80,
-4,83,4,83,4,85,4,85,4,86,4,86,4,86,4,86,4,86,4,88,4,88,4,90,4,90,4,90,4,90,4,
-90,4,94,4,90,4,94,4,96,4,96,4,96,4,96,4,96,4,96,4,96,4,109,4,96,4,109,4,111,4,
-111,4,111,4,111,4,111,4,111,4,111,4,111,4,111,4,111,4,112,4,112,4,112,4,112,4,
-112,4,112,4,112,4,112,4,112,4,112,4,113,4,113,4,113,4,113,4,113,4,113,4,113,4,
-113,4,113,4,113,4,114,4,114,4,114,4,114,4,114,4,114,4,114,4,114,4,114,4,114,4,
-115,4,115,4,115,4,115,4,115,4,115,4,115,4,115,4,115,4,115,4,116,4,116,4,116,4,
-116,4,116,4,116,4,116,4,116,4,116,4,116,4,127,4,118,4,131,4,131,4,131,4,132,4,
-132,4,133,4,134,4,134,4,134,4,134,4,137,4,137,4,137,4,142,4,144,4,153,4,153,4,
-160,4,160,4,160,4,163,4,163,4,164,4,164,4,164,4,164,4,164,4,164,4,164,4,164,4,
-164,4,164,4,165,4,165,4,165,4,165,4,166,4,166,4,166,4,166,4,166,4,167,4,167,4,
-167,4,167,4,167,4,169,4,169,4,169,4,169,4,170,4,165,4,165,4,172,4,172,4,95,95,
-101,110,118,0,7,239,9,4,10,4,5,0,4,6,0,4,107,0,1,1,118,0,0,1,98,105,116,0,6,
-222,9,102,102,105,0,3,219,9,114,97,119,103,101,116,0,24,195,9,114,97,119,115,
-101,116,0,0,195,9,109,97,110,103,108,101,115,0,4,191,9,100,101,109,97,110,103,
-108,101,115,0,1,190,9,4,3,4,5,0,4,6,0,4,107,0,1,1,118,0,0,1,109,97,110,103,
-108,101,0,4,182,9,100,101,109,97,110,103,108,101,0,1,181,9,77,101,116,97,0,7,
-174,9,108,111,111,107,117,112,0,8,166,9,109,97,107,101,95,99,97,112,116,95,
-104,97,115,104,0,27,80,109,97,107,101,95,99,97,112,116,95,97,114,114,97,121,0,
-1,79,100,101,102,0,7,72,97,110,121,0,13,59,4,222,1,5,5,0,5,6,0,5,107,0,1,2,
-118,0,0,2,110,101,119,116,121,112,101,0,5,146,7,4,166,2,6,5,0,6,6,0,6,107,0,1,
-3,118,0,0,3,4,9,13,5,0,13,6,0,13,109,0,1,10,116,0,0,10,4,6,4,5,0,4,6,0,4,107,
-0,1,1,118,0,0,1,4,233,1,6,5,0,6,6,0,6,107,0,1,3,118,0,0,3,4,155,1,12,5,0,12,6,
-0,12,107,0,1,9,118,0,0,9,4,61,5,5,0,5,6,0,5,107,0,1,2,118,0,0,2,109,116,0,98,
-16,119,104,97,116,0,11,5,4,21,18,5,0,18,6,0,18,107,0,1,14,118,0,0,14,0,0
+3,128,3,128,3,129,3,139,3,139,3,140,3,140,3,140,3,140,3,140,3,141,3,141,3,145,
+3,145,3,146,3,146,3,155,3,155,3,156,3,156,3,161,3,161,3,163,3,163,3,163,3,163,
+3,164,3,166,3,166,3,168,3,168,3,168,3,168,3,169,3,169,3,169,3,170,3,170,3,170,
+3,171,3,173,3,173,3,174,3,174,3,174,3,174,3,174,3,176,3,176,3,176,3,176,3,176,
+3,183,3,176,3,183,3,185,3,185,3,185,3,185,3,186,3,188,3,188,3,189,3,195,3,195,
+3,196,3,196,3,196,3,197,3,197,3,197,3,197,3,198,3,198,3,202,3,202,3,203,3,203,
+3,203,3,203,3,203,3,203,3,203,3,204,3,204,3,204,3,204,3,204,3,204,3,204,3,205,
+3,205,3,205,3,205,3,205,3,205,3,205,3,206,3,206,3,206,3,206,3,206,3,206,3,206,
+3,207,3,207,3,207,3,207,3,207,3,207,3,207,3,208,3,208,3,208,3,208,3,208,3,208,
+3,208,3,209,3,209,3,209,3,209,3,209,3,209,3,209,3,210,3,210,3,210,3,210,3,210,
+3,210,3,210,3,211,3,211,3,211,3,211,3,211,3,211,3,211,3,211,3,212,3,212,3,212,
+3,212,3,212,3,212,3,212,3,212,3,213,3,213,3,213,3,213,3,213,3,213,3,213,3,213,
+3,214,3,214,3,214,3,214,3,214,3,214,3,214,3,214,3,215,3,215,3,215,3,215,3,215,
+3,215,3,215,3,215,3,216,3,216,3,216,3,216,3,216,3,216,3,216,3,216,3,217,3,217,
+3,217,3,217,3,217,3,217,3,217,3,217,3,218,3,218,3,218,3,218,3,218,3,220,3,220,
+3,221,3,221,3,221,3,221,3,221,3,221,3,222,3,222,3,222,3,222,3,222,3,224,3,224,
+3,224,3,224,3,225,3,225,3,225,3,226,3,228,3,228,3,229,3,231,3,231,3,233,3,233,
+3,233,3,233,3,234,3,234,3,234,3,235,3,237,3,237,3,238,3,240,3,240,3,241,3,241,
+3,241,3,241,3,242,3,242,3,242,3,241,3,241,3,244,3,244,3,244,3,244,3,245,3,245,
+3,245,3,245,3,245,3,245,3,245,3,246,3,246,3,246,3,246,3,247,3,247,3,247,3,247,
+3,248,3,248,3,248,3,248,3,248,3,254,3,254,3,255,3,255,3,255,3,255,3,255,3,1,4,
+1,4,2,4,2,4,2,4,25,4,25,4,26,4,26,4,28,4,28,4,29,4,29,4,29,4,29,4,29,4,31,4,
+31,4,32,4,32,4,32,4,32,4,32,4,32,4,33,4,33,4,33,4,33,4,33,4,35,4,35,4,35,4,35,
+4,36,4,36,4,36,4,37,4,39,4,39,4,40,4,42,4,42,4,43,4,43,4,43,4,43,4,44,4,44,4,
+44,4,44,4,44,4,46,4,46,4,46,4,46,4,47,4,47,4,47,4,48,4,48,4,48,4,49,4,49,4,49,
+4,49,4,49,4,49,4,49,4,50,4,52,4,52,4,53,4,53,4,53,4,53,4,54,4,54,4,54,4,54,4,
+63,4,63,4,63,4,63,4,63,4,65,4,65,4,65,4,65,4,66,4,66,4,66,4,67,4,67,4,67,4,67,
+4,67,4,67,4,68,4,68,4,68,4,68,4,68,4,68,4,69,4,71,4,71,4,72,4,78,4,78,4,79,4,
+81,4,81,4,82,4,82,4,82,4,82,4,83,4,83,4,83,4,83,4,84,4,84,4,84,4,84,4,84,4,84,
+4,85,4,85,4,85,4,83,4,83,4,88,4,88,4,88,4,88,4,88,4,88,4,88,4,88,4,88,4,90,4,
+90,4,90,4,90,4,90,4,90,4,90,4,90,4,90,4,90,4,91,4,91,4,91,4,92,4,92,4,92,4,93,
+4,93,4,93,4,94,4,94,4,94,4,94,4,94,4,94,4,94,4,94,4,94,4,94,4,95,4,95,4,95,4,
+95,4,95,4,95,4,96,4,96,4,96,4,97,4,97,4,97,4,97,4,98,4,98,4,97,4,97,4,100,4,
+100,4,102,4,102,4,103,4,103,4,103,4,103,4,103,4,105,4,105,4,107,4,107,4,107,4,
+107,4,107,4,111,4,107,4,111,4,113,4,113,4,113,4,113,4,113,4,113,4,113,4,126,4,
+113,4,126,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,128,4,129,4,
+129,4,129,4,129,4,129,4,129,4,129,4,129,4,129,4,129,4,130,4,130,4,130,4,130,4,
+130,4,130,4,130,4,130,4,130,4,130,4,131,4,131,4,131,4,131,4,131,4,131,4,131,4,
+131,4,131,4,131,4,132,4,132,4,132,4,132,4,132,4,132,4,132,4,132,4,132,4,132,4,
+133,4,133,4,133,4,133,4,133,4,133,4,133,4,133,4,133,4,133,4,144,4,135,4,148,4,
+148,4,148,4,149,4,149,4,150,4,151,4,151,4,151,4,151,4,154,4,154,4,154,4,159,4,
+161,4,170,4,170,4,177,4,177,4,177,4,180,4,180,4,181,4,181,4,181,4,181,4,181,4,
+181,4,181,4,181,4,181,4,181,4,182,4,182,4,182,4,182,4,183,4,183,4,183,4,183,4,
+183,4,184,4,184,4,184,4,184,4,184,4,186,4,186,4,186,4,186,4,187,4,182,4,182,4,
+189,4,189,4,95,95,101,110,118,0,7,251,9,4,10,4,5,0,4,6,0,4,107,0,1,1,118,0,0,
+1,98,105,116,0,6,234,9,102,102,105,0,3,231,9,114,97,119,103,101,116,0,24,207,
+9,114,97,119,115,101,116,0,0,207,9,109,97,110,103,108,101,115,0,4,203,9,100,
+101,109,97,110,103,108,101,115,0,1,202,9,4,3,4,5,0,4,6,0,4,107,0,1,1,118,0,0,
+1,109,97,110,103,108,101,0,4,194,9,100,101,109,97,110,103,108,101,0,1,193,9,
+77,101,116,97,0,7,186,9,108,111,111,107,117,112,0,8,178,9,109,97,107,101,95,
+99,97,112,116,95,104,97,115,104,0,27,80,109,97,107,101,95,99,97,112,116,95,97,
+114,114,97,121,0,1,79,100,101,102,0,7,72,97,110,121,0,13,59,4,222,1,5,5,0,5,6,
+0,5,107,0,1,2,118,0,0,2,110,101,119,116,121,112,101,0,5,158,7,4,166,2,6,5,0,6,
+6,0,6,107,0,1,3,118,0,0,3,4,9,13,5,0,13,6,0,13,109,0,1,10,116,0,0,10,4,6,4,5,
+0,4,6,0,4,107,0,1,1,118,0,0,1,4,245,1,6,5,0,6,6,0,6,107,0,1,3,118,0,0,3,4,155,
+1,12,5,0,12,6,0,12,107,0,1,9,118,0,0,9,4,61,5,5,0,5,6,0,5,107,0,1,2,118,0,0,2,
+109,116,0,98,16,119,104,97,116,0,11,5,4,21,18,5,0,18,6,0,18,107,0,1,14,118,0,
+0,14,0,0
};
View
70 std/socket.lu
@@ -62,6 +62,9 @@ FFI::CDEF << """
int inet_aton(const char *cp, in_addr_t *pin);
char * inet_ntoa(in_addr_t in);
+
+ /* FIXME: on BE arch this is a null macro */
+ uint16_t htons(uint16_t hostshort);
"""
enum SOCK {
@@ -169,15 +172,27 @@ class SockAddr with FFI::MetaType['sockaddr_t'] {
}
class INET with FFI::MetaType['sockaddr_in_t'], Common {
- method init(host, port : uint16) {
+ var C = FFI::C
+
+ method family { self#sin_family }
+ method family=(f : AF) { self#sin_family = f }
+
+ method init(host, port) {
self#sin_family = AF.INET
- self#sin_port = port
- self#sin_addr = SockAddr::INET::Addr.new(host)
+ if port {
+ self#sin_port = C#htons(port)
+ }
+ if host {
+ self#sin_addr = SockAddr::INET::Addr.new(host)
+ }
}
class Addr with FFI::MetaType['in_addr_t'] {
method init(host) {
if host is String {
- Socket.inet_aton(host, self)
+ var stat = Socket.inet_aton(host, self)
+ if stat !== 1 {
+ Error raise FFI.strerror(FFI.errno)
+ }
}
else if host is int32 {
self#s_addr = host
@@ -208,16 +223,44 @@ class Socket with FFI::MetaType['socket_t'] {
}
method bind(addr : SockAddr) {
- C#bind(self#so_fd, addr, addr.len)
+ var stat = C#bind(self#so_fd, addr, addr.len)
+ if stat === -1 { return nil, FFI.strerror(FFI.errno) }
+ self#so_addr = addr
+ return stat
}
method connect(addr : SockAddr) {
- C#connect(self#so_fd, addr, addr.len)
+ var stat = C#connect(self#so_fd, addr, addr.len)
+ if stat === -1 { return nil, FFI.strerror(FFI.errno) }
+ self#so_addr = addr
+ }
+ method listen(backlog = 16) {
+ C#listen(self#so_fd, backlog)
+ }
+
+ method accept {
+ var cli_addr = FFI.new('sockaddr_t')
+ cli_addr.family = self#so_addr.family
+
+ var cli_addr_len = FFI.new('socklen_t[1]', self#so_addr.len)
+ var so_fd = C#accept(self#so_fd, cli_addr, cli_addr_len)
+
+ if so_fd === -1 {
+ AcceptError raise FFI.strerror(FFI.errno)
+ }
+ var sock = FFI.new('socket_t')
+
+ sock#so_fd = so_fd
+ sock#so_addr = cli_addr
+
+ return sock
}
static method inet_aton(cp : String, pin : SockAddr::INET::Addr) {
C#inet_aton(cp, pin)
}
- static method inet_ntoa(n) : String { C#inet_ntoa(n) }
+ static method inet_ntoa(n) {
+ C#inet_ntoa(n)
+ }
class INET from self {
method init(type : SOCK, proto : PROTO) {
@@ -226,13 +269,14 @@ class Socket with FFI::MetaType['socket_t'] {
}
}
-/*
+class SocketError from Error { }
+class AcceptError from SocketError { }
+
var addr = SockAddr::INET.new('127.0.0.1', 1234)
var sock = Socket::INET.new(SOCK.STREAM, PROTO.TCP)
-var stat = sock.connect(addr)
-print(FFI.strerror(FFI.errno))
-print(stat)
-*/
-
+print('bind:', sock.bind(addr))
+print('listen:', sock.listen(4))
+var child = sock.accept()
+print(child)
View
23 test/range.lu
@@ -1,9 +1,20 @@
-var r = [0:10:0.5]
-for i : Number in r {
- print(i)
-}
+import TestUnit from etc.test
-r.each -> { print(_) }
+object Tests from TestUnit {
+ method test_basic {
+ var r = [1;10;0.5]
+ var x = 1
+ for i : Number in r {
+ x += 1
+ }
+ .assert(x == 20, "correct number of iterations")
+ }
+ method test_guard {
+ var R = [1;10]
+ .assert(R.check(10), 'check in range')
+ .assert(!R.check(11), 'check out of range')
+ }
+}
-var a = [ 1, 2, 3 ].map->(i) { i+i }.each->{ print(_) }
+Tests.run

0 comments on commit a4772b7

Please sign in to comment.