From: Jean Privat Date: Wed, 18 Jun 2014 00:42:51 +0000 (-0400) Subject: Merge: SharedPreferences: Nit API wrapping android SharedPreferences class X-Git-Tag: v0.6.6~26 X-Git-Url: http://nitlanguage.org?hp=69e79a7230954341bc8eeed8481339175bf85b2b Merge: SharedPreferences: Nit API wrapping android SharedPreferences class A module wrapping 'android.content.SharedPreferences' allowing to load/save data to internal storage for the android platform. Some tests have been added to the mnit_simple example. The compiler has been slightly modified to ignore ' ' in java extern types. As asked by @privat and @xymus to store persistant game data. Signed-off-by: Frédéric Vachon Pull-Request: #495 Reviewed-by: Jean Privat Reviewed-by: Alexis Laferrière Reviewed-by: Alexandre Terrasa Reviewed-by: Romain Chanoir --- diff --git a/examples/emscripten/README.md b/examples/emscripten/README.md new file mode 100644 index 0000000..0d84b15 --- /dev/null +++ b/examples/emscripten/README.md @@ -0,0 +1,9 @@ +# Hello world + +Minimal example using the standard Nit hello world program. The Nit code will be evaluated and executed once as soon as it is loaded. Standard output is redirected to the `console` element. + +# Fibonacci + +The Nit program is executed only when an input is supplied. The input is passed as the main arguments. + +This is not ideal, the whole Nit program is executed at each call. diff --git a/examples/emscripten/fibonacci/Makefile b/examples/emscripten/fibonacci/Makefile new file mode 100644 index 0000000..4ec01ea --- /dev/null +++ b/examples/emscripten/fibonacci/Makefile @@ -0,0 +1,2 @@ +emscripten: + ../../../bin/nitg -o www/fibonacci.js ../../fibonacci.nit -m emscripten diff --git a/examples/emscripten/fibonacci/www/index.html b/examples/emscripten/fibonacci/www/index.html new file mode 100644 index 0000000..e0195f6 --- /dev/null +++ b/examples/emscripten/fibonacci/www/index.html @@ -0,0 +1,73 @@ + + + + + Fibonacci + + + + + + + +
+

Fibonacci calculator

+ Nit source
+ HTML source + +

Status

+

Loading...

+ +

Program Input

+ + +

Program Output

+ + + +
+ + + diff --git a/examples/emscripten/hello_world/Makefile b/examples/emscripten/hello_world/Makefile new file mode 100644 index 0000000..5fea224 --- /dev/null +++ b/examples/emscripten/hello_world/Makefile @@ -0,0 +1,2 @@ +emscripten: + ../../../bin/nitg -o www/hello_world.js ../../hello_world.nit -m emscripten diff --git a/examples/emscripten/hello_world/www/index.html b/examples/emscripten/hello_world/www/index.html new file mode 100644 index 0000000..0820561 --- /dev/null +++ b/examples/emscripten/hello_world/www/index.html @@ -0,0 +1,48 @@ + + + + + + + + + + +

Status

+

Loading...

+ +

Program output

+ + + + + + diff --git a/examples/mnit_ballz/src/ballz_android.nit b/examples/mnit_ballz/src/ballz_android.nit index 18e1b84..823edd9 100644 --- a/examples/mnit_ballz/src/ballz_android.nit +++ b/examples/mnit_ballz/src/ballz_android.nit @@ -16,15 +16,12 @@ module ballz_android -import realtime import game_logic redef class App var screen: nullable Screen - var target_dt = 20000000 - redef fun run do sensors_support_enabled = true @@ -34,6 +31,7 @@ redef class App gyroscope.enabled = true light.enabled = true proximity.enabled = true + maximum_fps = 50 super end @@ -48,16 +46,8 @@ redef class App do var screen = self.screen if screen != null then - var clock = new Clock - screen.game.do_turn screen.do_frame(display) - - var dt = clock.lapse - if dt.sec == 0 and dt.nanosec < target_dt then - var sleep_t = target_dt - dt.nanosec - sys.nanosleep(0, sleep_t) - end end end diff --git a/examples/mnit_dino/src/dino.nit b/examples/mnit_dino/src/dino.nit index 23314f8..11efd91 100644 --- a/examples/mnit_dino/src/dino.nit +++ b/examples/mnit_dino/src/dino.nit @@ -21,7 +21,6 @@ module dino is end import mnit -import realtime import graphism import fancy_dino @@ -31,8 +30,6 @@ redef class App var cavemen_at_first_level = 6 var cavemen_incr = 4 - var target_dt = 12000000 - var game : nullable Game = null var score = new Container[Int](0) var imgs : nullable ImageSet = null @@ -42,6 +39,8 @@ redef class App do super + maximum_fps = 80 + var display = display assert display != null @@ -59,16 +58,8 @@ redef class App do var game = game if game != null then - var clock = new Clock - var turn = game.do_turn game.draw( display, imgs.as(not null), turn ) - - var dt = clock.lapse - if dt.sec == 0 and dt.nanosec < target_dt then - var sleep_t = target_dt - dt.nanosec - sys.nanosleep(0, sleep_t) - end else splash.draw( display, true ) end diff --git a/examples/mnit_moles/src/moles.nit b/examples/mnit_moles/src/moles.nit index a0d783a..08642d1 100644 --- a/examples/mnit_moles/src/moles.nit +++ b/examples/mnit_moles/src/moles.nit @@ -20,7 +20,6 @@ module moles import mnit -import realtime class Hole var game: Game @@ -231,12 +230,11 @@ redef class App var screen: nullable Screen = null - var target_dt = 20000000 - redef fun window_created do super + maximum_fps = 50 init_screen_and_game end @@ -246,16 +244,8 @@ redef class App do var screen = self.screen if screen != null then - var clock = new Clock - screen.game.do_turn screen.do_frame(display) - - var dt = clock.lapse - if dt.sec == 0 and dt.nanosec < target_dt then - var sleep_t = target_dt - dt.nanosec - sys.nanosleep(0, sleep_t) - end end end diff --git a/examples/pnacl/converter/converter.nit b/examples/pnacl/converter/converter.nit index 4cbf103..907aaa3 100644 --- a/examples/pnacl/converter/converter.nit +++ b/examples/pnacl/converter/converter.nit @@ -18,7 +18,8 @@ # # First imports the pnacl module # Then redefines the 'handle_dictionary' method -# Finally creates a converter and initializes it +# Creates a converter and initializes it +# Finally checks for dictionaries import pnacl @@ -123,5 +124,6 @@ class Converter end end -var converter = new Converter -converter.initialize # Needed to correctly set up Nit control over the Pepper API +redef fun app do return once new Converter +app.initialize # Needed to correctly set up Nit control over the Pepper API +app.run # Launches an infinite loop in order to check for dictionaries diff --git a/examples/pnacl/converter/converter/js/pnacl_js.js b/examples/pnacl/converter/converter/js/pnacl_js.js index ee3a184..da29a31 100644 --- a/examples/pnacl/converter/converter/js/pnacl_js.js +++ b/examples/pnacl/converter/converter/js/pnacl_js.js @@ -30,7 +30,12 @@ function moduleDidLoad() { // (in C) or pp::Instance.PostMessage() (in C++). This implementation // displays the result in the JS console, puts the result in the '#rez' input and make it visible. function handleMessage(message_event) { - console.log(message_event.data.value.valueOf()); - $('#rez').val(message_event.data.value.valueOf().toFixed(2)); - $('#rez').css('visibility', 'visible'); + if (message_event.data.hasOwnProperty('exit')){ + console.log('Nit code exited with value: ' + message_event.data.exit + '.'); + } + else { + console.log(message_event.data.value.valueOf()); + $('#rez').val(message_event.data.value.valueOf().toFixed(2)); + $('#rez').css('visibility', 'visible'); + } } diff --git a/examples/shoot/src/shoot.nit b/examples/shoot/src/shoot.nit index ee41363..48cadaa 100644 --- a/examples/shoot/src/shoot.nit +++ b/examples/shoot/src/shoot.nit @@ -14,7 +14,10 @@ # Space shooter. # This program is a fun game but also a good example of the scene2d module -module shoot +module shoot is + app_name("Space Shooter") + app_version(0, 1, git_revision) +end import mnit import shoot_logic @@ -23,16 +26,16 @@ redef class Sprite # mnit specific method to draw a sprite # app is used to optain the assets and the display # Each sprite should implements this method - fun draw_on_display(app: ShootApp) do end + fun draw_on_display(app: App) do end # Helper function to draw an image centered on the current sprite position - fun draw_image(app: ShootApp, img: Image) + fun draw_image(app: App, img: Image) do app.display.blit_centered(img, (self.x.to_f/app.scale).to_i, (self.y.to_f/app.scale).to_i) end # Helper function to draw an image translated and rotated on the current sprite position - fun draw_rotated_image(app: ShootApp, img: Image, dx, dy: Int, angle: Float) + fun draw_rotated_image(app: App, img: Image, dx, dy: Int, angle: Float) do app.display.blit_rotated(img, self.x.to_f/app.scale, self.y.to_f/app.scale, angle) end @@ -166,8 +169,8 @@ redef class Star end redef class Scene - fun draw_on_display(app: ShootApp) do end - fun input(app: ShootApp, input_event: InputEvent): Bool do return false + fun draw_on_display(app: App) do end + fun input(app: App, input_event: InputEvent): Bool do return false end redef class PlayScene @@ -265,8 +268,7 @@ end ### -class ShootApp - super App +redef class App super View var debug: Bool = false @@ -283,8 +285,6 @@ class ShootApp end end - init do super - var scene: ShotScene var img_hitbox: Image @@ -321,6 +321,8 @@ class ShootApp scale = (800.0 * 600.0 / display.width.to_f / display.height.to_f).sqrt * 100.0 + debug = args.length > 0 and args.first == "--debug" + # TODO load assets here # ex: img = load_image( "img.png" ) # to get file located at assets/img.png before deployement @@ -378,9 +380,6 @@ class ShootApp if not self.scene.exists then quit = true end self.scene.draw_on_display(self) - - # Wait the next frame - sys.nanosleep(0, 16000000) end var paused: Bool = false @@ -410,6 +409,5 @@ if args.length > 0 and args.first == "--headless" then return end -var app = new ShootApp -app.debug = args.length > 0 and args.first == "--debug" +app.setup app.run diff --git a/lib/app.nit b/lib/app.nit index 3e2d737..7ee9493 100644 --- a/lib/app.nit +++ b/lib/app.nit @@ -29,7 +29,7 @@ class App # Starts the internal setup of graphical and other stuff # Is called just before run - protected fun setup do end + fun setup do end # Main entry point of your application fun run do end diff --git a/lib/emscripten.nit b/lib/emscripten.nit new file mode 100644 index 0000000..7fc5e76 --- /dev/null +++ b/lib/emscripten.nit @@ -0,0 +1,30 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2014 Alexis Laferrière +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module emscripten is platform + +`{ + #include +`} + +redef class String + fun run_js do run_js_native(self.escape_to_js.to_cstring) + private fun run_js_native(script: NativeString) `{ emscripten_run_script(script); `} + + fun escape_to_js: String do return self.replace('\n', "\\n") + + fun alert do "alert('{self.escape_to_js}')".run_js +end diff --git a/lib/mnit/mnit.nit b/lib/mnit/mnit.nit index 3e313d4..53c4681 100644 --- a/lib/mnit/mnit.nit +++ b/lib/mnit/mnit.nit @@ -21,3 +21,4 @@ import mnit_app import opengles1 import assets import numbers +import mnit_fps diff --git a/lib/mnit/mnit_fps.nit b/lib/mnit/mnit_fps.nit new file mode 100644 index 0000000..cd30e83 --- /dev/null +++ b/lib/mnit/mnit_fps.nit @@ -0,0 +1,75 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Frame-rate control for applications +module mnit_fps + +import mnit_app +private import realtime + +redef class App + # Limit the frame-rate to a given frequency + # This basically limits how much `frame_core` is called per second. + # Zero (or a negative value) means no limit. + # + # Applications can modify this value even during the main-loop. + var maximum_fps writable = 60 + + # Current frame-rate + # Updated each 5 seconds. + var current_fps = 0.0 + + redef fun full_frame + do + super + limit_fps + end + + # The clock for limit_fps + private var clock = new Clock + + # Number of frames since the last deadline + # Used tocompute `current_fps`. + private var frame_count = 0 + + # Deadline used to compute `current_fps` + private var frame_count_deadline = 0 + + # Check and sleep to maitain a frame-rate bellow `maximum_fps` + # Also periodically uptate `current_fps` + # Is automatically called at the end of `full_frame`. + fun limit_fps + do + var t = clock.total.sec + if t >= frame_count_deadline then + var cfps = frame_count_deadline.to_f / 5.0 + self.current_fps = cfps + frame_count = 0 + frame_count_deadline = t + 5 + end + frame_count += 1 + + var mfps = maximum_fps + if mfps <= 0 then return + var dt = clock.lapse + var target_dt = 1000000000 / mfps + var sec = dt.sec + var nanosec = dt.nanosec + if sec == 0 and nanosec < target_dt then + var sleep_t = target_dt - nanosec + sys.nanosleep(0, sleep_t) + dt = clock.lapse + end + end +end diff --git a/lib/mnit_android/android_app.nit b/lib/mnit_android/android_app.nit index c25e56a..3819c25 100644 --- a/lib/mnit_android/android_app.nit +++ b/lib/mnit_android/android_app.nit @@ -159,7 +159,7 @@ class AndroidPointerEvent redef fun y: Float do return extern_y(motion_event.inner_event, pointer_id) private fun extern_y(motion_event: InnerAndroidMotionEvent, pointer_id: Int): Float is extern `{ - return ((int) AMotionEvent_getY(motion_event, pointer_id) * mnit_zoom) + 32; + return ((int) AMotionEvent_getY(motion_event, pointer_id) * mnit_zoom); `} fun pressure: Float do return extern_pressure(motion_event.inner_event, pointer_id) diff --git a/lib/perfect_hashing.nit b/lib/perfect_hashing.nit index 9ac59f3..a4b8417 100644 --- a/lib/perfect_hashing.nit +++ b/lib/perfect_hashing.nit @@ -35,7 +35,7 @@ class Perfecthashing do # By default, all identifiers are available interval = new List[Couple[nullable Int, nullable Int]] - interval.push(new Couple[nullable Int, nullable Int](0, null)) + interval.push(new Couple[nullable Int, nullable Int](1, null)) tempht = new Array[nullable Int] end diff --git a/lib/pnacl.nit b/lib/pnacl.nit index ef149b1..fde40f3 100644 --- a/lib/pnacl.nit +++ b/lib/pnacl.nit @@ -21,13 +21,15 @@ # If NACL_SDK_ROOT is not set in your PATH, you have to work in # 'nacl_sdk/pepper_your_pepper_version/getting_started/your_project_folder'. # -# Provides PNaCl support for Nit +# Provides PNaCl support for Nit. module pnacl is platform `{ #include #include + #include #include #include + #include #include "ppapi/c/pp_errors.h" #include "ppapi/c/ppp.h" #include "ppapi/c/ppp_instance.h" @@ -38,8 +40,49 @@ module pnacl is platform #include "ppapi/c/ppb_var_dictionary.h" #include "ppapi/c/ppb_var_array.h" + #define MAX_DICTIONARY_QUEUE_SIZE 200 + #define MAX_MESSAGE_QUEUE_SIZE 10 + extern int nit_main(int, char**); + /* A working thread for Nit. */ + static pthread_t g_nit_thread; + + /* Mutex that guards the queues. */ + static pthread_mutex_t g_dictionary_queue_mutex; + static pthread_mutex_t g_message_queue_mutex; + + /* Condition variables that are signalled when the queues are not empty. */ + static pthread_cond_t g_dictionary_queue_not_empty_cond; + static pthread_cond_t g_message_queue_not_empty_cond; + + /** Circular queues of dictionaries and messages from JavaScript to be handled. + * + * If g_queue_start < g_queue_end: + * all elements in the range [g_queue_start, g_queue_end) are valid. + * If g_queue_start > g_queue_end: + * all elements in the ranges [0, g_queue_end) and + * [g_queue_start, MAX_QUEUE_SIZE) are valid. + * If g_queue_start == g_queue_end, and g_queue_size > 0: + * all elements in the g_queue are valid. + * If g_queue_start == g_queue_end, and g_queue_size == 0: + * No elements are valid. */ + static struct PP_Var g_dictionary_queue[MAX_DICTIONARY_QUEUE_SIZE]; + static char* g_message_queue[MAX_MESSAGE_QUEUE_SIZE]; + + /* The index of the head of the queues. */ + static int g_dictionary_queue_start = 0; + static int g_message_queue_start = 0; + + /* The index of the tail of the queues, non-inclusive. */ + static int g_dictionary_queue_end = 0; + static int g_message_queue_end = 0; + + /* The size of the queues. */ + static int g_dictionary_queue_size = 0; + static int g_message_queue_size = 0; + + /* PNaCl interfaces. */ const PPB_Messaging* g_varMessagingInterface; const PPB_Var* g_varInterface; const PPB_VarDictionary* g_varDictionaryInterface; @@ -48,6 +91,140 @@ module pnacl is platform PP_Instance g_instance; PnaclApp app; + /* A wrapper to launch the Nit main on a new thread. */ + void* WrapperNitMain(void* arg) { + nit_main(0, NULL); + return NULL; + } + + /** Return whether the queues are empty. + * + * NOTE: this function assumes g_queue_mutex lock is held. + * @return non-zero if the queue is empty. */ + static int IsDictionaryQueueEmpty() { return g_dictionary_queue_size == 0; } + static int IsMessageQueueEmpty() { return g_message_queue_size == 0; } + + /** Return whether the queues are full. + * + * NOTE: this function assumes g_queue_mutex lock is held. + * @return non-zero if the queue is full. */ + static int IsDictionaryQueueFull() { return g_dictionary_queue_size == MAX_DICTIONARY_QUEUE_SIZE; } + static int IsMessageQueueFull() { return g_message_queue_size == MAX_MESSAGE_QUEUE_SIZE; } + + /* Initialize the queues. */ + void InitializeQueues() { + pthread_mutex_init(&g_dictionary_queue_mutex, NULL); + pthread_cond_init(&g_dictionary_queue_not_empty_cond, NULL); + pthread_mutex_init(&g_message_queue_mutex, NULL); + pthread_cond_init(&g_message_queue_not_empty_cond, NULL); + } + + /** Enqueue a dictionary (i.e. add to the end) + * + * If the queue is full, the dictionary will be dropped. + * + * NOTE: this function assumes g_dictionary_queue_mutex is _NOT_ held. + * @param[in] dictionary, the dictionary to enqueue. + * @return non-zero if the dictionary was added to the queue. */ + int EnqueueDictionary(struct PP_Var dictionary) { + pthread_mutex_lock(&g_dictionary_queue_mutex); + + /* We shouldn't block the main thread waiting for the queue to not be full, + * so just drop the dictionary. */ + if (IsDictionaryQueueFull()) { + pthread_mutex_unlock(&g_dictionary_queue_mutex); + return 0; + } + + g_dictionary_queue[g_dictionary_queue_end] = dictionary; + g_dictionary_queue_end = (g_dictionary_queue_end + 1) % MAX_DICTIONARY_QUEUE_SIZE; + g_dictionary_queue_size++; + + pthread_cond_signal(&g_dictionary_queue_not_empty_cond); + + pthread_mutex_unlock(&g_dictionary_queue_mutex); + + return 1; + } + + /** Enqueue a message (i.e. add to the end) + * + * If the queue is full, the message will be dropped. + * + * NOTE: this function assumes g_message_queue_mutex is _NOT_ held. + * @param[in] message The message to enqueue. + * @return non-zero if the message was added to the queue. */ + int EnqueueMessage(char* message) { + pthread_mutex_lock(&g_message_queue_mutex); + + /* We shouldn't block the main thread waiting for the queue to not be full, + * so just drop the message. */ + if (IsMessageQueueFull()) { + pthread_mutex_unlock(&g_message_queue_mutex); + return 0; + } + + g_message_queue[g_message_queue_end] = message; + g_message_queue_end = (g_message_queue_end + 1) % MAX_MESSAGE_QUEUE_SIZE; + g_message_queue_size++; + + pthread_cond_signal(&g_message_queue_not_empty_cond); + + pthread_mutex_unlock(&g_message_queue_mutex); + + return 1; + } + + /** Dequeue a dictionary and return it. + * + * This function blocks until a dictionary is available. It should not be called + * on the main thread. + * + * NOTE: this function assumes g_dictionary_queue_mutex is _NOT_ held. + * @return The dictionary at the head of the queue. */ + struct PP_Var DequeueDictionary() { + struct PP_Var dictionary = g_varDictionaryInterface->Create(); + + pthread_mutex_lock(&g_dictionary_queue_mutex); + + while (IsDictionaryQueueEmpty()) { + pthread_cond_wait(&g_dictionary_queue_not_empty_cond, &g_dictionary_queue_mutex); + } + + dictionary = g_dictionary_queue[g_dictionary_queue_start]; + g_dictionary_queue_start = (g_dictionary_queue_start + 1) % MAX_DICTIONARY_QUEUE_SIZE; + g_dictionary_queue_size--; + + pthread_mutex_unlock(&g_dictionary_queue_mutex); + + return dictionary; + } + + /** Dequeue a message and return it. + * + * This function blocks until a message is available. It should not be called + * on the main thread. + * + * NOTE: this function assumes g_queue_mutex is _NOT_ held. + * @return The message at the head of the queue. */ + char* DequeueMessage() { + char* message = NULL; + + pthread_mutex_lock(&g_message_queue_mutex); + + while (IsMessageQueueEmpty()) { + pthread_cond_wait(&g_message_queue_not_empty_cond, &g_message_queue_mutex); + } + + message = g_message_queue[g_message_queue_start]; + g_message_queue_start = (g_message_queue_start + 1) % MAX_MESSAGE_QUEUE_SIZE; + g_message_queue_size--; + + pthread_mutex_unlock(&g_message_queue_mutex); + + return message; + } + /* Posts a string message to JS. */ void PostMessage(char* message) { /* Create PP_Var containing the message body. */ @@ -69,9 +246,21 @@ module pnacl is platform g_varMessagingInterface->PostMessage(g_instance, v); } + /* char* to PP_Var. */ + static struct PP_Var CStrToVar(const char* str) { + if (g_varInterface != NULL) { + return g_varInterface->VarFromUtf8(str, strlen(str)); + } + return PP_MakeUndefined(); + } + static PP_Bool Instance_DidCreate(PP_Instance instance, uint32_t argc, const char* argn[], const char* argv[]) { g_instance = instance; - nit_main(0, NULL); + + /* Initialization of the queues and creation of the thread for Nit. */ + InitializeQueues(); + pthread_create(&g_nit_thread, NULL, &WrapperNitMain, NULL); + return PP_TRUE; } @@ -92,24 +281,22 @@ module pnacl is platform return PP_FALSE; } - /* char* to PP_Var. */ - static struct PP_Var CStrToVar(const char* str) { - if (g_varInterface != NULL) { - return g_varInterface->VarFromUtf8(str, strlen(str)); - } - return PP_MakeUndefined(); - } - /* Called when JS sends something, is set to accept Strings or Dictionaries, returns an error if received object is not a String or Dictionary. */ void Messaging_HandleMessage(PP_Instance instance, struct PP_Var varMessage) { if(varMessage.type == PP_VARTYPE_DICTIONARY) { - PnaclApp_handle_dictionary(app, &varMessage); + if(!EnqueueDictionary(varMessage)) { + struct PP_Var errorMessage = CStrToVar("QueueFull : dropped dictionary because the queue was full."); + g_varMessagingInterface->PostMessage(g_instance, errorMessage); + } } else if(varMessage.type == PP_VARTYPE_STRING) { uint32_t len; char* message = (char*)g_varInterface->VarToUtf8(varMessage, &len); - PnaclApp_handle_message(app, NativeString_to_s_with_length(message, len)); + if(!EnqueueMessage(message)) { + struct PP_Var errorMessage = CStrToVar("QueueFull : dropped message because the queue was full."); + g_varMessagingInterface->PostMessage(g_instance, errorMessage); + } } else { struct PP_Var errorMessage = CStrToVar("TypeError : only accepts JS objects or Strings"); @@ -117,9 +304,22 @@ module pnacl is platform } } + /* This function is called by Nit when using check_dictionary, + returns the dictionary at the head of the queue. */ + void* NitHandleDictionary() { + struct PP_Var dictionary = DequeueDictionary(); + PnaclApp_handle_dictionary(app, &dictionary); + return 0; + } + + /* This function is called By Nit when waiting for a user input. */ + char* NitHandleMessage() { + return DequeueMessage(); + } + /* Entry point */ PP_EXPORT int32_t PPP_InitializeModule(PP_Module module_id, PPB_GetInterface get_browser_interface) { - /* Initializing global pointers */ + /* Initializing global pointers. */ g_varMessagingInterface = (const PPB_Messaging*) get_browser_interface(PPB_MESSAGING_INTERFACE); g_varInterface = (const PPB_Var*) get_browser_interface(PPB_VAR_INTERFACE); g_varDictionaryInterface = (const PPB_VarDictionary*) get_browser_interface(PPB_VAR_DICTIONARY_INTERFACE); @@ -152,7 +352,7 @@ module pnacl is platform return NULL; } - // Hack poll + /* Hack in order to avoid the problem with file. */ int poll(void *fds, int nfds, int timeout) { return 0; } `} @@ -422,6 +622,51 @@ redef class String `} end +# A stream for PNaCl, redefines basic input and output methods. +class PnaclStream + super PollableIStream + super OStream + super BufferedIStream + + init do prepare_buffer(10) + + redef var end_reached: Bool = false + + redef fun eof do return end_reached + + # Redefintion of 'write' to send messages to the browser. + redef fun write(s: Text) do app.post_message s.to_s + + redef fun is_writable: Bool do return true + + # Checks if there is a message in the queue, and if so the message is handled automatically. + fun check_message: NativeString `{ + return NitHandleMessage(); + `} + + # fill_buffer now checks for a message in the message queue which is filled by user inputs. + redef fun fill_buffer + do + _buffer.clear + _buffer_pos = 0 + _buffer.append check_message.to_s + end +end + +# For a PNaCl app, Sys uses PnaclStreams. +redef class Sys + fun pnacl_stdstr: PnaclStream do return once new PnaclStream + + # NaCl input. + redef fun stdin do return pnacl_stdstr + + # NaCl output. + redef fun stdout do return pnacl_stdstr + + # NaCl output for errors. + redef fun stderr do return pnacl_stdstr +end + # Class that provides the tools to interact with PNaCl. class PnaclApp @@ -464,4 +709,35 @@ class PnaclApp do # To be Implemented by user. end + + # Checks if there is a dictionary in the queue, and if so the dictionary is handled automatically. + fun check_dictionary `{ + NitHandleDictionary(); + `} + + # Infinite loop on check_dictionary + fun run + do + loop + check_dictionary + end + end end + +redef interface Object + # Calls 'pthread_exit on current thread + fun exit_thread(exit_value: Int) `{ + pthread_exit((void*) exit_value); + `} + + # Redef of exit in order to avoid the module to crash by terminating only the Nit thread. + redef fun exit(exit_value: Int) + do + var dictionary = new PepperDictionary + dictionary["exit"] = exit_value + app.post_dictionary dictionary + exit_thread exit_value + end +end + +fun app: PnaclApp do return once new PnaclApp diff --git a/lib/standard/file.nit b/lib/standard/file.nit index f82a1fd..b797da1 100644 --- a/lib/standard/file.nit +++ b/lib/standard/file.nit @@ -28,39 +28,6 @@ in "C Header" `{ #include `} -redef class Object -# Simple I/O - - # Print `objects` on the standard output (`stdout`). - protected fun printn(objects: Object...) - do - sys.stdout.write(objects.to_s) - end - - # Print an `object` on the standard output (`stdout`) and add a newline. - protected fun print(object: Object) - do - sys.stdout.write(object.to_s) - sys.stdout.write("\n") - end - - # Read a character from the standard input (`stdin`). - protected fun getc: Char - do - return sys.stdin.read_char.ascii - end - - # Read a line from the standard input (`stdin`). - protected fun gets: String - do - return sys.stdin.read_line - end - - # Return the working (current) directory - protected fun getcwd: String do return file_getcwd.to_s - private fun file_getcwd: NativeString is extern "string_NativeString_NativeString_file_getcwd_0" -end - # File Abstract Stream abstract class FStream super IOS @@ -540,3 +507,32 @@ redef class Sys var stderr: OStream protected writable = new Stderr end + +# Print `objects` on the standard output (`stdout`). +protected fun printn(objects: Object...) +do + sys.stdout.write(objects.to_s) +end + +# Print an `object` on the standard output (`stdout`) and add a newline. +protected fun print(object: Object) +do + sys.stdout.write(object.to_s) + sys.stdout.write("\n") +end + +# Read a character from the standard input (`stdin`). +protected fun getc: Char +do + return sys.stdin.read_char.ascii +end + +# Read a line from the standard input (`stdin`). +protected fun gets: String +do + return sys.stdin.read_line +end + +# Return the working (current) directory +protected fun getcwd: String do return file_getcwd.to_s +private fun file_getcwd: NativeString is extern "string_NativeString_NativeString_file_getcwd_0" diff --git a/lib/standard/stream.nit b/lib/standard/stream.nit index 504396a..79e601f 100644 --- a/lib/standard/stream.nit +++ b/lib/standard/stream.nit @@ -20,6 +20,7 @@ in "C" `{ #include #include #include + #include `} # Abstract stream class diff --git a/src/abstract_compiler.nit b/src/abstract_compiler.nit index 0093e60..c2785ed 100644 --- a/src/abstract_compiler.nit +++ b/src/abstract_compiler.nit @@ -202,8 +202,12 @@ class MakefileToolchain do if self.toolcontext.opt_stacktrace.value == "nitstack" then compiler.build_c_to_nit_bindings + var platform = compiler.mainmodule.target_platform + var cc_opt_with_libgc = "-DWITH_LIBGC" + if platform != null and not platform.supports_libgc then cc_opt_with_libgc = "" + # Add gc_choser.h to aditionnal bodies - var gc_chooser = new ExternCFile("gc_chooser.c", "-DWITH_LIBGC") + var gc_chooser = new ExternCFile("gc_chooser.c", cc_opt_with_libgc) compiler.extern_bodies.add(gc_chooser) compiler.files_to_copy.add "{cc_paths.first}/gc_chooser.c" compiler.files_to_copy.add "{cc_paths.first}/gc_chooser.h" @@ -288,18 +292,19 @@ class MakefileToolchain self.toolcontext.info("Total C source files to compile: {cfiles.length}", 2) end + fun makefile_name(mainmodule: MModule): String do return "{mainmodule.name}.mk" + + fun default_outname(mainmodule: MModule): String do return mainmodule.name + fun write_makefile(compiler: AbstractCompiler, compile_dir: String, cfiles: Array[String]) do var mainmodule = compiler.mainmodule - var outname = self.toolcontext.opt_output.value - if outname == null then - outname = "{mainmodule.name}" - end + var outname = self.toolcontext.opt_output.value or else default_outname(mainmodule) var orig_dir=".." # FIXME only works if `compile_dir` is a subdirectory of cwd var outpath = orig_dir.join_path(outname).simplify_path - var makename = "{mainmodule.name}.mk" + var makename = makefile_name(mainmodule) var makepath = "{compile_dir}/{makename}" var makefile = new OFStream.open(makepath) @@ -367,7 +372,7 @@ class MakefileToolchain fun compile_c_code(compiler: AbstractCompiler, compile_dir: String) do - var makename = "{compiler.mainmodule.name}.mk" # FIXME duplicated from write_makefile + var makename = makefile_name(compiler.mainmodule) var makeflags = self.toolcontext.opt_make_flags.value if makeflags == null then makeflags = "" diff --git a/src/common_ffi/common_ffi.nit b/src/common_ffi/common_ffi.nit index 6fcef86..c22180c 100644 --- a/src/common_ffi/common_ffi.nit +++ b/src/common_ffi/common_ffi.nit @@ -32,6 +32,7 @@ import c_compiler_options import c import cpp import java +import extra_java_files redef class MModule # Does this module uses the FFI? diff --git a/src/common_ffi/extra_java_files.nit b/src/common_ffi/extra_java_files.nit new file mode 100644 index 0000000..632a322 --- /dev/null +++ b/src/common_ffi/extra_java_files.nit @@ -0,0 +1,110 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2014 Alexis Laferrière +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Intro the annotation `extra_java_files` to compile extra java files +# +# It is mainly used to declare public Java classes. +module extra_java_files + +import literal +import java + +redef class ToolContext + var extra_java_files_phase: Phase = new JavaExtraFilesPhase(self, [literal_phase]) +end + +redef class MModule + # Extra Java files to compile with the project + private var extra_java_files: nullable Array[JavaFile] = null +end + +private class JavaExtraFilesPhase + super Phase + + redef fun process_annotated_node(nmoduledecl, nat) + do + # Skip if we are not interested + var annot_name = "extra_java_files" + if nat.n_atid.n_id.text != annot_name then return + + # Do some validity checks and print errors if the annotation is used incorrectly + var modelbuilder = toolcontext.modelbuilder + + if not nmoduledecl isa AModuledecl then + modelbuilder.error(nat, "Syntax error: only the declaration of modules may use \"{annot_name}\".") + return + end + + var args = nat.n_args + if args.is_empty then + modelbuilder.error(nat, "Syntax error: \"{annot_name}\" expects at least one argument.") + return + end + + # retrieve module + var nmodule = nmoduledecl.parent.as(AModule) + var mmodule = nmodule.mmodule.as(not null) + var java_files = mmodule.extra_java_files + if java_files == null then + java_files = new Array[JavaFile] + mmodule.extra_java_files = java_files + end + + var format_error = "Syntax error: \"{annot_name}\" expects its arguments to be paths to java files." + for arg in args do + if not arg isa AExprAtArg then + modelbuilder.error(nat, format_error) + return + end + + var expr = arg.n_expr + if not expr isa AStringFormExpr then + modelbuilder.error(nat, format_error) + return + end + + var path = expr.value + assert path != null + + # Append specified path to directory of the Nit source file + var source_file = nat.location.file + if source_file != null then path = "{source_file.filename.dirname}/{path}" + + if not path.file_exists then + modelbuilder.error(nat, "FFI with Java error: file \"{path}\" not found.") + continue + end + + var file = new JavaFile(path) + mmodule.ffi_files.add file + java_files.add file + end + end +end + +redef class JavaLanguage + redef fun compile_to_files(mmodule, compdir) + do + super + + # also copy over the java files + var extra_java_files = mmodule.extra_java_files + if extra_java_files != null then for file in extra_java_files do + var path = file.filename + path.file_copy_to("{compdir}/{path.basename("")}") + end + end +end diff --git a/src/common_ffi/java.nit b/src/common_ffi/java.nit index e220db4..f6e44f7 100644 --- a/src/common_ffi/java.nit +++ b/src/common_ffi/java.nit @@ -290,8 +290,10 @@ redef class AExternPropdef var sys_class = modelbuilder.try_get_mclass_by_name(self, mmodule, "Sys") assert sys_class != null var sys_jni_env_meth = modelbuilder.try_get_mproperty_by_name2(self, mmodule, sys_class.mclass_type, "jni_env") - assert sys_jni_env_meth != null - assert sys_jni_env_meth isa MMethod + if sys_jni_env_meth == null or not sys_jni_env_meth isa MMethod then + toolcontext.error(self.location, "Java FFI error: you must import the `java` module when using the FFI with Java") + return + end explicit_call = new MExplicitCall(sys_class.mclass_type, sys_jni_env_meth, mmodule) fcc.callbacks.add(explicit_call) @@ -349,7 +351,7 @@ class JavaFile super ExternFile redef fun makefile_rule_name do return "{filename.basename(".java")}.class" - redef fun makefile_rule_content do return "javac {filename} -d ." + redef fun makefile_rule_content do return "javac {filename.basename("")} -d ." redef fun add_to_jar do return true end diff --git a/src/emscripten_platform.nit b/src/emscripten_platform.nit new file mode 100644 index 0000000..4c53b36 --- /dev/null +++ b/src/emscripten_platform.nit @@ -0,0 +1,56 @@ +# This file is part of NIT ( http://www.nitlanguage.org ) +# +# Copyright 2014 Alexis Laferrière +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Compile to JavaScript using the Emscripten SDK +module emscripten_platform + +import platform +import abstract_compiler + +redef class ToolContext + redef fun platform_from_name(name) + do + if name == "emscripten" then return new EmscriptenPlatform + return super + end +end + +class EmscriptenPlatform + super Platform + + redef fun supports_libunwind do return false + redef fun supports_libgc do return false + redef fun toolchain(toolcontext) do return new EnscriptenToolchain(toolcontext) +end + +class EnscriptenToolchain + super MakefileToolchain + + redef fun makefile_name(mainmodule) do return "{mainmodule.name}.js.mk" + + redef fun default_outname(mainmodule) do return "{super}.js" + + redef fun write_makefile(compiler, compile_dir, cfiles) + do + super + + var emcc_make_flags = "CC=emcc CFLAGS='-g -Wno-unused-value -Wno-switch -Qunused-arguments'" + + var make_flags = self.toolcontext.opt_make_flags.value or else "" + make_flags += emcc_make_flags + self.toolcontext.opt_make_flags.value = make_flags + end +end diff --git a/src/model/model.nit b/src/model/model.nit index 629dadb..6732a16 100644 --- a/src/model/model.nit +++ b/src/model/model.nit @@ -1718,6 +1718,10 @@ class MMethod super end + # Is the property defined at the top_level of the module? + # Currently such a property are stored in `Object` + var is_toplevel: Bool writable = false + # Is the property a constructor? # Warning, this property can be inherited by subclasses with or without being a constructor # therefore, you should use `is_init_for` the verify if the property is a legal constructor for a given class diff --git a/src/modelbuilder.nit b/src/modelbuilder.nit index 85f9443..3dbd389 100644 --- a/src/modelbuilder.nit +++ b/src/modelbuilder.nit @@ -474,10 +474,12 @@ class ModelBuilder var pn = rdp.basename(".nit") var mp = dirpath.join_path(pn + ".nit").simplify_path + var dirpath2 = dirpath if not mp.file_exists then if pn == "src" then # With a src directory, the group name is the name of the parent directory - pn = rdp.dirname.basename("") + dirpath2 = rdp.dirname + pn = dirpath2.basename("") else return null end @@ -498,7 +500,8 @@ class ModelBuilder mgroup = new MGroup(pn, parent.mproject, parent) toolcontext.info("found sub group `{mgroup.full_name}` at {dirpath}", 2) end - var readme = dirpath.join_path("README") + var readme = dirpath2.join_path("README.md") + if not readme.file_exists then readme = dirpath2.join_path("README") if readme.file_exists then var mdoc = new MDoc var s = new IFStream.open(readme) diff --git a/src/modelize_class.nit b/src/modelize_class.nit index 4cd9475..09b7081 100644 --- a/src/modelize_class.nit +++ b/src/modelize_class.nit @@ -97,7 +97,12 @@ redef class ModelBuilder error(nvisibility, "Error: refinement changed the visibility from a {mclass.visibility} to a {mvisibility}") end nclassdef.mclass = mclass - nmodule.mclass2nclassdef[mclass] = nclassdef + if not nmodule.mclass2nclassdef.has_key(mclass) then + nmodule.mclass2nclassdef[mclass] = nclassdef + nclassdef.all_defs = [nclassdef] + else + nmodule.mclass2nclassdef[mclass].all_defs.add(nclassdef) + end end # Visit the AST and create the `MClassDef` objects @@ -107,7 +112,14 @@ redef class ModelBuilder var objectclass = try_get_mclass_by_name(nmodule, mmodule, "Object") var mclass = nclassdef.mclass if mclass == null then return # Skip error - #var mclassdef = nclassdef.mclassdef.as(not null) + + # In case of non-standard AClassdef, try to attach to an already existing mclassdef + var other_nclassdef = nmodule.mclass2nclassdef[mclass] + if other_nclassdef != nclassdef then + assert not nclassdef isa AStdClassdef + nclassdef.mclassdef = other_nclassdef.mclassdef + return + end var names = new Array[String] var bounds = new Array[MType] @@ -281,8 +293,7 @@ redef class ModelBuilder if errcount != toolcontext.error_count then return # Create the mclassdef hierarchy - for nclassdef in nmodule.n_classdefs do - var mclassdef = nclassdef.mclassdef.as(not null) + for mclassdef in mmodule.mclassdefs do mclassdef.add_in_hierarchy end @@ -505,6 +516,8 @@ redef class AClassdef var mclass: nullable MClass # The associated MClassDef once build by a `ModelBuilder` var mclassdef: nullable MClassDef + # All (self and other) definitions for the same mclassdef + var all_defs: nullable Array[AClassdef] end redef class AClasskind diff --git a/src/modelize_property.nit b/src/modelize_property.nit index 5a4ec42..3563862 100644 --- a/src/modelize_property.nit +++ b/src/modelize_property.nit @@ -28,6 +28,7 @@ private class ModelizePropertyPhase redef fun process_nmodule(nmodule) do for nclassdef in nmodule.n_classdefs do + if nclassdef.all_defs == null then continue # skip non principal classdef toolcontext.modelbuilder.build_properties(nclassdef) end end @@ -52,14 +53,16 @@ redef class ModelBuilder build_properties(mclassdef2nclassdef[superclassdef]) end - for npropdef in nclassdef.n_propdefs do - npropdef.build_property(self, nclassdef) - end - for npropdef in nclassdef.n_propdefs do - npropdef.build_signature(self) - end - for npropdef in nclassdef.n_propdefs do - npropdef.check_signature(self) + for nclassdef2 in nclassdef.all_defs do + for npropdef in nclassdef2.n_propdefs do + npropdef.build_property(self, mclassdef) + end + for npropdef in nclassdef2.n_propdefs do + npropdef.build_signature(self) + end + for npropdef in nclassdef2.n_propdefs do + npropdef.check_signature(self) + end end process_default_constructors(nclassdef) end @@ -211,10 +214,6 @@ redef class MClass var inherit_init_from: nullable MClass = null end -redef class MClassDef - private var propdef_names = new HashSet[String] -end - redef class MPropDef # Does the MPropDef contains a call to super or a call of a super-constructor? # Subsequent phases of the frontend (esp. typing) set it if required @@ -229,7 +228,9 @@ redef class AClassdef # The free init (implicitely constructed by the class if required) var mfree_init: nullable MMethodDef = null +end +redef class MClassDef # What is the `APropdef` associated to a `MProperty`? # Used to check multiple definition of a property. var mprop2npropdef: Map[MProperty, APropdef] = new HashMap[MProperty, APropdef] @@ -264,7 +265,7 @@ redef class APropdef # The associated propdef once build by a `ModelBuilder` var mpropdef: nullable MPROPDEF writable - private fun build_property(modelbuilder: ModelBuilder, nclassdef: AClassdef) is abstract + private fun build_property(modelbuilder: ModelBuilder, mclassdef: MClassDef) is abstract private fun build_signature(modelbuilder: ModelBuilder) is abstract private fun check_signature(modelbuilder: ModelBuilder) is abstract private fun new_property_visibility(modelbuilder: ModelBuilder, mclassdef: MClassDef, nvisibility: nullable AVisibility): MVisibility @@ -310,20 +311,29 @@ redef class APropdef end end - private fun check_redef_keyword(modelbuilder: ModelBuilder, nclassdef: AClassdef, kwredef: nullable Token, need_redef: Bool, mprop: MProperty): Bool + private fun check_redef_keyword(modelbuilder: ModelBuilder, mclassdef: MClassDef, kwredef: nullable Token, need_redef: Bool, mprop: MProperty): Bool do - if nclassdef.mprop2npropdef.has_key(mprop) then - modelbuilder.error(self, "Error: A property {mprop} is already defined in class {nclassdef.mclassdef.mclass}.") + if mclassdef.mprop2npropdef.has_key(mprop) then + modelbuilder.error(self, "Error: A property {mprop} is already defined in class {mclassdef.mclass} at line {mclassdef.mprop2npropdef[mprop].location.line_start}.") return false end + if mprop isa MMethod and mprop.is_toplevel != (parent isa ATopClassdef) then + if mprop.is_toplevel then + modelbuilder.error(self, "Error: {mprop} is a top level method.") + else + modelbuilder.error(self, "Error: {mprop} is not a top level method.") + end + return false + + end if kwredef == null then if need_redef then - modelbuilder.error(self, "Redef error: {nclassdef.mclassdef.mclass}::{mprop.name} is an inherited property. To redefine it, add the redef keyword.") + modelbuilder.error(self, "Redef error: {mclassdef.mclass}::{mprop.name} is an inherited property. To redefine it, add the redef keyword.") return false end else if not need_redef then - modelbuilder.error(self, "Error: No property {nclassdef.mclassdef.mclass}::{mprop.name} is inherited. Remove the redef keyword to define a new property.") + modelbuilder.error(self, "Error: No property {mclassdef.mclass}::{mprop.name} is inherited. Remove the redef keyword to define a new property.") return false end end @@ -411,12 +421,11 @@ end redef class AMethPropdef redef type MPROPDEF: MMethodDef - redef fun build_property(modelbuilder, nclassdef) + redef fun build_property(modelbuilder, mclassdef) do var n_kwinit = n_kwinit var n_kwnew = n_kwnew var is_init = n_kwinit != null or n_kwnew != null - var mclassdef = nclassdef.mclassdef.as(not null) var name: String var amethodid = self.n_methid var name_node: ANode @@ -453,35 +462,16 @@ redef class AMethPropdef mprop = new MMethod(mclassdef, name, mvisibility) mprop.is_init = is_init mprop.is_new = n_kwnew != null - if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mprop) then return + if parent isa ATopClassdef then mprop.is_toplevel = true + if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, false, mprop) then return else - if n_kwredef == null then - if self isa AMainMethPropdef then - # no warning - else - if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mprop) then return - end - end + if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, not self isa AMainMethPropdef, mprop) then return check_redef_property_visibility(modelbuilder, self.n_visibility, mprop) end - nclassdef.mprop2npropdef[mprop] = self + mclassdef.mprop2npropdef[mprop] = self var mpropdef = new MMethodDef(mclassdef, mprop, self.location) - if mclassdef.propdef_names.has(mprop.name) then - var loc: nullable Location = null - for i in mclassdef.mpropdefs do - if i.mproperty.name == mprop.name then - loc = i.location - break - end - end - if loc == null then abort - modelbuilder.error(self, "Error: a property {mprop} is already defined in class {mclassdef.mclass} at {loc}") - end - - mclassdef.propdef_names.add(mpropdef.mproperty.name) - set_doc(mpropdef) self.mpropdef = mpropdef @@ -638,9 +628,8 @@ redef class AAttrPropdef var mreadpropdef: nullable MMethodDef writable # The associated setter (write accessor) if any var mwritepropdef: nullable MMethodDef writable - redef fun build_property(modelbuilder, nclassdef) + redef fun build_property(modelbuilder, mclassdef) do - var mclassdef = nclassdef.mclassdef.as(not null) var mclass = mclassdef.mclass var name: String @@ -665,13 +654,13 @@ redef class AAttrPropdef if mprop == null then var mvisibility = new_property_visibility(modelbuilder, mclassdef, self.n_visibility) mprop = new MAttribute(mclassdef, name, mvisibility) - if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, false, mprop) then return else assert mprop isa MAttribute check_redef_property_visibility(modelbuilder, self.n_visibility, mprop) - if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, true, mprop) then return end - nclassdef.mprop2npropdef[mprop] = self + mclassdef.mprop2npropdef[mprop] = self var mpropdef = new MAttributeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef @@ -685,12 +674,12 @@ redef class AAttrPropdef if mreadprop == null then var mvisibility = new_property_visibility(modelbuilder, mclassdef, nreadable.n_visibility) mreadprop = new MMethod(mclassdef, readname, mvisibility) - if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, false, mreadprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nreadable.n_kwredef, false, mreadprop) then return else - if not self.check_redef_keyword(modelbuilder, nclassdef, nreadable.n_kwredef, true, mreadprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nreadable.n_kwredef, true, mreadprop) then return check_redef_property_visibility(modelbuilder, nreadable.n_visibility, mreadprop) end - nclassdef.mprop2npropdef[mreadprop] = self + mclassdef.mprop2npropdef[mreadprop] = self var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef @@ -705,12 +694,12 @@ redef class AAttrPropdef if mwriteprop == null then var mvisibility = new_property_visibility(modelbuilder, mclassdef, nwritable.n_visibility) mwriteprop = new MMethod(mclassdef, writename, mvisibility) - if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, false, mwriteprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nwritable.n_kwredef, false, mwriteprop) then return else - if not self.check_redef_keyword(modelbuilder, nclassdef, nwritable.n_kwredef, true, mwriteprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nwritable.n_kwredef, true, mwriteprop) then return check_redef_property_visibility(modelbuilder, nwritable.n_visibility, mwriteprop) end - nclassdef.mprop2npropdef[mwriteprop] = self + mclassdef.mprop2npropdef[mwriteprop] = self var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef @@ -731,12 +720,12 @@ redef class AAttrPropdef if mreadprop == null then var mvisibility = new_property_visibility(modelbuilder, mclassdef, self.n_visibility) mreadprop = new MMethod(mclassdef, readname, mvisibility) - if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, false, mreadprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, false, mreadprop) then return else - if not self.check_redef_keyword(modelbuilder, nclassdef, n_kwredef, true, mreadprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, n_kwredef, true, mreadprop) then return check_redef_property_visibility(modelbuilder, self.n_visibility, mreadprop) end - nclassdef.mprop2npropdef[mreadprop] = self + mclassdef.mprop2npropdef[mreadprop] = self var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location) self.mreadpropdef = mreadpropdef @@ -756,14 +745,14 @@ redef class AAttrPropdef mvisibility = private_visibility end mwriteprop = new MMethod(mclassdef, writename, mvisibility) - if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, false, mwriteprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, false, mwriteprop) then return else - if not self.check_redef_keyword(modelbuilder, nclassdef, nwkwredef, true, mwriteprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, nwkwredef, true, mwriteprop) then return if nwritable != null then check_redef_property_visibility(modelbuilder, nwritable.n_visibility, mwriteprop) end end - nclassdef.mprop2npropdef[mwriteprop] = self + mclassdef.mprop2npropdef[mwriteprop] = self var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location) self.mwritepropdef = mwritepropdef @@ -948,9 +937,8 @@ end redef class ATypePropdef redef type MPROPDEF: MVirtualTypeDef - redef fun build_property(modelbuilder, nclassdef) + redef fun build_property(modelbuilder, mclassdef) do - var mclassdef = nclassdef.mclassdef.as(not null) var name = self.n_id.text var mprop = modelbuilder.try_get_mproperty_by_name(self.n_id, mclassdef, name) if mprop == null then @@ -960,13 +948,13 @@ redef class ATypePropdef modelbuilder.warning(n_id, "Warning: lowercase in the virtual type {name}") break end - if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, false, mprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, false, mprop) then return else - if not self.check_redef_keyword(modelbuilder, nclassdef, self.n_kwredef, true, mprop) then return + if not self.check_redef_keyword(modelbuilder, mclassdef, self.n_kwredef, true, mprop) then return assert mprop isa MVirtualTypeProp check_redef_property_visibility(modelbuilder, self.n_visibility, mprop) end - nclassdef.mprop2npropdef[mprop] = self + mclassdef.mprop2npropdef[mprop] = self var mpropdef = new MVirtualTypeDef(mclassdef, mprop, self.location) self.mpropdef = mpropdef diff --git a/src/nitg.nit b/src/nitg.nit index 0714632..66cd891 100644 --- a/src/nitg.nit +++ b/src/nitg.nit @@ -27,6 +27,7 @@ import separate_compiler import android_platform import compiler_ffi import pnacl_platform +import emscripten_platform redef class ToolContext redef fun process_options(args) diff --git a/src/nitvm.nit b/src/nitvm.nit new file mode 100644 index 0000000..9a62208 --- /dev/null +++ b/src/nitvm.nit @@ -0,0 +1,62 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2012 Jean Privat +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# The Nit virtual machine launcher +module nitvm + +import vm + +# Create a tool context to handle options and paths +var toolcontext = new ToolContext +toolcontext.tooldescription = "Usage: nitvm [OPTION]... ...\nExecutes Nit programs with a virtual machine." +# Add an option "-o" to enable compatibility with the tests.sh script +var opt = new OptionString("compatibility (does nothing)", "-o") +toolcontext.option_context.add_option(opt) +var opt_mixins = new OptionArray("Additional modules to min-in", "-m") +toolcontext.option_context.add_option(opt_mixins) +# We do not add other options, so process them now! +toolcontext.process_options(args) + +# We need a model to collect stufs +var model = new Model + +# Add a model builder to parse files +var modelbuilder = new ModelBuilder(model, toolcontext.as(not null)) + +var arguments = toolcontext.option_context.rest +var progname = arguments.first + +# Here we load and process all modules passed on the command line +var mmodules = modelbuilder.parse([progname]) +mmodules.add_all modelbuilder.parse(opt_mixins.value) +modelbuilder.run_phases + +if toolcontext.opt_only_metamodel.value then exit(0) + +var mainmodule: nullable MModule + +# Here we launch the interpreter on the main module +if mmodules.length == 1 then + mainmodule = mmodules.first +else + mainmodule = new MModule(model, null, mmodules.first.name, mmodules.first.location) + mainmodule.set_imported_mmodules(mmodules) +end + +var self_mm = mainmodule.as(not null) +var self_args = arguments.as(not null) + +modelbuilder.run_naive_interpreter(self_mm, self_args) diff --git a/src/parser/nit.sablecc3xx b/src/parser/nit.sablecc3xx index a6251b6..02b5fa2 100644 --- a/src/parser/nit.sablecc3xx +++ b/src/parser/nit.sablecc3xx @@ -366,7 +366,7 @@ extern_call_cast {-> extern_call} string_o {->string?} = string? {-> string}; -in_language = kwin string; +in_language = kwin no string [n1]:no {-> New in_language(kwin, string)}; extern_code_block = in_language? extern_code_segment; extern_code_block_o {-> extern_code_block?} = extern_code_block {-> extern_code_block} diff --git a/src/parser/parser.nit b/src/parser/parser.nit index d2599f5..28fab11 100644 --- a/src/parser/parser.nit +++ b/src/parser/parser.nit @@ -5007,11 +5007,13 @@ private class ReduceAction145 redef fun action(p: Parser) do var node_list: nullable Object = null + var nodearraylist4 = p.pop + var nodearraylist3 = p.pop var nodearraylist2 = p.pop var nodearraylist1 = p.pop var tkwinnode2 = nodearraylist1 assert tkwinnode2 isa nullable TKwin - var tstringnode3 = nodearraylist2 + var tstringnode3 = nodearraylist3 assert tstringnode3 isa nullable TString var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage( tkwinnode2, diff --git a/src/parser/tables_nit.c b/src/parser/tables_nit.c index fc403a2..02a655b 100644 --- a/src/parser/tables_nit.c +++ b/src/parser/tables_nit.c @@ -2637,9 +2637,10 @@ static int parser_action_row35[] = { 1, 0, 2 }; static int parser_action_row36[] = { - 2, - -1, 3, 35, - 89, 0, 152 + 3, + -1, 1, 378, + 0, 0, 1, + 1, 0, 2 }; static int parser_action_row37[] = { 24, @@ -3490,8 +3491,9 @@ static int parser_action_row152[] = { 84, 0, 297 }; static int parser_action_row153[] = { - 1, - -1, 1, 145 + 2, + -1, 3, 152, + 89, 0, 299 }; static int parser_action_row154[] = { 2, @@ -3559,9 +3561,9 @@ static int parser_action_row162[] = { static int parser_action_row163[] = { 4, -1, 1, 244, - 32, 0, 306, - 33, 0, 307, - 35, 0, 308 + 32, 0, 307, + 33, 0, 308, + 35, 0, 309 }; static int parser_action_row164[] = { 1, @@ -3570,29 +3572,29 @@ static int parser_action_row164[] = { static int parser_action_row165[] = { 3, -1, 1, 251, - 76, 0, 309, - 79, 0, 310 + 76, 0, 310, + 79, 0, 311 }; static int parser_action_row166[] = { 11, -1, 1, 253, - 42, 0, 311, - 67, 0, 312, - 68, 0, 313, - 72, 0, 314, - 73, 0, 315, - 74, 0, 316, - 75, 0, 317, - 77, 0, 318, - 78, 0, 319, - 80, 0, 320 + 42, 0, 312, + 67, 0, 313, + 68, 0, 314, + 72, 0, 315, + 73, 0, 316, + 74, 0, 317, + 75, 0, 318, + 77, 0, 319, + 78, 0, 320, + 80, 0, 321 }; static int parser_action_row167[] = { 4, -1, 1, 264, - 69, 0, 321, - 70, 0, 322, - 71, 0, 323 + 69, 0, 322, + 70, 0, 323, + 71, 0, 324 }; static int parser_action_row168[] = { 1, @@ -3606,13 +3608,13 @@ static int parser_action_row170[] = { 3, -1, 1, 274, 56, 0, 207, - 66, 0, 324 + 66, 0, 325 }; static int parser_action_row171[] = { 3, -1, 3, 170, - 44, 0, 326, - 85, 0, 327 + 44, 0, 327, + 85, 0, 328 }; static int parser_action_row172[] = { 2, @@ -3622,7 +3624,7 @@ static int parser_action_row172[] = { static int parser_action_row173[] = { 2, -1, 3, 172, - 84, 0, 329 + 84, 0, 330 }; static int parser_action_row174[] = { 24, @@ -3689,7 +3691,7 @@ static int parser_action_row177[] = { static int parser_action_row178[] = { 3, -1, 1, 361, - 59, 0, 332, + 59, 0, 333, 60, 0, 193 }; static int parser_action_row179[] = { @@ -3729,22 +3731,22 @@ static int parser_action_row181[] = { static int parser_action_row182[] = { 2, -1, 3, 181, - 27, 0, 335 + 27, 0, 336 }; static int parser_action_row183[] = { 3, -1, 3, 182, - 50, 0, 336, - 83, 0, 337 + 50, 0, 337, + 83, 0, 338 }; static int parser_action_row184[] = { 6, -1, 3, 183, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 54, 0, 342, - 84, 0, 343 + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 54, 0, 343, + 84, 0, 344 }; static int parser_action_row185[] = { 1, @@ -3769,8 +3771,8 @@ static int parser_action_row189[] = { static int parser_action_row190[] = { 3, -1, 3, 189, - 50, 0, 346, - 83, 0, 347 + 50, 0, 347, + 83, 0, 348 }; static int parser_action_row191[] = { 22, @@ -3875,13 +3877,13 @@ static int parser_action_row202[] = { static int parser_action_row203[] = { 8, -1, 3, 202, - 4, 0, 357, - 5, 0, 358, - 6, 0, 359, - 7, 0, 360, - 8, 0, 361, - 10, 0, 362, - 20, 0, 363 + 4, 0, 358, + 5, 0, 359, + 6, 0, 360, + 7, 0, 361, + 8, 0, 362, + 10, 0, 363, + 20, 0, 364 }; static int parser_action_row204[] = { 1, @@ -3946,9 +3948,9 @@ static int parser_action_row209[] = { static int parser_action_row210[] = { 4, -1, 1, 285, - 61, 0, 370, - 62, 0, 371, - 63, 0, 372 + 61, 0, 371, + 62, 0, 372, + 63, 0, 373 }; static int parser_action_row211[] = { 1, @@ -4041,16 +4043,16 @@ static int parser_action_row219[] = { static int parser_action_row220[] = { 4, -1, 1, 279, - 61, 0, 381, - 62, 0, 371, - 63, 0, 372 + 61, 0, 382, + 62, 0, 372, + 63, 0, 373 }; static int parser_action_row221[] = { 4, -1, 1, 281, - 61, 0, 383, - 62, 0, 371, - 63, 0, 372 + 61, 0, 384, + 62, 0, 372, + 63, 0, 373 }; static int parser_action_row222[] = { 1, @@ -4070,7 +4072,7 @@ static int parser_action_row223[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -4100,7 +4102,7 @@ static int parser_action_row225[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -4124,8 +4126,8 @@ static int parser_action_row227[] = { static int parser_action_row228[] = { 3, -1, 1, 358, - 12, 0, 388, - 84, 0, 389 + 12, 0, 389, + 84, 0, 390 }; static int parser_action_row229[] = { 2, @@ -4191,12 +4193,12 @@ static int parser_action_row240[] = { static int parser_action_row241[] = { 2, -1, 1, 87, - 14, 0, 394 + 14, 0, 395 }; static int parser_action_row242[] = { 2, -1, 3, 241, - 84, 0, 396 + 84, 0, 397 }; static int parser_action_row243[] = { 3, @@ -4258,8 +4260,8 @@ static int parser_action_row246[] = { static int parser_action_row247[] = { 3, -1, 3, 246, - 50, 0, 336, - 83, 0, 337 + 50, 0, 337, + 83, 0, 338 }; static int parser_action_row248[] = { 18, @@ -4308,13 +4310,13 @@ static int parser_action_row254[] = { 3, -1, 3, 253, 44, 0, 262, - 85, 0, 403 + 85, 0, 404 }; static int parser_action_row255[] = { 3, -1, 3, 254, 56, 0, 207, - 66, 0, 404 + 66, 0, 405 }; static int parser_action_row256[] = { 23, @@ -4330,7 +4332,7 @@ static int parser_action_row256[] = { 48, 0, 45, 51, 0, 158, 54, 0, 47, - 55, 0, 405, + 55, 0, 406, 56, 0, 48, 68, 0, 159, 83, 0, 49, @@ -4407,7 +4409,7 @@ static int parser_action_row267[] = { -1, 1, 378, 0, 0, 1, 1, 0, 2, - 27, 0, 411 + 27, 0, 412 }; static int parser_action_row268[] = { 3, @@ -4518,7 +4520,7 @@ static int parser_action_row285[] = { static int parser_action_row286[] = { 2, -1, 1, 358, - 84, 0, 389 + 84, 0, 390 }; static int parser_action_row287[] = { 2, @@ -4549,7 +4551,7 @@ static int parser_action_row291[] = { static int parser_action_row292[] = { 2, -1, 1, 205, - 61, 0, 433 + 61, 0, 434 }; static int parser_action_row293[] = { 2, @@ -4589,6 +4591,12 @@ static int parser_action_row299[] = { 1, 0, 2 }; static int parser_action_row300[] = { + 3, + -1, 1, 378, + 0, 0, 1, + 1, 0, 2 +}; +static int parser_action_row301[] = { 22, -1, 1, 360, 12, 0, 153, @@ -4613,7 +4621,7 @@ static int parser_action_row300[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row301[] = { +static int parser_action_row302[] = { 21, -1, 1, 360, 12, 0, 153, @@ -4637,13 +4645,13 @@ static int parser_action_row301[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row302[] = { +static int parser_action_row303[] = { 3, - -1, 3, 301, - 50, 0, 336, - 83, 0, 337 + -1, 3, 302, + 50, 0, 337, + 83, 0, 338 }; -static int parser_action_row303[] = { +static int parser_action_row304[] = { 20, -1, 1, 360, 12, 0, 153, @@ -4666,19 +4674,19 @@ static int parser_action_row303[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row304[] = { - 3, - -1, 3, 303, - 56, 0, 207, - 66, 0, 443 -}; static int parser_action_row305[] = { 3, -1, 3, 304, - 44, 0, 326, - 85, 0, 444 + 56, 0, 207, + 66, 0, 445 }; static int parser_action_row306[] = { + 3, + -1, 3, 305, + 44, 0, 327, + 85, 0, 446 +}; +static int parser_action_row307[] = { 20, -1, 1, 360, 12, 0, 153, @@ -4701,24 +4709,18 @@ static int parser_action_row306[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row307[] = { +static int parser_action_row308[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row308[] = { +static int parser_action_row309[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 27, 0, 447 -}; -static int parser_action_row309[] = { - 3, - -1, 1, 378, - 0, 0, 1, - 1, 0, 2 + 27, 0, 449 }; static int parser_action_row310[] = { 3, @@ -4817,53 +4819,59 @@ static int parser_action_row325[] = { 1, 0, 2 }; static int parser_action_row326[] = { + 3, + -1, 1, 378, + 0, 0, 1, + 1, 0, 2 +}; +static int parser_action_row327[] = { 1, -1, 1, 285 }; -static int parser_action_row327[] = { +static int parser_action_row328[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row328[] = { +static int parser_action_row329[] = { 1, -1, 1, 279 }; -static int parser_action_row329[] = { +static int parser_action_row330[] = { 1, -1, 1, 281 }; -static int parser_action_row330[] = { +static int parser_action_row331[] = { 1, -1, 1, 203 }; -static int parser_action_row331[] = { +static int parser_action_row332[] = { 1, -1, 1, 184 }; -static int parser_action_row332[] = { +static int parser_action_row333[] = { 1, -1, 1, 179 }; -static int parser_action_row333[] = { +static int parser_action_row334[] = { 1, -1, 1, 242 }; -static int parser_action_row334[] = { +static int parser_action_row335[] = { 1, -1, 1, 241 }; -static int parser_action_row335[] = { +static int parser_action_row336[] = { 2, - -1, 3, 334, - 27, 0, 466 + -1, 3, 335, + 27, 0, 468 }; -static int parser_action_row336[] = { +static int parser_action_row337[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -4893,170 +4901,170 @@ static int parser_action_row336[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row337[] = { +static int parser_action_row338[] = { 2, - -1, 3, 336, - 83, 0, 470 + -1, 3, 337, + 83, 0, 472 }; -static int parser_action_row338[] = { +static int parser_action_row339[] = { 3, -1, 1, 555, - 56, 0, 471, - 82, 0, 472 + 56, 0, 473, + 82, 0, 474 }; -static int parser_action_row339[] = { +static int parser_action_row340[] = { 2, - -1, 3, 338, - 66, 0, 475 + -1, 3, 339, + 66, 0, 477 }; -static int parser_action_row340[] = { +static int parser_action_row341[] = { 1, -1, 1, 339 }; -static int parser_action_row341[] = { +static int parser_action_row342[] = { 1, -1, 1, 337 }; -static int parser_action_row342[] = { +static int parser_action_row343[] = { 1, -1, 1, 338 }; -static int parser_action_row343[] = { +static int parser_action_row344[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row344[] = { +static int parser_action_row345[] = { 1, -1, 1, 336 }; -static int parser_action_row345[] = { +static int parser_action_row346[] = { 1, -1, 1, 313 }; -static int parser_action_row346[] = { +static int parser_action_row347[] = { 3, -1, 1, 316, - 54, 0, 477, + 54, 0, 479, 82, 0, 183 }; -static int parser_action_row347[] = { +static int parser_action_row348[] = { 2, - -1, 3, 346, - 83, 0, 479 + -1, 3, 347, + 83, 0, 481 }; -static int parser_action_row348[] = { +static int parser_action_row349[] = { 3, -1, 1, 316, - 56, 0, 480, + 56, 0, 482, 82, 0, 183 }; -static int parser_action_row349[] = { +static int parser_action_row350[] = { 2, - -1, 3, 348, - 59, 0, 482 + -1, 3, 349, + 59, 0, 484 }; -static int parser_action_row350[] = { +static int parser_action_row351[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row351[] = { +static int parser_action_row352[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row352[] = { +static int parser_action_row353[] = { 2, - -1, 3, 351, - 57, 0, 485 + -1, 3, 352, + 57, 0, 487 }; -static int parser_action_row353[] = { +static int parser_action_row354[] = { 1, -1, 1, 370 }; -static int parser_action_row354[] = { +static int parser_action_row355[] = { 1, -1, 1, 369 }; -static int parser_action_row355[] = { +static int parser_action_row356[] = { 1, -1, 1, 94 }; -static int parser_action_row356[] = { +static int parser_action_row357[] = { 1, -1, 1, 93 }; -static int parser_action_row357[] = { +static int parser_action_row358[] = { 1, -1, 1, 95 }; -static int parser_action_row358[] = { +static int parser_action_row359[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row359[] = { +static int parser_action_row360[] = { 1, -1, 1, 44 }; -static int parser_action_row360[] = { +static int parser_action_row361[] = { 2, - -1, 3, 359, - 5, 0, 487 + -1, 3, 360, + 5, 0, 489 }; -static int parser_action_row361[] = { +static int parser_action_row362[] = { 1, -1, 1, 46 }; -static int parser_action_row362[] = { +static int parser_action_row363[] = { 1, -1, 1, 47 }; -static int parser_action_row363[] = { - 17, - -1, 3, 362, - 56, 0, 488, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 84, 0, 503 -}; static int parser_action_row364[] = { - 2, + 17, -1, 3, 363, - 5, 0, 505 + 56, 0, 490, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 84, 0, 505 }; static int parser_action_row365[] = { + 2, + -1, 3, 364, + 5, 0, 507 +}; +static int parser_action_row366[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row366[] = { +static int parser_action_row367[] = { 1, -1, 1, 171 }; -static int parser_action_row367[] = { +static int parser_action_row368[] = { 1, -1, 1, 834 }; -static int parser_action_row368[] = { +static int parser_action_row369[] = { 31, -1, 1, 168, 12, 0, 27, @@ -5090,7 +5098,7 @@ static int parser_action_row368[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row369[] = { +static int parser_action_row370[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5115,15 +5123,15 @@ static int parser_action_row369[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row370[] = { +static int parser_action_row371[] = { 5, -1, 1, 360, - 12, 0, 507, - 49, 0, 508, + 12, 0, 509, + 49, 0, 510, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row371[] = { +static int parser_action_row372[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5148,15 +5156,15 @@ static int parser_action_row371[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row372[] = { +static int parser_action_row373[] = { 1, -1, 1, 219 }; -static int parser_action_row373[] = { +static int parser_action_row374[] = { 1, -1, 1, 220 }; -static int parser_action_row374[] = { +static int parser_action_row375[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5181,7 +5189,7 @@ static int parser_action_row374[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row375[] = { +static int parser_action_row376[] = { 24, -1, 1, 360, 12, 0, 153, @@ -5208,34 +5216,34 @@ static int parser_action_row375[] = { 92, 1, 310, 93, 0, 56 }; -static int parser_action_row376[] = { +static int parser_action_row377[] = { 1, -1, 1, 304 }; -static int parser_action_row377[] = { +static int parser_action_row378[] = { 1, -1, 1, 836 }; -static int parser_action_row378[] = { +static int parser_action_row379[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row379[] = { +static int parser_action_row380[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row380[] = { +static int parser_action_row381[] = { 1, -1, 1, 282 }; -static int parser_action_row381[] = { +static int parser_action_row382[] = { 1, -1, 1, 193 }; -static int parser_action_row382[] = { +static int parser_action_row383[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5260,7 +5268,7 @@ static int parser_action_row382[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row383[] = { +static int parser_action_row384[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5285,7 +5293,7 @@ static int parser_action_row383[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row384[] = { +static int parser_action_row385[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5310,7 +5318,7 @@ static int parser_action_row384[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row385[] = { +static int parser_action_row386[] = { 22, -1, 1, 360, 12, 0, 153, @@ -5335,21 +5343,21 @@ static int parser_action_row385[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row386[] = { +static int parser_action_row387[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row387[] = { +static int parser_action_row388[] = { 1, -1, 1, 199 }; -static int parser_action_row388[] = { +static int parser_action_row389[] = { 1, -1, 1, 201 }; -static int parser_action_row389[] = { +static int parser_action_row390[] = { 23, -1, 1, 346, 12, 0, 108, @@ -5363,7 +5371,7 @@ static int parser_action_row389[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -5375,55 +5383,55 @@ static int parser_action_row389[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row390[] = { +static int parser_action_row391[] = { 1, -1, 1, 363 }; -static int parser_action_row391[] = { +static int parser_action_row392[] = { 1, -1, 1, 14 }; -static int parser_action_row392[] = { +static int parser_action_row393[] = { 7, - -1, 3, 391, - 5, 0, 358, - 6, 0, 359, - 7, 0, 360, - 8, 0, 361, - 10, 0, 362, - 20, 0, 363 + -1, 3, 392, + 5, 0, 359, + 6, 0, 360, + 7, 0, 361, + 8, 0, 362, + 10, 0, 363, + 20, 0, 364 }; -static int parser_action_row393[] = { +static int parser_action_row394[] = { 1, -1, 1, 15 }; -static int parser_action_row394[] = { +static int parser_action_row395[] = { 2, - -1, 3, 393, - 84, 0, 524 + -1, 3, 394, + 84, 0, 526 }; -static int parser_action_row395[] = { +static int parser_action_row396[] = { 7, - -1, 3, 394, + -1, 3, 395, 0, 0, 83, 1, 0, 84, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row396[] = { +static int parser_action_row397[] = { 3, - -1, 3, 395, + -1, 3, 396, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row397[] = { +static int parser_action_row398[] = { 2, -1, 1, 354, 60, 0, 193 }; -static int parser_action_row398[] = { +static int parser_action_row399[] = { 23, -1, 1, 360, 12, 0, 153, @@ -5437,7 +5445,7 @@ static int parser_action_row398[] = { 48, 0, 45, 51, 0, 158, 54, 0, 47, - 55, 0, 531, + 55, 0, 533, 56, 0, 48, 68, 0, 159, 83, 0, 49, @@ -5449,45 +5457,45 @@ static int parser_action_row398[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row399[] = { +static int parser_action_row400[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row400[] = { +static int parser_action_row401[] = { 1, -1, 1, 504 }; -static int parser_action_row401[] = { +static int parser_action_row402[] = { 3, -1, 1, 342, 54, 0, 242, - 66, 0, 534 + 66, 0, 536 }; -static int parser_action_row402[] = { +static int parser_action_row403[] = { 1, -1, 1, 525 }; -static int parser_action_row403[] = { +static int parser_action_row404[] = { 3, - -1, 3, 402, - 50, 0, 336, - 83, 0, 337 + -1, 3, 403, + 50, 0, 337, + 83, 0, 338 }; -static int parser_action_row404[] = { +static int parser_action_row405[] = { 3, -1, 1, 529, 56, 1, 531, 66, 1, 531 }; -static int parser_action_row405[] = { +static int parser_action_row406[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row406[] = { +static int parser_action_row407[] = { 6, -1, 1, 345, 56, 1, 341, @@ -5496,26 +5504,26 @@ static int parser_action_row406[] = { 63, 1, 341, 66, 1, 341 }; -static int parser_action_row407[] = { +static int parser_action_row408[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row408[] = { +static int parser_action_row409[] = { 2, - -1, 3, 407, - 55, 0, 539 + -1, 3, 408, + 55, 0, 541 }; -static int parser_action_row409[] = { +static int parser_action_row410[] = { 1, -1, 1, 524 }; -static int parser_action_row410[] = { +static int parser_action_row411[] = { 1, -1, 1, 534 }; -static int parser_action_row411[] = { +static int parser_action_row412[] = { 19, -1, 1, 360, 12, 0, 108, @@ -5537,13 +5545,13 @@ static int parser_action_row411[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row412[] = { +static int parser_action_row413[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row413[] = { +static int parser_action_row414[] = { 19, -1, 1, 360, 12, 0, 108, @@ -5565,7 +5573,7 @@ static int parser_action_row413[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row414[] = { +static int parser_action_row415[] = { 19, -1, 1, 360, 12, 0, 108, @@ -5587,7 +5595,7 @@ static int parser_action_row414[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row415[] = { +static int parser_action_row416[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5608,7 +5616,7 @@ static int parser_action_row415[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row416[] = { +static int parser_action_row417[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5629,13 +5637,13 @@ static int parser_action_row416[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row417[] = { +static int parser_action_row418[] = { 3, - -1, 3, 416, - 50, 0, 346, - 83, 0, 347 + -1, 3, 417, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row418[] = { +static int parser_action_row419[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5656,7 +5664,7 @@ static int parser_action_row418[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row419[] = { +static int parser_action_row420[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5677,7 +5685,7 @@ static int parser_action_row419[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row420[] = { +static int parser_action_row421[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5698,7 +5706,7 @@ static int parser_action_row420[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row421[] = { +static int parser_action_row422[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5719,7 +5727,7 @@ static int parser_action_row421[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row422[] = { +static int parser_action_row423[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5740,7 +5748,7 @@ static int parser_action_row422[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row423[] = { +static int parser_action_row424[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5761,7 +5769,7 @@ static int parser_action_row423[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row424[] = { +static int parser_action_row425[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5782,7 +5790,7 @@ static int parser_action_row424[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row425[] = { +static int parser_action_row426[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5803,7 +5811,7 @@ static int parser_action_row425[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row426[] = { +static int parser_action_row427[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5824,7 +5832,7 @@ static int parser_action_row426[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row427[] = { +static int parser_action_row428[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5845,7 +5853,7 @@ static int parser_action_row427[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row428[] = { +static int parser_action_row429[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5866,7 +5874,7 @@ static int parser_action_row428[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row429[] = { +static int parser_action_row430[] = { 18, -1, 1, 360, 12, 0, 108, @@ -5887,18 +5895,18 @@ static int parser_action_row429[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row430[] = { +static int parser_action_row431[] = { 5, -1, 1, 360, - 12, 0, 559, - 49, 0, 560, + 12, 0, 561, + 49, 0, 562, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row431[] = { +static int parser_action_row432[] = { 30, -1, 1, 360, - 9, 0, 563, + 9, 0, 565, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -5928,87 +5936,91 @@ static int parser_action_row431[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row432[] = { +static int parser_action_row433[] = { 3, - -1, 3, 431, + -1, 3, 432, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row433[] = { +static int parser_action_row434[] = { 3, - -1, 3, 432, - 50, 0, 346, - 83, 0, 347 + -1, 3, 433, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row434[] = { +static int parser_action_row435[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row435[] = { - 2, - -1, 1, 206, - 61, 0, 567 -}; static int parser_action_row436[] = { 2, - -1, 3, 435, - 26, 0, 568 + -1, 1, 206, + 61, 0, 569 }; static int parser_action_row437[] = { 2, -1, 3, 436, - 15, 0, 569 + 26, 0, 570 }; static int parser_action_row438[] = { 2, -1, 3, 437, - 84, 0, 297 + 15, 0, 571 }; static int parser_action_row439[] = { - 3, + 2, -1, 3, 438, - 31, 0, 571, - 58, 0, 572 + 84, 0, 297 }; static int parser_action_row440[] = { 3, + -1, 3, 439, + 31, 0, 573, + 58, 0, 574 +}; +static int parser_action_row441[] = { + 1, + -1, 1, 145 +}; +static int parser_action_row442[] = { + 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row441[] = { +static int parser_action_row443[] = { 1, -1, 1, 252 }; -static int parser_action_row442[] = { +static int parser_action_row444[] = { 3, -1, 1, 342, 54, 0, 242, - 66, 0, 475 + 66, 0, 477 }; -static int parser_action_row443[] = { +static int parser_action_row445[] = { 1, -1, 1, 273 }; -static int parser_action_row444[] = { +static int parser_action_row446[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row445[] = { +static int parser_action_row447[] = { 3, -1, 1, 277, 56, 1, 279, 66, 1, 279 }; -static int parser_action_row446[] = { +static int parser_action_row448[] = { 1, -1, 1, 272 }; -static int parser_action_row447[] = { +static int parser_action_row449[] = { 21, -1, 1, 360, 12, 0, 153, @@ -6032,13 +6044,13 @@ static int parser_action_row447[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row448[] = { +static int parser_action_row450[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row449[] = { +static int parser_action_row451[] = { 21, -1, 1, 360, 12, 0, 153, @@ -6062,7 +6074,7 @@ static int parser_action_row449[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row450[] = { +static int parser_action_row452[] = { 21, -1, 1, 360, 12, 0, 153, @@ -6086,7 +6098,7 @@ static int parser_action_row450[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row451[] = { +static int parser_action_row453[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6109,7 +6121,7 @@ static int parser_action_row451[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row452[] = { +static int parser_action_row454[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6132,13 +6144,13 @@ static int parser_action_row452[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row453[] = { +static int parser_action_row455[] = { 3, - -1, 3, 452, - 50, 0, 346, - 83, 0, 347 + -1, 3, 454, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row454[] = { +static int parser_action_row456[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6161,7 +6173,7 @@ static int parser_action_row454[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row455[] = { +static int parser_action_row457[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6184,7 +6196,7 @@ static int parser_action_row455[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row456[] = { +static int parser_action_row458[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6207,7 +6219,7 @@ static int parser_action_row456[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row457[] = { +static int parser_action_row459[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6230,7 +6242,7 @@ static int parser_action_row457[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row458[] = { +static int parser_action_row460[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6253,7 +6265,7 @@ static int parser_action_row458[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row459[] = { +static int parser_action_row461[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6276,7 +6288,7 @@ static int parser_action_row459[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row460[] = { +static int parser_action_row462[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6299,7 +6311,7 @@ static int parser_action_row460[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row461[] = { +static int parser_action_row463[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6322,7 +6334,7 @@ static int parser_action_row461[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row462[] = { +static int parser_action_row464[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6345,7 +6357,7 @@ static int parser_action_row462[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row463[] = { +static int parser_action_row465[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6368,7 +6380,7 @@ static int parser_action_row463[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row464[] = { +static int parser_action_row466[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6391,7 +6403,7 @@ static int parser_action_row464[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row465[] = { +static int parser_action_row467[] = { 20, -1, 1, 360, 12, 0, 153, @@ -6414,20 +6426,20 @@ static int parser_action_row465[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row466[] = { +static int parser_action_row468[] = { 5, -1, 1, 360, - 12, 0, 595, - 49, 0, 508, + 12, 0, 597, + 49, 0, 510, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row467[] = { +static int parser_action_row469[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -6457,18 +6469,18 @@ static int parser_action_row467[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row468[] = { +static int parser_action_row470[] = { 1, -1, 1, 163 }; -static int parser_action_row469[] = { +static int parser_action_row471[] = { 1, -1, 1, 238 }; -static int parser_action_row470[] = { +static int parser_action_row472[] = { 30, -1, 1, 360, - 9, 0, 599, + 9, 0, 601, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -6498,76 +6510,76 @@ static int parser_action_row470[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row471[] = { +static int parser_action_row473[] = { 3, -1, 1, 555, - 56, 0, 601, - 82, 0, 472 + 56, 0, 603, + 82, 0, 474 }; -static int parser_action_row472[] = { +static int parser_action_row474[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row473[] = { +static int parser_action_row475[] = { 6, - -1, 3, 472, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 54, 0, 604, - 84, 0, 343 + -1, 3, 474, + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 54, 0, 606, + 84, 0, 344 }; -static int parser_action_row474[] = { +static int parser_action_row476[] = { 1, -1, 1, 554 }; -static int parser_action_row475[] = { +static int parser_action_row477[] = { 1, -1, 1, 450 }; -static int parser_action_row476[] = { +static int parser_action_row478[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row477[] = { +static int parser_action_row479[] = { 5, - -1, 3, 476, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + -1, 3, 478, + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row478[] = { +static int parser_action_row480[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row479[] = { +static int parser_action_row481[] = { 1, -1, 1, 317 }; -static int parser_action_row480[] = { +static int parser_action_row482[] = { 3, -1, 1, 316, - 56, 0, 610, + 56, 0, 612, 82, 0, 183 }; -static int parser_action_row481[] = { +static int parser_action_row483[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row482[] = { +static int parser_action_row484[] = { 1, -1, 1, 151 }; -static int parser_action_row483[] = { +static int parser_action_row485[] = { 22, -1, 1, 360, 12, 0, 153, @@ -6592,117 +6604,117 @@ static int parser_action_row483[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row484[] = { +static int parser_action_row486[] = { 2, - -1, 3, 483, - 55, 0, 614 + -1, 3, 485, + 55, 0, 616 }; -static int parser_action_row485[] = { +static int parser_action_row487[] = { 3, -1, 1, 348, - 58, 0, 615, - 65, 0, 616 + 58, 0, 617, + 65, 0, 618 }; -static int parser_action_row486[] = { +static int parser_action_row488[] = { 1, -1, 1, 347 }; -static int parser_action_row487[] = { +static int parser_action_row489[] = { 4, - -1, 3, 486, - 9, 0, 619, + -1, 3, 488, + 9, 0, 621, 60, 0, 238, 84, 0, 239 }; -static int parser_action_row488[] = { +static int parser_action_row490[] = { 1, -1, 1, 45 }; -static int parser_action_row489[] = { +static int parser_action_row491[] = { 2, - -1, 3, 488, - 57, 0, 621 + -1, 3, 490, + 57, 0, 623 }; -static int parser_action_row490[] = { +static int parser_action_row492[] = { 1, -1, 1, 97 }; -static int parser_action_row491[] = { +static int parser_action_row493[] = { 1, -1, 1, 98 }; -static int parser_action_row492[] = { +static int parser_action_row494[] = { 1, -1, 1, 99 }; -static int parser_action_row493[] = { +static int parser_action_row495[] = { 1, -1, 1, 100 }; -static int parser_action_row494[] = { +static int parser_action_row496[] = { 1, -1, 1, 101 }; -static int parser_action_row495[] = { +static int parser_action_row497[] = { 1, -1, 1, 102 }; -static int parser_action_row496[] = { +static int parser_action_row498[] = { 1, -1, 1, 103 }; -static int parser_action_row497[] = { +static int parser_action_row499[] = { 1, -1, 1, 106 }; -static int parser_action_row498[] = { +static int parser_action_row500[] = { 1, -1, 1, 104 }; -static int parser_action_row499[] = { +static int parser_action_row501[] = { 1, -1, 1, 108 }; -static int parser_action_row500[] = { +static int parser_action_row502[] = { 1, -1, 1, 107 }; -static int parser_action_row501[] = { +static int parser_action_row503[] = { 1, -1, 1, 105 }; -static int parser_action_row502[] = { +static int parser_action_row504[] = { 1, -1, 1, 109 }; -static int parser_action_row503[] = { +static int parser_action_row505[] = { 1, -1, 1, 111 }; -static int parser_action_row504[] = { +static int parser_action_row506[] = { 2, -1, 1, 96, - 61, 0, 622 + 61, 0, 624 }; -static int parser_action_row505[] = { +static int parser_action_row507[] = { 5, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 59, 0, 624 + 54, 0, 625, + 59, 0, 626 }; -static int parser_action_row506[] = { +static int parser_action_row508[] = { 1, -1, 1, 48 }; -static int parser_action_row507[] = { +static int parser_action_row509[] = { 3, - -1, 3, 506, - 83, 0, 628, - 84, 0, 629 + -1, 3, 508, + 83, 0, 630, + 84, 0, 631 }; -static int parser_action_row508[] = { +static int parser_action_row510[] = { 25, -1, 1, 346, 12, 0, 108, @@ -6730,18 +6742,18 @@ static int parser_action_row508[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row509[] = { +static int parser_action_row511[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row510[] = { +static int parser_action_row512[] = { 2, - -1, 3, 509, - 85, 0, 636 + -1, 3, 511, + 85, 0, 638 }; -static int parser_action_row511[] = { +static int parser_action_row513[] = { 28, -1, 1, 346, 12, 0, 108, @@ -6772,58 +6784,58 @@ static int parser_action_row511[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row512[] = { +static int parser_action_row514[] = { 3, -1, 1, 357, - 12, 0, 639, + 12, 0, 641, 84, 0, 223 }; -static int parser_action_row513[] = { +static int parser_action_row515[] = { 4, -1, 1, 359, - 12, 0, 640, + 12, 0, 642, 83, 0, 49, 84, 0, 225 }; -static int parser_action_row514[] = { +static int parser_action_row516[] = { 1, -1, 1, 213 }; -static int parser_action_row515[] = { +static int parser_action_row517[] = { 1, -1, 1, 218 }; -static int parser_action_row516[] = { +static int parser_action_row518[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row517[] = { +static int parser_action_row519[] = { 1, -1, 1, 305 }; -static int parser_action_row518[] = { +static int parser_action_row520[] = { 1, -1, 1, 306 }; -static int parser_action_row519[] = { +static int parser_action_row521[] = { 1, -1, 1, 210 }; -static int parser_action_row520[] = { +static int parser_action_row522[] = { 1, -1, 1, 215 }; -static int parser_action_row521[] = { +static int parser_action_row523[] = { 1, -1, 1, 212 }; -static int parser_action_row522[] = { +static int parser_action_row524[] = { 1, -1, 1, 217 }; -static int parser_action_row523[] = { +static int parser_action_row525[] = { 23, -1, 1, 360, 12, 0, 153, @@ -6837,7 +6849,7 @@ static int parser_action_row523[] = { 48, 0, 45, 51, 0, 158, 54, 0, 47, - 55, 0, 643, + 55, 0, 645, 56, 0, 48, 68, 0, 159, 83, 0, 49, @@ -6849,86 +6861,86 @@ static int parser_action_row523[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row524[] = { +static int parser_action_row526[] = { 1, -1, 1, 200 }; -static int parser_action_row525[] = { +static int parser_action_row527[] = { 2, -1, 1, 355, 60, 0, 193 }; -static int parser_action_row526[] = { +static int parser_action_row528[] = { 2, - -1, 3, 525, - 84, 0, 645 + -1, 3, 527, + 84, 0, 647 }; -static int parser_action_row527[] = { +static int parser_action_row529[] = { 2, -1, 1, 320, - 58, 0, 646 + 58, 0, 648 }; -static int parser_action_row528[] = { +static int parser_action_row530[] = { 1, -1, 1, 85 }; -static int parser_action_row529[] = { +static int parser_action_row531[] = { 1, -1, 1, 319 }; -static int parser_action_row530[] = { +static int parser_action_row532[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row531[] = { +static int parser_action_row533[] = { 1, -1, 1, 16 }; -static int parser_action_row532[] = { +static int parser_action_row534[] = { 1, -1, 1, 341 }; -static int parser_action_row533[] = { +static int parser_action_row535[] = { 2, - -1, 3, 532, - 55, 0, 653 + -1, 3, 534, + 55, 0, 655 }; -static int parser_action_row534[] = { +static int parser_action_row536[] = { 2, - -1, 3, 533, - 26, 0, 654 + -1, 3, 535, + 26, 0, 656 }; -static int parser_action_row535[] = { +static int parser_action_row537[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row536[] = { +static int parser_action_row538[] = { 1, -1, 1, 527 }; -static int parser_action_row537[] = { +static int parser_action_row539[] = { 2, - -1, 3, 536, - 66, 0, 534 + -1, 3, 538, + 66, 0, 536 }; -static int parser_action_row538[] = { +static int parser_action_row540[] = { 5, -1, 1, 360, - 12, 0, 559, - 49, 0, 560, + 12, 0, 561, + 49, 0, 562, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row539[] = { +static int parser_action_row541[] = { 2, -1, 1, 348, - 58, 0, 615 + 58, 0, 617 }; -static int parser_action_row540[] = { +static int parser_action_row542[] = { 6, -1, 1, 343, 56, 1, 340, @@ -6937,11 +6949,11 @@ static int parser_action_row540[] = { 63, 1, 340, 66, 1, 340 }; -static int parser_action_row541[] = { +static int parser_action_row543[] = { 1, -1, 1, 500 }; -static int parser_action_row542[] = { +static int parser_action_row544[] = { 19, -1, 1, 360, 12, 0, 108, @@ -6963,127 +6975,127 @@ static int parser_action_row542[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row543[] = { +static int parser_action_row545[] = { 1, -1, 1, 499 }; -static int parser_action_row544[] = { +static int parser_action_row546[] = { 1, -1, 1, 502 }; -static int parser_action_row545[] = { +static int parser_action_row547[] = { 3, -1, 1, 510, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row546[] = { +static int parser_action_row548[] = { 3, -1, 1, 513, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row547[] = { +static int parser_action_row549[] = { 1, -1, 1, 515 }; -static int parser_action_row548[] = { +static int parser_action_row550[] = { 4, -1, 1, 517, 69, 0, 280, 70, 0, 281, 71, 0, 282 }; -static int parser_action_row549[] = { +static int parser_action_row551[] = { 4, -1, 1, 518, 69, 0, 280, 70, 0, 281, 71, 0, 282 }; -static int parser_action_row550[] = { +static int parser_action_row552[] = { 3, -1, 1, 506, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row551[] = { +static int parser_action_row553[] = { 3, -1, 1, 507, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row552[] = { +static int parser_action_row554[] = { 3, -1, 1, 508, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row553[] = { +static int parser_action_row555[] = { 3, -1, 1, 509, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row554[] = { +static int parser_action_row556[] = { 3, -1, 1, 511, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row555[] = { +static int parser_action_row557[] = { 3, -1, 1, 512, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row556[] = { +static int parser_action_row558[] = { 3, -1, 1, 514, 67, 0, 271, 68, 0, 272 }; -static int parser_action_row557[] = { +static int parser_action_row559[] = { 1, -1, 1, 520 }; -static int parser_action_row558[] = { +static int parser_action_row560[] = { 1, -1, 1, 521 }; -static int parser_action_row559[] = { +static int parser_action_row561[] = { 1, -1, 1, 522 }; -static int parser_action_row560[] = { +static int parser_action_row562[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row561[] = { +static int parser_action_row563[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row562[] = { +static int parser_action_row564[] = { 2, - -1, 3, 561, - 85, 0, 660 + -1, 3, 563, + 85, 0, 662 }; -static int parser_action_row563[] = { +static int parser_action_row565[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row564[] = { +static int parser_action_row566[] = { 1, -1, 1, 169 }; -static int parser_action_row565[] = { +static int parser_action_row567[] = { 30, -1, 1, 360, - 9, 0, 662, + 9, 0, 664, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -7113,11 +7125,11 @@ static int parser_action_row565[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row566[] = { +static int parser_action_row568[] = { 1, -1, 1, 159 }; -static int parser_action_row567[] = { +static int parser_action_row569[] = { 22, -1, 1, 360, 12, 0, 153, @@ -7142,37 +7154,37 @@ static int parser_action_row567[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row568[] = { +static int parser_action_row570[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row569[] = { +static int parser_action_row571[] = { 33, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 665, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 27, 0, 670, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 667, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 27, 0, 672, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -7184,7 +7196,7 @@ static int parser_action_row569[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row570[] = { +static int parser_action_row572[] = { 32, -1, 1, 360, 0, 0, 1, @@ -7219,46 +7231,46 @@ static int parser_action_row570[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row571[] = { +static int parser_action_row573[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row572[] = { +static int parser_action_row574[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row573[] = { +static int parser_action_row575[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row574[] = { +static int parser_action_row576[] = { 2, - -1, 3, 573, - 26, 0, 702 + -1, 3, 575, + 26, 0, 704 }; -static int parser_action_row575[] = { +static int parser_action_row577[] = { 1, -1, 1, 275 }; -static int parser_action_row576[] = { +static int parser_action_row578[] = { 5, -1, 1, 360, - 12, 0, 595, - 49, 0, 508, + 12, 0, 597, + 49, 0, 510, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row577[] = { +static int parser_action_row579[] = { 1, -1, 1, 248 }; -static int parser_action_row578[] = { +static int parser_action_row580[] = { 21, -1, 1, 360, 12, 0, 153, @@ -7282,169 +7294,169 @@ static int parser_action_row578[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row579[] = { +static int parser_action_row581[] = { 1, -1, 1, 247 }; -static int parser_action_row580[] = { +static int parser_action_row582[] = { 1, -1, 1, 250 }; -static int parser_action_row581[] = { +static int parser_action_row583[] = { 3, -1, 1, 258, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row582[] = { +static int parser_action_row584[] = { 3, -1, 1, 261, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row583[] = { +static int parser_action_row585[] = { 1, -1, 1, 263 }; -static int parser_action_row584[] = { +static int parser_action_row586[] = { 4, -1, 1, 265, - 69, 0, 321, - 70, 0, 322, - 71, 0, 323 + 69, 0, 322, + 70, 0, 323, + 71, 0, 324 }; -static int parser_action_row585[] = { +static int parser_action_row587[] = { 4, -1, 1, 266, - 69, 0, 321, - 70, 0, 322, - 71, 0, 323 + 69, 0, 322, + 70, 0, 323, + 71, 0, 324 }; -static int parser_action_row586[] = { +static int parser_action_row588[] = { 3, -1, 1, 254, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row587[] = { +static int parser_action_row589[] = { 3, -1, 1, 255, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row588[] = { +static int parser_action_row590[] = { 3, -1, 1, 256, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row589[] = { +static int parser_action_row591[] = { 3, -1, 1, 257, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row590[] = { +static int parser_action_row592[] = { 3, -1, 1, 259, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row591[] = { +static int parser_action_row593[] = { 3, -1, 1, 260, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row592[] = { +static int parser_action_row594[] = { 3, -1, 1, 262, - 67, 0, 312, - 68, 0, 313 + 67, 0, 313, + 68, 0, 314 }; -static int parser_action_row593[] = { +static int parser_action_row595[] = { 1, -1, 1, 268 }; -static int parser_action_row594[] = { +static int parser_action_row596[] = { 1, -1, 1, 269 }; -static int parser_action_row595[] = { +static int parser_action_row597[] = { 1, -1, 1, 270 }; -static int parser_action_row596[] = { +static int parser_action_row598[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row597[] = { +static int parser_action_row599[] = { 2, - -1, 3, 596, - 85, 0, 705 + -1, 3, 598, + 85, 0, 707 }; -static int parser_action_row598[] = { +static int parser_action_row600[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row599[] = { +static int parser_action_row601[] = { 1, -1, 1, 239 }; -static int parser_action_row600[] = { +static int parser_action_row602[] = { 1, -1, 1, 162 }; -static int parser_action_row601[] = { +static int parser_action_row603[] = { 1, -1, 1, 161 }; -static int parser_action_row602[] = { +static int parser_action_row604[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row603[] = { +static int parser_action_row605[] = { 1, -1, 1, 451 }; -static int parser_action_row604[] = { +static int parser_action_row606[] = { 3, - -1, 3, 603, - 50, 0, 346, - 83, 0, 347 + -1, 3, 605, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row605[] = { +static int parser_action_row607[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row606[] = { +static int parser_action_row608[] = { 2, -1, 1, 555, - 82, 0, 472 + 82, 0, 474 }; -static int parser_action_row607[] = { +static int parser_action_row609[] = { 1, -1, 1, 552 }; -static int parser_action_row608[] = { +static int parser_action_row610[] = { 3, - -1, 3, 607, + -1, 3, 609, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row609[] = { +static int parser_action_row611[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row610[] = { +static int parser_action_row612[] = { 35, -1, 1, 360, 12, 0, 153, @@ -7455,10 +7467,10 @@ static int parser_action_row610[] = { 29, 0, 33, 30, 0, 34, 34, 0, 155, - 36, 0, 716, - 37, 0, 717, - 38, 0, 718, - 39, 0, 719, + 36, 0, 718, + 37, 0, 719, + 38, 0, 720, + 39, 0, 721, 40, 0, 40, 41, 0, 156, 43, 0, 157, @@ -7466,14 +7478,14 @@ static int parser_action_row610[] = { 46, 0, 43, 47, 0, 44, 48, 0, 45, - 50, 0, 346, + 50, 0, 347, 51, 0, 158, - 53, 0, 720, + 53, 0, 722, 54, 0, 47, 56, 0, 48, 68, 0, 159, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 51, 87, 0, 52, @@ -7482,160 +7494,160 @@ static int parser_action_row610[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row611[] = { +static int parser_action_row613[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row612[] = { +static int parser_action_row614[] = { 1, -1, 1, 152 }; -static int parser_action_row613[] = { +static int parser_action_row615[] = { 3, - -1, 3, 612, - 50, 0, 346, - 83, 0, 347 + -1, 3, 614, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row614[] = { +static int parser_action_row616[] = { 1, -1, 1, 202 }; -static int parser_action_row615[] = { +static int parser_action_row617[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row616[] = { +static int parser_action_row618[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row617[] = { +static int parser_action_row619[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row618[] = { +static int parser_action_row620[] = { 1, -1, 1, 843 }; -static int parser_action_row619[] = { +static int parser_action_row621[] = { 2, -1, 1, 349, - 58, 0, 615 + 58, 0, 617 }; -static int parser_action_row620[] = { +static int parser_action_row622[] = { 3, - -1, 3, 619, + -1, 3, 621, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row621[] = { +static int parser_action_row623[] = { 2, -1, 1, 87, - 14, 0, 394 + 14, 0, 395 }; -static int parser_action_row622[] = { +static int parser_action_row624[] = { 2, -1, 1, 110, - 61, 0, 746 + 61, 0, 748 }; -static int parser_action_row623[] = { +static int parser_action_row625[] = { 1, -1, 1, 112 }; -static int parser_action_row624[] = { +static int parser_action_row626[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row625[] = { +static int parser_action_row627[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row626[] = { +static int parser_action_row628[] = { 4, -1, 1, 129, - 4, 0, 749, - 14, 0, 750, - 15, 0, 751 + 4, 0, 751, + 14, 0, 752, + 15, 0, 753 }; -static int parser_action_row627[] = { +static int parser_action_row629[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row628[] = { +static int parser_action_row630[] = { 1, -1, 1, 117 }; -static int parser_action_row629[] = { +static int parser_action_row631[] = { 2, -1, 1, 365, 60, 0, 192 }; -static int parser_action_row630[] = { +static int parser_action_row632[] = { 2, - -1, 3, 629, + -1, 3, 631, 60, 0, 193 }; -static int parser_action_row631[] = { +static int parser_action_row633[] = { 2, -1, 1, 51, - 56, 0, 756 + 56, 0, 758 }; -static int parser_action_row632[] = { +static int parser_action_row634[] = { 2, - -1, 3, 631, - 83, 0, 758 + -1, 3, 633, + 83, 0, 760 }; -static int parser_action_row633[] = { +static int parser_action_row635[] = { 3, - -1, 3, 632, - 83, 0, 759, - 84, 0, 629 + -1, 3, 634, + 83, 0, 761, + 84, 0, 631 }; -static int parser_action_row634[] = { +static int parser_action_row636[] = { 1, -1, 1, 283 }; -static int parser_action_row635[] = { +static int parser_action_row637[] = { 1, -1, 1, 194 }; -static int parser_action_row636[] = { +static int parser_action_row638[] = { 3, - -1, 3, 635, - 34, 0, 761, - 54, 0, 762 + -1, 3, 637, + 34, 0, 763, + 54, 0, 764 }; -static int parser_action_row637[] = { +static int parser_action_row639[] = { 4, -1, 1, 278, - 61, 0, 763, - 62, 0, 371, - 63, 0, 372 + 61, 0, 765, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row638[] = { +static int parser_action_row640[] = { 4, -1, 1, 280, - 61, 0, 765, - 62, 0, 371, - 63, 0, 372 + 61, 0, 767, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row639[] = { +static int parser_action_row641[] = { 1, -1, 1, 191 }; -static int parser_action_row640[] = { +static int parser_action_row642[] = { 23, -1, 1, 346, 12, 0, 108, @@ -7649,7 +7661,7 @@ static int parser_action_row640[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -7661,7 +7673,7 @@ static int parser_action_row640[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row641[] = { +static int parser_action_row643[] = { 23, -1, 1, 346, 12, 0, 108, @@ -7675,7 +7687,7 @@ static int parser_action_row641[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -7687,63 +7699,63 @@ static int parser_action_row641[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row642[] = { +static int parser_action_row644[] = { 3, -1, 1, 358, - 12, 0, 769, - 84, 0, 389 + 12, 0, 771, + 84, 0, 390 }; -static int parser_action_row643[] = { +static int parser_action_row645[] = { 1, -1, 1, 309 }; -static int parser_action_row644[] = { +static int parser_action_row646[] = { 1, -1, 1, 345 }; -static int parser_action_row645[] = { +static int parser_action_row647[] = { 2, - -1, 3, 644, - 55, 0, 770 + -1, 3, 646, + 55, 0, 772 }; -static int parser_action_row646[] = { +static int parser_action_row648[] = { 2, -1, 1, 356, 60, 0, 193 }; -static int parser_action_row647[] = { +static int parser_action_row649[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row648[] = { +static int parser_action_row650[] = { 1, -1, 1, 837 }; -static int parser_action_row649[] = { +static int parser_action_row651[] = { 2, -1, 1, 321, - 58, 0, 646 + 58, 0, 648 }; -static int parser_action_row650[] = { +static int parser_action_row652[] = { 2, - -1, 3, 649, - 9, 0, 773 + -1, 3, 651, + 9, 0, 775 }; -static int parser_action_row651[] = { +static int parser_action_row653[] = { 1, -1, 1, 839 }; -static int parser_action_row652[] = { +static int parser_action_row654[] = { 5, - -1, 3, 651, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + -1, 3, 653, + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row653[] = { +static int parser_action_row655[] = { 5, -1, 1, 378, 0, 0, 1, @@ -7751,58 +7763,58 @@ static int parser_action_row653[] = { 9, 1, 322, 15, 1, 322 }; -static int parser_action_row654[] = { +static int parser_action_row656[] = { 1, -1, 1, 340 }; -static int parser_action_row655[] = { +static int parser_action_row657[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row656[] = { +static int parser_action_row658[] = { 3, - -1, 3, 655, + -1, 3, 657, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row657[] = { +static int parser_action_row659[] = { 2, - -1, 3, 656, - 85, 0, 778 + -1, 3, 658, + 85, 0, 780 }; -static int parser_action_row658[] = { +static int parser_action_row660[] = { 1, -1, 1, 501 }; -static int parser_action_row659[] = { +static int parser_action_row661[] = { 1, -1, 1, 535 }; -static int parser_action_row660[] = { +static int parser_action_row662[] = { 3, - -1, 3, 659, - 34, 0, 779, - 54, 0, 780 + -1, 3, 661, + 34, 0, 781, + 54, 0, 782 }; -static int parser_action_row661[] = { +static int parser_action_row663[] = { 1, -1, 1, 530 }; -static int parser_action_row662[] = { +static int parser_action_row664[] = { 1, -1, 1, 532 }; -static int parser_action_row663[] = { +static int parser_action_row665[] = { 1, -1, 1, 170 }; -static int parser_action_row664[] = { +static int parser_action_row666[] = { 1, -1, 1, 207 }; -static int parser_action_row665[] = { +static int parser_action_row667[] = { 22, -1, 1, 360, 12, 0, 153, @@ -7827,11 +7839,11 @@ static int parser_action_row665[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row666[] = { +static int parser_action_row668[] = { 1, -1, 1, 229 }; -static int parser_action_row667[] = { +static int parser_action_row669[] = { 25, -1, 1, 346, 12, 0, 108, @@ -7859,30 +7871,30 @@ static int parser_action_row667[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row668[] = { +static int parser_action_row670[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 783, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 785, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -7894,23 +7906,23 @@ static int parser_action_row668[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row669[] = { +static int parser_action_row671[] = { 2, - -1, 3, 668, - 84, 0, 788 + -1, 3, 670, + 84, 0, 790 }; -static int parser_action_row670[] = { +static int parser_action_row672[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row671[] = { +static int parser_action_row673[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -7940,36 +7952,36 @@ static int parser_action_row671[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row672[] = { +static int parser_action_row674[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row673[] = { +static int parser_action_row675[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 783, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 785, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -7981,13 +7993,13 @@ static int parser_action_row673[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row674[] = { +static int parser_action_row676[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row675[] = { +static int parser_action_row677[] = { 25, -1, 1, 174, 12, 0, 153, @@ -8015,7 +8027,7 @@ static int parser_action_row675[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row676[] = { +static int parser_action_row678[] = { 26, -1, 1, 181, 12, 0, 153, @@ -8044,7 +8056,7 @@ static int parser_action_row676[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row677[] = { +static int parser_action_row679[] = { 26, -1, 1, 176, 12, 0, 153, @@ -8073,12 +8085,12 @@ static int parser_action_row677[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row678[] = { +static int parser_action_row680[] = { 2, -1, 1, 180, 27, 1, 630 }; -static int parser_action_row679[] = { +static int parser_action_row681[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8103,32 +8115,32 @@ static int parser_action_row679[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row680[] = { +static int parser_action_row682[] = { 2, - -1, 3, 679, - 11, 0, 802 + -1, 3, 681, + 11, 0, 804 }; -static int parser_action_row681[] = { +static int parser_action_row683[] = { 1, -1, 1, 224 }; -static int parser_action_row682[] = { +static int parser_action_row684[] = { 1, -1, 1, 226 }; -static int parser_action_row683[] = { +static int parser_action_row685[] = { 3, - -1, 3, 682, + -1, 3, 684, 56, 0, 207, - 66, 0, 803 + 66, 0, 805 }; -static int parser_action_row684[] = { +static int parser_action_row686[] = { 3, - -1, 3, 683, - 44, 0, 805, - 85, 0, 806 + -1, 3, 685, + 44, 0, 807, + 85, 0, 808 }; -static int parser_action_row685[] = { +static int parser_action_row687[] = { 28, -1, 1, 346, 12, 0, 108, @@ -8159,21 +8171,21 @@ static int parser_action_row685[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row686[] = { +static int parser_action_row688[] = { 3, -1, 1, 357, - 12, 0, 809, + 12, 0, 811, 84, 0, 223 }; -static int parser_action_row687[] = { +static int parser_action_row689[] = { 31, -1, 1, 360, - 9, 0, 665, + 9, 0, 667, 12, 0, 27, 15, 0, 29, 18, 0, 30, 25, 0, 31, - 27, 0, 670, + 27, 0, 672, 28, 0, 32, 29, 0, 33, 30, 0, 34, @@ -8199,66 +8211,66 @@ static int parser_action_row687[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row688[] = { +static int parser_action_row690[] = { 2, - -1, 3, 687, - 27, 0, 813 + -1, 3, 689, + 27, 0, 815 }; -static int parser_action_row689[] = { +static int parser_action_row691[] = { 1, -1, 1, 622 }; -static int parser_action_row690[] = { +static int parser_action_row692[] = { 1, -1, 1, 623 }; -static int parser_action_row691[] = { +static int parser_action_row693[] = { 1, -1, 1, 635 }; -static int parser_action_row692[] = { +static int parser_action_row694[] = { 1, -1, 1, 636 }; -static int parser_action_row693[] = { +static int parser_action_row695[] = { 1, -1, 1, 638 }; -static int parser_action_row694[] = { +static int parser_action_row696[] = { 1, -1, 1, 637 }; -static int parser_action_row695[] = { +static int parser_action_row697[] = { 1, -1, 1, 639 }; -static int parser_action_row696[] = { +static int parser_action_row698[] = { 1, -1, 1, 640 }; -static int parser_action_row697[] = { +static int parser_action_row699[] = { 4, -1, 1, 359, - 12, 0, 814, + 12, 0, 816, 83, 0, 49, 84, 0, 225 }; -static int parser_action_row698[] = { +static int parser_action_row700[] = { 1, -1, 1, 233 }; -static int parser_action_row699[] = { +static int parser_action_row701[] = { 2, - -1, 3, 698, + -1, 3, 700, 52, 0, 172 }; -static int parser_action_row700[] = { +static int parser_action_row702[] = { 3, - -1, 3, 699, - 55, 0, 817, - 58, 0, 572 + -1, 3, 701, + 55, 0, 819, + 58, 0, 574 }; -static int parser_action_row701[] = { +static int parser_action_row703[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8283,85 +8295,85 @@ static int parser_action_row701[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row702[] = { +static int parser_action_row704[] = { 2, - -1, 3, 701, - 84, 0, 819 + -1, 3, 703, + 84, 0, 821 }; -static int parser_action_row703[] = { +static int parser_action_row705[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row704[] = { +static int parser_action_row706[] = { 2, - -1, 3, 703, - 85, 0, 821 + -1, 3, 705, + 85, 0, 823 }; -static int parser_action_row705[] = { +static int parser_action_row707[] = { 1, -1, 1, 249 }; -static int parser_action_row706[] = { +static int parser_action_row708[] = { 1, -1, 1, 278 }; -static int parser_action_row707[] = { +static int parser_action_row709[] = { 1, -1, 1, 280 }; -static int parser_action_row708[] = { +static int parser_action_row710[] = { 3, - -1, 3, 707, - 50, 0, 346, - 83, 0, 347 + -1, 3, 709, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row709[] = { +static int parser_action_row711[] = { 2, -1, 1, 155, - 58, 0, 823 + 58, 0, 825 }; -static int parser_action_row710[] = { +static int parser_action_row712[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row711[] = { +static int parser_action_row713[] = { 5, - -1, 3, 710, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + -1, 3, 712, + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row712[] = { +static int parser_action_row714[] = { 1, -1, 1, 556 }; -static int parser_action_row713[] = { +static int parser_action_row715[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row714[] = { +static int parser_action_row716[] = { 2, - -1, 3, 713, + -1, 3, 715, 84, 0, 223 }; -static int parser_action_row715[] = { +static int parser_action_row717[] = { 3, - -1, 3, 714, + -1, 3, 716, 83, 0, 49, 84, 0, 225 }; -static int parser_action_row716[] = { +static int parser_action_row718[] = { 2, - -1, 3, 715, - 55, 0, 830 + -1, 3, 717, + 55, 0, 832 }; -static int parser_action_row717[] = { +static int parser_action_row719[] = { 24, -1, 1, 734, 12, 0, 153, @@ -8388,7 +8400,7 @@ static int parser_action_row717[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row718[] = { +static int parser_action_row720[] = { 25, -1, 1, 741, 12, 0, 153, @@ -8416,7 +8428,7 @@ static int parser_action_row718[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row719[] = { +static int parser_action_row721[] = { 25, -1, 1, 736, 12, 0, 153, @@ -8444,111 +8456,111 @@ static int parser_action_row719[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row720[] = { +static int parser_action_row722[] = { 1, -1, 1, 740 }; -static int parser_action_row721[] = { +static int parser_action_row723[] = { 2, - -1, 3, 720, - 11, 0, 836 + -1, 3, 722, + 11, 0, 838 }; -static int parser_action_row722[] = { +static int parser_action_row724[] = { 4, -1, 1, 316, - 56, 0, 480, + 56, 0, 482, 60, 0, 192, 82, 0, 183 }; -static int parser_action_row723[] = { +static int parser_action_row725[] = { 1, -1, 1, 332 }; -static int parser_action_row724[] = { +static int parser_action_row726[] = { 1, -1, 1, 732 }; -static int parser_action_row725[] = { +static int parser_action_row727[] = { 1, -1, 1, 733 }; -static int parser_action_row726[] = { +static int parser_action_row728[] = { 1, -1, 1, 745 }; -static int parser_action_row727[] = { +static int parser_action_row729[] = { 1, -1, 1, 747 }; -static int parser_action_row728[] = { +static int parser_action_row730[] = { 1, -1, 1, 746 }; -static int parser_action_row729[] = { +static int parser_action_row731[] = { 1, -1, 1, 748 }; -static int parser_action_row730[] = { +static int parser_action_row732[] = { 1, -1, 1, 749 }; -static int parser_action_row731[] = { +static int parser_action_row733[] = { 1, -1, 1, 333 }; -static int parser_action_row732[] = { +static int parser_action_row734[] = { 3, -1, 1, 274, 56, 0, 207, - 66, 0, 837 + 66, 0, 839 }; -static int parser_action_row733[] = { +static int parser_action_row735[] = { 1, -1, 1, 335 }; -static int parser_action_row734[] = { +static int parser_action_row736[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row735[] = { +static int parser_action_row737[] = { 2, -1, 1, 329, - 58, 0, 839 + 58, 0, 841 }; -static int parser_action_row736[] = { +static int parser_action_row738[] = { 3, - -1, 3, 735, - 44, 0, 326, + -1, 3, 737, + 44, 0, 327, 85, 0, 219 }; -static int parser_action_row737[] = { +static int parser_action_row739[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row738[] = { +static int parser_action_row740[] = { 1, -1, 1, 334 }; -static int parser_action_row739[] = { +static int parser_action_row741[] = { 3, - -1, 3, 738, - 50, 0, 346, - 83, 0, 347 + -1, 3, 740, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row740[] = { +static int parser_action_row742[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row741[] = { +static int parser_action_row743[] = { 1, -1, 1, 300 }; -static int parser_action_row742[] = { +static int parser_action_row744[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8573,82 +8585,82 @@ static int parser_action_row742[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row743[] = { +static int parser_action_row745[] = { 21, -1, 1, 360, - 12, 0, 845, - 25, 0, 846, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 25, 0, 848, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row744[] = { +static int parser_action_row746[] = { 1, -1, 1, 844 }; -static int parser_action_row745[] = { +static int parser_action_row747[] = { 1, -1, 1, 18 }; -static int parser_action_row746[] = { +static int parser_action_row748[] = { 3, - -1, 3, 745, + -1, 3, 747, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row747[] = { +static int parser_action_row749[] = { 1, -1, 1, 113 }; -static int parser_action_row748[] = { +static int parser_action_row750[] = { 2, -1, 1, 120, - 84, 0, 875 + 84, 0, 877 }; -static int parser_action_row749[] = { +static int parser_action_row751[] = { 3, - -1, 3, 748, - 50, 0, 346, - 83, 0, 347 + -1, 3, 750, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row750[] = { +static int parser_action_row752[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row751[] = { +static int parser_action_row753[] = { 8, - -1, 3, 750, + -1, 3, 752, 0, 0, 83, 1, 0, 84, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 20, 0, 880, - 84, 0, 343 + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 20, 0, 882, + 84, 0, 344 }; -static int parser_action_row752[] = { +static int parser_action_row754[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -8678,32 +8690,32 @@ static int parser_action_row752[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row753[] = { +static int parser_action_row755[] = { 2, - -1, 3, 752, - 15, 0, 884 + -1, 3, 754, + 15, 0, 886 }; -static int parser_action_row754[] = { +static int parser_action_row756[] = { 3, - -1, 3, 753, + -1, 3, 755, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row755[] = { +static int parser_action_row757[] = { 1, -1, 1, 386 }; -static int parser_action_row756[] = { +static int parser_action_row758[] = { 1, -1, 1, 116 }; -static int parser_action_row757[] = { +static int parser_action_row759[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row758[] = { +static int parser_action_row760[] = { 5, -1, 1, 378, 0, 0, 1, @@ -8711,33 +8723,33 @@ static int parser_action_row758[] = { 31, 0, 35, 96, 0, 57 }; -static int parser_action_row759[] = { +static int parser_action_row761[] = { 1, -1, 1, 366 }; -static int parser_action_row760[] = { +static int parser_action_row762[] = { 2, -1, 1, 368, 60, 0, 192 }; -static int parser_action_row761[] = { +static int parser_action_row763[] = { 2, - -1, 3, 760, - 83, 0, 896 + -1, 3, 762, + 83, 0, 898 }; -static int parser_action_row762[] = { +static int parser_action_row764[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row763[] = { +static int parser_action_row765[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row764[] = { +static int parser_action_row766[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8762,7 +8774,7 @@ static int parser_action_row764[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row765[] = { +static int parser_action_row767[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8787,7 +8799,7 @@ static int parser_action_row765[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row766[] = { +static int parser_action_row768[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8812,7 +8824,7 @@ static int parser_action_row766[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row767[] = { +static int parser_action_row769[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8837,15 +8849,15 @@ static int parser_action_row767[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row768[] = { +static int parser_action_row770[] = { 1, -1, 1, 196 }; -static int parser_action_row769[] = { +static int parser_action_row771[] = { 1, -1, 1, 198 }; -static int parser_action_row770[] = { +static int parser_action_row772[] = { 23, -1, 1, 346, 12, 0, 108, @@ -8859,7 +8871,7 @@ static int parser_action_row770[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -8871,27 +8883,27 @@ static int parser_action_row770[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row771[] = { +static int parser_action_row773[] = { 1, -1, 1, 343 }; -static int parser_action_row772[] = { +static int parser_action_row774[] = { 5, - -1, 3, 771, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + -1, 3, 773, + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row773[] = { +static int parser_action_row775[] = { 1, -1, 1, 838 }; -static int parser_action_row774[] = { +static int parser_action_row776[] = { 1, -1, 1, 86 }; -static int parser_action_row775[] = { +static int parser_action_row777[] = { 36, -1, 1, 360, 0, 0, 83, @@ -8904,10 +8916,10 @@ static int parser_action_row775[] = { 29, 0, 33, 30, 0, 34, 34, 0, 110, - 36, 0, 905, - 37, 0, 906, - 38, 0, 907, - 39, 0, 908, + 36, 0, 907, + 37, 0, 908, + 38, 0, 909, + 39, 0, 910, 40, 0, 40, 41, 0, 111, 43, 0, 112, @@ -8915,13 +8927,13 @@ static int parser_action_row775[] = { 46, 0, 114, 47, 0, 115, 48, 0, 116, - 50, 0, 346, + 50, 0, 347, 51, 0, 117, - 53, 0, 909, - 54, 0, 910, + 53, 0, 911, + 54, 0, 912, 68, 0, 119, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 120, 87, 0, 121, @@ -8930,11 +8942,11 @@ static int parser_action_row775[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row776[] = { +static int parser_action_row778[] = { 1, -1, 1, 840 }; -static int parser_action_row777[] = { +static int parser_action_row779[] = { 22, -1, 1, 360, 12, 0, 153, @@ -8959,48 +8971,48 @@ static int parser_action_row777[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row778[] = { +static int parser_action_row780[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row779[] = { +static int parser_action_row781[] = { 3, -1, 1, 528, 56, 1, 530, 66, 1, 530 }; -static int parser_action_row780[] = { +static int parser_action_row782[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row781[] = { +static int parser_action_row783[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row782[] = { +static int parser_action_row784[] = { 1, -1, 1, 208 }; -static int parser_action_row783[] = { +static int parser_action_row785[] = { 2, -1, 1, 195, 27, 1, 645 }; -static int parser_action_row784[] = { +static int parser_action_row786[] = { 3, -1, 1, 163, 27, 1, 620, 52, 1, 728 }; -static int parser_action_row785[] = { +static int parser_action_row787[] = { 30, -1, 1, 360, - 9, 0, 932, + 9, 0, 934, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -9030,26 +9042,26 @@ static int parser_action_row785[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row786[] = { +static int parser_action_row788[] = { 1, -1, 1, 669 }; -static int parser_action_row787[] = { +static int parser_action_row789[] = { 1, -1, 1, 621 }; -static int parser_action_row788[] = { +static int parser_action_row790[] = { 2, - -1, 3, 787, + -1, 3, 789, 52, 0, 172 }; -static int parser_action_row789[] = { +static int parser_action_row791[] = { 3, -1, 1, 160, 59, 0, 290, 82, 0, 183 }; -static int parser_action_row790[] = { +static int parser_action_row792[] = { 22, -1, 1, 360, 12, 0, 153, @@ -9074,11 +9086,11 @@ static int parser_action_row790[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row791[] = { +static int parser_action_row793[] = { 1, -1, 1, 228 }; -static int parser_action_row792[] = { +static int parser_action_row794[] = { 22, -1, 1, 360, 12, 0, 153, @@ -9103,26 +9115,26 @@ static int parser_action_row792[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row793[] = { +static int parser_action_row795[] = { 1, -1, 1, 672 }; -static int parser_action_row794[] = { +static int parser_action_row796[] = { 2, - -1, 3, 793, + -1, 3, 795, 52, 0, 172 }; -static int parser_action_row795[] = { +static int parser_action_row797[] = { 3, - -1, 3, 794, - 54, 0, 940, + -1, 3, 796, + 54, 0, 942, 84, 0, 297 }; -static int parser_action_row796[] = { +static int parser_action_row798[] = { 1, -1, 1, 625 }; -static int parser_action_row797[] = { +static int parser_action_row799[] = { 25, -1, 1, 182, 12, 0, 153, @@ -9150,11 +9162,11 @@ static int parser_action_row797[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row798[] = { +static int parser_action_row800[] = { 1, -1, 1, 633 }; -static int parser_action_row799[] = { +static int parser_action_row801[] = { 25, -1, 1, 177, 12, 0, 153, @@ -9182,11 +9194,11 @@ static int parser_action_row799[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row800[] = { +static int parser_action_row802[] = { 1, -1, 1, 628 }; -static int parser_action_row801[] = { +static int parser_action_row803[] = { 22, -1, 1, 360, 12, 0, 153, @@ -9211,31 +9223,31 @@ static int parser_action_row801[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row802[] = { +static int parser_action_row804[] = { 2, - -1, 3, 801, - 27, 0, 945 + -1, 3, 803, + 27, 0, 947 }; -static int parser_action_row803[] = { +static int parser_action_row805[] = { 3, - -1, 3, 802, - 50, 0, 346, - 83, 0, 347 + -1, 3, 804, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row804[] = { +static int parser_action_row806[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row805[] = { +static int parser_action_row807[] = { 4, -1, 1, 285, - 61, 0, 948, - 62, 0, 371, - 63, 0, 372 + 61, 0, 950, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row806[] = { +static int parser_action_row808[] = { 25, -1, 1, 346, 12, 0, 108, @@ -9263,26 +9275,26 @@ static int parser_action_row806[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row807[] = { +static int parser_action_row809[] = { 4, -1, 1, 279, - 61, 0, 951, - 62, 0, 371, - 63, 0, 372 + 61, 0, 953, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row808[] = { +static int parser_action_row810[] = { 4, -1, 1, 281, - 61, 0, 953, - 62, 0, 371, - 63, 0, 372 + 61, 0, 955, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row809[] = { +static int parser_action_row811[] = { 2, -1, 1, 192, 27, 1, 642 }; -static int parser_action_row810[] = { +static int parser_action_row812[] = { 23, -1, 1, 346, 12, 0, 108, @@ -9296,7 +9308,7 @@ static int parser_action_row810[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -9308,28 +9320,28 @@ static int parser_action_row810[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row811[] = { +static int parser_action_row813[] = { 3, - -1, 3, 810, - 9, 0, 665, - 27, 0, 670 + -1, 3, 812, + 9, 0, 667, + 27, 0, 672 }; -static int parser_action_row812[] = { +static int parser_action_row814[] = { 3, - -1, 3, 811, + -1, 3, 813, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row813[] = { +static int parser_action_row815[] = { 1, -1, 1, 227 }; -static int parser_action_row814[] = { +static int parser_action_row816[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -9359,7 +9371,7 @@ static int parser_action_row814[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row815[] = { +static int parser_action_row817[] = { 23, -1, 1, 346, 12, 0, 108, @@ -9373,7 +9385,7 @@ static int parser_action_row815[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -9385,33 +9397,33 @@ static int parser_action_row815[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row816[] = { +static int parser_action_row818[] = { 3, -1, 1, 358, - 12, 0, 960, - 84, 0, 389 + 12, 0, 962, + 84, 0, 390 }; -static int parser_action_row817[] = { +static int parser_action_row819[] = { 1, -1, 1, 232 }; -static int parser_action_row818[] = { +static int parser_action_row820[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row819[] = { +static int parser_action_row821[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row820[] = { +static int parser_action_row822[] = { 1, -1, 1, 352 }; -static int parser_action_row821[] = { +static int parser_action_row823[] = { 22, -1, 1, 360, 12, 0, 153, @@ -9436,62 +9448,62 @@ static int parser_action_row821[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row822[] = { +static int parser_action_row824[] = { 3, -1, 1, 276, 56, 1, 278, 66, 1, 278 }; -static int parser_action_row823[] = { +static int parser_action_row825[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row824[] = { +static int parser_action_row826[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row825[] = { +static int parser_action_row827[] = { 1, -1, 1, 831 }; -static int parser_action_row826[] = { +static int parser_action_row828[] = { 2, -1, 1, 156, - 58, 0, 823 + 58, 0, 825 }; -static int parser_action_row827[] = { +static int parser_action_row829[] = { 2, - -1, 3, 826, - 57, 0, 967 + -1, 3, 828, + 57, 0, 969 }; -static int parser_action_row828[] = { +static int parser_action_row830[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row829[] = { +static int parser_action_row831[] = { 1, -1, 1, 286 }; -static int parser_action_row830[] = { +static int parser_action_row832[] = { 2, - -1, 3, 829, - 84, 0, 389 + -1, 3, 831, + 84, 0, 390 }; -static int parser_action_row831[] = { +static int parser_action_row833[] = { 1, -1, 1, 314 }; -static int parser_action_row832[] = { +static int parser_action_row834[] = { 1, -1, 1, 735 }; -static int parser_action_row833[] = { +static int parser_action_row835[] = { 24, -1, 1, 742, 12, 0, 153, @@ -9518,11 +9530,11 @@ static int parser_action_row833[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row834[] = { +static int parser_action_row836[] = { 1, -1, 1, 743 }; -static int parser_action_row835[] = { +static int parser_action_row837[] = { 24, -1, 1, 737, 12, 0, 153, @@ -9549,312 +9561,312 @@ static int parser_action_row835[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row836[] = { +static int parser_action_row838[] = { 1, -1, 1, 738 }; -static int parser_action_row837[] = { +static int parser_action_row839[] = { 3, - -1, 3, 836, - 50, 0, 346, - 83, 0, 347 + -1, 3, 838, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row838[] = { +static int parser_action_row840[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row839[] = { +static int parser_action_row841[] = { 2, - -1, 3, 838, - 55, 0, 973 + -1, 3, 840, + 55, 0, 975 }; -static int parser_action_row840[] = { +static int parser_action_row842[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row841[] = { +static int parser_action_row843[] = { 1, -1, 1, 841 }; -static int parser_action_row842[] = { +static int parser_action_row844[] = { 2, -1, 1, 330, - 58, 0, 839 + 58, 0, 841 }; -static int parser_action_row843[] = { +static int parser_action_row845[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row844[] = { +static int parser_action_row846[] = { 2, - -1, 3, 843, - 57, 0, 977 + -1, 3, 845, + 57, 0, 979 }; -static int parser_action_row845[] = { +static int parser_action_row847[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row846[] = { +static int parser_action_row848[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row847[] = { +static int parser_action_row849[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row848[] = { +static int parser_action_row850[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row849[] = { +static int parser_action_row851[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row850[] = { +static int parser_action_row852[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row851[] = { +static int parser_action_row853[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row852[] = { +static int parser_action_row854[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row853[] = { +static int parser_action_row855[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row854[] = { +static int parser_action_row856[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row855[] = { +static int parser_action_row857[] = { 16, -1, 1, 360, - 12, 0, 845, - 41, 0, 988, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 54, 0, 855, + 12, 0, 847, + 41, 0, 990, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 54, 0, 857, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row856[] = { +static int parser_action_row858[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row857[] = { +static int parser_action_row859[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row858[] = { +static int parser_action_row860[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row859[] = { +static int parser_action_row861[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row860[] = { +static int parser_action_row862[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row861[] = { +static int parser_action_row863[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row862[] = { +static int parser_action_row864[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row863[] = { +static int parser_action_row865[] = { 1, -1, 1, 445 }; -static int parser_action_row864[] = { +static int parser_action_row866[] = { 3, - -1, 3, 863, - 44, 0, 998, - 85, 0, 999 + -1, 3, 865, + 44, 0, 1000, + 85, 0, 1001 }; -static int parser_action_row865[] = { +static int parser_action_row867[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row866[] = { +static int parser_action_row868[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row867[] = { +static int parser_action_row869[] = { 4, -1, 1, 394, - 32, 0, 1002, - 33, 0, 1003, - 35, 0, 1004 + 32, 0, 1004, + 33, 0, 1005, + 35, 0, 1006 }; -static int parser_action_row868[] = { +static int parser_action_row870[] = { 1, -1, 1, 396 }; -static int parser_action_row869[] = { +static int parser_action_row871[] = { 3, -1, 1, 401, - 76, 0, 1005, - 79, 0, 1006 + 76, 0, 1007, + 79, 0, 1008 }; -static int parser_action_row870[] = { +static int parser_action_row872[] = { 11, -1, 1, 403, - 42, 0, 1007, - 67, 0, 1008, - 68, 0, 1009, - 72, 0, 1010, - 73, 0, 1011, - 74, 0, 1012, - 75, 0, 1013, - 77, 0, 1014, - 78, 0, 1015, - 80, 0, 1016 + 42, 0, 1009, + 67, 0, 1010, + 68, 0, 1011, + 72, 0, 1012, + 73, 0, 1013, + 74, 0, 1014, + 75, 0, 1015, + 77, 0, 1016, + 78, 0, 1017, + 80, 0, 1018 }; -static int parser_action_row871[] = { +static int parser_action_row873[] = { 4, -1, 1, 414, - 69, 0, 1017, - 70, 0, 1018, - 71, 0, 1019 + 69, 0, 1019, + 70, 0, 1020, + 71, 0, 1021 }; -static int parser_action_row872[] = { +static int parser_action_row874[] = { 1, -1, 1, 417 }; -static int parser_action_row873[] = { +static int parser_action_row875[] = { 1, -1, 1, 421 }; -static int parser_action_row874[] = { +static int parser_action_row876[] = { 2, -1, 1, 424, - 66, 0, 1020 + 66, 0, 1022 }; -static int parser_action_row875[] = { +static int parser_action_row877[] = { 1, -1, 1, 17 }; -static int parser_action_row876[] = { +static int parser_action_row878[] = { 3, -1, 1, 316, - 59, 0, 624, + 59, 0, 626, 82, 0, 183 }; -static int parser_action_row877[] = { +static int parser_action_row879[] = { 2, - -1, 3, 876, - 55, 0, 1024 + -1, 3, 878, + 55, 0, 1026 }; -static int parser_action_row878[] = { +static int parser_action_row880[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 58, 0, 1025 + 58, 0, 1027 }; -static int parser_action_row879[] = { +static int parser_action_row881[] = { 1, -1, 1, 158 }; -static int parser_action_row880[] = { +static int parser_action_row882[] = { 20, - -1, 3, 879, - 44, 0, 1029, - 50, 0, 346, - 56, 0, 488, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 83, 0, 347, - 84, 0, 503 + -1, 3, 881, + 44, 0, 1031, + 50, 0, 347, + 56, 0, 490, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 83, 0, 348, + 84, 0, 505 }; -static int parser_action_row881[] = { +static int parser_action_row883[] = { 2, -1, 1, 143, - 89, 0, 1035 + 89, 0, 1037 }; -static int parser_action_row882[] = { +static int parser_action_row884[] = { 2, -1, 1, 389, 15, 1, 88 }; -static int parser_action_row883[] = { +static int parser_action_row885[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row884[] = { +static int parser_action_row886[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row885[] = { +static int parser_action_row887[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -9884,61 +9896,61 @@ static int parser_action_row885[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row886[] = { +static int parser_action_row888[] = { 1, -1, 1, 388 }; -static int parser_action_row887[] = { +static int parser_action_row889[] = { 2, - -1, 3, 886, - 83, 0, 1041 + -1, 3, 888, + 83, 0, 1043 }; -static int parser_action_row888[] = { +static int parser_action_row890[] = { 1, -1, 1, 821 }; -static int parser_action_row889[] = { +static int parser_action_row891[] = { 1, -1, 1, 823 }; -static int parser_action_row890[] = { +static int parser_action_row892[] = { 3, - -1, 3, 889, + -1, 3, 891, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row891[] = { +static int parser_action_row893[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row892[] = { +static int parser_action_row894[] = { 6, -1, 1, 42, - 4, 0, 1047, - 9, 0, 1048, + 4, 0, 1049, + 9, 0, 1050, 13, 0, 28, - 44, 0, 1049, - 84, 0, 1050 + 44, 0, 1051, + 84, 0, 1052 }; -static int parser_action_row893[] = { +static int parser_action_row895[] = { 1, -1, 1, 851 }; -static int parser_action_row894[] = { +static int parser_action_row896[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row895[] = { +static int parser_action_row897[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row896[] = { +static int parser_action_row898[] = { 5, -1, 1, 378, 0, 0, 1, @@ -9946,47 +9958,47 @@ static int parser_action_row896[] = { 31, 0, 35, 96, 0, 57 }; -static int parser_action_row897[] = { +static int parser_action_row899[] = { 1, -1, 1, 367 }; -static int parser_action_row898[] = { +static int parser_action_row900[] = { 2, - -1, 3, 897, - 48, 0, 1065 + -1, 3, 899, + 48, 0, 1067 }; -static int parser_action_row899[] = { +static int parser_action_row901[] = { 4, - -1, 3, 898, - 34, 0, 1066, - 50, 0, 346, - 83, 0, 347 + -1, 3, 900, + 34, 0, 1068, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row900[] = { +static int parser_action_row902[] = { 1, -1, 1, 209 }; -static int parser_action_row901[] = { +static int parser_action_row903[] = { 1, -1, 1, 214 }; -static int parser_action_row902[] = { +static int parser_action_row904[] = { 1, -1, 1, 211 }; -static int parser_action_row903[] = { +static int parser_action_row905[] = { 1, -1, 1, 216 }; -static int parser_action_row904[] = { +static int parser_action_row906[] = { 1, -1, 1, 197 }; -static int parser_action_row905[] = { +static int parser_action_row907[] = { 1, -1, 1, 328 }; -static int parser_action_row906[] = { +static int parser_action_row908[] = { 24, -1, 1, 753, 12, 0, 153, @@ -10013,7 +10025,7 @@ static int parser_action_row906[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row907[] = { +static int parser_action_row909[] = { 25, -1, 1, 760, 12, 0, 153, @@ -10041,7 +10053,7 @@ static int parser_action_row907[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row908[] = { +static int parser_action_row910[] = { 25, -1, 1, 755, 12, 0, 153, @@ -10069,215 +10081,215 @@ static int parser_action_row908[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row909[] = { +static int parser_action_row911[] = { 1, -1, 1, 759 }; -static int parser_action_row910[] = { +static int parser_action_row912[] = { 2, - -1, 3, 909, - 11, 0, 1073 + -1, 3, 911, + 11, 0, 1075 }; -static int parser_action_row911[] = { +static int parser_action_row913[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row912[] = { +static int parser_action_row914[] = { 1, -1, 1, 559 }; -static int parser_action_row913[] = { +static int parser_action_row915[] = { 1, -1, 1, 751 }; -static int parser_action_row914[] = { +static int parser_action_row916[] = { 1, -1, 1, 764 }; -static int parser_action_row915[] = { +static int parser_action_row917[] = { 1, -1, 1, 766 }; -static int parser_action_row916[] = { +static int parser_action_row918[] = { 1, -1, 1, 765 }; -static int parser_action_row917[] = { +static int parser_action_row919[] = { 1, -1, 1, 767 }; -static int parser_action_row918[] = { +static int parser_action_row920[] = { 1, -1, 1, 768 }; -static int parser_action_row919[] = { +static int parser_action_row921[] = { 3, - -1, 3, 918, + -1, 3, 920, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row920[] = { +static int parser_action_row922[] = { 3, - -1, 3, 919, + -1, 3, 921, 44, 0, 262, - 85, 0, 1076 + 85, 0, 1078 }; -static int parser_action_row921[] = { +static int parser_action_row923[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row922[] = { +static int parser_action_row924[] = { 1, -1, 1, 323 }; -static int parser_action_row923[] = { +static int parser_action_row925[] = { 1, -1, 1, 752 }; -static int parser_action_row924[] = { +static int parser_action_row926[] = { 1, -1, 1, 560 }; -static int parser_action_row925[] = { +static int parser_action_row927[] = { 3, -1, 1, 526, 56, 0, 207, - 66, 0, 1078 + 66, 0, 1080 }; -static int parser_action_row926[] = { +static int parser_action_row928[] = { 3, - -1, 3, 925, + -1, 3, 927, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row927[] = { +static int parser_action_row929[] = { 2, -1, 1, 557, - 58, 0, 839 + 58, 0, 841 }; -static int parser_action_row928[] = { +static int parser_action_row930[] = { 1, -1, 1, 561 }; -static int parser_action_row929[] = { +static int parser_action_row931[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row930[] = { +static int parser_action_row932[] = { 1, -1, 1, 538 }; -static int parser_action_row931[] = { +static int parser_action_row933[] = { 2, - -1, 3, 930, - 48, 0, 1083 + -1, 3, 932, + 48, 0, 1085 }; -static int parser_action_row932[] = { +static int parser_action_row934[] = { 4, - -1, 3, 931, - 34, 0, 1084, - 50, 0, 346, - 83, 0, 347 + -1, 3, 933, + 34, 0, 1086, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row933[] = { +static int parser_action_row935[] = { 3, -1, 1, 162, 27, 1, 619, 52, 1, 727 }; -static int parser_action_row934[] = { +static int parser_action_row936[] = { 3, -1, 1, 161, 27, 1, 618, 52, 1, 726 }; -static int parser_action_row935[] = { +static int parser_action_row937[] = { 2, -1, 1, 221, 27, 1, 668 }; -static int parser_action_row936[] = { +static int parser_action_row938[] = { 3, -1, 1, 205, 27, 1, 654, - 61, 0, 1086 + 61, 0, 1088 }; -static int parser_action_row937[] = { +static int parser_action_row939[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row938[] = { +static int parser_action_row940[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row939[] = { +static int parser_action_row941[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row940[] = { +static int parser_action_row942[] = { 2, -1, 1, 230, 27, 1, 671 }; -static int parser_action_row941[] = { +static int parser_action_row943[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row942[] = { +static int parser_action_row944[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row943[] = { +static int parser_action_row945[] = { 1, -1, 1, 634 }; -static int parser_action_row944[] = { +static int parser_action_row946[] = { 1, -1, 1, 629 }; -static int parser_action_row945[] = { +static int parser_action_row947[] = { 2, - -1, 3, 944, - 27, 0, 1092 + -1, 3, 946, + 27, 0, 1094 }; -static int parser_action_row946[] = { +static int parser_action_row948[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 1093, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 1095, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -10289,20 +10301,20 @@ static int parser_action_row946[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row947[] = { +static int parser_action_row949[] = { 2, - -1, 3, 946, - 59, 0, 1096 + -1, 3, 948, + 59, 0, 1098 }; -static int parser_action_row948[] = { +static int parser_action_row950[] = { 5, -1, 1, 360, - 12, 0, 1097, - 49, 0, 508, + 12, 0, 1099, + 49, 0, 510, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row949[] = { +static int parser_action_row951[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10327,7 +10339,7 @@ static int parser_action_row949[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row950[] = { +static int parser_action_row952[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10352,12 +10364,12 @@ static int parser_action_row950[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row951[] = { +static int parser_action_row953[] = { 2, -1, 1, 193, 27, 1, 643 }; -static int parser_action_row952[] = { +static int parser_action_row954[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10382,7 +10394,7 @@ static int parser_action_row952[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row953[] = { +static int parser_action_row955[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10407,7 +10419,7 @@ static int parser_action_row953[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row954[] = { +static int parser_action_row956[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10432,7 +10444,7 @@ static int parser_action_row954[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row955[] = { +static int parser_action_row957[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10457,31 +10469,31 @@ static int parser_action_row955[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row956[] = { +static int parser_action_row958[] = { 2, -1, 1, 199, 27, 1, 649 }; -static int parser_action_row957[] = { +static int parser_action_row959[] = { 1, -1, 1, 225 }; -static int parser_action_row958[] = { +static int parser_action_row960[] = { 3, - -1, 3, 957, + -1, 3, 959, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row959[] = { +static int parser_action_row961[] = { 1, -1, 1, 223 }; -static int parser_action_row960[] = { +static int parser_action_row962[] = { 2, -1, 1, 201, 27, 1, 651 }; -static int parser_action_row961[] = { +static int parser_action_row963[] = { 23, -1, 1, 346, 12, 0, 108, @@ -10495,7 +10507,7 @@ static int parser_action_row961[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -10507,74 +10519,74 @@ static int parser_action_row961[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row962[] = { +static int parser_action_row964[] = { 2, - -1, 3, 961, - 31, 0, 1109 + -1, 3, 963, + 31, 0, 1111 }; -static int parser_action_row963[] = { +static int parser_action_row965[] = { 2, - -1, 3, 962, - 15, 0, 1110 + -1, 3, 964, + 15, 0, 1112 }; -static int parser_action_row964[] = { +static int parser_action_row966[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row965[] = { +static int parser_action_row967[] = { 2, - -1, 3, 964, - 57, 0, 1112 + -1, 3, 966, + 57, 0, 1114 }; -static int parser_action_row966[] = { +static int parser_action_row968[] = { 3, - -1, 3, 965, - 50, 0, 346, - 83, 0, 347 + -1, 3, 967, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row967[] = { +static int parser_action_row969[] = { 1, -1, 1, 832 }; -static int parser_action_row968[] = { +static int parser_action_row970[] = { 2, -1, 1, 555, - 82, 0, 472 + 82, 0, 474 }; -static int parser_action_row969[] = { +static int parser_action_row971[] = { 2, - -1, 3, 968, - 55, 0, 1115 + -1, 3, 970, + 55, 0, 1117 }; -static int parser_action_row970[] = { +static int parser_action_row972[] = { 1, -1, 1, 744 }; -static int parser_action_row971[] = { +static int parser_action_row973[] = { 1, -1, 1, 739 }; -static int parser_action_row972[] = { +static int parser_action_row974[] = { 2, - -1, 3, 971, - 59, 0, 1116 + -1, 3, 973, + 59, 0, 1118 }; -static int parser_action_row973[] = { +static int parser_action_row975[] = { 5, -1, 1, 360, - 12, 0, 595, - 49, 0, 508, + 12, 0, 597, + 49, 0, 510, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row974[] = { +static int parser_action_row976[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row975[] = { +static int parser_action_row977[] = { 35, -1, 1, 360, 12, 0, 153, @@ -10585,10 +10597,10 @@ static int parser_action_row975[] = { 29, 0, 33, 30, 0, 34, 34, 0, 155, - 36, 0, 716, - 37, 0, 717, - 38, 0, 718, - 39, 0, 719, + 36, 0, 718, + 37, 0, 719, + 38, 0, 720, + 39, 0, 721, 40, 0, 40, 41, 0, 156, 43, 0, 157, @@ -10596,14 +10608,14 @@ static int parser_action_row975[] = { 46, 0, 43, 47, 0, 44, 48, 0, 45, - 50, 0, 346, + 50, 0, 347, 51, 0, 158, - 53, 0, 720, + 53, 0, 722, 54, 0, 47, 56, 0, 48, 68, 0, 159, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 51, 87, 0, 52, @@ -10612,29 +10624,29 @@ static int parser_action_row975[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row976[] = { +static int parser_action_row978[] = { 1, -1, 1, 842 }; -static int parser_action_row977[] = { +static int parser_action_row979[] = { 2, - -1, 3, 976, - 57, 0, 1120 + -1, 3, 978, + 57, 0, 1122 }; -static int parser_action_row978[] = { +static int parser_action_row980[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row979[] = { +static int parser_action_row981[] = { 1, -1, 1, 350 }; -static int parser_action_row980[] = { +static int parser_action_row982[] = { 1, -1, 1, 434 }; -static int parser_action_row981[] = { +static int parser_action_row983[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10659,91 +10671,91 @@ static int parser_action_row981[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row982[] = { +static int parser_action_row984[] = { 20, -1, 1, 360, - 12, 0, 845, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row983[] = { +static int parser_action_row985[] = { 3, - -1, 3, 982, - 50, 0, 1124, - 83, 0, 1125 + -1, 3, 984, + 50, 0, 1126, + 83, 0, 1127 }; -static int parser_action_row984[] = { +static int parser_action_row986[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row985[] = { +static int parser_action_row987[] = { 1, -1, 1, 436 }; -static int parser_action_row986[] = { +static int parser_action_row988[] = { 1, -1, 1, 437 }; -static int parser_action_row987[] = { +static int parser_action_row989[] = { 1, -1, 1, 438 }; -static int parser_action_row988[] = { +static int parser_action_row990[] = { 1, -1, 1, 439 }; -static int parser_action_row989[] = { +static int parser_action_row991[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row990[] = { +static int parser_action_row992[] = { 3, - -1, 3, 989, - 44, 0, 998, - 85, 0, 1129 + -1, 3, 991, + 44, 0, 1000, + 85, 0, 1131 }; -static int parser_action_row991[] = { +static int parser_action_row993[] = { 2, - -1, 3, 990, - 66, 0, 1130 + -1, 3, 992, + 66, 0, 1132 }; -static int parser_action_row992[] = { +static int parser_action_row994[] = { 22, -1, 1, 360, 12, 0, 153, @@ -10768,79 +10780,66 @@ static int parser_action_row992[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row993[] = { +static int parser_action_row995[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row994[] = { +static int parser_action_row996[] = { 1, -1, 1, 440 }; -static int parser_action_row995[] = { +static int parser_action_row997[] = { 1, -1, 1, 441 }; -static int parser_action_row996[] = { +static int parser_action_row998[] = { 1, -1, 1, 442 }; -static int parser_action_row997[] = { +static int parser_action_row999[] = { 1, -1, 1, 444 }; -static int parser_action_row998[] = { +static int parser_action_row1000[] = { 1, -1, 1, 443 }; -static int parser_action_row999[] = { +static int parser_action_row1001[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1000[] = { +static int parser_action_row1002[] = { 1, -1, 1, 429 }; -static int parser_action_row1001[] = { +static int parser_action_row1003[] = { 1, -1, 1, 431 }; -static int parser_action_row1002[] = { - 3, - -1, 3, 1001, - 56, 0, 1134, - 57, 0, 1135 -}; -static int parser_action_row1003[] = { - 3, - -1, 1, 378, - 0, 0, 1, - 1, 0, 2 -}; static int parser_action_row1004[] = { - 4, - -1, 1, 378, - 0, 0, 1, - 1, 0, 2, - 27, 0, 1137 + 3, + -1, 3, 1003, + 56, 0, 1136, + 57, 0, 1137 }; static int parser_action_row1005[] = { 3, @@ -10849,10 +10848,11 @@ static int parser_action_row1005[] = { 1, 0, 2 }; static int parser_action_row1006[] = { - 3, + 4, -1, 1, 378, 0, 0, 1, - 1, 0, 2 + 1, 0, 2, + 27, 0, 1139 }; static int parser_action_row1007[] = { 3, @@ -10945,172 +10945,184 @@ static int parser_action_row1021[] = { 1, 0, 2 }; static int parser_action_row1022[] = { + 3, + -1, 1, 378, + 0, 0, 1, + 1, 0, 2 +}; +static int parser_action_row1023[] = { + 3, + -1, 1, 378, + 0, 0, 1, + 1, 0, 2 +}; +static int parser_action_row1024[] = { 2, -1, 1, 123, - 64, 0, 1156 + 64, 0, 1158 }; -static int parser_action_row1023[] = { +static int parser_action_row1025[] = { 2, -1, 1, 315, - 59, 0, 624 + 59, 0, 626 }; -static int parser_action_row1024[] = { +static int parser_action_row1026[] = { 1, -1, 1, 122 }; -static int parser_action_row1025[] = { +static int parser_action_row1027[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 59, 0, 624 + 59, 0, 626 }; -static int parser_action_row1026[] = { +static int parser_action_row1028[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1027[] = { +static int parser_action_row1029[] = { 1, -1, 1, 827 }; -static int parser_action_row1028[] = { +static int parser_action_row1030[] = { 1, -1, 1, 118 }; -static int parser_action_row1029[] = { +static int parser_action_row1031[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 58, 0, 1025 + 58, 0, 1027 }; -static int parser_action_row1030[] = { +static int parser_action_row1032[] = { 1, -1, 1, 133 }; -static int parser_action_row1031[] = { +static int parser_action_row1033[] = { 1, -1, 1, 134 }; -static int parser_action_row1032[] = { +static int parser_action_row1034[] = { 2, -1, 1, 127, - 58, 0, 1163 + 58, 0, 1165 }; -static int parser_action_row1033[] = { +static int parser_action_row1035[] = { 1, -1, 1, 131 }; -static int parser_action_row1034[] = { +static int parser_action_row1036[] = { 1, -1, 1, 132 }; -static int parser_action_row1035[] = { +static int parser_action_row1037[] = { 2, -1, 1, 136, - 66, 0, 1166 + 66, 0, 1168 }; -static int parser_action_row1036[] = { +static int parser_action_row1038[] = { 1, -1, 1, 144 }; -static int parser_action_row1037[] = { +static int parser_action_row1039[] = { 2, -1, 1, 129, - 4, 0, 749 + 4, 0, 751 }; -static int parser_action_row1038[] = { +static int parser_action_row1040[] = { 2, -1, 1, 89, - 9, 0, 1168 + 9, 0, 1170 }; -static int parser_action_row1039[] = { +static int parser_action_row1041[] = { 1, -1, 1, 372 }; -static int parser_action_row1040[] = { +static int parser_action_row1042[] = { 1, -1, 1, 384 }; -static int parser_action_row1041[] = { +static int parser_action_row1043[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row1042[] = { +static int parser_action_row1044[] = { 3, -1, 1, 160, 59, 0, 290, 82, 0, 183 }; -static int parser_action_row1043[] = { +static int parser_action_row1045[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 58, 0, 1172 + 58, 0, 1174 }; -static int parser_action_row1044[] = { +static int parser_action_row1046[] = { 1, -1, 1, 56 }; -static int parser_action_row1045[] = { +static int parser_action_row1047[] = { 4, -1, 1, 42, - 9, 0, 1176, + 9, 0, 1178, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1046[] = { +static int parser_action_row1048[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1047[] = { +static int parser_action_row1049[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1048[] = { +static int parser_action_row1050[] = { 1, -1, 1, 814 }; -static int parser_action_row1049[] = { +static int parser_action_row1051[] = { 1, -1, 1, 26 }; -static int parser_action_row1050[] = { +static int parser_action_row1052[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1051[] = { +static int parser_action_row1053[] = { 1, -1, 1, 813 }; -static int parser_action_row1052[] = { +static int parser_action_row1054[] = { 4, -1, 1, 92, 22, 0, 199, 23, 0, 200, 24, 0, 201 }; -static int parser_action_row1053[] = { +static int parser_action_row1055[] = { 2, -1, 1, 42, 13, 0, 28 }; -static int parser_action_row1054[] = { +static int parser_action_row1056[] = { 2, -1, 1, 42, 13, 0, 28 }; -static int parser_action_row1055[] = { +static int parser_action_row1057[] = { 36, -1, 1, 360, 0, 0, 83, @@ -11123,10 +11135,10 @@ static int parser_action_row1055[] = { 29, 0, 33, 30, 0, 34, 34, 0, 110, - 36, 0, 905, - 37, 0, 906, - 38, 0, 907, - 39, 0, 908, + 36, 0, 907, + 37, 0, 908, + 38, 0, 909, + 39, 0, 910, 40, 0, 40, 41, 0, 111, 43, 0, 112, @@ -11134,13 +11146,13 @@ static int parser_action_row1055[] = { 46, 0, 114, 47, 0, 115, 48, 0, 116, - 50, 0, 346, + 50, 0, 347, 51, 0, 117, - 53, 0, 909, - 54, 0, 1185, + 53, 0, 911, + 54, 0, 1187, 68, 0, 119, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 120, 87, 0, 121, @@ -11149,85 +11161,85 @@ static int parser_action_row1055[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1056[] = { +static int parser_action_row1058[] = { 1, -1, 1, 822 }; -static int parser_action_row1057[] = { +static int parser_action_row1059[] = { 4, -1, 1, 42, - 9, 0, 1189, + 9, 0, 1191, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1058[] = { +static int parser_action_row1060[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1059[] = { +static int parser_action_row1061[] = { 1, -1, 1, 824 }; -static int parser_action_row1060[] = { +static int parser_action_row1062[] = { 3, -1, 1, 42, - 9, 0, 1191, + 9, 0, 1193, 13, 0, 28 }; -static int parser_action_row1061[] = { +static int parser_action_row1063[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1062[] = { +static int parser_action_row1064[] = { 6, -1, 1, 42, - 4, 0, 1047, - 9, 0, 1195, + 4, 0, 1049, + 9, 0, 1197, 13, 0, 28, - 44, 0, 1049, - 84, 0, 1050 + 44, 0, 1051, + 84, 0, 1052 }; -static int parser_action_row1063[] = { +static int parser_action_row1065[] = { 1, -1, 1, 852 }; -static int parser_action_row1064[] = { +static int parser_action_row1066[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1065[] = { +static int parser_action_row1067[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1066[] = { +static int parser_action_row1068[] = { 1, -1, 1, 303 }; -static int parser_action_row1067[] = { +static int parser_action_row1069[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1068[] = { +static int parser_action_row1070[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1069[] = { +static int parser_action_row1071[] = { 1, -1, 1, 754 }; -static int parser_action_row1070[] = { +static int parser_action_row1072[] = { 24, -1, 1, 761, 12, 0, 153, @@ -11254,11 +11266,11 @@ static int parser_action_row1070[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1071[] = { +static int parser_action_row1073[] = { 1, -1, 1, 762 }; -static int parser_action_row1072[] = { +static int parser_action_row1074[] = { 24, -1, 1, 756, 12, 0, 153, @@ -11285,17 +11297,17 @@ static int parser_action_row1072[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1073[] = { +static int parser_action_row1075[] = { 1, -1, 1, 757 }; -static int parser_action_row1074[] = { +static int parser_action_row1076[] = { 3, - -1, 3, 1073, - 50, 0, 346, - 83, 0, 347 + -1, 3, 1075, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row1075[] = { +static int parser_action_row1077[] = { 35, -1, 1, 360, 12, 0, 153, @@ -11306,10 +11318,10 @@ static int parser_action_row1075[] = { 29, 0, 33, 30, 0, 34, 34, 0, 155, - 36, 0, 716, - 37, 0, 717, - 38, 0, 718, - 39, 0, 719, + 36, 0, 718, + 37, 0, 719, + 38, 0, 720, + 39, 0, 721, 40, 0, 40, 41, 0, 156, 43, 0, 157, @@ -11317,14 +11329,14 @@ static int parser_action_row1075[] = { 46, 0, 43, 47, 0, 44, 48, 0, 45, - 50, 0, 346, + 50, 0, 347, 51, 0, 158, - 53, 0, 720, + 53, 0, 722, 54, 0, 47, 56, 0, 48, 68, 0, 159, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 51, 87, 0, 52, @@ -11333,124 +11345,124 @@ static int parser_action_row1075[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1076[] = { +static int parser_action_row1078[] = { 1, -1, 1, 324 }; -static int parser_action_row1077[] = { +static int parser_action_row1079[] = { 4, -1, 1, 531, - 61, 0, 1205, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1207, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1078[] = { +static int parser_action_row1080[] = { 4, -1, 1, 533, - 61, 0, 1207, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1209, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1079[] = { +static int parser_action_row1081[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1080[] = { +static int parser_action_row1082[] = { 4, -1, 1, 537, - 61, 0, 1210, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1212, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1081[] = { +static int parser_action_row1083[] = { 1, -1, 1, 327 }; -static int parser_action_row1082[] = { +static int parser_action_row1084[] = { 2, -1, 1, 558, - 58, 0, 839 + 58, 0, 841 }; -static int parser_action_row1083[] = { +static int parser_action_row1085[] = { 2, - -1, 3, 1082, - 27, 0, 1212 + -1, 3, 1084, + 27, 0, 1214 }; -static int parser_action_row1084[] = { +static int parser_action_row1086[] = { 1, -1, 1, 551 }; -static int parser_action_row1085[] = { +static int parser_action_row1087[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1086[] = { +static int parser_action_row1088[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1087[] = { +static int parser_action_row1089[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1088[] = { +static int parser_action_row1090[] = { 3, -1, 1, 206, 27, 1, 655, - 61, 0, 1216 + 61, 0, 1218 }; -static int parser_action_row1089[] = { +static int parser_action_row1091[] = { 2, - -1, 3, 1088, - 26, 0, 1217 + -1, 3, 1090, + 26, 0, 1219 }; -static int parser_action_row1090[] = { +static int parser_action_row1092[] = { 2, - -1, 3, 1089, - 15, 0, 1218 + -1, 3, 1091, + 15, 0, 1220 }; -static int parser_action_row1091[] = { +static int parser_action_row1093[] = { 2, - -1, 3, 1090, + -1, 3, 1092, 84, 0, 297 }; -static int parser_action_row1092[] = { +static int parser_action_row1094[] = { 3, - -1, 3, 1091, - 31, 0, 1220, - 58, 0, 572 + -1, 3, 1093, + 31, 0, 1222, + 58, 0, 574 }; -static int parser_action_row1093[] = { +static int parser_action_row1095[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 1093, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 1095, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -11462,15 +11474,15 @@ static int parser_action_row1093[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1094[] = { +static int parser_action_row1096[] = { 2, -1, 1, 163, 27, 1, 620 }; -static int parser_action_row1095[] = { +static int parser_action_row1097[] = { 30, -1, 1, 360, - 9, 0, 1222, + 9, 0, 1224, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -11500,11 +11512,11 @@ static int parser_action_row1095[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1096[] = { +static int parser_action_row1098[] = { 1, -1, 1, 679 }; -static int parser_action_row1097[] = { +static int parser_action_row1099[] = { 22, -1, 1, 360, 12, 0, 153, @@ -11529,7 +11541,7 @@ static int parser_action_row1097[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1098[] = { +static int parser_action_row1100[] = { 25, -1, 1, 346, 12, 0, 108, @@ -11557,12 +11569,12 @@ static int parser_action_row1098[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1099[] = { +static int parser_action_row1101[] = { 2, - -1, 3, 1098, - 85, 0, 1226 + -1, 3, 1100, + 85, 0, 1228 }; -static int parser_action_row1100[] = { +static int parser_action_row1102[] = { 28, -1, 1, 346, 12, 0, 108, @@ -11593,55 +11605,55 @@ static int parser_action_row1100[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1101[] = { +static int parser_action_row1103[] = { 3, -1, 1, 357, - 12, 0, 1229, + 12, 0, 1231, 84, 0, 223 }; -static int parser_action_row1102[] = { +static int parser_action_row1104[] = { 4, -1, 1, 359, - 12, 0, 1230, + 12, 0, 1232, 83, 0, 49, 84, 0, 225 }; -static int parser_action_row1103[] = { +static int parser_action_row1105[] = { 1, -1, 1, 662 }; -static int parser_action_row1104[] = { +static int parser_action_row1106[] = { 1, -1, 1, 667 }; -static int parser_action_row1105[] = { +static int parser_action_row1107[] = { 1, -1, 1, 659 }; -static int parser_action_row1106[] = { +static int parser_action_row1108[] = { 1, -1, 1, 664 }; -static int parser_action_row1107[] = { +static int parser_action_row1109[] = { 1, -1, 1, 661 }; -static int parser_action_row1108[] = { +static int parser_action_row1110[] = { 1, -1, 1, 666 }; -static int parser_action_row1109[] = { +static int parser_action_row1111[] = { 2, -1, 1, 200, 27, 1, 650 }; -static int parser_action_row1110[] = { +static int parser_action_row1112[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1111[] = { +static int parser_action_row1113[] = { 32, -1, 1, 360, 0, 0, 1, @@ -11676,29 +11688,29 @@ static int parser_action_row1111[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1112[] = { +static int parser_action_row1114[] = { 2, - -1, 3, 1111, - 27, 0, 1235 + -1, 3, 1113, + 27, 0, 1237 }; -static int parser_action_row1113[] = { +static int parser_action_row1115[] = { 2, -1, 1, 555, - 82, 0, 472 + 82, 0, 474 }; -static int parser_action_row1114[] = { +static int parser_action_row1116[] = { 1, -1, 1, 157 }; -static int parser_action_row1115[] = { +static int parser_action_row1117[] = { 1, -1, 1, 452 }; -static int parser_action_row1116[] = { +static int parser_action_row1118[] = { 1, -1, 1, 553 }; -static int parser_action_row1117[] = { +static int parser_action_row1119[] = { 22, -1, 1, 360, 12, 0, 153, @@ -11723,775 +11735,775 @@ static int parser_action_row1117[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1118[] = { +static int parser_action_row1120[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1119[] = { +static int parser_action_row1121[] = { 1, -1, 1, 318 }; -static int parser_action_row1120[] = { +static int parser_action_row1122[] = { 1, -1, 1, 331 }; -static int parser_action_row1121[] = { +static int parser_action_row1123[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1122[] = { +static int parser_action_row1124[] = { 1, -1, 1, 153 }; -static int parser_action_row1123[] = { +static int parser_action_row1125[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1124[] = { +static int parser_action_row1126[] = { 1, -1, 1, 402 }; -static int parser_action_row1125[] = { +static int parser_action_row1127[] = { 2, - -1, 3, 1124, - 83, 0, 1240 + -1, 3, 1126, + 83, 0, 1242 }; -static int parser_action_row1126[] = { +static int parser_action_row1128[] = { 2, -1, 1, 555, - 82, 0, 472 + 82, 0, 474 }; -static int parser_action_row1127[] = { +static int parser_action_row1129[] = { 3, -1, 1, 342, 54, 0, 242, - 66, 0, 1242 + 66, 0, 1244 }; -static int parser_action_row1128[] = { +static int parser_action_row1130[] = { 1, -1, 1, 423 }; -static int parser_action_row1129[] = { +static int parser_action_row1131[] = { 3, - -1, 3, 1128, - 50, 0, 1124, - 83, 0, 1125 + -1, 3, 1130, + 50, 0, 1126, + 83, 0, 1127 }; -static int parser_action_row1130[] = { +static int parser_action_row1132[] = { 2, -1, 1, 427, 66, 1, 429 }; -static int parser_action_row1131[] = { +static int parser_action_row1133[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1132[] = { +static int parser_action_row1134[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1133[] = { +static int parser_action_row1135[] = { 1, -1, 1, 422 }; -static int parser_action_row1134[] = { +static int parser_action_row1136[] = { 1, -1, 1, 432 }; -static int parser_action_row1135[] = { +static int parser_action_row1137[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1136[] = { +static int parser_action_row1138[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1137[] = { +static int parser_action_row1139[] = { 20, -1, 1, 360, - 12, 0, 845, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row1138[] = { +static int parser_action_row1140[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1139[] = { +static int parser_action_row1141[] = { 20, -1, 1, 360, - 12, 0, 845, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row1140[] = { +static int parser_action_row1142[] = { 20, -1, 1, 360, - 12, 0, 845, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, - 83, 0, 49, - 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, - 90, 0, 55, - 93, 0, 861 -}; -static int parser_action_row1141[] = { - 19, - -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row1142[] = { +static int parser_action_row1143[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 -}; -static int parser_action_row1143[] = { - 3, - -1, 3, 1142, - 50, 0, 1255, - 83, 0, 1256 + 93, 0, 863 }; static int parser_action_row1144[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1145[] = { - 19, - -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, - 83, 0, 49, - 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, - 90, 0, 55, - 93, 0, 861 + 3, + -1, 3, 1144, + 50, 0, 1257, + 83, 0, 1258 }; static int parser_action_row1146[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1147[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1148[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1149[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1150[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1151[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1152[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1153[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1154[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1155[] = { 19, -1, 1, 360, - 12, 0, 845, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; static int parser_action_row1156[] = { + 19, + -1, 1, 360, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, + 83, 0, 49, + 84, 0, 50, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, + 90, 0, 55, + 93, 0, 863 +}; +static int parser_action_row1157[] = { + 19, + -1, 1, 360, + 12, 0, 847, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, + 83, 0, 49, + 84, 0, 50, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, + 90, 0, 55, + 93, 0, 863 +}; +static int parser_action_row1158[] = { 5, -1, 1, 360, - 12, 0, 1270, - 49, 0, 1271, + 12, 0, 1272, + 49, 0, 1273, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row1157[] = { +static int parser_action_row1159[] = { 1, -1, 1, 125 }; -static int parser_action_row1158[] = { +static int parser_action_row1160[] = { 2, -1, 1, 124, - 64, 0, 1274 + 64, 0, 1276 }; -static int parser_action_row1159[] = { +static int parser_action_row1161[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1160[] = { +static int parser_action_row1162[] = { 1, -1, 1, 115 }; -static int parser_action_row1161[] = { +static int parser_action_row1163[] = { 2, - -1, 3, 1160, - 84, 0, 875 + -1, 3, 1162, + 84, 0, 877 }; -static int parser_action_row1162[] = { +static int parser_action_row1164[] = { 1, -1, 1, 828 }; -static int parser_action_row1163[] = { +static int parser_action_row1165[] = { 1, -1, 1, 119 }; -static int parser_action_row1164[] = { +static int parser_action_row1166[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1165[] = { +static int parser_action_row1167[] = { 1, -1, 1, 829 }; -static int parser_action_row1166[] = { +static int parser_action_row1168[] = { 2, -1, 1, 128, - 58, 0, 1163 + 58, 0, 1165 }; -static int parser_action_row1167[] = { +static int parser_action_row1169[] = { 18, - -1, 3, 1166, - 49, 0, 1279, - 56, 0, 488, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 84, 0, 503 + -1, 3, 1168, + 49, 0, 1281, + 56, 0, 490, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 84, 0, 505 }; -static int parser_action_row1168[] = { +static int parser_action_row1170[] = { 3, -1, 1, 149, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1169[] = { +static int parser_action_row1171[] = { 1, -1, 1, 390 }; -static int parser_action_row1170[] = { +static int parser_action_row1172[] = { 1, -1, 1, 385 }; -static int parser_action_row1171[] = { +static int parser_action_row1173[] = { 1, -1, 1, 53 }; -static int parser_action_row1172[] = { +static int parser_action_row1174[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1173[] = { +static int parser_action_row1175[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1174[] = { +static int parser_action_row1176[] = { 1, -1, 1, 825 }; -static int parser_action_row1175[] = { +static int parser_action_row1177[] = { 2, - -1, 3, 1174, - 57, 0, 1285 + -1, 3, 1176, + 57, 0, 1287 }; -static int parser_action_row1176[] = { +static int parser_action_row1178[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 58, 0, 1172 + 58, 0, 1174 }; -static int parser_action_row1177[] = { +static int parser_action_row1179[] = { 1, -1, 1, 28 }; -static int parser_action_row1178[] = { +static int parser_action_row1180[] = { 4, -1, 1, 42, - 9, 0, 1288, + 9, 0, 1290, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1179[] = { +static int parser_action_row1181[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1180[] = { +static int parser_action_row1182[] = { 3, -1, 1, 42, - 9, 0, 1290, + 9, 0, 1292, 13, 0, 28 }; -static int parser_action_row1181[] = { +static int parser_action_row1183[] = { 3, - -1, 3, 1180, - 50, 0, 346, - 83, 0, 347 + -1, 3, 1182, + 50, 0, 347, + 83, 0, 348 }; -static int parser_action_row1182[] = { +static int parser_action_row1184[] = { 8, - -1, 3, 1181, - 10, 0, 1292, - 11, 0, 1293, - 12, 0, 1294, - 16, 0, 1295, - 17, 0, 1296, - 18, 0, 1297, - 41, 0, 1298 + -1, 3, 1183, + 10, 0, 1294, + 11, 0, 1295, + 12, 0, 1296, + 16, 0, 1297, + 17, 0, 1298, + 18, 0, 1299, + 41, 0, 1300 }; -static int parser_action_row1183[] = { +static int parser_action_row1185[] = { 4, -1, 1, 92, 22, 0, 199, 23, 0, 200, 24, 0, 201 }; -static int parser_action_row1184[] = { +static int parser_action_row1186[] = { 2, -1, 1, 42, 13, 0, 28 }; -static int parser_action_row1185[] = { +static int parser_action_row1187[] = { 4, -1, 1, 92, 22, 0, 199, 23, 0, 200, 24, 0, 201 }; -static int parser_action_row1186[] = { +static int parser_action_row1188[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1187[] = { +static int parser_action_row1189[] = { 3, - -1, 3, 1186, + -1, 3, 1188, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row1188[] = { +static int parser_action_row1190[] = { 1, -1, 1, 808 }; -static int parser_action_row1189[] = { +static int parser_action_row1191[] = { 3, - -1, 3, 1188, + -1, 3, 1190, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row1190[] = { +static int parser_action_row1192[] = { 1, -1, 1, 30 }; -static int parser_action_row1191[] = { +static int parser_action_row1193[] = { 3, -1, 1, 42, - 9, 0, 1305, + 9, 0, 1307, 13, 0, 28 }; -static int parser_action_row1192[] = { +static int parser_action_row1194[] = { 1, -1, 1, 34 }; -static int parser_action_row1193[] = { +static int parser_action_row1195[] = { 4, -1, 1, 42, - 9, 0, 1306, + 9, 0, 1308, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1194[] = { +static int parser_action_row1196[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1195[] = { +static int parser_action_row1197[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1196[] = { +static int parser_action_row1198[] = { 1, -1, 1, 27 }; -static int parser_action_row1197[] = { +static int parser_action_row1199[] = { 4, -1, 1, 42, - 9, 0, 1310, + 9, 0, 1312, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1198[] = { +static int parser_action_row1200[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1199[] = { +static int parser_action_row1201[] = { 3, -1, 1, 42, - 9, 0, 1312, + 9, 0, 1314, 13, 0, 28 }; -static int parser_action_row1200[] = { +static int parser_action_row1202[] = { 2, - -1, 3, 1199, - 48, 0, 1313 + -1, 3, 1201, + 48, 0, 1315 }; -static int parser_action_row1201[] = { +static int parser_action_row1203[] = { 2, - -1, 3, 1200, - 55, 0, 1314 + -1, 3, 1202, + 55, 0, 1316 }; -static int parser_action_row1202[] = { +static int parser_action_row1204[] = { 1, -1, 1, 763 }; -static int parser_action_row1203[] = { +static int parser_action_row1205[] = { 1, -1, 1, 758 }; -static int parser_action_row1204[] = { +static int parser_action_row1206[] = { 2, - -1, 3, 1203, - 59, 0, 1315 + -1, 3, 1205, + 59, 0, 1317 }; -static int parser_action_row1205[] = { +static int parser_action_row1207[] = { 2, - -1, 3, 1204, - 55, 0, 1316 + -1, 3, 1206, + 55, 0, 1318 }; -static int parser_action_row1206[] = { +static int parser_action_row1208[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12516,7 +12528,7 @@ static int parser_action_row1206[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1207[] = { +static int parser_action_row1209[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12541,7 +12553,7 @@ static int parser_action_row1207[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1208[] = { +static int parser_action_row1210[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12566,7 +12578,7 @@ static int parser_action_row1208[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1209[] = { +static int parser_action_row1211[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12591,15 +12603,15 @@ static int parser_action_row1209[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1210[] = { +static int parser_action_row1212[] = { 5, -1, 1, 360, - 12, 0, 559, - 49, 0, 560, + 12, 0, 561, + 49, 0, 562, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row1211[] = { +static int parser_action_row1213[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12624,7 +12636,7 @@ static int parser_action_row1211[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1212[] = { +static int parser_action_row1214[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12649,23 +12661,23 @@ static int parser_action_row1212[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1213[] = { +static int parser_action_row1215[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1214[] = { +static int parser_action_row1216[] = { 2, - -1, 3, 1213, - 48, 0, 1326 + -1, 3, 1215, + 48, 0, 1328 }; -static int parser_action_row1215[] = { +static int parser_action_row1217[] = { 2, - -1, 3, 1214, - 55, 0, 1327 + -1, 3, 1216, + 55, 0, 1329 }; -static int parser_action_row1216[] = { +static int parser_action_row1218[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12690,37 +12702,37 @@ static int parser_action_row1216[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1217[] = { +static int parser_action_row1219[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1218[] = { +static int parser_action_row1220[] = { 33, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 665, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 27, 0, 670, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 667, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 27, 0, 672, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -12732,30 +12744,30 @@ static int parser_action_row1218[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1219[] = { +static int parser_action_row1221[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 783, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 785, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -12767,61 +12779,61 @@ static int parser_action_row1219[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1220[] = { +static int parser_action_row1222[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1221[] = { +static int parser_action_row1223[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1222[] = { +static int parser_action_row1224[] = { 1, -1, 1, 680 }; -static int parser_action_row1223[] = { +static int parser_action_row1225[] = { 2, -1, 1, 162, 27, 1, 619 }; -static int parser_action_row1224[] = { +static int parser_action_row1226[] = { 2, -1, 1, 161, 27, 1, 618 }; -static int parser_action_row1225[] = { +static int parser_action_row1227[] = { 1, -1, 1, 652 }; -static int parser_action_row1226[] = { +static int parser_action_row1228[] = { 2, -1, 1, 194, 27, 1, 644 }; -static int parser_action_row1227[] = { +static int parser_action_row1229[] = { 4, -1, 1, 278, - 61, 0, 1335, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1337, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1228[] = { +static int parser_action_row1230[] = { 4, -1, 1, 280, - 61, 0, 1337, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1339, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1229[] = { +static int parser_action_row1231[] = { 2, -1, 1, 191, 27, 1, 641 }; -static int parser_action_row1230[] = { +static int parser_action_row1232[] = { 23, -1, 1, 346, 12, 0, 108, @@ -12835,7 +12847,7 @@ static int parser_action_row1230[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -12847,7 +12859,7 @@ static int parser_action_row1230[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1231[] = { +static int parser_action_row1233[] = { 23, -1, 1, 346, 12, 0, 108, @@ -12861,7 +12873,7 @@ static int parser_action_row1231[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -12873,13 +12885,13 @@ static int parser_action_row1231[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1232[] = { +static int parser_action_row1234[] = { 3, -1, 1, 358, - 12, 0, 1341, - 84, 0, 389 + 12, 0, 1343, + 84, 0, 390 }; -static int parser_action_row1233[] = { +static int parser_action_row1235[] = { 22, -1, 1, 360, 12, 0, 153, @@ -12904,437 +12916,437 @@ static int parser_action_row1233[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1234[] = { +static int parser_action_row1236[] = { 1, -1, 1, 237 }; -static int parser_action_row1235[] = { +static int parser_action_row1237[] = { 2, - -1, 3, 1234, + -1, 3, 1236, 52, 0, 172 }; -static int parser_action_row1236[] = { +static int parser_action_row1238[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1237[] = { +static int parser_action_row1239[] = { 1, -1, 1, 453 }; -static int parser_action_row1238[] = { +static int parser_action_row1240[] = { 1, -1, 1, 750 }; -static int parser_action_row1239[] = { +static int parser_action_row1241[] = { 1, -1, 1, 154 }; -static int parser_action_row1240[] = { +static int parser_action_row1242[] = { 2, - -1, 3, 1239, - 26, 0, 1345 + -1, 3, 1241, + 26, 0, 1347 }; -static int parser_action_row1241[] = { +static int parser_action_row1243[] = { 2, -1, 1, 555, - 82, 0, 472 + 82, 0, 474 }; -static int parser_action_row1242[] = { +static int parser_action_row1244[] = { 1, -1, 1, 562 }; -static int parser_action_row1243[] = { +static int parser_action_row1245[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1244[] = { +static int parser_action_row1246[] = { 1, -1, 1, 425 }; -static int parser_action_row1245[] = { +static int parser_action_row1247[] = { 2, - -1, 3, 1244, - 66, 0, 1242 + -1, 3, 1246, + 66, 0, 1244 }; -static int parser_action_row1246[] = { +static int parser_action_row1248[] = { 5, -1, 1, 360, - 12, 0, 1270, - 49, 0, 1271, + 12, 0, 1272, + 49, 0, 1273, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row1247[] = { +static int parser_action_row1249[] = { 2, - -1, 3, 1246, - 55, 0, 1349 + -1, 3, 1248, + 55, 0, 1351 }; -static int parser_action_row1248[] = { +static int parser_action_row1250[] = { 1, -1, 1, 288 }; -static int parser_action_row1249[] = { +static int parser_action_row1251[] = { 1, -1, 1, 287 }; -static int parser_action_row1250[] = { +static int parser_action_row1252[] = { 1, -1, 1, 398 }; -static int parser_action_row1251[] = { +static int parser_action_row1253[] = { 20, -1, 1, 360, - 12, 0, 845, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row1252[] = { +static int parser_action_row1254[] = { 1, -1, 1, 397 }; -static int parser_action_row1253[] = { +static int parser_action_row1255[] = { 1, -1, 1, 400 }; -static int parser_action_row1254[] = { +static int parser_action_row1256[] = { 3, -1, 1, 408, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1255[] = { +static int parser_action_row1257[] = { 3, -1, 1, 411, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1256[] = { +static int parser_action_row1258[] = { 2, - -1, 3, 1255, - 83, 0, 1351 + -1, 3, 1257, + 83, 0, 1353 }; -static int parser_action_row1257[] = { +static int parser_action_row1259[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1258[] = { +static int parser_action_row1260[] = { 1, -1, 1, 413 }; -static int parser_action_row1259[] = { +static int parser_action_row1261[] = { 4, -1, 1, 415, - 69, 0, 1017, - 70, 0, 1018, - 71, 0, 1019 + 69, 0, 1019, + 70, 0, 1020, + 71, 0, 1021 }; -static int parser_action_row1260[] = { +static int parser_action_row1262[] = { 4, -1, 1, 416, - 69, 0, 1017, - 70, 0, 1018, - 71, 0, 1019 + 69, 0, 1019, + 70, 0, 1020, + 71, 0, 1021 }; -static int parser_action_row1261[] = { +static int parser_action_row1263[] = { 3, -1, 1, 404, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1262[] = { +static int parser_action_row1264[] = { 3, -1, 1, 405, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1263[] = { +static int parser_action_row1265[] = { 3, -1, 1, 406, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1264[] = { +static int parser_action_row1266[] = { 3, -1, 1, 407, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1265[] = { +static int parser_action_row1267[] = { 3, -1, 1, 409, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1266[] = { +static int parser_action_row1268[] = { 3, -1, 1, 410, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1267[] = { +static int parser_action_row1269[] = { 3, -1, 1, 412, - 67, 0, 1008, - 68, 0, 1009 + 67, 0, 1010, + 68, 0, 1011 }; -static int parser_action_row1268[] = { +static int parser_action_row1270[] = { 1, -1, 1, 418 }; -static int parser_action_row1269[] = { +static int parser_action_row1271[] = { 1, -1, 1, 419 }; -static int parser_action_row1270[] = { +static int parser_action_row1272[] = { 1, -1, 1, 420 }; -static int parser_action_row1271[] = { +static int parser_action_row1273[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1272[] = { +static int parser_action_row1274[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1273[] = { +static int parser_action_row1275[] = { 2, - -1, 3, 1272, - 85, 0, 1355 + -1, 3, 1274, + 85, 0, 1357 }; -static int parser_action_row1274[] = { +static int parser_action_row1276[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1275[] = { +static int parser_action_row1277[] = { 1, -1, 1, 126 }; -static int parser_action_row1276[] = { +static int parser_action_row1278[] = { 1, -1, 1, 114 }; -static int parser_action_row1277[] = { +static int parser_action_row1279[] = { 1, -1, 1, 121 }; -static int parser_action_row1278[] = { +static int parser_action_row1280[] = { 20, - -1, 3, 1277, - 44, 0, 1029, - 50, 0, 346, - 56, 0, 488, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 83, 0, 347, - 84, 0, 503 + -1, 3, 1279, + 44, 0, 1031, + 50, 0, 347, + 56, 0, 490, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 83, 0, 348, + 84, 0, 505 }; -static int parser_action_row1279[] = { +static int parser_action_row1281[] = { 1, -1, 1, 830 }; -static int parser_action_row1280[] = { +static int parser_action_row1282[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1281[] = { +static int parser_action_row1283[] = { 1, -1, 1, 135 }; -static int parser_action_row1282[] = { +static int parser_action_row1284[] = { 1, -1, 1, 148 }; -static int parser_action_row1283[] = { +static int parser_action_row1285[] = { 1, -1, 1, 387 }; -static int parser_action_row1284[] = { +static int parser_action_row1286[] = { 1, -1, 1, 54 }; -static int parser_action_row1285[] = { +static int parser_action_row1287[] = { 2, - -1, 3, 1284, - 83, 0, 1041 + -1, 3, 1286, + 83, 0, 1043 }; -static int parser_action_row1286[] = { +static int parser_action_row1288[] = { 1, -1, 1, 49 }; -static int parser_action_row1287[] = { +static int parser_action_row1289[] = { 1, -1, 1, 826 }; -static int parser_action_row1288[] = { +static int parser_action_row1290[] = { 2, - -1, 3, 1287, - 57, 0, 1360 + -1, 3, 1289, + 57, 0, 1362 }; -static int parser_action_row1289[] = { +static int parser_action_row1291[] = { 1, -1, 1, 32 }; -static int parser_action_row1290[] = { +static int parser_action_row1292[] = { 3, -1, 1, 42, - 9, 0, 1361, + 9, 0, 1363, 13, 0, 28 }; -static int parser_action_row1291[] = { +static int parser_action_row1293[] = { 1, -1, 1, 36 }; -static int parser_action_row1292[] = { +static int parser_action_row1294[] = { 2, -1, 1, 87, - 14, 0, 394 + 14, 0, 395 }; -static int parser_action_row1293[] = { +static int parser_action_row1295[] = { 17, - -1, 3, 1292, - 56, 0, 488, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 84, 0, 503 + -1, 3, 1294, + 56, 0, 490, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 84, 0, 505 }; -static int parser_action_row1294[] = { +static int parser_action_row1296[] = { 2, - -1, 3, 1293, - 83, 0, 1364 + -1, 3, 1295, + 83, 0, 1366 }; -static int parser_action_row1295[] = { +static int parser_action_row1297[] = { 21, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 56, 0, 488, - 59, 0, 624, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 84, 0, 503 + 54, 0, 625, + 56, 0, 490, + 59, 0, 626, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 84, 0, 505 }; -static int parser_action_row1296[] = { +static int parser_action_row1298[] = { 1, -1, 1, 90 }; -static int parser_action_row1297[] = { +static int parser_action_row1299[] = { 1, -1, 1, 91 }; -static int parser_action_row1298[] = { +static int parser_action_row1300[] = { 3, - -1, 3, 1297, - 84, 0, 1367, - 85, 0, 1368 + -1, 3, 1299, + 84, 0, 1369, + 85, 0, 1370 }; -static int parser_action_row1299[] = { +static int parser_action_row1301[] = { 21, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 56, 0, 488, - 59, 0, 624, - 67, 0, 489, - 68, 0, 490, - 69, 0, 491, - 70, 0, 492, - 71, 0, 493, - 72, 0, 494, - 73, 0, 495, - 74, 0, 496, - 75, 0, 497, - 76, 0, 498, - 77, 0, 499, - 78, 0, 500, - 79, 0, 501, - 80, 0, 502, - 84, 0, 503 + 54, 0, 625, + 56, 0, 490, + 59, 0, 626, + 67, 0, 491, + 68, 0, 492, + 69, 0, 493, + 70, 0, 494, + 71, 0, 495, + 72, 0, 496, + 73, 0, 497, + 74, 0, 498, + 75, 0, 499, + 76, 0, 500, + 77, 0, 501, + 78, 0, 502, + 79, 0, 503, + 80, 0, 504, + 84, 0, 505 }; -static int parser_action_row1300[] = { +static int parser_action_row1302[] = { 3, - -1, 3, 1299, - 17, 0, 1296, - 18, 0, 1371 + -1, 3, 1301, + 17, 0, 1298, + 18, 0, 1373 }; -static int parser_action_row1301[] = { +static int parser_action_row1303[] = { 4, -1, 1, 92, 22, 0, 199, 23, 0, 200, 24, 0, 201 }; -static int parser_action_row1302[] = { +static int parser_action_row1304[] = { 2, - -1, 3, 1301, - 18, 0, 1373 + -1, 3, 1303, + 18, 0, 1375 }; -static int parser_action_row1303[] = { +static int parser_action_row1305[] = { 35, -1, 1, 360, 12, 0, 153, @@ -13345,10 +13357,10 @@ static int parser_action_row1303[] = { 29, 0, 33, 30, 0, 34, 34, 0, 155, - 36, 0, 716, - 37, 0, 717, - 38, 0, 718, - 39, 0, 719, + 36, 0, 718, + 37, 0, 719, + 38, 0, 720, + 39, 0, 721, 40, 0, 40, 41, 0, 156, 43, 0, 157, @@ -13356,14 +13368,14 @@ static int parser_action_row1303[] = { 46, 0, 43, 47, 0, 44, 48, 0, 45, - 50, 0, 346, + 50, 0, 347, 51, 0, 158, - 53, 0, 720, + 53, 0, 722, 54, 0, 47, 56, 0, 48, 68, 0, 159, 82, 0, 183, - 83, 0, 721, + 83, 0, 723, 84, 0, 50, 86, 0, 51, 87, 0, 52, @@ -13372,66 +13384,66 @@ static int parser_action_row1303[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1304[] = { +static int parser_action_row1306[] = { 1, -1, 1, 809 }; -static int parser_action_row1305[] = { +static int parser_action_row1307[] = { 1, -1, 1, 812 }; -static int parser_action_row1306[] = { +static int parser_action_row1308[] = { 1, -1, 1, 38 }; -static int parser_action_row1307[] = { +static int parser_action_row1309[] = { 1, -1, 1, 29 }; -static int parser_action_row1308[] = { +static int parser_action_row1310[] = { 4, -1, 1, 42, - 9, 0, 1375, + 9, 0, 1377, 13, 0, 28, - 44, 0, 1049 + 44, 0, 1051 }; -static int parser_action_row1309[] = { +static int parser_action_row1311[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1310[] = { +static int parser_action_row1312[] = { 3, -1, 1, 42, - 9, 0, 1377, + 9, 0, 1379, 13, 0, 28 }; -static int parser_action_row1311[] = { +static int parser_action_row1313[] = { 1, -1, 1, 31 }; -static int parser_action_row1312[] = { +static int parser_action_row1314[] = { 3, -1, 1, 42, - 9, 0, 1378, + 9, 0, 1380, 13, 0, 28 }; -static int parser_action_row1313[] = { +static int parser_action_row1315[] = { 1, -1, 1, 35 }; -static int parser_action_row1314[] = { +static int parser_action_row1316[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1315[] = { +static int parser_action_row1317[] = { 1, -1, 1, 301 }; -static int parser_action_row1316[] = { +static int parser_action_row1318[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13456,48 +13468,48 @@ static int parser_action_row1316[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1317[] = { +static int parser_action_row1319[] = { 4, - -1, 3, 1316, + -1, 3, 1318, 0, 0, 83, 1, 0, 84, 82, 0, 183 }; -static int parser_action_row1318[] = { +static int parser_action_row1320[] = { 1, -1, 1, 486 }; -static int parser_action_row1319[] = { +static int parser_action_row1321[] = { 1, -1, 1, 491 }; -static int parser_action_row1320[] = { +static int parser_action_row1322[] = { 1, -1, 1, 488 }; -static int parser_action_row1321[] = { +static int parser_action_row1323[] = { 1, -1, 1, 493 }; -static int parser_action_row1322[] = { +static int parser_action_row1324[] = { 2, - -1, 3, 1321, - 85, 0, 1383 + -1, 3, 1323, + 85, 0, 1385 }; -static int parser_action_row1323[] = { +static int parser_action_row1325[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1324[] = { +static int parser_action_row1326[] = { 1, -1, 1, 489 }; -static int parser_action_row1325[] = { +static int parser_action_row1327[] = { 1, -1, 1, 494 }; -static int parser_action_row1326[] = { +static int parser_action_row1328[] = { 20, -1, 1, 360, 12, 0, 108, @@ -13520,21 +13532,21 @@ static int parser_action_row1326[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1327[] = { +static int parser_action_row1329[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1328[] = { +static int parser_action_row1330[] = { 1, -1, 1, 549 }; -static int parser_action_row1329[] = { +static int parser_action_row1331[] = { 1, -1, 1, 656 }; -static int parser_action_row1330[] = { +static int parser_action_row1332[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13559,27 +13571,27 @@ static int parser_action_row1330[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1331[] = { +static int parser_action_row1333[] = { 2, - -1, 3, 1330, - 27, 0, 1388 + -1, 3, 1332, + 27, 0, 1390 }; -static int parser_action_row1332[] = { +static int parser_action_row1334[] = { 1, -1, 1, 674 }; -static int parser_action_row1333[] = { +static int parser_action_row1335[] = { 2, - -1, 3, 1332, + -1, 3, 1334, 52, 0, 172 }; -static int parser_action_row1334[] = { +static int parser_action_row1336[] = { 3, - -1, 3, 1333, - 55, 0, 1390, - 58, 0, 572 + -1, 3, 1335, + 55, 0, 1392, + 58, 0, 574 }; -static int parser_action_row1335[] = { +static int parser_action_row1337[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13604,7 +13616,7 @@ static int parser_action_row1335[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1336[] = { +static int parser_action_row1338[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13629,7 +13641,7 @@ static int parser_action_row1336[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1337[] = { +static int parser_action_row1339[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13654,7 +13666,7 @@ static int parser_action_row1337[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1338[] = { +static int parser_action_row1340[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13679,7 +13691,7 @@ static int parser_action_row1338[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1339[] = { +static int parser_action_row1341[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13704,17 +13716,17 @@ static int parser_action_row1339[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1340[] = { +static int parser_action_row1342[] = { 2, -1, 1, 196, 27, 1, 646 }; -static int parser_action_row1341[] = { +static int parser_action_row1343[] = { 2, -1, 1, 198, 27, 1, 648 }; -static int parser_action_row1342[] = { +static int parser_action_row1344[] = { 23, -1, 1, 346, 12, 0, 108, @@ -13728,7 +13740,7 @@ static int parser_action_row1342[] = { 47, 0, 115, 48, 0, 116, 51, 0, 117, - 54, 0, 385, + 54, 0, 386, 68, 0, 119, 83, 0, 49, 84, 0, 50, @@ -13740,17 +13752,17 @@ static int parser_action_row1342[] = { 90, 0, 55, 93, 0, 124 }; -static int parser_action_row1343[] = { +static int parser_action_row1345[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1344[] = { +static int parser_action_row1346[] = { 1, -1, 1, 235 }; -static int parser_action_row1345[] = { +static int parser_action_row1347[] = { 22, -1, 1, 360, 12, 0, 153, @@ -13775,151 +13787,141 @@ static int parser_action_row1345[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1346[] = { +static int parser_action_row1348[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1347[] = { +static int parser_action_row1349[] = { 1, -1, 1, 563 }; -static int parser_action_row1348[] = { +static int parser_action_row1350[] = { 3, - -1, 3, 1347, + -1, 3, 1349, 83, 0, 49, 84, 0, 50 }; -static int parser_action_row1349[] = { +static int parser_action_row1351[] = { 2, - -1, 3, 1348, - 85, 0, 1401 + -1, 3, 1350, + 85, 0, 1403 }; -static int parser_action_row1350[] = { +static int parser_action_row1352[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1351[] = { +static int parser_action_row1353[] = { 1, -1, 1, 399 }; -static int parser_action_row1352[] = { +static int parser_action_row1354[] = { 2, -1, 1, 316, 82, 0, 183 }; -static int parser_action_row1353[] = { +static int parser_action_row1355[] = { 1, -1, 1, 391 }; -static int parser_action_row1354[] = { +static int parser_action_row1356[] = { 1, -1, 1, 433 }; -static int parser_action_row1355[] = { +static int parser_action_row1357[] = { 3, - -1, 3, 1354, - 34, 0, 1404, - 54, 0, 1405 + -1, 3, 1356, + 34, 0, 1406, + 54, 0, 1407 }; -static int parser_action_row1356[] = { +static int parser_action_row1358[] = { 1, -1, 1, 428 }; -static int parser_action_row1357[] = { +static int parser_action_row1359[] = { 1, -1, 1, 430 }; -static int parser_action_row1358[] = { +static int parser_action_row1360[] = { 1, -1, 1, 130 }; -static int parser_action_row1359[] = { +static int parser_action_row1361[] = { 5, - -1, 3, 1358, - 34, 0, 1406, - 50, 0, 1407, - 54, 0, 1408, - 83, 0, 347 + -1, 3, 1360, + 34, 0, 1408, + 50, 0, 1409, + 54, 0, 1410, + 83, 0, 348 }; -static int parser_action_row1360[] = { +static int parser_action_row1362[] = { 1, -1, 1, 52 }; -static int parser_action_row1361[] = { +static int parser_action_row1363[] = { 1, -1, 1, 50 }; -static int parser_action_row1362[] = { +static int parser_action_row1364[] = { 1, -1, 1, 40 }; -static int parser_action_row1363[] = { +static int parser_action_row1365[] = { 1, -1, 1, 55 }; -static int parser_action_row1364[] = { +static int parser_action_row1366[] = { 5, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 59, 0, 624 + 54, 0, 625, + 59, 0, 626 }; -static int parser_action_row1365[] = { +static int parser_action_row1367[] = { 2, - -1, 3, 1364, - 59, 0, 624 + -1, 3, 1366, + 59, 0, 626 }; -static int parser_action_row1366[] = { +static int parser_action_row1368[] = { 5, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 59, 0, 624 + 54, 0, 625, + 59, 0, 626 }; -static int parser_action_row1367[] = { +static int parser_action_row1369[] = { 3, - -1, 3, 1366, - 14, 0, 1413, - 15, 0, 1414 + -1, 3, 1368, + 14, 0, 1415, + 15, 0, 1416 }; -static int parser_action_row1368[] = { +static int parser_action_row1370[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1369[] = { +static int parser_action_row1371[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1370[] = { +static int parser_action_row1372[] = { 5, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 54, 0, 623, - 59, 0, 624 + 54, 0, 625, + 59, 0, 626 }; -static int parser_action_row1371[] = { +static int parser_action_row1373[] = { 3, -1, 1, 143, - 14, 0, 1419, - 89, 0, 1035 -}; -static int parser_action_row1372[] = { - 2, - -1, 3, 1371, - 85, 0, 1421 -}; -static int parser_action_row1373[] = { - 2, - -1, 3, 1372, - 18, 0, 1422 + 14, 0, 1421, + 89, 0, 1037 }; static int parser_action_row1374[] = { 2, @@ -13929,96 +13931,106 @@ static int parser_action_row1374[] = { static int parser_action_row1375[] = { 2, -1, 3, 1374, - 55, 0, 1424 + 18, 0, 1424 }; static int parser_action_row1376[] = { + 2, + -1, 3, 1375, + 85, 0, 1425 +}; +static int parser_action_row1377[] = { + 2, + -1, 3, 1376, + 55, 0, 1426 +}; +static int parser_action_row1378[] = { 1, -1, 1, 33 }; -static int parser_action_row1377[] = { +static int parser_action_row1379[] = { 3, -1, 1, 42, - 9, 0, 1425, + 9, 0, 1427, 13, 0, 28 }; -static int parser_action_row1378[] = { +static int parser_action_row1380[] = { 1, -1, 1, 37 }; -static int parser_action_row1379[] = { +static int parser_action_row1381[] = { 1, -1, 1, 39 }; -static int parser_action_row1380[] = { +static int parser_action_row1382[] = { 2, - -1, 3, 1379, - 55, 0, 1426 + -1, 3, 1381, + 55, 0, 1428 }; -static int parser_action_row1381[] = { +static int parser_action_row1383[] = { 1, -1, 1, 769 }; -static int parser_action_row1382[] = { +static int parser_action_row1384[] = { 3, - -1, 3, 1381, + -1, 3, 1383, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row1383[] = { +static int parser_action_row1385[] = { 1, -1, 1, 325 }; -static int parser_action_row1384[] = { +static int parser_action_row1386[] = { 4, -1, 1, 530, - 61, 0, 1428, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1430, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1385[] = { +static int parser_action_row1387[] = { 4, -1, 1, 532, - 61, 0, 1430, - 62, 0, 371, - 63, 0, 372 + 61, 0, 1432, + 62, 0, 372, + 63, 0, 373 }; -static int parser_action_row1386[] = { +static int parser_action_row1388[] = { 1, -1, 1, 497 }; -static int parser_action_row1387[] = { +static int parser_action_row1389[] = { 2, - -1, 3, 1386, - 55, 0, 1432 + -1, 3, 1388, + 55, 0, 1434 }; -static int parser_action_row1388[] = { +static int parser_action_row1390[] = { 1, -1, 1, 657 }; -static int parser_action_row1389[] = { +static int parser_action_row1391[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 1093, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 1095, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -14030,54 +14042,54 @@ static int parser_action_row1389[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1390[] = { +static int parser_action_row1392[] = { 2, -1, 1, 232, 27, 1, 673 }; -static int parser_action_row1391[] = { +static int parser_action_row1393[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1392[] = { +static int parser_action_row1394[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1393[] = { +static int parser_action_row1395[] = { 1, -1, 1, 658 }; -static int parser_action_row1394[] = { +static int parser_action_row1396[] = { 1, -1, 1, 663 }; -static int parser_action_row1395[] = { +static int parser_action_row1397[] = { 1, -1, 1, 660 }; -static int parser_action_row1396[] = { +static int parser_action_row1398[] = { 1, -1, 1, 665 }; -static int parser_action_row1397[] = { +static int parser_action_row1399[] = { 2, -1, 1, 197, 27, 1, 647 }; -static int parser_action_row1398[] = { +static int parser_action_row1400[] = { 2, - -1, 3, 1397, - 15, 0, 1436 + -1, 3, 1399, + 15, 0, 1438 }; -static int parser_action_row1399[] = { +static int parser_action_row1401[] = { 1, -1, 1, 245 }; -static int parser_action_row1400[] = { +static int parser_action_row1402[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14102,91 +14114,91 @@ static int parser_action_row1400[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1401[] = { +static int parser_action_row1403[] = { 2, -1, 1, 342, 54, 0, 242 }; -static int parser_action_row1402[] = { +static int parser_action_row1404[] = { 2, -1, 1, 426, 66, 1, 428 }; -static int parser_action_row1403[] = { +static int parser_action_row1405[] = { 1, -1, 1, 446 }; -static int parser_action_row1404[] = { +static int parser_action_row1406[] = { 1, -1, 1, 392 }; -static int parser_action_row1405[] = { +static int parser_action_row1407[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1406[] = { +static int parser_action_row1408[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1407[] = { +static int parser_action_row1409[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1408[] = { +static int parser_action_row1410[] = { 2, -1, 1, 140, - 83, 0, 479 + 83, 0, 481 }; -static int parser_action_row1409[] = { +static int parser_action_row1411[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1410[] = { +static int parser_action_row1412[] = { 1, -1, 1, 138 }; -static int parser_action_row1411[] = { +static int parser_action_row1413[] = { 4, -1, 1, 129, - 4, 0, 749, - 14, 0, 1443, - 15, 0, 1444 + 4, 0, 751, + 14, 0, 1445, + 15, 0, 1446 }; -static int parser_action_row1412[] = { +static int parser_action_row1414[] = { 2, -1, 1, 87, - 14, 0, 394 + 14, 0, 395 }; -static int parser_action_row1413[] = { +static int parser_action_row1415[] = { 3, - -1, 3, 1412, - 14, 0, 1413, - 15, 0, 1449 + -1, 3, 1414, + 14, 0, 1415, + 15, 0, 1451 }; -static int parser_action_row1414[] = { +static int parser_action_row1416[] = { 7, - -1, 3, 1413, + -1, 3, 1415, 0, 0, 83, 1, 0, 84, - 4, 0, 339, - 16, 0, 340, - 17, 0, 341, - 84, 0, 343 + 4, 0, 340, + 16, 0, 341, + 17, 0, 342, + 84, 0, 344 }; -static int parser_action_row1415[] = { +static int parser_action_row1417[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14216,76 +14228,76 @@ static int parser_action_row1415[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1416[] = { +static int parser_action_row1418[] = { 2, - -1, 3, 1415, - 15, 0, 1454 + -1, 3, 1417, + 15, 0, 1456 }; -static int parser_action_row1417[] = { +static int parser_action_row1419[] = { 6, -1, 1, 42, 0, 1, 87, 1, 1, 87, 13, 0, 28, - 14, 0, 394, - 61, 0, 1455 + 14, 0, 395, + 61, 0, 1457 }; -static int parser_action_row1418[] = { +static int parser_action_row1420[] = { 2, -1, 1, 64, - 61, 0, 1459 + 61, 0, 1461 }; -static int parser_action_row1419[] = { +static int parser_action_row1421[] = { 3, -1, 1, 143, - 14, 0, 1460, - 89, 0, 1035 + 14, 0, 1462, + 89, 0, 1037 }; -static int parser_action_row1420[] = { +static int parser_action_row1422[] = { 2, - -1, 3, 1419, - 20, 0, 1462 + -1, 3, 1421, + 20, 0, 1464 }; -static int parser_action_row1421[] = { +static int parser_action_row1423[] = { 2, -1, 1, 129, - 4, 0, 749 + 4, 0, 751 }; -static int parser_action_row1422[] = { +static int parser_action_row1424[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1423[] = { +static int parser_action_row1425[] = { 2, - -1, 3, 1422, - 85, 0, 1465 + -1, 3, 1424, + 85, 0, 1467 }; -static int parser_action_row1424[] = { +static int parser_action_row1426[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1425[] = { +static int parser_action_row1427[] = { 4, - -1, 3, 1424, + -1, 3, 1426, 0, 0, 83, 1, 0, 84, 82, 0, 183 }; -static int parser_action_row1426[] = { +static int parser_action_row1428[] = { 1, -1, 1, 41 }; -static int parser_action_row1427[] = { +static int parser_action_row1429[] = { 1, -1, 1, 302 }; -static int parser_action_row1428[] = { +static int parser_action_row1430[] = { 1, -1, 1, 326 }; -static int parser_action_row1429[] = { +static int parser_action_row1431[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14310,7 +14322,7 @@ static int parser_action_row1429[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1430[] = { +static int parser_action_row1432[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14335,7 +14347,7 @@ static int parser_action_row1430[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1431[] = { +static int parser_action_row1433[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14360,7 +14372,7 @@ static int parser_action_row1431[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1432[] = { +static int parser_action_row1434[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14385,25 +14397,25 @@ static int parser_action_row1432[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1433[] = { +static int parser_action_row1435[] = { 1, -1, 1, 550 }; -static int parser_action_row1434[] = { +static int parser_action_row1436[] = { 1, -1, 1, 670 }; -static int parser_action_row1435[] = { +static int parser_action_row1437[] = { 2, - -1, 3, 1434, - 31, 0, 1473 + -1, 3, 1436, + 31, 0, 1475 }; -static int parser_action_row1436[] = { +static int parser_action_row1438[] = { 2, - -1, 3, 1435, - 15, 0, 1474 + -1, 3, 1437, + 15, 0, 1476 }; -static int parser_action_row1437[] = { +static int parser_action_row1439[] = { 32, -1, 1, 360, 0, 0, 1, @@ -14438,59 +14450,59 @@ static int parser_action_row1437[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1438[] = { +static int parser_action_row1440[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1439[] = { +static int parser_action_row1441[] = { 1, -1, 1, 435 }; -static int parser_action_row1440[] = { - 2, - -1, 3, 1439, - 48, 0, 1478 -}; -static int parser_action_row1441[] = { - 4, - -1, 3, 1440, - 34, 0, 1479, - 50, 0, 346, - 83, 0, 347 -}; static int parser_action_row1442[] = { 2, -1, 3, 1441, - 50, 0, 1481 + 48, 0, 1480 }; static int parser_action_row1443[] = { 4, -1, 3, 1442, - 34, 0, 1482, - 50, 0, 1483, - 83, 0, 347 + 34, 0, 1481, + 50, 0, 347, + 83, 0, 348 }; static int parser_action_row1444[] = { - 10, + 2, -1, 3, 1443, + 50, 0, 1483 +}; +static int parser_action_row1445[] = { + 4, + -1, 3, 1444, + 34, 0, 1484, + 50, 0, 1485, + 83, 0, 348 +}; +static int parser_action_row1446[] = { + 10, + -1, 3, 1445, 0, 0, 83, 1, 0, 84, - 4, 0, 339, - 6, 0, 1485, - 16, 0, 340, - 17, 0, 341, - 19, 0, 1486, - 20, 0, 1487, - 84, 0, 343 + 4, 0, 340, + 6, 0, 1487, + 16, 0, 341, + 17, 0, 342, + 19, 0, 1488, + 20, 0, 1489, + 84, 0, 344 }; -static int parser_action_row1445[] = { +static int parser_action_row1447[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14520,31 +14532,31 @@ static int parser_action_row1445[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1446[] = { +static int parser_action_row1448[] = { 2, - -1, 3, 1445, - 15, 0, 1489 + -1, 3, 1447, + 15, 0, 1491 }; -static int parser_action_row1447[] = { +static int parser_action_row1449[] = { 3, - -1, 3, 1446, + -1, 3, 1448, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1448[] = { +static int parser_action_row1450[] = { 1, -1, 1, 59 }; -static int parser_action_row1449[] = { +static int parser_action_row1451[] = { 1, -1, 1, 80 }; -static int parser_action_row1450[] = { +static int parser_action_row1452[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14574,32 +14586,32 @@ static int parser_action_row1450[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1451[] = { +static int parser_action_row1453[] = { 2, - -1, 3, 1450, - 15, 0, 1492 + -1, 3, 1452, + 15, 0, 1494 }; -static int parser_action_row1452[] = { +static int parser_action_row1454[] = { 1, -1, 1, 88 }; -static int parser_action_row1453[] = { +static int parser_action_row1455[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1454[] = { +static int parser_action_row1456[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row1455[] = { +static int parser_action_row1457[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14629,127 +14641,127 @@ static int parser_action_row1455[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1456[] = { +static int parser_action_row1458[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1457[] = { +static int parser_action_row1459[] = { 4, -1, 1, 92, 22, 0, 199, 23, 0, 200, 24, 0, 201 }; -static int parser_action_row1458[] = { +static int parser_action_row1460[] = { 1, -1, 1, 72 }; -static int parser_action_row1459[] = { +static int parser_action_row1461[] = { 3, -1, 1, 87, - 14, 0, 394, - 61, 0, 1498 + 14, 0, 395, + 61, 0, 1500 }; -static int parser_action_row1460[] = { +static int parser_action_row1462[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1461[] = { +static int parser_action_row1463[] = { 2, - -1, 3, 1460, - 20, 0, 1501 + -1, 3, 1462, + 20, 0, 1503 }; -static int parser_action_row1462[] = { +static int parser_action_row1464[] = { 2, -1, 1, 129, - 4, 0, 749 + 4, 0, 751 }; -static int parser_action_row1463[] = { +static int parser_action_row1465[] = { 2, -1, 1, 143, - 89, 0, 1035 + 89, 0, 1037 }; -static int parser_action_row1464[] = { +static int parser_action_row1466[] = { 3, - -1, 3, 1463, + -1, 3, 1465, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1465[] = { +static int parser_action_row1467[] = { 2, -1, 1, 65, - 61, 0, 1505 + 61, 0, 1507 }; -static int parser_action_row1466[] = { +static int parser_action_row1468[] = { 2, -1, 1, 160, 59, 0, 290 }; -static int parser_action_row1467[] = { +static int parser_action_row1469[] = { 2, -1, 1, 66, - 61, 0, 1507 + 61, 0, 1509 }; -static int parser_action_row1468[] = { +static int parser_action_row1470[] = { 3, - -1, 3, 1467, + -1, 3, 1469, 0, 0, 83, 1, 0, 84 }; -static int parser_action_row1469[] = { +static int parser_action_row1471[] = { 1, -1, 1, 810 }; -static int parser_action_row1470[] = { +static int parser_action_row1472[] = { 1, -1, 1, 485 }; -static int parser_action_row1471[] = { +static int parser_action_row1473[] = { 1, -1, 1, 490 }; -static int parser_action_row1472[] = { +static int parser_action_row1474[] = { 1, -1, 1, 487 }; -static int parser_action_row1473[] = { +static int parser_action_row1475[] = { 1, -1, 1, 492 }; -static int parser_action_row1474[] = { +static int parser_action_row1476[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1475[] = { +static int parser_action_row1477[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 783, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 785, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -14761,83 +14773,83 @@ static int parser_action_row1475[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1476[] = { +static int parser_action_row1478[] = { 1, -1, 1, 236 }; -static int parser_action_row1477[] = { +static int parser_action_row1479[] = { 2, - -1, 3, 1476, + -1, 3, 1478, 52, 0, 172 }; -static int parser_action_row1478[] = { +static int parser_action_row1480[] = { 2, - -1, 3, 1477, - 27, 0, 1513 + -1, 3, 1479, + 27, 0, 1515 }; -static int parser_action_row1479[] = { +static int parser_action_row1481[] = { 1, -1, 1, 449 }; -static int parser_action_row1480[] = { +static int parser_action_row1482[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1481[] = { +static int parser_action_row1483[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1482[] = { +static int parser_action_row1484[] = { 1, -1, 1, 142 }; -static int parser_action_row1483[] = { +static int parser_action_row1485[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1484[] = { +static int parser_action_row1486[] = { 4, -1, 1, 378, 0, 0, 1, 1, 0, 2, - 83, 0, 479 + 83, 0, 481 }; -static int parser_action_row1485[] = { +static int parser_action_row1487[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1486[] = { +static int parser_action_row1488[] = { 1, -1, 1, 60 }; -static int parser_action_row1487[] = { +static int parser_action_row1489[] = { 1, -1, 1, 61 }; -static int parser_action_row1488[] = { +static int parser_action_row1490[] = { 2, -1, 1, 143, - 89, 0, 1035 + 89, 0, 1037 }; -static int parser_action_row1489[] = { +static int parser_action_row1491[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row1490[] = { +static int parser_action_row1492[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14867,21 +14879,21 @@ static int parser_action_row1490[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1491[] = { +static int parser_action_row1493[] = { 1, -1, 1, 63 }; -static int parser_action_row1492[] = { +static int parser_action_row1494[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row1493[] = { +static int parser_action_row1495[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 467, + 9, 0, 469, 12, 0, 27, 15, 0, 29, 18, 0, 30, @@ -14911,20 +14923,20 @@ static int parser_action_row1493[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1494[] = { +static int parser_action_row1496[] = { 1, -1, 1, 89 }; -static int parser_action_row1495[] = { +static int parser_action_row1497[] = { 1, -1, 1, 76 }; -static int parser_action_row1496[] = { +static int parser_action_row1498[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; -static int parser_action_row1497[] = { +static int parser_action_row1499[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14949,22 +14961,22 @@ static int parser_action_row1497[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1498[] = { +static int parser_action_row1500[] = { 2, - -1, 3, 1497, - 17, 0, 1296 + -1, 3, 1499, + 17, 0, 1298 }; -static int parser_action_row1499[] = { +static int parser_action_row1501[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1500[] = { +static int parser_action_row1502[] = { 1, -1, 1, 73 }; -static int parser_action_row1501[] = { +static int parser_action_row1503[] = { 22, -1, 1, 360, 12, 0, 153, @@ -14989,48 +15001,48 @@ static int parser_action_row1501[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1502[] = { +static int parser_action_row1504[] = { 2, -1, 1, 143, - 89, 0, 1035 + 89, 0, 1037 }; -static int parser_action_row1503[] = { +static int parser_action_row1505[] = { 3, - -1, 3, 1502, + -1, 3, 1504, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1504[] = { +static int parser_action_row1506[] = { 2, -1, 1, 129, - 4, 0, 749 + 4, 0, 751 }; -static int parser_action_row1505[] = { +static int parser_action_row1507[] = { 1, -1, 1, 83 }; -static int parser_action_row1506[] = { +static int parser_action_row1508[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1507[] = { +static int parser_action_row1509[] = { 2, -1, 1, 67, - 61, 0, 1532 + 61, 0, 1534 }; -static int parser_action_row1508[] = { +static int parser_action_row1510[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1509[] = { +static int parser_action_row1511[] = { 1, -1, 1, 811 }; -static int parser_action_row1510[] = { +static int parser_action_row1512[] = { 22, -1, 1, 360, 12, 0, 153, @@ -15055,39 +15067,29 @@ static int parser_action_row1510[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1511[] = { +static int parser_action_row1513[] = { 1, -1, 1, 678 }; -static int parser_action_row1512[] = { +static int parser_action_row1514[] = { 2, - -1, 3, 1511, + -1, 3, 1513, 52, 0, 172 }; -static int parser_action_row1513[] = { +static int parser_action_row1515[] = { 1, -1, 1, 234 }; -static int parser_action_row1514[] = { +static int parser_action_row1516[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1515[] = { - 2, - -1, 3, 1514, - 48, 0, 1537 -}; -static int parser_action_row1516[] = { - 2, - -1, 3, 1515, - 55, 0, 1538 -}; static int parser_action_row1517[] = { 2, -1, 3, 1516, - 50, 0, 1539 + 48, 0, 1539 }; static int parser_action_row1518[] = { 2, @@ -15097,41 +15099,51 @@ static int parser_action_row1518[] = { static int parser_action_row1519[] = { 2, -1, 3, 1518, - 55, 0, 1541 + 50, 0, 1541 }; static int parser_action_row1520[] = { 2, - -1, 1, 129, - 4, 0, 749 + -1, 3, 1519, + 55, 0, 1542 }; static int parser_action_row1521[] = { - 1, - -1, 1, 57 + 2, + -1, 3, 1520, + 55, 0, 1543 }; static int parser_action_row1522[] = { 2, - -1, 1, 371, - 9, 0, 1038 + -1, 1, 129, + 4, 0, 751 }; static int parser_action_row1523[] = { 1, - -1, 1, 77 + -1, 1, 57 }; static int parser_action_row1524[] = { 2, -1, 1, 371, - 9, 0, 1038 + 9, 0, 1040 }; static int parser_action_row1525[] = { 1, - -1, 1, 78 + -1, 1, 77 }; static int parser_action_row1526[] = { 2, - -1, 1, 87, - 14, 0, 394 + -1, 1, 371, + 9, 0, 1040 }; static int parser_action_row1527[] = { + 1, + -1, 1, 78 +}; +static int parser_action_row1528[] = { + 2, + -1, 1, 87, + 14, 0, 395 +}; +static int parser_action_row1529[] = { 22, -1, 1, 360, 12, 0, 153, @@ -15156,26 +15168,26 @@ static int parser_action_row1527[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1528[] = { +static int parser_action_row1530[] = { 1, -1, 1, 68 }; -static int parser_action_row1529[] = { +static int parser_action_row1531[] = { 2, -1, 1, 129, - 4, 0, 749 + 4, 0, 751 }; -static int parser_action_row1530[] = { +static int parser_action_row1532[] = { 1, -1, 1, 84 }; -static int parser_action_row1531[] = { +static int parser_action_row1533[] = { 3, -1, 1, 149, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1532[] = { +static int parser_action_row1534[] = { 22, -1, 1, 360, 12, 0, 153, @@ -15200,13 +15212,13 @@ static int parser_action_row1532[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1533[] = { +static int parser_action_row1535[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1534[] = { +static int parser_action_row1536[] = { 22, -1, 1, 360, 12, 0, 153, @@ -15231,103 +15243,103 @@ static int parser_action_row1534[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1535[] = { +static int parser_action_row1537[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1536[] = { +static int parser_action_row1538[] = { 2, -1, 1, 235, 27, 1, 676 }; -static int parser_action_row1537[] = { +static int parser_action_row1539[] = { 21, -1, 1, 360, - 12, 0, 845, - 25, 0, 846, - 34, 0, 847, - 41, 0, 848, - 43, 0, 849, - 45, 0, 850, - 46, 0, 851, - 47, 0, 852, - 48, 0, 853, - 51, 0, 854, - 54, 0, 855, - 68, 0, 856, + 12, 0, 847, + 25, 0, 848, + 34, 0, 849, + 41, 0, 850, + 43, 0, 851, + 45, 0, 852, + 46, 0, 853, + 47, 0, 854, + 48, 0, 855, + 51, 0, 856, + 54, 0, 857, + 68, 0, 858, 83, 0, 49, 84, 0, 50, - 86, 0, 857, - 87, 0, 858, - 88, 0, 859, - 89, 0, 860, + 86, 0, 859, + 87, 0, 860, + 88, 0, 861, + 89, 0, 862, 90, 0, 55, - 93, 0, 861 + 93, 0, 863 }; -static int parser_action_row1538[] = { +static int parser_action_row1540[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1539[] = { +static int parser_action_row1541[] = { 1, -1, 1, 447 }; -static int parser_action_row1540[] = { +static int parser_action_row1542[] = { 3, -1, 1, 378, 0, 0, 1, 1, 0, 2 }; -static int parser_action_row1541[] = { +static int parser_action_row1543[] = { 1, -1, 1, 139 }; -static int parser_action_row1542[] = { +static int parser_action_row1544[] = { 1, -1, 1, 137 }; -static int parser_action_row1543[] = { +static int parser_action_row1545[] = { 3, -1, 1, 149, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1544[] = { +static int parser_action_row1546[] = { 1, -1, 1, 58 }; -static int parser_action_row1545[] = { +static int parser_action_row1547[] = { 1, -1, 1, 79 }; -static int parser_action_row1546[] = { +static int parser_action_row1548[] = { 1, -1, 1, 74 }; -static int parser_action_row1547[] = { +static int parser_action_row1549[] = { 2, -1, 1, 87, - 14, 0, 394 + 14, 0, 395 }; -static int parser_action_row1548[] = { +static int parser_action_row1550[] = { 3, -1, 1, 149, 31, 0, 35, 96, 0, 57 }; -static int parser_action_row1549[] = { +static int parser_action_row1551[] = { 1, -1, 1, 81 }; -static int parser_action_row1550[] = { +static int parser_action_row1552[] = { 1, -1, 1, 69 }; -static int parser_action_row1551[] = { +static int parser_action_row1553[] = { 22, -1, 1, 360, 12, 0, 153, @@ -15352,69 +15364,69 @@ static int parser_action_row1551[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1552[] = { +static int parser_action_row1554[] = { 1, -1, 1, 70 }; -static int parser_action_row1553[] = { +static int parser_action_row1555[] = { 2, - -1, 3, 1552, - 15, 0, 1560 + -1, 3, 1554, + 15, 0, 1562 }; -static int parser_action_row1554[] = { +static int parser_action_row1556[] = { 1, -1, 1, 395 }; -static int parser_action_row1555[] = { +static int parser_action_row1557[] = { 2, - -1, 3, 1554, - 55, 0, 1561 + -1, 3, 1556, + 55, 0, 1563 }; -static int parser_action_row1556[] = { +static int parser_action_row1558[] = { 2, - -1, 3, 1555, - 55, 0, 1562 + -1, 3, 1557, + 55, 0, 1564 }; -static int parser_action_row1557[] = { +static int parser_action_row1559[] = { 1, -1, 1, 62 }; -static int parser_action_row1558[] = { +static int parser_action_row1560[] = { 1, -1, 1, 75 }; -static int parser_action_row1559[] = { +static int parser_action_row1561[] = { 1, -1, 1, 82 }; -static int parser_action_row1560[] = { +static int parser_action_row1562[] = { 1, -1, 1, 71 }; -static int parser_action_row1561[] = { +static int parser_action_row1563[] = { 32, -1, 1, 360, 0, 0, 1, 1, 0, 2, - 9, 0, 783, - 12, 0, 666, - 15, 0, 667, - 18, 0, 668, - 25, 0, 669, - 28, 0, 671, - 29, 0, 672, - 30, 0, 673, - 36, 0, 674, - 37, 0, 675, - 38, 0, 676, - 39, 0, 677, - 40, 0, 678, + 9, 0, 785, + 12, 0, 668, + 15, 0, 669, + 18, 0, 670, + 25, 0, 671, + 28, 0, 673, + 29, 0, 674, + 30, 0, 675, + 36, 0, 676, + 37, 0, 677, + 38, 0, 678, + 39, 0, 679, + 40, 0, 680, 41, 0, 41, 45, 0, 42, 46, 0, 43, 47, 0, 44, 48, 0, 45, - 53, 0, 679, + 53, 0, 681, 54, 0, 47, 56, 0, 48, 83, 0, 49, @@ -15426,24 +15438,24 @@ static int parser_action_row1561[] = { 90, 0, 55, 93, 0, 56 }; -static int parser_action_row1562[] = { +static int parser_action_row1564[] = { 1, -1, 1, 448 }; -static int parser_action_row1563[] = { +static int parser_action_row1565[] = { 1, -1, 1, 141 }; -static int parser_action_row1564[] = { +static int parser_action_row1566[] = { 1, -1, 1, 677 }; -static int parser_action_row1565[] = { +static int parser_action_row1567[] = { 2, - -1, 3, 1564, + -1, 3, 1566, 52, 0, 172 }; -static int parser_action_row1566[] = { +static int parser_action_row1568[] = { 2, -1, 1, 234, 27, 1, 675 @@ -17015,7 +17027,9 @@ const int* const parser_action_table[] = { parser_action_row1563, parser_action_row1564, parser_action_row1565, - parser_action_row1566 + parser_action_row1566, + parser_action_row1567, + parser_action_row1568 }; static int parser_goto_row1[] = { @@ -17060,8 +17074,8 @@ static int parser_goto_row5[] = { 101, 234, 102, 236, 104, 237, - 230, 390, - 235, 392 + 230, 391, + 235, 393 }; static int parser_goto_row6[] = { 1, @@ -17073,165 +17087,165 @@ static int parser_goto_row7[] = { }; static int parser_goto_row8[] = { 9, - -1, 1051, + -1, 1053, 12, 58, 22, 58, 92, 232, 96, 232, - 1052, 1182, - 1053, 1184, - 1183, 1300, - 1416, 1456 + 1054, 1184, + 1055, 1186, + 1185, 1302, + 1418, 1458 }; static int parser_goto_row9[] = { 1, - -1, 364 + -1, 365 }; static int parser_goto_row10[] = { 1, - -1, 757 + -1, 759 }; static int parser_goto_row11[] = { 2, - -1, 1173, - 1175, 1286 + -1, 1175, + 1177, 1288 }; static int parser_goto_row12[] = { 2, - -1, 1042, - 1284, 1359 + -1, 1044, + 1286, 1361 }; static int parser_goto_row13[] = { 5, - -1, 887, - 893, 1055, - 1045, 1055, - 1063, 1055, - 1193, 1055 + -1, 889, + 895, 1057, + 1047, 1057, + 1065, 1057, + 1195, 1057 }; static int parser_goto_row14[] = { 9, - -1, 888, - 894, 1058, - 1046, 1058, - 1057, 1058, - 1064, 1058, - 1178, 1058, - 1194, 1058, - 1197, 1058, - 1308, 1058 + -1, 890, + 896, 1060, + 1048, 1060, + 1059, 1060, + 1066, 1060, + 1180, 1060, + 1196, 1060, + 1199, 1060, + 1310, 1060 }; static int parser_goto_row15[] = { 1, - -1, 889 + -1, 891 }; static int parser_goto_row16[] = { 8, - -1, 395, - 620, 745, - 1291, 1362, - 1411, 1448, - 1416, 1457, - 1458, 1499, - 1525, 1545, - 1546, 1557 + -1, 396, + 622, 747, + 1293, 1364, + 1413, 1450, + 1418, 1459, + 1460, 1501, + 1527, 1547, + 1548, 1559 }; static int parser_goto_row17[] = { 4, - -1, 752, - 1366, 1415, - 1410, 1445, - 1412, 1450 + -1, 754, + 1368, 1417, + 1412, 1447, + 1414, 1452 }; static int parser_goto_row18[] = { 1, - -1, 1052 + -1, 1054 }; static int parser_goto_row19[] = { 3, - -1, 1053, - 1052, 1183, - 1416, 1458 + -1, 1055, + 1054, 1185, + 1418, 1460 }; static int parser_goto_row20[] = { 7, -1, 202, - 232, 391, - 1051, 1181, - 1182, 1299, + 232, 392, + 1053, 1183, 1184, 1301, - 1300, 1372, - 1456, 1497 + 1186, 1303, + 1302, 1374, + 1458, 1499 }; static int parser_goto_row21[] = { 6, - -1, 1030, - 362, 504, - 1166, 1280, - 1292, 1363, + -1, 1032, + 363, 506, + 1168, 1282, 1294, 1365, - 1298, 1369 + 1296, 1367, + 1300, 1371 }; static int parser_goto_row22[] = { 6, - -1, 625, - 1294, 1366, - 1298, 1370, - 1363, 1410, + -1, 627, + 1296, 1368, + 1300, 1372, 1365, 1412, - 1369, 1418 + 1367, 1414, + 1371, 1420 }; static int parser_goto_row23[] = { 1, - -1, 876 + -1, 878 }; static int parser_goto_row24[] = { 2, - -1, 1026, - 1028, 1161 + -1, 1028, + 1030, 1163 }; static int parser_goto_row25[] = { 2, - -1, 877, - 1160, 1276 + -1, 879, + 1162, 1278 }; static int parser_goto_row26[] = { 8, - -1, 753, - 1036, 1167, - 1410, 1446, - 1420, 1463, - 1461, 1502, - 1503, 1530, - 1519, 1542, - 1528, 1547 + -1, 755, + 1038, 1169, + 1412, 1448, + 1422, 1465, + 1463, 1504, + 1505, 1532, + 1521, 1544, + 1530, 1549 }; static int parser_goto_row27[] = { 2, - -1, 1164, - 1165, 1278 + -1, 1166, + 1167, 1280 }; static int parser_goto_row28[] = { 2, - -1, 1031, - 1277, 1357 + -1, 1033, + 1279, 1359 }; static int parser_goto_row29[] = { 1, - -1, 1032 + -1, 1034 }; static int parser_goto_row30[] = { 1, - -1, 1033 + -1, 1035 }; static int parser_goto_row31[] = { 6, - -1, 1036, - 1370, 1420, - 1418, 1461, - 1462, 1503, - 1487, 1519, - 1501, 1528 + -1, 1038, + 1372, 1422, + 1420, 1463, + 1464, 1505, + 1489, 1521, + 1503, 1530 }; static int parser_goto_row32[] = { 1, @@ -17239,23 +17253,23 @@ static int parser_goto_row32[] = { }; static int parser_goto_row33[] = { 10, - -1, 1281, + -1, 1283, 12, 60, 22, 60, 92, 60, - 753, 885, - 757, 890, - 895, 1060, - 1446, 1490, - 1463, 1504, - 1502, 1529 + 755, 887, + 759, 892, + 897, 1062, + 1448, 1492, + 1465, 1506, + 1504, 1531 }; static int parser_goto_row34[] = { 4, - -1, 1282, - 1530, 1548, - 1542, 1556, - 1547, 1558 + -1, 1284, + 1532, 1550, + 1544, 1558, + 1549, 1560 }; static int parser_goto_row35[] = { 5, @@ -17267,91 +17281,91 @@ static int parser_goto_row35[] = { }; static int parser_goto_row36[] = { 24, - -1, 708, - 189, 348, - 416, 546, - 432, 565, - 452, 582, - 609, 722, - 748, 878, - 774, 911, - 802, 946, - 836, 971, - 879, 1034, - 898, 1067, - 931, 1085, - 965, 1113, - 974, 722, - 1054, 911, - 1073, 1203, - 1074, 722, - 1180, 1291, - 1277, 1034, - 1302, 722, - 1358, 1409, - 1440, 1480, - 1442, 1484 + -1, 710, + 189, 349, + 417, 548, + 433, 567, + 454, 584, + 611, 724, + 750, 880, + 776, 913, + 804, 948, + 838, 973, + 881, 1036, + 900, 1069, + 933, 1087, + 967, 1115, + 976, 724, + 1056, 913, + 1075, 1205, + 1076, 724, + 1182, 1293, + 1279, 1036, + 1304, 724, + 1360, 1411, + 1442, 1482, + 1444, 1486 }; static int parser_goto_row37[] = { 4, - -1, 709, - 612, 739, - 707, 822, - 738, 842 + -1, 711, + 614, 741, + 709, 824, + 740, 844 }; static int parser_goto_row38[] = { 2, - -1, 824, - 825, 966 + -1, 826, + 827, 968 }; static int parser_goto_row39[] = { 5, - -1, 626, - 875, 1021, - 1022, 1157, - 1024, 1158, - 1364, 1411 + -1, 628, + 877, 1023, + 1024, 1159, + 1026, 1160, + 1366, 1413 }; static int parser_goto_row40[] = { 11, -1, 291, - 292, 434, - 788, 935, - 936, 1087, - 1041, 1170, - 1171, 1283, - 1367, 1416, - 1368, 1417, - 1421, 1464, + 292, 435, + 790, 937, + 938, 1089, + 1043, 1172, + 1173, 1285, + 1369, 1418, + 1370, 1419, 1423, 1466, - 1465, 1506 + 1425, 1468, + 1467, 1508 }; static int parser_goto_row41[] = { 24, -1, 142, 33, 149, - 335, 468, - 466, 598, - 569, 697, - 670, 790, - 672, 149, - 751, 883, - 813, 958, - 884, 1040, - 945, 468, - 1092, 598, - 1110, 1233, - 1218, 697, - 1388, 958, - 1414, 1453, - 1436, 1475, - 1444, 1488, - 1449, 1491, - 1454, 1495, - 1474, 1233, - 1489, 1521, - 1492, 1523, - 1560, 1475 + 336, 470, + 468, 600, + 571, 699, + 672, 792, + 674, 149, + 753, 885, + 815, 960, + 886, 1042, + 947, 470, + 1094, 600, + 1112, 1235, + 1220, 699, + 1390, 960, + 1416, 1455, + 1438, 1477, + 1446, 1490, + 1451, 1493, + 1456, 1497, + 1476, 1235, + 1491, 1523, + 1494, 1525, + 1562, 1477 }; static int parser_goto_row42[] = { 1, @@ -17360,21 +17374,21 @@ static int parser_goto_row42[] = { static int parser_goto_row43[] = { 2, -1, 62, - 686, 810 + 688, 812 }; static int parser_goto_row44[] = { 4, -1, 287, - 469, 600, - 784, 933, - 1094, 1223 + 471, 602, + 786, 935, + 1096, 1225 }; static int parser_goto_row45[] = { 4, -1, 204, - 206, 366, - 431, 366, - 957, 366 + 206, 367, + 432, 367, + 959, 367 }; static int parser_goto_row46[] = { 16, @@ -17384,16 +17398,16 @@ static int parser_goto_row46[] = { 92, 63, 96, 63, 144, 288, - 205, 365, - 367, 365, - 430, 365, - 469, 288, - 564, 365, - 568, 680, - 686, 811, - 784, 288, - 1094, 288, - 1217, 680 + 205, 366, + 368, 366, + 431, 366, + 471, 288, + 566, 366, + 570, 682, + 688, 813, + 786, 288, + 1096, 288, + 1219, 682 }; static int parser_goto_row47[] = { 18, @@ -17401,20 +17415,20 @@ static int parser_goto_row47[] = { 38, 175, 145, 289, 150, 295, - 675, 796, - 676, 798, - 698, 816, - 717, 832, - 718, 834, - 787, 934, - 793, 939, - 906, 1069, - 907, 1071, - 1234, 1343, - 1332, 1389, - 1476, 1512, - 1511, 1535, - 1564, 1565 + 677, 798, + 678, 800, + 700, 818, + 719, 834, + 720, 836, + 789, 936, + 795, 941, + 908, 1071, + 909, 1073, + 1236, 1345, + 1334, 1391, + 1478, 1514, + 1513, 1537, + 1566, 1567 }; static int parser_goto_row48[] = { 1, @@ -17423,48 +17437,48 @@ static int parser_goto_row48[] = { static int parser_goto_row49[] = { 7, -1, 64, - 609, 723, - 774, 912, - 974, 723, - 1054, 912, - 1074, 723, - 1302, 723 + 611, 725, + 776, 914, + 976, 725, + 1056, 914, + 1076, 725, + 1304, 725 }; static int parser_goto_row50[] = { 5, -1, 65, - 609, 724, - 974, 724, - 1074, 724, - 1302, 724 + 611, 726, + 976, 726, + 1076, 726, + 1304, 726 }; static int parser_goto_row51[] = { 15, - -1, 373, - 219, 382, - 220, 384, - 636, 764, - 637, 766, - 804, 949, - 806, 952, - 807, 954, - 1076, 1206, - 1077, 1208, - 1079, 1211, - 1226, 1336, - 1227, 1338, - 1383, 1429, - 1384, 1431 + -1, 374, + 219, 383, + 220, 385, + 638, 766, + 639, 768, + 806, 951, + 808, 954, + 809, 956, + 1078, 1208, + 1079, 1210, + 1081, 1213, + 1228, 1338, + 1229, 1340, + 1385, 1431, + 1386, 1433 }; static int parser_goto_row52[] = { 7, -1, 66, - 609, 725, - 774, 913, - 974, 725, - 1054, 913, - 1074, 725, - 1302, 725 + 611, 727, + 776, 915, + 976, 727, + 1056, 915, + 1076, 727, + 1304, 727 }; static int parser_goto_row53[] = { 1, @@ -17472,54 +17486,54 @@ static int parser_goto_row53[] = { }; static int parser_goto_row54[] = { 3, - -1, 681, - 686, 812, - 810, 956 + -1, 683, + 688, 814, + 812, 958 }; static int parser_goto_row55[] = { 7, -1, 68, - 609, 726, - 774, 914, - 974, 726, - 1054, 914, - 1074, 726, - 1302, 726 + 611, 728, + 776, 916, + 976, 728, + 1056, 916, + 1076, 728, + 1304, 728 }; static int parser_goto_row56[] = { 7, -1, 69, - 609, 727, - 774, 915, - 974, 727, - 1054, 915, - 1074, 727, - 1302, 727 + 611, 729, + 776, 917, + 976, 729, + 1056, 917, + 1076, 729, + 1304, 729 }; static int parser_goto_row57[] = { 7, -1, 70, - 609, 728, - 774, 916, - 974, 728, - 1054, 916, - 1074, 728, - 1302, 728 + 611, 730, + 776, 918, + 976, 730, + 1056, 918, + 1076, 730, + 1304, 730 }; static int parser_goto_row58[] = { 7, -1, 71, - 609, 729, - 774, 917, - 974, 729, - 1054, 917, - 1074, 729, - 1302, 729 + 611, 731, + 776, 919, + 976, 731, + 1056, 919, + 1076, 731, + 1304, 731 }; static int parser_goto_row59[] = { 2, -1, 178, - 678, 800 + 680, 802 }; static int parser_goto_row60[] = { 61, @@ -17527,63 +17541,63 @@ static int parser_goto_row60[] = { 37, 174, 38, 176, 40, 179, - 173, 330, - 175, 331, - 178, 333, - 370, 513, - 373, 514, - 381, 518, - 382, 519, - 383, 520, - 384, 521, - 482, 613, - 566, 663, - 664, 781, - 675, 174, - 676, 176, - 678, 179, - 716, 831, - 717, 833, - 718, 835, - 763, 899, - 764, 900, + 173, 331, + 175, 332, + 178, 334, + 371, 515, + 374, 516, + 382, 520, + 383, 521, + 384, 522, + 385, 523, + 484, 615, + 568, 665, + 666, 783, + 677, 174, + 678, 176, + 680, 179, + 718, 833, + 719, 835, + 720, 837, 765, 901, 766, 902, - 796, 330, + 767, 903, + 768, 904, 798, 331, - 800, 333, - 832, 969, - 834, 970, - 905, 1068, - 906, 1070, - 907, 1072, - 948, 513, - 949, 514, - 951, 518, - 952, 519, + 800, 332, + 802, 334, + 834, 971, + 836, 972, + 907, 1070, + 908, 1072, + 909, 1074, + 950, 515, + 951, 516, 953, 520, 954, 521, - 1069, 1201, - 1071, 1202, - 1096, 613, - 1116, 1237, - 1205, 1317, - 1206, 1318, + 955, 522, + 956, 523, + 1071, 1203, + 1073, 1204, + 1098, 615, + 1118, 1239, 1207, 1319, 1208, 1320, - 1210, 1323, - 1211, 1324, - 1215, 663, - 1315, 1380, - 1329, 781, - 1335, 899, - 1336, 900, + 1209, 1321, + 1210, 1322, + 1212, 1325, + 1213, 1326, + 1217, 665, + 1317, 1382, + 1331, 783, 1337, 901, 1338, 902, - 1428, 1469, - 1429, 1470, + 1339, 903, + 1340, 904, 1430, 1471, - 1431, 1472 + 1431, 1472, + 1432, 1473, + 1433, 1474 }; static int parser_goto_row61[] = { 58, @@ -17592,59 +17606,59 @@ static int parser_goto_row61[] = { 147, 293, 148, 294, 178, 180, - 190, 349, - 191, 350, - 216, 378, - 244, 398, - 255, 406, - 299, 439, - 368, 406, - 374, 515, - 397, 406, - 522, 406, - 609, 730, - 674, 180, - 675, 180, + 190, 350, + 191, 351, + 216, 379, + 244, 399, + 255, 407, + 300, 441, + 369, 407, + 375, 517, + 398, 407, + 524, 407, + 611, 732, 676, 180, + 677, 180, 678, 180, - 700, 818, - 741, 844, - 776, 928, - 789, 937, - 791, 938, - 796, 180, + 680, 180, + 702, 820, + 743, 846, + 778, 930, + 791, 939, + 793, 940, 798, 180, 800, 180, - 820, 963, - 948, 180, - 949, 180, + 802, 180, + 822, 965, + 950, 180, 951, 180, - 952, 180, 953, 180, 954, 180, - 974, 730, - 980, 1122, - 991, 1131, - 1074, 730, - 1096, 180, - 1215, 180, - 1232, 1342, - 1302, 730, - 1329, 180, - 1334, 1391, - 1335, 180, - 1336, 180, + 955, 180, + 956, 180, + 976, 732, + 982, 1124, + 993, 1133, + 1076, 732, + 1098, 180, + 1217, 180, + 1234, 1344, + 1304, 732, + 1331, 180, + 1336, 1393, 1337, 180, 1338, 180, - 1344, 1398, - 1399, 1437, - 1496, 1525, - 1500, 1527, - 1509, 1534, - 1526, 1546, - 1531, 1549, + 1339, 180, + 1340, 180, + 1346, 1400, + 1401, 1439, + 1498, 1527, + 1502, 1529, + 1511, 1536, + 1528, 1548, 1533, 1551, - 1550, 1559 + 1535, 1553, + 1552, 1561 }; static int parser_goto_row62[] = { 1, @@ -17653,11 +17667,11 @@ static int parser_goto_row62[] = { static int parser_goto_row63[] = { 6, -1, 163, - 300, 440, - 446, 576, + 301, 442, 448, 578, - 449, 579, - 577, 704 + 450, 580, + 451, 581, + 579, 706 }; static int parser_goto_row64[] = { 1, @@ -17666,30 +17680,30 @@ static int parser_goto_row64[] = { static int parser_goto_row65[] = { 10, -1, 165, - 450, 580, - 451, 581, - 455, 585, - 456, 586, + 452, 582, + 453, 583, 457, 587, 458, 588, 459, 589, 460, 590, - 461, 591 + 461, 591, + 462, 592, + 463, 593 }; static int parser_goto_row66[] = { 3, -1, 166, - 453, 583, - 454, 584 + 455, 585, + 456, 586 }; static int parser_goto_row67[] = { 6, -1, 167, - 302, 442, - 305, 445, - 462, 592, - 463, 593, - 464, 594 + 303, 444, + 306, 447, + 464, 594, + 465, 595, + 466, 596 }; static int parser_goto_row68[] = { 1, @@ -17705,44 +17719,44 @@ static int parser_goto_row69[] = { 92, 72, 96, 72, 144, 72, - 158, 303, + 158, 304, 205, 72, - 335, 72, - 367, 72, - 430, 72, - 466, 72, - 469, 72, - 564, 72, - 568, 682, - 569, 72, - 609, 731, - 667, 682, - 670, 72, - 672, 682, - 686, 72, - 751, 72, - 784, 72, - 813, 72, - 884, 72, - 945, 682, - 974, 731, - 1074, 731, - 1092, 682, - 1094, 72, - 1110, 72, - 1217, 682, - 1218, 682, - 1302, 731, - 1388, 682, - 1414, 72, - 1436, 72, - 1444, 72, - 1449, 72, - 1454, 72, - 1474, 682, - 1489, 72, - 1492, 72, - 1560, 682 + 336, 72, + 368, 72, + 431, 72, + 468, 72, + 471, 72, + 566, 72, + 570, 684, + 571, 72, + 611, 733, + 669, 684, + 672, 72, + 674, 684, + 688, 72, + 753, 72, + 786, 72, + 815, 72, + 886, 72, + 947, 684, + 976, 733, + 1076, 733, + 1094, 684, + 1096, 72, + 1112, 72, + 1219, 684, + 1220, 684, + 1304, 733, + 1390, 684, + 1416, 72, + 1438, 72, + 1446, 72, + 1451, 72, + 1456, 72, + 1476, 684, + 1491, 72, + 1494, 72, + 1562, 684 }; static int parser_goto_row70[] = { 72, @@ -17756,13 +17770,12 @@ static int parser_goto_row70[] = { 245, 125, 247, 125, 256, 125, - 388, 125, - 410, 125, - 412, 125, + 389, 125, + 411, 125, 413, 125, 414, 125, 415, 125, - 417, 125, + 416, 125, 418, 125, 419, 125, 420, 125, @@ -17774,50 +17787,51 @@ static int parser_goto_row70[] = { 426, 125, 427, 125, 428, 125, - 507, 125, - 510, 125, - 541, 125, - 639, 125, - 640, 125, - 666, 125, - 684, 125, - 742, 862, - 769, 125, - 774, 125, - 805, 125, - 809, 125, - 814, 125, - 854, 862, - 960, 125, - 981, 862, - 983, 862, - 992, 862, - 1054, 125, - 1097, 125, + 429, 125, + 509, 125, + 512, 125, + 543, 125, + 641, 125, + 642, 125, + 668, 125, + 686, 125, + 744, 864, + 771, 125, + 776, 125, + 807, 125, + 811, 125, + 816, 125, + 856, 864, + 962, 125, + 983, 864, + 985, 864, + 994, 864, + 1056, 125, 1099, 125, - 1136, 862, - 1138, 862, - 1139, 862, - 1140, 862, - 1141, 862, - 1143, 862, - 1144, 862, - 1145, 862, - 1146, 862, - 1147, 862, - 1148, 862, - 1149, 862, - 1150, 862, - 1151, 862, - 1152, 862, - 1153, 862, - 1154, 862, - 1229, 125, - 1230, 125, - 1250, 862, - 1325, 125, - 1341, 125, - 1536, 862 + 1101, 125, + 1138, 864, + 1140, 864, + 1141, 864, + 1142, 864, + 1143, 864, + 1145, 864, + 1146, 864, + 1147, 864, + 1148, 864, + 1149, 864, + 1150, 864, + 1151, 864, + 1152, 864, + 1153, 864, + 1154, 864, + 1155, 864, + 1156, 864, + 1231, 125, + 1232, 125, + 1252, 864, + 1327, 125, + 1343, 125, + 1538, 864 }; static int parser_goto_row71[] = { 1, @@ -17830,7 +17844,7 @@ static int parser_goto_row72[] = { static int parser_goto_row73[] = { 2, -1, 212, - 215, 376 + 215, 377 }; static int parser_goto_row74[] = { 1, @@ -17839,27 +17853,27 @@ static int parser_goto_row74[] = { static int parser_goto_row75[] = { 2, -1, 214, - 215, 377 + 215, 378 }; static int parser_goto_row76[] = { 13, -1, 184, 146, 292, - 609, 732, - 774, 918, - 788, 936, - 875, 1022, - 974, 732, - 1041, 1171, - 1054, 1186, - 1074, 732, - 1302, 732, - 1316, 1381, - 1424, 1467 + 611, 734, + 776, 920, + 790, 938, + 877, 1024, + 976, 734, + 1043, 1173, + 1056, 1188, + 1076, 734, + 1304, 734, + 1318, 1383, + 1426, 1469 }; static int parser_goto_row77[] = { 43, - -1, 481, + -1, 483, 42, 185, 43, 186, 44, 187, @@ -17879,86 +17893,86 @@ static int parser_goto_row77[] = { 122, 259, 123, 260, 124, 261, - 214, 375, - 345, 478, - 377, 516, - 479, 611, - 614, 740, - 850, 984, - 851, 985, + 214, 376, + 346, 480, + 378, 518, + 481, 613, + 616, 742, 852, 986, 853, 987, - 857, 993, - 858, 994, + 854, 988, + 855, 989, 859, 995, 860, 996, 861, 997, - 875, 1023, - 973, 1118, - 977, 1121, - 1120, 1238, - 1134, 1247, - 1135, 1248, - 1256, 1352, - 1349, 1402, - 1351, 1403 + 862, 998, + 863, 999, + 877, 1025, + 975, 1120, + 979, 1123, + 1122, 1240, + 1136, 1249, + 1137, 1250, + 1258, 1354, + 1351, 1404, + 1353, 1405 }; static int parser_goto_row78[] = { 3, - -1, 526, - 183, 344, - 771, 904 + -1, 528, + 183, 345, + 773, 906 }; static int parser_goto_row79[] = { 3, - -1, 881, - 394, 527, - 1413, 1451 + -1, 883, + 395, 529, + 1415, 1453 }; static int parser_goto_row80[] = { 3, - -1, 528, - 476, 608, - 710, 827 + -1, 530, + 478, 610, + 712, 829 }; static int parser_goto_row81[] = { 3, - -1, 649, - 882, 1037, - 1452, 1493 + -1, 651, + 884, 1039, + 1454, 1495 }; static int parser_goto_row82[] = { 2, - -1, 650, - 652, 775 + -1, 652, + 654, 777 }; static int parser_goto_row83[] = { 2, - -1, 647, - 648, 772 + -1, 649, + 650, 774 }; static int parser_goto_row84[] = { 3, - -1, 733, - 1074, 1204, - 1302, 1374 + -1, 735, + 1076, 1206, + 1304, 1376 }; static int parser_goto_row85[] = { 3, - -1, 840, - 841, 975, - 1081, 975 + -1, 842, + 843, 977, + 1083, 977 }; static int parser_goto_row86[] = { 2, - -1, 734, - 974, 1119 + -1, 736, + 976, 1121 }; static int parser_goto_row87[] = { 3, - -1, 345, - 472, 605, - 651, 774 + -1, 346, + 474, 607, + 653, 776 }; static int parser_goto_row88[] = { 33, @@ -17966,96 +17980,96 @@ static int parser_goto_row88[] = { 78, 220, 108, 243, 129, 264, - 171, 328, - 218, 379, - 262, 409, - 326, 379, - 400, 535, - 441, 574, - 507, 633, - 510, 637, - 559, 658, - 562, 661, - 595, 633, - 597, 706, - 684, 807, - 712, 828, - 736, 220, - 777, 929, - 805, 379, - 845, 979, - 864, 1000, - 920, 1077, - 998, 1133, - 1097, 633, - 1099, 1227, - 1117, 637, - 1126, 1243, - 1270, 1353, - 1273, 1356, - 1322, 1384, - 1400, 1438 + 171, 329, + 218, 380, + 262, 410, + 327, 380, + 401, 537, + 443, 576, + 509, 635, + 512, 639, + 561, 660, + 564, 663, + 597, 635, + 599, 708, + 686, 809, + 714, 830, + 738, 220, + 779, 931, + 807, 380, + 847, 981, + 866, 1002, + 922, 1079, + 1000, 1135, + 1099, 635, + 1101, 1229, + 1119, 639, + 1128, 1245, + 1272, 1355, + 1275, 1358, + 1324, 1386, + 1402, 1440 }; static int parser_goto_row89[] = { 22, -1, 127, 78, 221, - 218, 380, - 222, 386, - 224, 387, - 388, 523, - 507, 634, - 510, 638, - 639, 767, - 640, 768, - 666, 782, - 684, 808, - 769, 903, - 805, 950, - 809, 955, - 814, 959, - 960, 1108, - 1097, 1225, - 1099, 1228, - 1229, 1339, - 1230, 1340, - 1341, 1396 + 218, 381, + 222, 387, + 224, 388, + 389, 525, + 509, 636, + 512, 640, + 641, 769, + 642, 770, + 668, 784, + 686, 810, + 771, 905, + 807, 952, + 811, 957, + 816, 961, + 962, 1110, + 1099, 1227, + 1101, 1230, + 1231, 1341, + 1232, 1342, + 1343, 1398 }; static int parser_goto_row90[] = { 9, -1, 76, 72, 209, 139, 284, - 169, 325, + 169, 326, 254, 284, - 303, 325, - 682, 804, - 731, 209, - 924, 1079 + 304, 326, + 684, 806, + 733, 209, + 926, 1081 }; static int parser_goto_row91[] = { 4, - -1, 351, - 255, 407, - 397, 532, - 522, 644 + -1, 352, + 255, 408, + 398, 534, + 524, 646 }; static int parser_goto_row92[] = { 2, - -1, 617, - 618, 743 + -1, 619, + 620, 745 }; static int parser_goto_row93[] = { 4, -1, 298, - 437, 570, - 794, 941, - 1090, 1219 + 438, 572, + 796, 943, + 1092, 1221 }; static int parser_goto_row94[] = { 2, -1, 240, - 486, 620 + 488, 622 }; static int parser_goto_row95[] = { 127, @@ -18070,7 +18084,7 @@ static int parser_goto_row95[] = { 96, 77, 117, 253, 144, 77, - 158, 304, + 158, 305, 205, 77, 218, 128, 222, 128, @@ -18078,16 +18092,15 @@ static int parser_goto_row95[] = { 245, 128, 247, 128, 256, 128, - 335, 77, - 367, 77, - 369, 509, - 388, 128, - 410, 128, - 412, 128, + 336, 77, + 368, 77, + 370, 511, + 389, 128, + 411, 128, 413, 128, 414, 128, 415, 128, - 417, 128, + 416, 128, 418, 128, 419, 128, 420, 128, @@ -18099,93 +18112,94 @@ static int parser_goto_row95[] = { 426, 128, 427, 128, 428, 128, - 429, 561, - 430, 77, - 465, 596, - 466, 77, - 469, 77, - 507, 128, - 510, 128, - 537, 656, - 541, 128, - 564, 77, - 568, 683, - 569, 77, - 575, 703, - 609, 735, - 639, 128, - 640, 128, - 666, 128, - 667, 683, - 670, 77, - 672, 683, - 684, 128, - 686, 77, - 742, 863, - 751, 77, - 769, 128, - 774, 919, - 784, 77, - 805, 128, - 809, 128, - 813, 77, - 814, 128, - 854, 989, - 884, 77, - 945, 683, - 947, 1098, - 960, 128, - 972, 509, - 974, 735, - 981, 863, - 983, 863, - 992, 863, - 1054, 919, - 1074, 735, - 1092, 683, - 1094, 77, - 1097, 128, + 429, 128, + 430, 563, + 431, 77, + 467, 598, + 468, 77, + 471, 77, + 509, 128, + 512, 128, + 539, 658, + 543, 128, + 566, 77, + 570, 685, + 571, 77, + 577, 705, + 611, 737, + 641, 128, + 642, 128, + 668, 128, + 669, 685, + 672, 77, + 674, 685, + 686, 128, + 688, 77, + 744, 865, + 753, 77, + 771, 128, + 776, 921, + 786, 77, + 807, 128, + 811, 128, + 815, 77, + 816, 128, + 856, 991, + 886, 77, + 947, 685, + 949, 1100, + 962, 128, + 974, 511, + 976, 737, + 983, 865, + 985, 865, + 994, 865, + 1056, 921, + 1076, 737, + 1094, 685, + 1096, 77, 1099, 128, - 1110, 77, - 1136, 863, - 1138, 863, - 1139, 863, - 1140, 863, - 1141, 863, - 1143, 863, - 1144, 863, - 1145, 863, - 1146, 863, - 1147, 863, - 1148, 863, - 1149, 863, - 1150, 863, - 1151, 863, - 1152, 863, - 1153, 863, - 1154, 863, - 1155, 1272, - 1209, 1321, - 1217, 683, - 1218, 683, - 1229, 128, - 1230, 128, - 1245, 1348, - 1250, 863, - 1302, 735, - 1325, 128, - 1341, 128, - 1388, 683, - 1414, 77, - 1436, 77, - 1444, 77, - 1449, 77, - 1454, 77, - 1474, 683, - 1489, 77, - 1492, 77, - 1536, 863, - 1560, 683 + 1101, 128, + 1112, 77, + 1138, 865, + 1140, 865, + 1141, 865, + 1142, 865, + 1143, 865, + 1145, 865, + 1146, 865, + 1147, 865, + 1148, 865, + 1149, 865, + 1150, 865, + 1151, 865, + 1152, 865, + 1153, 865, + 1154, 865, + 1155, 865, + 1156, 865, + 1157, 1274, + 1211, 1323, + 1219, 685, + 1220, 685, + 1231, 128, + 1232, 128, + 1247, 1350, + 1252, 865, + 1304, 737, + 1327, 128, + 1343, 128, + 1390, 685, + 1416, 77, + 1438, 77, + 1446, 77, + 1451, 77, + 1456, 77, + 1476, 685, + 1491, 77, + 1494, 77, + 1538, 865, + 1562, 685 }; static int parser_goto_row96[] = { 129, @@ -18207,16 +18221,15 @@ static int parser_goto_row96[] = { 245, 129, 247, 129, 256, 129, - 335, 78, - 367, 78, - 369, 510, - 388, 129, - 410, 129, - 412, 129, + 336, 78, + 368, 78, + 370, 512, + 389, 129, + 411, 129, 413, 129, 414, 129, 415, 129, - 417, 129, + 416, 129, 418, 129, 419, 129, 420, 129, @@ -18228,100 +18241,101 @@ static int parser_goto_row96[] = { 426, 129, 427, 129, 428, 129, - 429, 562, - 430, 78, - 465, 597, - 466, 78, - 469, 78, - 507, 129, - 510, 129, - 537, 562, - 541, 129, - 564, 78, - 568, 684, - 569, 78, - 575, 597, - 607, 712, - 609, 736, - 639, 129, - 640, 129, - 655, 777, - 666, 129, - 667, 684, - 670, 78, - 672, 684, - 684, 129, - 686, 78, - 742, 864, - 751, 78, - 769, 129, - 774, 920, - 784, 78, - 805, 129, - 809, 129, - 813, 78, - 814, 129, - 854, 864, - 884, 78, - 945, 684, - 947, 1099, - 960, 129, - 972, 1117, - 974, 736, - 981, 864, - 983, 864, - 992, 864, - 1054, 920, - 1074, 736, - 1092, 684, - 1094, 78, - 1097, 129, + 429, 129, + 430, 564, + 431, 78, + 467, 599, + 468, 78, + 471, 78, + 509, 129, + 512, 129, + 539, 564, + 543, 129, + 566, 78, + 570, 686, + 571, 78, + 577, 599, + 609, 714, + 611, 738, + 641, 129, + 642, 129, + 657, 779, + 668, 129, + 669, 686, + 672, 78, + 674, 686, + 686, 129, + 688, 78, + 744, 866, + 753, 78, + 771, 129, + 776, 922, + 786, 78, + 807, 129, + 811, 129, + 815, 78, + 816, 129, + 856, 866, + 886, 78, + 947, 686, + 949, 1101, + 962, 129, + 974, 1119, + 976, 738, + 983, 866, + 985, 866, + 994, 866, + 1056, 922, + 1076, 738, + 1094, 686, + 1096, 78, 1099, 129, - 1110, 78, - 1136, 864, - 1138, 864, - 1139, 864, - 1140, 864, - 1141, 864, - 1143, 864, - 1144, 864, - 1145, 864, - 1146, 864, - 1147, 864, - 1148, 864, - 1149, 864, - 1150, 864, - 1151, 864, - 1152, 864, - 1153, 864, - 1154, 864, - 1155, 1273, - 1209, 1322, - 1217, 684, - 1218, 684, - 1229, 129, - 1230, 129, - 1245, 1273, - 1250, 864, - 1302, 736, - 1325, 129, - 1341, 129, - 1347, 1400, - 1388, 684, - 1414, 78, - 1436, 78, - 1444, 78, - 1449, 78, - 1454, 78, - 1474, 684, - 1489, 78, - 1492, 78, - 1536, 864, - 1560, 684 + 1101, 129, + 1112, 78, + 1138, 866, + 1140, 866, + 1141, 866, + 1142, 866, + 1143, 866, + 1145, 866, + 1146, 866, + 1147, 866, + 1148, 866, + 1149, 866, + 1150, 866, + 1151, 866, + 1152, 866, + 1153, 866, + 1154, 866, + 1155, 866, + 1156, 866, + 1157, 1275, + 1211, 1324, + 1219, 686, + 1220, 686, + 1231, 129, + 1232, 129, + 1247, 1275, + 1252, 866, + 1304, 738, + 1327, 129, + 1343, 129, + 1349, 1402, + 1390, 686, + 1416, 78, + 1438, 78, + 1446, 78, + 1451, 78, + 1456, 78, + 1476, 686, + 1491, 78, + 1494, 78, + 1538, 866, + 1562, 686 }; static int parser_goto_row97[] = { 1, - -1, 630 + -1, 632 }; static int parser_goto_row98[] = { 10, @@ -18329,12 +18343,12 @@ static int parser_goto_row98[] = { 81, 226, 140, 226, 241, 226, - 512, 226, - 525, 226, - 632, 226, - 696, 226, - 714, 226, - 1101, 226 + 514, 226, + 527, 226, + 634, 226, + 698, 226, + 716, 226, + 1103, 226 }; static int parser_goto_row99[] = { 54, @@ -18349,81 +18363,81 @@ static int parser_goto_row99[] = { 140, 285, 144, 80, 205, 80, - 335, 80, - 367, 80, - 369, 511, - 430, 80, - 466, 80, - 469, 80, - 506, 631, - 512, 641, - 564, 80, - 568, 685, - 569, 80, - 607, 713, - 632, 760, - 655, 713, - 667, 685, - 670, 80, - 672, 685, - 686, 80, - 696, 815, - 714, 829, - 751, 80, - 784, 80, - 813, 80, - 884, 80, - 945, 685, - 947, 1100, - 1092, 685, - 1094, 80, - 1101, 1231, - 1110, 80, - 1217, 685, - 1218, 685, - 1347, 713, - 1388, 685, - 1414, 80, - 1436, 80, - 1444, 80, - 1449, 80, - 1454, 80, - 1474, 685, - 1489, 80, - 1492, 80, - 1560, 685 + 336, 80, + 368, 80, + 370, 513, + 431, 80, + 468, 80, + 471, 80, + 508, 633, + 514, 643, + 566, 80, + 570, 687, + 571, 80, + 609, 715, + 634, 762, + 657, 715, + 669, 687, + 672, 80, + 674, 687, + 688, 80, + 698, 817, + 716, 831, + 753, 80, + 786, 80, + 815, 80, + 886, 80, + 947, 687, + 949, 1102, + 1094, 687, + 1096, 80, + 1103, 1233, + 1112, 80, + 1219, 687, + 1220, 687, + 1349, 715, + 1390, 687, + 1416, 80, + 1438, 80, + 1446, 80, + 1451, 80, + 1456, 80, + 1476, 687, + 1491, 80, + 1494, 80, + 1562, 687 }; static int parser_goto_row100[] = { 8, - -1, 1039, - 1040, 1169, - 1453, 1494, - 1488, 1520, - 1491, 1522, - 1495, 1524, - 1521, 1543, - 1523, 1544 + -1, 1041, + 1042, 1171, + 1455, 1496, + 1490, 1522, + 1493, 1524, + 1497, 1526, + 1523, 1545, + 1525, 1546 }; static int parser_goto_row101[] = { 18, - -1, 882, + -1, 884, 15, 85, - 394, 529, - 395, 530, - 619, 744, - 745, 874, - 774, 921, - 889, 1043, - 918, 1075, - 925, 1080, - 1054, 1187, - 1186, 1303, - 1188, 1304, - 1316, 1382, - 1381, 1427, - 1413, 1452, - 1424, 1468, - 1467, 1508 + 395, 531, + 396, 532, + 621, 746, + 747, 876, + 776, 923, + 891, 1045, + 920, 1077, + 927, 1082, + 1056, 1189, + 1188, 1305, + 1190, 1306, + 1318, 1384, + 1383, 1429, + 1415, 1454, + 1426, 1470, + 1469, 1510 }; static int parser_goto_row102[] = { 50, @@ -18445,41 +18459,41 @@ static int parser_goto_row102[] = { 101, 11, 102, 11, 104, 11, - 206, 367, + 206, 368, 230, 11, 235, 11, - 288, 430, - 335, 469, - 431, 564, - 466, 469, - 568, 686, - 569, 144, - 667, 784, - 670, 469, - 672, 784, - 751, 469, - 811, 205, - 813, 469, - 884, 469, - 945, 1094, - 957, 367, - 1092, 1094, - 1110, 144, - 1217, 686, - 1218, 784, - 1388, 1094, - 1414, 469, - 1436, 144, - 1444, 469, - 1449, 469, - 1454, 469, - 1474, 784, - 1489, 469, - 1492, 469, - 1560, 784 + 288, 431, + 336, 471, + 432, 566, + 468, 471, + 570, 688, + 571, 144, + 669, 786, + 672, 471, + 674, 786, + 753, 471, + 813, 205, + 815, 471, + 886, 471, + 947, 1096, + 959, 368, + 1094, 1096, + 1112, 144, + 1219, 688, + 1220, 786, + 1390, 1096, + 1416, 471, + 1438, 144, + 1446, 471, + 1451, 471, + 1456, 471, + 1476, 786, + 1491, 471, + 1494, 471, + 1562, 786 }; static int parser_goto_row103[] = { - 260, + 262, -1, 96, 0, 12, 4, 22, @@ -18491,6 +18505,7 @@ static int parser_goto_row103[] = { 31, 147, 32, 148, 34, 151, + 35, 152, 41, 182, 47, 190, 48, 191, @@ -18503,154 +18518,153 @@ static int parser_goto_row103[] = { 112, 247, 118, 255, 119, 256, - 154, 299, - 155, 300, - 156, 301, - 157, 302, - 159, 305, - 192, 352, - 193, 353, - 199, 354, - 200, 355, - 201, 356, - 207, 368, - 208, 369, - 213, 374, - 238, 393, - 242, 397, - 252, 402, - 265, 410, - 266, 412, - 267, 413, - 268, 414, - 269, 415, - 270, 416, - 271, 417, - 272, 418, - 273, 419, - 274, 420, - 275, 421, - 276, 422, - 277, 423, - 278, 424, - 279, 425, - 280, 426, - 281, 427, - 282, 428, - 283, 429, - 290, 432, - 293, 435, - 294, 436, - 296, 437, - 298, 438, - 306, 446, + 154, 300, + 155, 301, + 156, 302, + 157, 303, + 159, 306, + 192, 353, + 193, 354, + 199, 355, + 200, 356, + 201, 357, + 207, 369, + 208, 370, + 213, 375, + 238, 394, + 242, 398, + 252, 403, + 265, 411, + 266, 413, + 267, 414, + 268, 415, + 269, 416, + 270, 417, + 271, 418, + 272, 419, + 273, 420, + 274, 421, + 275, 422, + 276, 423, + 277, 424, + 278, 425, + 279, 426, + 280, 427, + 281, 428, + 282, 429, + 283, 430, + 290, 433, + 293, 436, + 294, 437, + 296, 438, + 298, 439, + 299, 440, 307, 448, - 308, 449, - 309, 450, - 310, 451, - 311, 452, - 312, 453, - 313, 454, - 314, 455, - 315, 456, - 316, 457, - 317, 458, - 318, 459, - 319, 460, - 320, 461, - 321, 462, - 322, 463, - 323, 464, - 324, 465, - 342, 476, - 349, 483, - 350, 484, - 357, 486, - 364, 506, - 378, 517, - 385, 522, - 398, 533, - 404, 537, - 406, 538, - 411, 541, - 433, 566, - 439, 573, - 443, 575, - 447, 577, - 471, 603, - 475, 607, + 308, 450, + 309, 451, + 310, 452, + 311, 453, + 312, 454, + 313, 455, + 314, 456, + 315, 457, + 316, 458, + 317, 459, + 318, 460, + 319, 461, + 320, 462, + 321, 463, + 322, 464, + 323, 465, + 324, 466, + 325, 467, + 343, 478, + 350, 485, + 351, 486, + 358, 488, + 365, 508, + 379, 519, + 386, 524, + 399, 535, + 405, 539, + 407, 540, + 412, 543, + 434, 568, + 441, 575, + 445, 577, + 449, 579, + 473, 605, 477, 609, - 480, 612, - 504, 627, - 508, 635, - 515, 642, - 529, 651, - 534, 655, - 560, 659, - 567, 664, - 570, 699, - 571, 700, + 479, 611, + 482, 614, + 506, 629, + 510, 637, + 517, 644, + 531, 653, + 536, 657, + 562, 661, + 569, 666, 572, 701, - 601, 707, - 604, 710, - 608, 715, - 610, 738, - 615, 741, - 616, 742, - 623, 747, - 624, 748, - 626, 755, - 646, 771, - 652, 651, - 654, 776, - 669, 789, + 573, 702, + 574, 703, + 603, 709, + 606, 712, + 610, 717, + 612, 740, + 617, 743, + 618, 744, + 625, 749, + 626, 750, + 628, 757, + 648, 773, + 654, 653, + 656, 778, 671, 791, - 673, 794, - 702, 820, - 709, 826, - 733, 838, - 739, 843, - 749, 879, - 756, 886, - 757, 891, - 761, 897, - 762, 898, - 779, 930, - 780, 931, - 803, 947, - 817, 961, - 818, 962, - 822, 964, - 823, 965, - 827, 968, - 837, 972, + 673, 793, + 675, 796, + 704, 822, + 711, 828, + 735, 840, + 741, 845, + 751, 881, + 758, 888, + 759, 893, + 763, 899, + 764, 900, + 781, 932, + 782, 933, + 805, 949, + 819, 963, + 820, 964, + 824, 966, + 825, 967, + 829, 970, 839, 974, - 842, 976, + 841, 976, 844, 978, 846, 980, - 847, 981, 848, 982, 849, 983, - 855, 991, - 856, 992, - 865, 1001, - 877, 1027, - 882, 651, - 890, 1044, - 893, 1056, - 894, 1059, - 895, 1061, - 910, 1074, - 928, 1082, - 937, 1088, - 938, 1089, - 940, 1090, - 941, 1091, - 963, 1111, - 988, 1128, - 1002, 1136, - 1003, 1138, - 1004, 1139, + 850, 984, + 851, 985, + 857, 993, + 858, 994, + 867, 1003, + 879, 1029, + 884, 653, + 892, 1046, + 895, 1058, + 896, 1061, + 897, 1063, + 912, 1076, + 930, 1084, + 939, 1090, + 940, 1091, + 942, 1092, + 943, 1093, + 965, 1113, + 990, 1130, + 1004, 1138, 1005, 1140, 1006, 1141, 1007, 1142, @@ -18667,79 +18681,81 @@ static int parser_goto_row103[] = { 1018, 1153, 1019, 1154, 1020, 1155, - 1024, 1159, - 1025, 1160, - 1028, 1162, - 1042, 1174, - 1045, 1177, - 1046, 1179, - 1049, 1180, - 1057, 1190, - 1060, 1192, - 1063, 1196, - 1064, 1198, - 1066, 1199, - 1067, 1200, - 1078, 1209, - 1084, 1213, - 1085, 1214, + 1021, 1156, + 1022, 1157, + 1026, 1161, + 1027, 1162, + 1030, 1164, + 1044, 1176, + 1047, 1179, + 1048, 1181, + 1051, 1182, + 1059, 1192, + 1062, 1194, + 1065, 1198, + 1066, 1200, + 1068, 1201, + 1069, 1202, + 1080, 1211, 1086, 1215, - 1109, 1232, - 1122, 1239, - 1130, 1245, - 1131, 1246, - 1137, 1250, - 1158, 1275, - 1163, 1277, - 1172, 1284, - 1175, 1287, - 1178, 1289, - 1185, 1302, - 1193, 1307, - 1194, 1309, - 1197, 1311, - 1212, 1325, - 1216, 1329, - 1219, 1333, - 1220, 1334, - 1235, 1344, - 1242, 1347, - 1271, 1354, - 1279, 1358, - 1294, 627, - 1298, 627, - 1308, 1376, - 1313, 1379, - 1326, 1386, - 1342, 1397, - 1345, 1399, - 1363, 627, - 1365, 627, - 1369, 627, - 1390, 1434, - 1391, 1435, - 1404, 1439, - 1405, 1440, + 1087, 1216, + 1088, 1217, + 1111, 1234, + 1124, 1241, + 1132, 1247, + 1133, 1248, + 1139, 1252, + 1160, 1277, + 1165, 1279, + 1174, 1286, + 1177, 1289, + 1180, 1291, + 1187, 1304, + 1195, 1309, + 1196, 1311, + 1199, 1313, + 1214, 1327, + 1218, 1331, + 1221, 1335, + 1222, 1336, + 1237, 1346, + 1244, 1349, + 1273, 1356, + 1281, 1360, + 1296, 629, + 1300, 629, + 1310, 1378, + 1315, 1381, + 1328, 1388, + 1344, 1399, + 1347, 1401, + 1365, 629, + 1367, 629, + 1371, 629, + 1392, 1436, + 1393, 1437, 1406, 1441, - 1408, 1442, - 1437, 1477, - 1452, 651, - 1455, 1496, - 1459, 1500, - 1473, 1509, - 1479, 1514, - 1480, 1515, - 1482, 1516, - 1483, 1517, + 1407, 1442, + 1408, 1443, + 1410, 1444, + 1439, 1479, + 1454, 653, + 1457, 1498, + 1461, 1502, + 1475, 1511, + 1481, 1516, + 1482, 1517, 1484, 1518, - 1498, 1526, - 1505, 1531, + 1485, 1519, + 1486, 1520, + 1500, 1528, 1507, 1533, - 1513, 1536, - 1532, 1550, + 1509, 1535, + 1515, 1538, 1534, 1552, - 1537, 1554, - 1539, 1555 + 1536, 1554, + 1539, 1556, + 1541, 1557 }; static int parser_goto_row104[] = { 1, @@ -18755,12 +18771,12 @@ static int parser_goto_row106[] = { }; static int parser_goto_row107[] = { 2, - -1, 754, - 1410, 1447 + -1, 756, + 1412, 1449 }; static int parser_goto_row108[] = { 1, - -1, 1257 + -1, 1259 }; static int parser_goto_row109[] = { 1, @@ -18768,69 +18784,69 @@ static int parser_goto_row109[] = { }; static int parser_goto_row110[] = { 2, - -1, 865, - 1536, 1553 + -1, 867, + 1538, 1555 }; static int parser_goto_row111[] = { 1, - -1, 866 + -1, 868 }; static int parser_goto_row112[] = { 6, - -1, 867, - 981, 1123, - 1136, 1249, + -1, 869, + 983, 1125, 1138, 1251, - 1139, 1252, - 1250, 1350 + 1140, 1253, + 1141, 1254, + 1252, 1352 }; static int parser_goto_row113[] = { 1, - -1, 868 + -1, 870 }; static int parser_goto_row114[] = { 10, - -1, 869, - 1140, 1253, - 1141, 1254, - 1145, 1260, - 1146, 1261, + -1, 871, + 1142, 1255, + 1143, 1256, 1147, 1262, 1148, 1263, 1149, 1264, 1150, 1265, - 1151, 1266 + 1151, 1266, + 1152, 1267, + 1153, 1268 }; static int parser_goto_row115[] = { 3, - -1, 870, - 1143, 1258, - 1144, 1259 + -1, 872, + 1145, 1260, + 1146, 1261 }; static int parser_goto_row116[] = { 6, - -1, 871, - 983, 1127, - 992, 1132, - 1152, 1267, - 1153, 1268, - 1154, 1269 + -1, 873, + 985, 1129, + 994, 1134, + 1154, 1269, + 1155, 1270, + 1156, 1271 }; static int parser_goto_row117[] = { 1, - -1, 872 + -1, 874 }; static int parser_goto_row118[] = { 2, - -1, 873, - 854, 990 + -1, 875, + 856, 992 }; static int parser_goto_row119[] = { 4, - -1, 338, - 246, 400, - 301, 441, - 402, 536 + -1, 339, + 246, 401, + 302, 443, + 403, 538 }; static int parser_goto_row120[] = { 1, @@ -18838,7 +18854,7 @@ static int parser_goto_row120[] = { }; static int parser_goto_row121[] = { 1, - -1, 922 + -1, 924 }; static int parser_goto_row122[] = { 1, @@ -18847,9 +18863,9 @@ static int parser_goto_row122[] = { static int parser_goto_row123[] = { 4, -1, 131, - 774, 923, - 1054, 923, - 1325, 1385 + 776, 925, + 1056, 925, + 1327, 1387 }; static int parser_goto_row124[] = { 1, @@ -18858,11 +18874,11 @@ static int parser_goto_row124[] = { static int parser_goto_row125[] = { 6, -1, 133, - 245, 399, - 410, 540, - 412, 542, - 413, 543, - 541, 657 + 245, 400, + 411, 542, + 413, 544, + 414, 545, + 543, 659 }; static int parser_goto_row126[] = { 1, @@ -18871,30 +18887,30 @@ static int parser_goto_row126[] = { static int parser_goto_row127[] = { 10, -1, 135, - 414, 544, - 415, 545, - 419, 549, - 420, 550, - 421, 551, - 422, 552, - 423, 553, - 424, 554, - 425, 555 + 415, 546, + 416, 547, + 420, 551, + 421, 552, + 422, 553, + 423, 554, + 424, 555, + 425, 556, + 426, 557 }; static int parser_goto_row128[] = { 3, -1, 136, - 417, 547, - 418, 548 + 418, 549, + 419, 550 }; static int parser_goto_row129[] = { 6, -1, 137, - 247, 401, - 256, 408, - 426, 556, - 427, 557, - 428, 558 + 247, 402, + 256, 409, + 427, 558, + 428, 559, + 429, 560 }; static int parser_goto_row130[] = { 1, @@ -18904,40 +18920,40 @@ static int parser_goto_row131[] = { 4, -1, 139, 117, 254, - 774, 924, - 1054, 924 + 776, 926, + 1056, 926 }; static int parser_goto_row132[] = { 1, - -1, 473 + -1, 475 }; static int parser_goto_row133[] = { 7, - -1, 474, - 470, 602, - 605, 711, - 967, 1114, - 1112, 1236, - 1125, 1241, - 1240, 1346 + -1, 476, + 472, 604, + 607, 713, + 969, 1116, + 1114, 1238, + 1127, 1243, + 1242, 1348 }; static int parser_goto_row134[] = { 1, - -1, 606 + -1, 608 }; static int parser_goto_row135[] = { 2, - -1, 925, - 1054, 1188 + -1, 927, + 1056, 1190 }; static int parser_goto_row136[] = { 1, - -1, 926 + -1, 928 }; static int parser_goto_row137[] = { 2, - -1, 1126, - 1128, 1244 + -1, 1128, + 1130, 1246 }; static int parser_goto_row138[] = { 1, @@ -18985,20 +19001,20 @@ static int parser_goto_row148[] = { }; static int parser_goto_row149[] = { 8, - -1, 785, - 672, 792, - 945, 1095, - 1092, 1221, - 1218, 1331, - 1388, 1433, - 1474, 1510, - 1560, 1563 + -1, 787, + 674, 794, + 947, 1097, + 1094, 1223, + 1220, 1333, + 1390, 1435, + 1476, 1512, + 1562, 1565 }; static int parser_goto_row150[] = { 3, - -1, 786, - 568, 687, - 1217, 1330 + -1, 788, + 570, 689, + 1219, 1332 }; static int parser_goto_row151[] = { 1, @@ -19006,60 +19022,60 @@ static int parser_goto_row151[] = { }; static int parser_goto_row152[] = { 1, - -1, 688 + -1, 690 }; static int parser_goto_row153[] = { 1, - -1, 689 + -1, 691 }; static int parser_goto_row154[] = { 1, - -1, 690 + -1, 692 }; static int parser_goto_row155[] = { 1, - -1, 691 + -1, 693 }; static int parser_goto_row156[] = { 1, - -1, 692 + -1, 694 }; static int parser_goto_row157[] = { 1, - -1, 693 + -1, 695 }; static int parser_goto_row158[] = { 1, - -1, 694 + -1, 696 }; static int parser_goto_row159[] = { 1, - -1, 695 + -1, 697 }; static int parser_goto_row160[] = { 22, -1, 181, - 178, 334, - 674, 795, - 675, 797, - 676, 799, + 178, 335, + 676, 797, + 677, 799, 678, 801, - 796, 942, - 798, 943, - 800, 944, - 948, 1102, - 949, 1103, - 951, 1104, - 952, 1105, + 680, 803, + 798, 944, + 800, 945, + 802, 946, + 950, 1104, + 951, 1105, 953, 1106, 954, 1107, - 1096, 1224, - 1215, 1328, - 1329, 1387, - 1335, 1392, - 1336, 1393, + 955, 1108, + 956, 1109, + 1098, 1226, + 1217, 1330, + 1331, 1389, 1337, 1394, - 1338, 1395 + 1338, 1395, + 1339, 1396, + 1340, 1397 }; static int parser_goto_row161[] = { 1, @@ -19085,14 +19101,14 @@ static int parser_goto_row166[] = { 10, -1, 145, 33, 150, - 569, 698, - 667, 787, - 672, 793, - 1110, 1234, - 1218, 1332, - 1436, 1476, - 1474, 1511, - 1560, 1564 + 571, 700, + 669, 789, + 674, 795, + 1112, 1236, + 1220, 1334, + 1438, 1478, + 1476, 1513, + 1562, 1566 }; static int parser_goto_row167[] = { 1, @@ -19100,11 +19116,11 @@ static int parser_goto_row167[] = { }; static int parser_goto_row168[] = { 1, - -1, 737 + -1, 739 }; static int parser_goto_row169[] = { 1, - -1, 927 + -1, 929 }; static int parser_goto_row170[] = { 1, @@ -19116,12 +19132,12 @@ static int parser_goto_row171[] = { }; static int parser_goto_row172[] = { 2, - -1, 892, - 895, 1062 + -1, 894, + 897, 1064 }; static int parser_goto_row173[] = { 1, - -1, 1054 + -1, 1056 }; static int parser_goto_row174[] = { 2, @@ -19148,43 +19164,43 @@ static int parser_goto_row176[] = { }; static int parser_goto_row177[] = { 4, - -1, 893, - 890, 1045, - 895, 1063, - 1060, 1193 + -1, 895, + 892, 1047, + 897, 1065, + 1062, 1195 }; static int parser_goto_row178[] = { 8, - -1, 894, - 890, 1046, - 893, 1057, - 895, 1064, - 1045, 1178, - 1060, 1194, - 1063, 1197, - 1193, 1308 + -1, 896, + 892, 1048, + 895, 1059, + 897, 1066, + 1047, 1180, + 1062, 1196, + 1065, 1199, + 1195, 1310 }; static int parser_goto_row179[] = { 1, - -1, 1175 + -1, 1177 }; static int parser_goto_row180[] = { 1, - -1, 1028 + -1, 1030 }; static int parser_goto_row181[] = { 1, - -1, 1165 + -1, 1167 }; static int parser_goto_row182[] = { 1, - -1, 825 + -1, 827 }; static int parser_goto_row183[] = { 3, -1, 206, - 288, 431, - 811, 957 + 288, 432, + 813, 959 }; static int parser_goto_row184[] = { 1, @@ -19192,20 +19208,20 @@ static int parser_goto_row184[] = { }; static int parser_goto_row185[] = { 1, - -1, 648 + -1, 650 }; static int parser_goto_row186[] = { 1, - -1, 652 + -1, 654 }; static int parser_goto_row187[] = { 2, - -1, 841, - 926, 1081 + -1, 843, + 928, 1083 }; static int parser_goto_row188[] = { 1, - -1, 618 + -1, 620 }; static int parser_goto_row189[] = { 50, @@ -19219,46 +19235,46 @@ static int parser_goto_row189[] = { 107, 241, 144, 81, 205, 81, - 335, 81, - 367, 81, - 369, 512, - 393, 525, - 430, 81, - 466, 81, - 469, 81, - 486, 241, - 506, 632, - 564, 81, - 568, 696, - 569, 81, - 607, 714, - 655, 714, - 667, 696, - 670, 81, - 672, 696, - 686, 81, - 751, 81, - 784, 81, - 813, 81, - 884, 81, - 945, 696, - 947, 1101, - 1092, 696, - 1094, 81, - 1110, 81, - 1217, 696, - 1218, 696, - 1347, 714, - 1388, 696, - 1414, 81, - 1436, 81, - 1444, 81, - 1449, 81, - 1454, 81, - 1474, 696, - 1489, 81, - 1492, 81, - 1560, 696 + 336, 81, + 368, 81, + 370, 514, + 394, 527, + 431, 81, + 468, 81, + 471, 81, + 488, 241, + 508, 634, + 566, 81, + 570, 698, + 571, 81, + 609, 716, + 657, 716, + 669, 698, + 672, 81, + 674, 698, + 688, 81, + 753, 81, + 786, 81, + 815, 81, + 886, 81, + 947, 698, + 949, 1103, + 1094, 698, + 1096, 81, + 1112, 81, + 1219, 698, + 1220, 698, + 1349, 716, + 1390, 698, + 1416, 81, + 1438, 81, + 1446, 81, + 1451, 81, + 1456, 81, + 1476, 698, + 1491, 81, + 1494, 81, + 1562, 698 }; static int parser_goto_row190[] = { 2, @@ -19273,7 +19289,7 @@ static int parser_goto_row191[] = { }; static int parser_goto_row192[] = { 1, - -1, 895 + -1, 897 }; const int* const parser_goto_table[] = { diff --git a/src/platform.nit b/src/platform.nit index 17257f5..3c5367f 100644 --- a/src/platform.nit +++ b/src/platform.nit @@ -113,6 +113,8 @@ end abstract class Platform fun supports_libunwind: Bool do return true + fun supports_libgc: Bool do return true + # Does this platform declare its own main function? If so, we won't generate one in Nit. fun no_main: Bool do return false end diff --git a/src/pnacl_platform.nit b/src/pnacl_platform.nit index 6dfdc3a..62c2f60 100644 --- a/src/pnacl_platform.nit +++ b/src/pnacl_platform.nit @@ -77,7 +77,7 @@ THIS_MAKEFILE := $(abspath $(lastword $(MAKEFILE_LIST))) NACL_SDK_ROOT ?= $(abspath $(dir $(THIS_MAKEFILE))../../../..) # Project Build flags -WARNINGS := -Wall -pedantic -Werror -Wno-long-long -Wno-unused-value -Wno-unused-label -Wno-duplicate-decl-specifier -Wno-switch -Wno-embedded-directive +WARNINGS := -Wall -pedantic -Wno-long-long -Wno-unused-value -Wno-unused-label -Wno-duplicate-decl-specifier -Wno-switch -Wno-embedded-directive CXXFLAGS := -pthread $(WARNINGS) CXXFLAGS += -g -O0 # Debug @@ -244,6 +244,6 @@ function updateStatus(opt_message) { redef fun compile_c_code(compiler, compile_dir) do # Generate the pexe - toolcontext.exec_and_check(["make", "-C", compile_dir], "PNaCl project error") + toolcontext.exec_and_check(["make", "-C", compile_dir, "-j", "4"], "PNaCl project error") end end diff --git a/src/typing.nit b/src/typing.nit index edb1c89..5db0ada 100644 --- a/src/typing.nit +++ b/src/typing.nit @@ -51,6 +51,11 @@ private class TypeVisitor var selfvariable: Variable = new Variable("self") + # Is `self` use restricted? + # * no explicit `self` + # * method called on the implicit self must be top-level + var is_toplevel_context = false + init(modelbuilder: ModelBuilder, mmodule: MModule, mpropdef: nullable MPropDef) do self.modelbuilder = modelbuilder @@ -67,6 +72,11 @@ private class TypeVisitor var selfvariable = new Variable("self") self.selfvariable = selfvariable selfvariable.declared_type = mclass.mclass_type + + var mprop = mpropdef.mproperty + if mprop isa MMethod and mprop.is_toplevel then + is_toplevel_context = true + end end end @@ -241,6 +251,15 @@ private class TypeVisitor end assert mproperty isa MMethod + + if is_toplevel_context and recv_is_self and not mproperty.is_toplevel and name != "sys" and name != "exit" and name != "args" then + # FIXME named methods are here as a workaround + error(node, "Error: '{name}' is not a top-level method, thus need a receiver.") + end + if not recv_is_self and mproperty.is_toplevel then + error(node, "Error: cannot call '{name}', a top-level method, with a receiver.") + end + if mproperty.visibility == protected_visibility and not recv_is_self and self.mmodule.visibility_for(mproperty.intro_mclassdef.mmodule) < intrude_visibility and not modelbuilder.toolcontext.opt_ignore_visibility.value then self.modelbuilder.error(node, "Error: Method '{name}' is protected and can only acceded by self.") return null @@ -833,7 +852,7 @@ redef class AForExpr if objcla == null then return # check iterator method - var itdef = v.get_method(self, mtype, "iterator", true) + var itdef = v.get_method(self, mtype, "iterator", n_expr isa ASelfExpr) if itdef == null then v.error(self, "Type Error: 'for' expects a type providing 'iterator' method, got '{mtype}'.") return @@ -1199,6 +1218,9 @@ redef class ASelfExpr redef var its_variable: nullable Variable redef fun accept_typing(v) do + if v.is_toplevel_context and not self isa AImplicitSelfExpr then + v.error(self, "Error: self cannot be used in top-level method.") + end var variable = v.selfvariable self.its_variable = variable self.mtype = v.get_variable(self, variable) diff --git a/src/vm.nit b/src/vm.nit new file mode 100644 index 0000000..3c8f048 --- /dev/null +++ b/src/vm.nit @@ -0,0 +1,314 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2014 Julien Pagès +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Implementation of the Nit virtual machine +module vm + +intrude import naive_interpreter +import model_utils +import perfect_hashing + +redef class ModelBuilder + redef fun run_naive_interpreter(mainmodule: MModule, arguments: Array[String]) + do + var time0 = get_time + self.toolcontext.info("*** NITVM STARTING ***", 1) + + var interpreter = new VirtualMachine(self, mainmodule, arguments) + init_naive_interpreter(interpreter, mainmodule) + + var time1 = get_time + self.toolcontext.info("*** NITVM STOPPING : {time1-time0} ***", 2) + end +end + +# A virtual machine based on the naive_interpreter +class VirtualMachine super NaiveInterpreter + + # Perfect hashing and perfect numbering + var ph: Perfecthashing = new Perfecthashing + + # Handles memory and garbage collection + var memory_manager: MemoryManager = new MemoryManager + + # Subtyping test for the virtual machine + redef fun is_subtype(sub, sup: MType): Bool + do + var anchor = self.frame.arguments.first.mtype.as(MClassType) + var sup_accept_null = false + if sup isa MNullableType then + sup_accept_null = true + sup = sup.mtype + else if sup isa MNullType then + sup_accept_null = true + end + + # Can `sub` provides null or not? + # Thus we can match with `sup_accept_null` + # Also discard the nullable marker if it exists + if sub isa MNullableType then + if not sup_accept_null then return false + sub = sub.mtype + else if sub isa MNullType then + return sup_accept_null + end + # Now the case of direct null and nullable is over + + # An unfixed formal type can only accept itself + if sup isa MParameterType or sup isa MVirtualType then + return sub == sup + end + + if sub isa MParameterType or sub isa MVirtualType then + sub = sub.anchor_to(mainmodule, anchor) + # Manage the second layer of null/nullable + if sub isa MNullableType then + if not sup_accept_null then return false + sub = sub.mtype + else if sub isa MNullType then + return sup_accept_null + end + end + + assert sub isa MClassType + + # `sup` accepts only null + if sup isa MNullType then return false + + assert sup isa MClassType + + # Create the sup vtable if not create + if not sup.mclass.loaded then create_class(sup.mclass) + + # Sub can be discovered inside a Generic type during the subtyping test + if not sub.mclass.loaded then create_class(sub.mclass) + + if anchor == null then anchor = sub + if sup isa MGenericType then + var sub2 = sub.supertype_to(mainmodule, anchor, sup.mclass) + assert sub2.mclass == sup.mclass + + for i in [0..sup.mclass.arity[ do + var sub_arg = sub2.arguments[i] + var sup_arg = sup.arguments[i] + var res = is_subtype(sub_arg, sup_arg) + + if res == false then return false + end + return true + end + + var super_id = sup.mclass.vtable.id + var mask = sub.mclass.vtable.mask + + return inter_is_subtype(super_id, mask, sub.mclass.vtable.internal_vtable) + end + + # Subtyping test with perfect hashing + private fun inter_is_subtype(id: Int, mask:Int, vtable: Pointer): Bool `{ + // hv is the position in hashtable + int hv = id & mask; + + // Follow the pointer to somewhere in the vtable + long unsigned int *offset = (long unsigned int*)(((long int *)vtable)[-hv]); + + // If the pointed value is corresponding to the identifier, the test is true, otherwise false + return *offset == id; + `} + + # Redef init_instance to simulate the loading of a class + redef fun init_instance(recv: Instance) + do + if not recv.mtype.as(MClassType).mclass.loaded then create_class(recv.mtype.as(MClassType).mclass) + super + + recv.vtable = recv.mtype.as(MClassType).mclass.vtable + end + + # Creates the runtime structures for this class + fun create_class(mclass: MClass) do mclass.make_vt(self) +end + +redef class MClass + # A reference to the virtual table of this class + var vtable: nullable VTable + + # True when the class is effectively loaded by the vm, false otherwise + var loaded: Bool = false + + # Allocates a VTable for this class and gives it an id + private fun make_vt(v: VirtualMachine) + do + if loaded then return + + # Superclasses contains all superclasses except self + var superclasses = new Array[MClass] + superclasses.add_all(ancestors) + superclasses.remove(self) + v.mainmodule.linearize_mclasses(superclasses) + + # Make_vt for super-classes + var ids = new Array[Int] + var nb_methods = new Array[Int] + + for parent in superclasses do + if parent.vtable == null then parent.make_vt(v) + + # Get the number of introduced methods for this class + var count = 0 + var min_visibility = public_visibility + for p in parent.intro_mproperties(min_visibility) do + if p isa MMethod then + count += 1 + end + end + + ids.push(parent.vtable.id) + nb_methods.push(count) + end + + # When all super-classes have their identifiers and vtables, allocate current one + allocate_vtable(v, ids, nb_methods) + loaded = true + # The virtual table now needs to be filled with pointer to methods + end + + # Allocate a single vtable + # ids : Array of superclasses identifiers + # nb_methods : Array which contain the number of methods for each class in ids + private fun allocate_vtable(v: VirtualMachine, ids: Array[Int], nb_methods: Array[Int]) + do + vtable = new VTable + var idc = new Array[Int] + + vtable.mask = v.ph.pnand(ids, 1, idc) - 1 + vtable.id = idc[0] + vtable.classname = name + + # Add current id to Array of super-ids + var ids_total = new Array[Int] + ids_total.add_all(ids) + ids_total.push(vtable.id) + + var nb_methods_total = new Array[Int] + var count = 0 + var min_visibility = public_visibility + for p in intro_mproperties(min_visibility) do + if p isa MMethod then + count += 1 + end + end + nb_methods_total.add_all(nb_methods) + nb_methods_total.push(count) + + vtable.internal_vtable = v.memory_manager.init_vtable(ids_total, nb_methods_total, vtable.mask) + end +end + +# A VTable contains the virtual method table for the dispatch +# and informations to perform subtyping tests +class VTable + # The mask to perform perfect hashing + var mask: Int + + # Unique identifier given by perfect hashing + var id: Int + + # Pointer to the c-allocated area, represents the virtual table + var internal_vtable: Pointer + + # The short classname of this class + var classname: String + + init do end +end + +redef class Instance + + var vtable: nullable VTable + + init(mt: MType) + do + mtype = mt + + # An instance is associated to its class virtual table + if mt isa MClassType then + vtable = mt.mclass.vtable + end + end +end + +# Handle memory, used for allocate virtual table and associated structures +class MemoryManager + + # Allocate and fill a virtual table + fun init_vtable(ids: Array[Int], nb_methods: Array[Int], mask: Int): Pointer + do + # Allocate in C current virtual table + var res = intern_init_vtable(ids, nb_methods, mask) + + return res + end + + # Construct virtual tables with a bi-dimensional layout + private fun intern_init_vtable(ids: Array[Int], nb_methods: Array[Int], mask: Int): Pointer + import Array[Int].length, Array[Int].[] `{ + + // Allocate and fill current virtual table + int i; + int total_size = 0; // total size of this virtual table + int nb_classes = Array_of_Int_length(nb_methods); + for(i = 0; i +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import error_defs + +redef fun baz: Int do return 4 +#alt1# redef fun bar: Int do return 40 +#alt2# redef fun foo: Int do return 400 diff --git a/tests/error_toplevel.nit b/tests/error_toplevel.nit new file mode 100644 index 0000000..c33bcb0 --- /dev/null +++ b/tests/error_toplevel.nit @@ -0,0 +1,49 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +import kernel + +redef class Object + fun baz do + output + end + + fun foo1 + do + bar(1) + bar(self) + #alt1#3.bar(3) + + 5.baz + baz + end +end + +fun foo2 +do + bar(10) + #alt2#self.bar(20) + #alt3#bar(self) + #alt4#4.bar(40) + + 50.baz + #alt5#baz +end + +fun bar(o: Object) +do + o.output +end + +0.foo1 +foo2 diff --git a/tests/niti.skip b/tests/niti.skip index 0cdafa4..7c2762c 100644 --- a/tests/niti.skip +++ b/tests/niti.skip @@ -6,6 +6,8 @@ shoot_logic bench_ nit_args1 nit_args3 +nitvm_args1 +nitvm_args3 nitc_args1 nitg_args1 nitg_args3 @@ -17,3 +19,4 @@ test_android_platform android nitcc_parser_gen mnit +emscripten diff --git a/tests/nitvm.args b/tests/nitvm.args new file mode 100644 index 0000000..3011fc1 --- /dev/null +++ b/tests/nitvm.args @@ -0,0 +1,3 @@ +--log --log-dir out/test_nitc_logs ../examples/hello_world.nit +base_simple3.nit +-m test_mixin.nit ../examples/hello_world.nit diff --git a/tests/sav/base_error_doubledef.res b/tests/sav/base_error_doubledef.res index ed17cab..fc1f645 100644 --- a/tests/sav/base_error_doubledef.res +++ b/tests/sav/base_error_doubledef.res @@ -1 +1 @@ -base_error_doubledef.nit:26,12--14: Error: a property foo is already defined in class B at base_error_doubledef.nit:24,2--21 +base_error_doubledef.nit:26,12--14: Error: A property foo is already defined in class B at line 24. diff --git a/tests/sav/base_iterator3.res b/tests/sav/base_iterator3.res index 7711bba..8163c32 100644 --- a/tests/sav/base_iterator3.res +++ b/tests/sav/base_iterator3.res @@ -1,6 +1,6 @@ base_iterator3.nit:35,1--25: Type Error: 'for' expects method 'iterator' to return an 'Iterator' or 'MapIterator' type'. base_iterator3.nit:39,1--25: Type Error: 'for' expects method 'iterator' to return an 'Iterator' or 'MapIterator' type'. -base_iterator3.nit:43,1--25: Error: Method or variable 'iterator' unknown in Test3. +base_iterator3.nit:43,1--25: Error: Method 'iterator' doesn't exists in Test3. base_iterator3.nit:43,1--25: Type Error: 'for' expects a type providing 'iterator' method, got 'Test3'. base_iterator3.nit:46,1--48: Type Error: 'for' expects only one variable when using 'Iterator'. base_iterator3.nit:47,1--47: Type Error: 'for' expects two variables when using 'MapIterator'. diff --git a/tests/sav/emscripten.res b/tests/sav/emscripten.res new file mode 100644 index 0000000..174d681 --- /dev/null +++ b/tests/sav/emscripten.res @@ -0,0 +1 @@ +Not executable (platform?) diff --git a/tests/sav/error_attr_2def.res b/tests/sav/error_attr_2def.res index 7f848b8..0ee41fd 100644 --- a/tests/sav/error_attr_2def.res +++ b/tests/sav/error_attr_2def.res @@ -1 +1 @@ -error_attr_2def.nit:19,6--10: Error: A property _toto is already defined in class A. +error_attr_2def.nit:19,6--10: Error: A property _toto is already defined in class A at line 18. diff --git a/tests/sav/error_defs2.res b/tests/sav/error_defs2.res new file mode 100644 index 0000000..354a0e6 --- /dev/null +++ b/tests/sav/error_defs2.res @@ -0,0 +1,3 @@ +4 +14 +124 diff --git a/tests/sav/error_defs2_alt1.res b/tests/sav/error_defs2_alt1.res new file mode 100644 index 0000000..c79fb13 --- /dev/null +++ b/tests/sav/error_defs2_alt1.res @@ -0,0 +1 @@ +alt/error_defs2_alt1.nit:20,11--13: Error: bar is not a top level method. diff --git a/tests/sav/error_defs2_alt2.res b/tests/sav/error_defs2_alt2.res new file mode 100644 index 0000000..8b01fd5 --- /dev/null +++ b/tests/sav/error_defs2_alt2.res @@ -0,0 +1 @@ +alt/error_defs2_alt2.nit:21,11--13: Error: No property Object::foo is inherited. Remove the redef keyword to define a new property. diff --git a/tests/sav/error_defs_alt2.res b/tests/sav/error_defs_alt2.res index bb671c5..2059476 100644 --- a/tests/sav/error_defs_alt2.res +++ b/tests/sav/error_defs_alt2.res @@ -1 +1 @@ -alt/error_defs_alt2.nit:26,5--7: Error: A property foo is already defined in class A. +alt/error_defs_alt2.nit:26,5--7: Error: A property foo is already defined in class A at line 25. diff --git a/tests/sav/error_defs_alt4.res b/tests/sav/error_defs_alt4.res index 2e24837..80e2677 100644 --- a/tests/sav/error_defs_alt4.res +++ b/tests/sav/error_defs_alt4.res @@ -1 +1 @@ -alt/error_defs_alt4.nit:29,5--7: Redef error: A::baz is an inherited property. To redefine it, add the redef keyword. +alt/error_defs_alt4.nit:29,5--7: Error: baz is a top level method. diff --git a/tests/sav/error_defs_alt5.res b/tests/sav/error_defs_alt5.res index 7732d68..fec299a 100644 --- a/tests/sav/error_defs_alt5.res +++ b/tests/sav/error_defs_alt5.res @@ -1 +1 @@ -alt/error_defs_alt5.nit:30,14--22: Redef error: error_defs_alt5#A#baz redefines error_defs_alt5#Object#baz with 1 parameter(s), 0 expected. Signature is error_defs_alt5#A#baz: Int +alt/error_defs_alt5.nit:30,11--13: Error: baz is a top level method. diff --git a/tests/sav/error_defs_alt9.res b/tests/sav/error_defs_alt9.res new file mode 100644 index 0000000..8c547a1 --- /dev/null +++ b/tests/sav/error_defs_alt9.res @@ -0,0 +1 @@ +alt/error_defs_alt9.nit:46,5--7: Error: A property baz is already defined in class Object at line 45. diff --git a/tests/sav/error_expr_not_ok_alt4.res b/tests/sav/error_expr_not_ok_alt4.res index ac5bee9..3919001 100644 --- a/tests/sav/error_expr_not_ok_alt4.res +++ b/tests/sav/error_expr_not_ok_alt4.res @@ -10,6 +10,7 @@ alt/error_expr_not_ok_alt4.nit:43,1--8: Error: Method 'fail' doesn't exists in I alt/error_expr_not_ok_alt4.nit:45,7--10: Type error: expected A, got Object alt/error_expr_not_ok_alt4.nit:46,1--9: Error: Method 'fail' doesn't exists in Object. alt/error_expr_not_ok_alt4.nit:49,7--10: Type error: expected A, got Object +alt/error_expr_not_ok_alt4.nit:50,1--10: Error: cannot call 'trash', a top-level method, with a receiver. alt/error_expr_not_ok_alt4.nit:50,1--10: Error: Incorrect number of parameters. Got 0, expected 1. Signature is (x: A) alt/error_expr_not_ok_alt4.nit:60,4--7: Type error: expected Bool, got Int alt/error_expr_not_ok_alt4.nit:60,20: Type error: expected A, got Int @@ -22,7 +23,7 @@ alt/error_expr_not_ok_alt4.nit:66,21: Type error: expected A, got Int alt/error_expr_not_ok_alt4.nit:67,1--18: Warning: use 'loop' instead of 'while true do'. alt/error_expr_not_ok_alt4.nit:69,24: Type error: expected A, got Int alt/error_expr_not_ok_alt4.nit:69,1--25: Type Error: 'for' expects a type providing 'iterator' method, got 'Int'. -alt/error_expr_not_ok_alt4.nit:69,1--25: Error: Method or variable 'iterator' unknown in Int. +alt/error_expr_not_ok_alt4.nit:69,1--25: Error: Method 'iterator' doesn't exists in Int. alt/error_expr_not_ok_alt4.nit:71,8--11: Type error: expected Bool, got Int alt/error_expr_not_ok_alt4.nit:72,7--15: Type error: expected A, got Int alt/error_expr_not_ok_alt4.nit:73,7--10: Type error: expected Bool, got Int diff --git a/tests/sav/error_expr_not_ok_alt5.res b/tests/sav/error_expr_not_ok_alt5.res index 7b7b730..d9dd373 100644 --- a/tests/sav/error_expr_not_ok_alt5.res +++ b/tests/sav/error_expr_not_ok_alt5.res @@ -18,7 +18,7 @@ alt/error_expr_not_ok_alt5.nit:66,21: Type error: expected A, got Int alt/error_expr_not_ok_alt5.nit:67,1--18: Warning: use 'loop' instead of 'while true do'. alt/error_expr_not_ok_alt5.nit:69,24: Type error: expected A, got Int alt/error_expr_not_ok_alt5.nit:69,1--25: Type Error: 'for' expects a type providing 'iterator' method, got 'Int'. -alt/error_expr_not_ok_alt5.nit:69,1--25: Error: Method or variable 'iterator' unknown in Int. +alt/error_expr_not_ok_alt5.nit:69,1--25: Error: Method 'iterator' doesn't exists in Int. alt/error_expr_not_ok_alt5.nit:71,8--11: Type error: expected Bool, got Int alt/error_expr_not_ok_alt5.nit:72,7--15: Type error: expected A, got Int alt/error_expr_not_ok_alt5.nit:73,7--10: Type error: expected Bool, got Int diff --git a/tests/sav/error_expr_not_ok_alt6.res b/tests/sav/error_expr_not_ok_alt6.res index 50c3b32..212ed6f 100644 --- a/tests/sav/error_expr_not_ok_alt6.res +++ b/tests/sav/error_expr_not_ok_alt6.res @@ -22,7 +22,7 @@ alt/error_expr_not_ok_alt6.nit:66,21: Type error: expected A, got Int alt/error_expr_not_ok_alt6.nit:67,1--18: Warning: use 'loop' instead of 'while true do'. alt/error_expr_not_ok_alt6.nit:69,24: Type error: expected A, got Int alt/error_expr_not_ok_alt6.nit:69,1--25: Type Error: 'for' expects a type providing 'iterator' method, got 'Int'. -alt/error_expr_not_ok_alt6.nit:69,1--25: Error: Method or variable 'iterator' unknown in Int. +alt/error_expr_not_ok_alt6.nit:69,1--25: Error: Method 'iterator' doesn't exists in Int. alt/error_expr_not_ok_alt6.nit:71,8--11: Type error: expected Bool, got Int alt/error_expr_not_ok_alt6.nit:72,7--15: Type error: expected A, got Int alt/error_expr_not_ok_alt6.nit:73,7--10: Type error: expected Bool, got Int diff --git a/tests/sav/error_for_coll.res b/tests/sav/error_for_coll.res index d507465..4aa3dcd 100644 --- a/tests/sav/error_for_coll.res +++ b/tests/sav/error_for_coll.res @@ -1,2 +1,2 @@ -error_for_coll.nit:17,1--18,3: Error: Method or variable 'iterator' unknown in Int. +error_for_coll.nit:17,1--18,3: Error: Method 'iterator' doesn't exists in Int. error_for_coll.nit:17,1--18,3: Type Error: 'for' expects a type providing 'iterator' method, got 'Int'. diff --git a/tests/sav/error_meth_2def.res b/tests/sav/error_meth_2def.res index 1957edb..8a5607c 100644 --- a/tests/sav/error_meth_2def.res +++ b/tests/sav/error_meth_2def.res @@ -1 +1 @@ -error_meth_2def.nit:19,6--9: Error: A property toto is already defined in class A. +error_meth_2def.nit:19,6--9: Error: A property toto is already defined in class A at line 18. diff --git a/tests/sav/error_meth_2def2.res b/tests/sav/error_meth_2def2.res index df69e17..6bac25c 100644 --- a/tests/sav/error_meth_2def2.res +++ b/tests/sav/error_meth_2def2.res @@ -1 +1 @@ -error_meth_2def2.nit:19,6--9: Error: A property toto is already defined in class A. +error_meth_2def2.nit:19,6--9: Error: A property toto is already defined in class A at line 18. diff --git a/tests/sav/error_needed_method_alt2.res b/tests/sav/error_needed_method_alt2.res index 849db8b..8747eab 100644 --- a/tests/sav/error_needed_method_alt2.res +++ b/tests/sav/error_needed_method_alt2.res @@ -1,3 +1,3 @@ alt/error_needed_method_alt2.nit:47,10--27: Cannot instantiate interface Collection[Int]. -alt/error_needed_method_alt2.nit:47,1--40: Error: Method or variable 'iterator' unknown in Collection[Int]. +alt/error_needed_method_alt2.nit:47,1--40: Error: Method 'iterator' doesn't exists in Collection[Int]. alt/error_needed_method_alt2.nit:47,1--40: Type Error: 'for' expects a type providing 'iterator' method, got 'Collection[Int]'. diff --git a/tests/sav/error_needed_types_alt8.res b/tests/sav/error_needed_types_alt8.res index 2a2c208..f8c5a4f 100644 --- a/tests/sav/error_needed_types_alt8.res +++ b/tests/sav/error_needed_types_alt8.res @@ -1,2 +1,2 @@ -alt/error_needed_types_alt8.nit:21,1--22,3: Error: Method or variable 'iterator' unknown in L. +alt/error_needed_types_alt8.nit:21,1--22,3: Error: Method 'iterator' doesn't exists in L. alt/error_needed_types_alt8.nit:21,1--22,3: Type Error: 'for' expects a type providing 'iterator' method, got 'L'. diff --git a/tests/sav/error_toplevel.res b/tests/sav/error_toplevel.res new file mode 100644 index 0000000..f00464b --- /dev/null +++ b/tests/sav/error_toplevel.res @@ -0,0 +1,6 @@ +1 +0 +5 +0 +10 +50 diff --git a/tests/sav/error_toplevel_alt1.res b/tests/sav/error_toplevel_alt1.res new file mode 100644 index 0000000..b18282f --- /dev/null +++ b/tests/sav/error_toplevel_alt1.res @@ -0,0 +1 @@ +alt/error_toplevel_alt1.nit:25,3--10: Error: cannot call 'bar', a top-level method, with a receiver. diff --git a/tests/sav/error_toplevel_alt2.res b/tests/sav/error_toplevel_alt2.res new file mode 100644 index 0000000..8b3cf76 --- /dev/null +++ b/tests/sav/error_toplevel_alt2.res @@ -0,0 +1 @@ +alt/error_toplevel_alt2.nit:35,2--5: Error: self cannot be used in top-level method. diff --git a/tests/sav/error_toplevel_alt3.res b/tests/sav/error_toplevel_alt3.res new file mode 100644 index 0000000..acfd7bf --- /dev/null +++ b/tests/sav/error_toplevel_alt3.res @@ -0,0 +1 @@ +alt/error_toplevel_alt3.nit:36,6--9: Error: self cannot be used in top-level method. diff --git a/tests/sav/error_toplevel_alt4.res b/tests/sav/error_toplevel_alt4.res new file mode 100644 index 0000000..c1a37ee --- /dev/null +++ b/tests/sav/error_toplevel_alt4.res @@ -0,0 +1 @@ +alt/error_toplevel_alt4.nit:37,2--10: Error: cannot call 'bar', a top-level method, with a receiver. diff --git a/tests/sav/error_toplevel_alt5.res b/tests/sav/error_toplevel_alt5.res new file mode 100644 index 0000000..dff56d2 --- /dev/null +++ b/tests/sav/error_toplevel_alt5.res @@ -0,0 +1 @@ +alt/error_toplevel_alt5.nit:40,2--4: Error: 'baz' is not a top-level method, thus need a receiver. diff --git a/tests/sav/nitlight_args1.res b/tests/sav/nitlight_args1.res index 0b82282..f14eb40 100644 --- a/tests/sav/nitlight_args1.res +++ b/tests/sav/nitlight_args1.res @@ -16,7 +16,7 @@ import end -interface Object +interface Object end enum Bool diff --git a/tests/sav/nitmetrics_args1.res b/tests/sav/nitmetrics_args1.res index 0c177f8..4540753 100644 --- a/tests/sav/nitmetrics_args1.res +++ b/tests/sav/nitmetrics_args1.res @@ -41,11 +41,11 @@ std: 0.0 sum: 7 mnbr: number of refinement in module - avg: 3.0 - max: base_simple3 (3) - min: base_simple3 (3) + avg: 0.0 + max: base_simple3 (0) + min: base_simple3 (0) std: 0.0 - sum: 3 + sum: 0 mnbcc: number of concrete class in module (intro + redef) avg: 4.0 max: base_simple3 (4) @@ -59,11 +59,11 @@ std: 0.0 sum: 0 mnbic: number of interface in module (intro + redef) - avg: 4.0 - max: base_simple3 (4) - min: base_simple3 (4) + avg: 1.0 + max: base_simple3 (1) + min: base_simple3 (1) std: 0.0 - sum: 4 + sum: 1 ## project base_empty_module `- group base_empty_module @@ -166,11 +166,11 @@ std: 3.0 sum: 8 mnbr: number of refinement in module - avg: 1.0 - max: base_simple3 (3) - min: base_empty_module (0) - std: 1.581 - sum: 3 + avg: 0.0 + max: base_simple3 (0) + min: base_simple3 (0) + std: 0.0 + sum: 0 mnbcc: number of concrete class in module (intro + redef) avg: 2.0 max: base_simple3 (4) @@ -184,11 +184,11 @@ std: 0.0 sum: 0 mnbic: number of interface in module (intro + redef) - avg: 2.0 - max: base_simple3 (4) + avg: 0.0 + max: base_simple3 (1) min: base_empty_module (0) - std: 2.0 - sum: 4 + std: 0.707 + sum: 1 # MClasses metrics @@ -421,48 +421,45 @@ Distribution of direct smallers <=0: sub-population=1 (33.33%); cumulated value=0 (0.0%) <=1: sub-population=2 (66.66%); cumulated value=2 (100.00%) ## Classdef hierarchy -Number of nodes: 11 -Number of edges: 47 (4.27 per node) -Number of direct edges: 9 (0.81 per node) +Number of nodes: 8 +Number of edges: 14 (1.75 per node) +Number of direct edges: 6 (0.75 per node) Distribution of greaters - population: 11 + population: 8 minimum value: 1 - maximum value: 5 - total value: 47 - average value: 4.27 + maximum value: 2 + total value: 14 + average value: 1.75 distribution: - <=1: sub-population=1 (9.09%); cumulated value=1 (2.12%) - <=4: sub-population=4 (36.36%); cumulated value=16 (34.04%) - <=8: sub-population=6 (54.54%); cumulated value=30 (63.82%) + <=1: sub-population=2 (25.00%); cumulated value=2 (14.28%) + <=2: sub-population=6 (75.00%); cumulated value=12 (85.71%) Distribution of direct greaters - population: 11 + population: 8 minimum value: 0 - maximum value: 3 - total value: 9 - average value: 0.81 + maximum value: 1 + total value: 6 + average value: 0.75 distribution: - <=0: sub-population=4 (36.36%); cumulated value=0 (0.0%) - <=1: sub-population=6 (54.54%); cumulated value=6 (66.66%) - <=4: sub-population=1 (9.09%); cumulated value=3 (33.33%) + <=0: sub-population=2 (25.00%); cumulated value=0 (0.0%) + <=1: sub-population=6 (75.00%); cumulated value=6 (100.00%) Distribution of smallers - population: 11 + population: 8 minimum value: 1 - maximum value: 10 - total value: 47 - average value: 4.27 + maximum value: 7 + total value: 14 + average value: 1.75 distribution: - <=1: sub-population=7 (63.63%); cumulated value=7 (14.89%) - <=16: sub-population=4 (36.36%); cumulated value=40 (85.10%) + <=1: sub-population=7 (87.50%); cumulated value=7 (50.00%) + <=8: sub-population=1 (12.50%); cumulated value=7 (50.00%) Distribution of direct smallers - population: 11 + population: 8 minimum value: 0 maximum value: 6 - total value: 9 - average value: 0.81 + total value: 6 + average value: 0.75 distribution: - <=0: sub-population=7 (63.63%); cumulated value=0 (0.0%) - <=1: sub-population=3 (27.27%); cumulated value=3 (33.33%) - <=8: sub-population=1 (9.09%); cumulated value=6 (66.66%) + <=0: sub-population=7 (87.50%); cumulated value=0 (0.0%) + <=8: sub-population=1 (12.50%); cumulated value=6 (100.00%) ## Class hierarchy Number of nodes: 8 Number of edges: 14 (1.75 per node) @@ -580,10 +577,10 @@ Number of classes: 8 Number of enum kind: 2 (25.00%) Number of class kind: 5 (62.50%) -Number of class definitions: 11 -Number of refined classes: 1 (12.50%) -Average number of class refinments by classes: 0.37 -Average number of class refinments by refined classes: 3.00 +Number of class definitions: 8 +Number of refined classes: 0 (0.0%) +Average number of class refinments by classes: 0.0 +Average number of class refinments by refined classes: na Number of properties: 20 Number of MAttribute: 3 (15.00%) @@ -614,7 +611,7 @@ Total number of self: 5 Total number of implicit self: 4 (80.00%) --- Construction of tables --- Number of runtime classes: 7 (excluding interfaces and abstract classes) -Average number of composing class definition by runtime class: 4.42 +Average number of composing class definition by runtime class: 1.85 Total size of tables (classes and instances): 35 (not including stuff like info for subtyping or call-next-method) Average size of table by runtime class: 5.00 Values never redefined: 35 (100.00%) @@ -632,6 +629,8 @@ Values never redefined: 35 (100.00%) blooming mclasses (threshold: 2.388) B: 3.0 C: 3.0 +generating out/nitmetrics_args1.write/project_hierarchy.dot +generating out/nitmetrics_args1.write/module_hierarchy.dot # Nullable metrics @@ -1075,8 +1074,6 @@ MMethodDef possibly invoked at runtime (by number of CallSites) base_simple3#Object#bar: 1 (4.54%) base_simple3#Object#foo: 1 (4.54%) base_simple3#C#init: 1 (4.54%) -generating out/nitmetrics_args1.write/project_hierarchy.dot -generating out/nitmetrics_args1.write/module_hierarchy.dot class_hierarchy.dot classdef_hierarchy.dot inheritance/ diff --git a/tests/sav/nitvm.res b/tests/sav/nitvm.res new file mode 100644 index 0000000..742b9e8 --- /dev/null +++ b/tests/sav/nitvm.res @@ -0,0 +1,3 @@ +Usage: nitvm [OPTION]... ... +Executes Nit programs with a virtual machine. +Use --help for help diff --git a/tests/sav/nitvm_args1.res b/tests/sav/nitvm_args1.res new file mode 100644 index 0000000..3b18e51 --- /dev/null +++ b/tests/sav/nitvm_args1.res @@ -0,0 +1 @@ +hello world diff --git a/tests/sav/nitvm_args2.res b/tests/sav/nitvm_args2.res new file mode 100644 index 0000000..f00c965 --- /dev/null +++ b/tests/sav/nitvm_args2.res @@ -0,0 +1,10 @@ +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 diff --git a/tests/sav/nitvm_args3.res b/tests/sav/nitvm_args3.res new file mode 100644 index 0000000..c76ebf3 --- /dev/null +++ b/tests/sav/nitvm_args3.res @@ -0,0 +1,3 @@ +MIX: Before +MIX: hello world +MIX: After diff --git a/tests/sav/nitx_args3.res b/tests/sav/nitx_args3.res index 264e277..e3174b3 100644 --- a/tests/sav/nitx_args3.res +++ b/tests/sav/nitx_args3.res @@ -25,15 +25,4 @@ class Sys base_simple3::Sys (lines 53-66) - - == refined classes - - redef interface Object - base_simple3::Object (lines 49-49) - - redef interface Object - base_simple3::Object (lines 50-50) - - redef interface Object - base_simple3::Object (lines 51-51) diff --git a/tests/sav/test_ffi_java_annot_files.res b/tests/sav/test_ffi_java_annot_files.res new file mode 100644 index 0000000..cbbeae1 --- /dev/null +++ b/tests/sav/test_ffi_java_annot_files.res @@ -0,0 +1,4 @@ +-1 +1 +-1 +1 diff --git a/tests/test_ffi_java_annot_files.nit b/tests/test_ffi_java_annot_files.nit new file mode 100644 index 0000000..c57135a --- /dev/null +++ b/tests/test_ffi_java_annot_files.nit @@ -0,0 +1,35 @@ +# This file is part of NIT ( http://www.nitlanguage.org ). +# +# Copyright 2014 Alexis Laferrière +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +module test_ffi_java_annot_files is + extra_java_files("test_ffi_java_annot_files_a.java") +end + +import java + +fun foo in "Java" `{ + test_ffi_java_annot_files_a zero = new test_ffi_java_annot_files_a(0); + test_ffi_java_annot_files_a one = new test_ffi_java_annot_files_a(1); + test_ffi_java_annot_files_a ten = new test_ffi_java_annot_files_a(10); + test_ffi_java_annot_files_a neg = new test_ffi_java_annot_files_a(-1); + + System.out.println(zero.compareTo(one)); + System.out.println(one.compareTo(zero)); + System.out.println(zero.compareTo(ten)); + System.out.println(zero.compareTo(neg)); +`} + +foo diff --git a/tests/test_ffi_java_annot_files_a.java b/tests/test_ffi_java_annot_files_a.java new file mode 100644 index 0000000..2a7fdf5 --- /dev/null +++ b/tests/test_ffi_java_annot_files_a.java @@ -0,0 +1,30 @@ +// This file is part of NIT ( http://www.nitlanguage.org ). +// +// Copyright 2014 Alexis Laferriere +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +import java.lang.Comparable; + +public class test_ffi_java_annot_files_a implements Comparable { + Integer val; + + test_ffi_java_annot_files_a(int val) { + this.val = new Integer(val); + } + + @Override + public int compareTo(test_ffi_java_annot_files_a other) { + return val.compareTo(other.val); + } +}